HonorLee 5 years ago
parent
commit
4a486fd80b
8 changed files with 119 additions and 27 deletions
  1. 13 0
      README.md
  2. 1 1
      asset/css/main.css
  3. 13 1
      asset/less/main.less
  4. 36 22
      lib/main.js
  5. 32 1
      main.js
  6. 21 0
      windows/import.html
  7. 2 1
      windows/main.html
  8. 1 1
      windows/popup.html

+ 13 - 0
README.md

@@ -15,11 +15,24 @@ Random English Learning 随机英语单词学习Chrome插件(APP)
 
 Changelog
 
+v1.1
+
+修复一些bug
+
+加入删除功能
+
+加入手动导入功能
+
 v1.0
+
 加入定时弹窗和收藏功能
+
 定时弹窗时间间隔可以设置
+
 弹出信息例句中文翻译星号加密,鼠标移上去后会显示翻译文本
 
 v0.5
+
 目前支持单词查询,TXT词库导入
+
 目前词库采用的是由深大继教张小兰老师提供的[英语二大纲词汇汇总.pdf]整理而来的词库表

File diff suppressed because it is too large
+ 1 - 1
asset/css/main.css


File diff suppressed because it is too large
+ 13 - 1
asset/less/main.less


+ 36 - 22
lib/main.js

@@ -3,20 +3,26 @@
  * @Version 1.0 (2019-04-21)
  * @License MIT
  */
