main.js 4.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136
  1. /**
  2. * @Author HonorLee (dev@honorlee.me)
  3. * @Version 1.0 (2019-04-21)
  4. * @License MIT
  5. */
  6. var mainWidth = 600,mainHeight = 800;
  7. var wordDataArr,wordStarArr,wordDataObj,wordOpt,currentWord,setting;
  8. var autoShowTimer;
  9. chrome.storage.local.get(['wordsArr','starsArr','wordsObj','wordOpt','setting'],function(items){
  10. wordDataArr = items.wordsArr?items.wordsArr:[];
  11. wordStarArr = items.starsArr?items.starsArr:[];
  12. wordDataObj = items.wordsObj?items.wordsObj:{};
  13. wordOpt = items.wordOpt?items.wordOpt:{};
  14. setting = items.setting?items.setting:{timerMin:10};
  15. chrome.app.window.create('windows/popup.html', {
  16. id:'popup',
  17. resizable:false,
  18. alwaysOnTop:true,
  19. hidden:true,
  20. frame:{type:'none'}
  21. });
  22. setTimer();
  23. });
  24. chrome.app.runtime.onLaunched.addListener(function() {
  25. chrome.app.window.create('windows/main.html', {
  26. id:'main',
  27. innerBounds:{width:mainWidth,height:mainHeight},
  28. resizable:false,
  29. frame:{type:'none'}
  30. },function(mainWindow){
  31. mainWindow.resizeTo(mainWidth,mainHeight);
  32. mainWindow.onClosed.addListener(function(){
  33. chrome.storage.local.set({wordsArr:wordDataArr,starsArr:wordStarArr,wordsObj:wordDataObj,wordOpt:wordOpt,setting:setting});
  34. });
  35. });
  36. });
  37. var showWordInfo = function(word){
  38. var popup = chrome.app.window.get('popup');
  39. var popWidth = 300,popHeight = 400;
  40. currentWord = word;
  41. chrome.system.display.getInfo(function(display){
  42. console.log(123)
  43. var displayOpt = display[0].workArea;
  44. popup.outerBounds.left = displayOpt.width - popWidth - 20;
  45. popup.outerBounds.top = 20 + displayOpt.top;
  46. // popup.innerBounds = {width:popWidth,height:popHeight};
  47. popup.show();
  48. chrome.runtime.sendMessage('updateInfo');
  49. // popup.onClosed.addListener(function(){
  50. // chrome.storage.local.set({wordsObj:bg.wordDataObj,wordOpt:bg.wordOpt});
  51. // });
  52. });
  53. }
  54. function randomShow(){
  55. console.log(1)
  56. if(wordDataArr.length==0) return;
  57. var mid = 3;
  58. var percent = Math.floor(Math.random()*10);
  59. var randomIndex = 0,word;
  60. if(wordStarArr.length==0) percent = 0;
  61. if(percent<=mid){
  62. randomIndex = Math.floor(Math.random()*wordDataArr.length);
  63. word = wordDataArr[randomIndex];
  64. }else{
  65. randomIndex = Math.floor(Math.random()*wordStarArr.length);
  66. word = wordStarArr[randomIndex];
  67. }
  68. showWordInfo(word);
  69. }
  70. //0:unstar 1:star
  71. function starWord(type,word){
  72. if(type==0){
  73. var wi = wordStarArr.indexOf(word);
  74. wordStarArr.splice(wi,1);
  75. }else if(type==1){
  76. wordStarArr.push(word);
  77. }
  78. wordDataObj[word]['isStar'] = type;
  79. wordStarArr.sort();
  80. chrome.storage.local.set({starsArr:wordStarArr,wordsObj:wordDataObj},function(e){
  81. chrome.notifications.create('importNotifi'+(new Date().getTime()),{iconUrl:'../asset/img/logo@x128.png',message:'单词['+word+']已'+(type==0?'从收藏列表移除':'加入收藏'),type:'basic',title:'设置已保存!'});
  82. chrome.runtime.sendMessage('updateStarList');
  83. })
  84. }
  85. function deleteWord(word){
  86. wordDataArr.splice(wordDataArr.indexOf(word),1);
  87. wordDataObj[word] = null;
  88. chrome.runtime.sendMessage('updateList');
  89. if(wordStarArr.indexOf(word)>=0){
  90. wordStarArr.splice(wordStarArr.indexOf(word),1);
  91. chrome.runtime.sendMessage('updateStarList');
  92. }
  93. }
  94. function setTimer(){
  95. if(autoShowTimer) clearInterval(autoShowTimer);
  96. autoShowTimer = setInterval(randomShow, setting.timerMin*1000*60);
  97. }
  98. function importWord(wordArr){
  99. var word,wordCount = 0;;
  100. if(wordArr.length>0){
  101. for(var i = 0;i<wordArr.length;i++){
  102. word = (wordArr[i]).toLowerCase();
  103. if(word=='') continue;
  104. if(!wordDataObj[word]){
  105. wordCount++;
  106. wordDataObj[word] = {testCount:0}
  107. wordDataArr.push(word);
  108. }
  109. // wordsObj[word] = {testCount:0}
  110. };
  111. if(wordCount>0) wordDataArr.sort();
  112. }
  113. chrome.runtime.sendMessage('updateList');
  114. chrome.storage.local.set({wordsArr:wordDataArr,wordsObj:wordDataObj},function(e){
  115. chrome.notifications.create('importNotifi'+(new Date().getTime()),{iconUrl:'./asset/img/logo@x128.png',message:'词库导入成功\n本次共导入['+wordCount+']个新单词',type:'basic',title:'导入完成!'});
  116. $('.loading').removeClass('on');
  117. // console.log('导入完成',e);
  118. })
  119. }
  120. function clearDatas(){
  121. wordDataArr = [];
  122. wordStarArr = [];
  123. wordDataObj = {};
  124. wordOpt = {};
  125. chrome.runtime.sendMessage('updateStarList');
  126. chrome.storage.local.set({wordsArr:wordDataArr,wordsObj:wordDataObj,wordOpt:wordOpt,starsArr:wordStarArr},function(e){
  127. chrome.notifications.create('clearDone',{iconUrl:'./asset/img/logo@x128.png',message:'数据清除成功',type:'basic',title:'清除完成!'});
  128. })
  129. }