-var bg;
+var bg,delWord;
 $(function(){
     $('.loading').addClass('on').find('p').text('词库读取中,请稍后...');
     chrome.runtime.getBackgroundPage(function(background){
         bg = background;
-        buildNormalList();
         buildStarList();
         $('.showTimeSets input').val(bg.setting.timerMin);
     });
 
     chrome.runtime.onMessage.addListener(function(msg){
+        if(msg=="updateList") buildNormalList();
         if(msg=="updateStarList") buildStarList();
     })
 
+    chrome.notifications.onButtonClicked.addListener(function(e,index){
+        if(e!='deleteword') return;
+        if(index==0) bg.deleteWord(delWord);
+        delWord = null;
+    })
+
     $('.tabContent .list').on('click','li a.info',function(){
         var word = $(this).parents('li').data('word');
         bg.showWordInfo(word);
@@ -31,6 +37,13 @@ $(function(){
         $(this).html('<i class="fa fa-star'+(toType==1?'':'-o')+'"></i>');
 
     });
+    $('.tabContent .list').on('click','li a.del',function(){
+        delWord = $(this).parents('li').data('word');
+        chrome.notifications.create('deleteword',{iconUrl:'../asset/img/logo@x128.png',message:'确定从词库中删除['+delWord+']单词么?',type:'basic',title:'移除单词!',buttons:[{title:'Yes'},{title:'No'}]});
+        // if(confirm('确定从词库中删除['+word+']单词么?')){
+        //     bg.deleteWord(word);
+        // }
+    });
     $('.title a.minimize').click(function(){
         chrome.app.window.current().minimize();
     });
@@ -50,32 +63,14 @@ $(function(){
         $("#my_file").trigger('click');
     })
     $("#my_file").on('change',function(){
+        if($('#my_file')[0].files.length==0) return;
         $('.loading').addClass('on').find('p').text('词库导入中,请稍后...');
-        var wordCount = 0;
         var file = $('#my_file')[0].files[0];
         var reader = new FileReader();
         reader.readAsText(file, "utf-8");
         reader.onload = function (e) {
             var tmpArr = e.target.result.split("\n");
-            var word;
-            if(tmpArr.length>0){
-                for(var i = 0;i<tmpArr.length;i++){
-                    word = (tmpArr[i]).toLowerCase();
-                    if(!bg.wordDataObj[word]){
-                        wordCount++;
-                        bg.wordDataObj[word] = {testCount:0}
-                        bg.wordDataArr.push(word);
-                    }
-                    // wordsObj[word] = {testCount:0}
-                };
-                if(wordCount>0) bg.wordDataArr.sort();
-            }
-            chrome.storage.local.set({wordsArr:bg.wordDataArr,wordsObj:bg.wordDataObj},function(e){
-                chrome.notifications.create('importNotifi'+(new Date().getTime()),{iconUrl:'../asset/img/logo@x128.png',message:'词库导入成功\n本次共导入['+wordCount+']个新单词',type:'basic',title:'导入完成!'});
-                $('.loading').removeClass('on');
-                // console.log('导入完成',e);
-                buildNormalList();
-            })
+            bg.importWord(tmpArr);
         }
     });
     $('.settings a.save').click(function(){
@@ -88,6 +83,25 @@ $(function(){
             $('.loading').removeClass('on');
         })
     });
+    $('.settings button#importWord').click(function(){
+        chrome.app.window.create('windows/import.html', {
+            id:'import',
+            resizable:false,
+            alwaysOnTop:true,
+            innerBounds:{width:300,height:400},
+            // hidden:true,
+            frame:{type:'none'}
+        });
+    });
+
+    $('.importForm .ok').click(function(){
+        var list = $('.importForm textarea').val().split('\n');
+        bg.importWord(list);
+        chrome.app.window.current().close();
+    });
+    $('.importForm .cancel').click(function(){
+        chrome.app.window.current().close();
+    });
 });
 
 function buildNormalList(listIndex){

+ 32 - 1
main.js

@@ -92,11 +92,42 @@ function starWord(type,word){
     })
 }
 
+function deleteWord(word){
+    wordDataArr.splice(wordDataArr.indexOf(word),1);
+    wordDataObj[word] = null;
+    chrome.runtime.sendMessage('updateList');
+    if(wordStarArr.indexOf(word)>=0){
+        wordStarArr.splice(wordStarArr.indexOf(word),1);
+        chrome.runtime.sendMessage('updateStarList');
+    }
+}
+
 function setTimer(){
     if(autoShowTimer) clearInterval(autoShowTimer);
     autoShowTimer = setInterval(randomShow, setting.timerMin*1000*60);
 }
 
-
+function importWord(wordArr){
+    var word,wordCount = 0;;
+    if(wordArr.length>0){
+        for(var i = 0;i<wordArr.length;i++){
+            word = (wordArr[i]).toLowerCase();
+            if(word=='') continue;
+            if(!wordDataObj[word]){
+                wordCount++;
+                wordDataObj[word] = {testCount:0}
+                wordDataArr.push(word);
+            }
+            // wordsObj[word] = {testCount:0}
+        };
+        if(wordCount>0) wordDataArr.sort();
+    }
+    chrome.runtime.sendMessage('updateList');
+    chrome.storage.local.set({wordsArr:wordDataArr,wordsObj:wordDataObj},function(e){
+        chrome.notifications.create('importNotifi'+(new Date().getTime()),{iconUrl:'./asset/img/logo@x128.png',message:'词库导入成功\n本次共导入['+wordCount+']个新单词',type:'basic',title:'导入完成!'});
+        $('.loading').removeClass('on');
+        // console.log('导入完成',e);
+    })
+}
 
 

+ 21 - 0
windows/import.html

@@ -0,0 +1,21 @@
+<!DOCTYPE html>
+<html lang="zh_cn">
+<head>
+    <meta charset="UTF-8">
+    <title>Random English Learning</title>
+    <link rel="stylesheet" href="../asset/css/main.css">
+    <link rel="stylesheet" href="../asset/css/font-awesome.min.css">
+</head>
+<body id="import">
+<div class="importForm">
+    <textarea name="import" placeholder="一行一个单词"></textarea>
+    <a class="ok">导入</a>
+    <a class="cancel">取消</a>
+</div>
+<div class="loading">
+    <p>词库读取中,请稍后...</p>
+</div>
+<script src="../lib/jquery.min.js"></script>
+<script src="../lib/main.js"></script>
+</body>
+</html>

+ 2 - 1
windows/main.html

@@ -32,7 +32,8 @@
         <a class="save">保存设置</a>
         <div class="import">
             <input type="file" accept="text/plain" id="my_file" style="display: none;">
-            <button value="导入" id="clickme">导入</button>
+            <button value="文件导入" id="clickme">文件导入</button>
+            <button value="手动导入" id="importWord">手动导入</button>
             <p>目前仅支持导入TXT文件,文件内容为纯单词表,一行一个,建议使用UTF-8格式文件</p>
         </div>
     </div>

+ 1 - 1
windows/popup.html

@@ -9,7 +9,7 @@
 <body id="popup">
 <div class="info">
     <a class="close">-</a>
-    <div class="word"><p class="w">transportation</p><p class="pron">[<span>[ˌtrænspɔːr'teɪʃn]</span>]<a class="audio"><i class="fa fa-play-circle"></i></a></p></div>
+    <div class="word"><p class="w"></p><p class="pron">[<span></span>]<a class="audio"><i class="fa fa-play-circle"></i></a></p></div>
     <div class="def"></div>
     <div class="example"></div>
     <div class="from">数据来源 - <a href="https://www.shanbay.com/" title="" target="_blank">扇贝网</a></div>