diff options
| author | Alex Yatskov <alex@foosoft.net> | 2016-11-13 19:10:28 -0800 | 
|---|---|---|
| committer | Alex Yatskov <alex@foosoft.net> | 2016-11-13 19:10:28 -0800 | 
| commit | a9fb56688434164e30f8f94868c652be7e7d69ad (patch) | |
| tree | 42ce5def7b99441e676957ef8fbad3007fbf4bfa | |
| parent | 1d29dd8ba765d7f7dfec69dfd783016c086989b3 (diff) | |
WIP
| -rw-r--r-- | ext/bg/guide.html | 3 | ||||
| -rw-r--r-- | ext/bg/js/database.js | 12 | ||||
| -rw-r--r-- | ext/bg/js/options-form.js | 27 | ||||
| -rw-r--r-- | ext/bg/options.html | 6 | 
4 files changed, 38 insertions, 10 deletions
| diff --git a/ext/bg/guide.html b/ext/bg/guide.html index e5ec59d7..d6809139 100644 --- a/ext/bg/guide.html +++ b/ext/bg/guide.html @@ -2,7 +2,7 @@  <html lang="en">      <head>          <meta charset="UTF-8"> -        <title>Yomichan</title> +        <title>Welcome to Yomichan!</title>          <link rel="stylesheet" type="text/css" href="../lib/bootstrap-3.3.6-dist/css/bootstrap.min.css">          <link rel="stylesheet" type="text/css" href="../lib/bootstrap-3.3.6-dist/css/bootstrap-theme.min.css">      </head> @@ -25,6 +25,7 @@                  <ol>                      <li>Left-click on the <img src="../img/icon16.png" alt> icon to enable or disable Yomichan for the current browser instance.</li>                      <li>Right-click on the <img src="../img/icon16.png" alt> icon and select <em>Options</em> to open the Yomichan options page.</li> +                    <li>Import any dictionaries (bundled or custom) you wish to use for Kanji and term searches.</li>                      <li>Hold down <kbd>Shift</kbd> (or the middle mouse button) as you hover over text to see term definitions.</li>                      <li>Resize the definitions window by dragging the bottom-left corner inwards or outwards.</li>                      <li>Click on Kanji in the definition window to view additional information about that character.</li> diff --git a/ext/bg/js/database.js b/ext/bg/js/database.js index 5931e172..0621f1d6 100644 --- a/ext/bg/js/database.js +++ b/ext/bg/js/database.js @@ -39,6 +39,18 @@ class Database {          return this.db.open();      } +    purge() { +        if (this.db === null) { +            return Promise.reject('database not initialized'); +        } + +        this.db.close(); +        return this.db.delete().then(() => { +            this.db = null; +            this.prepare(); +        }); +    } +      findTerm(term, dictionaries) {          if (this.db === null) {              return Promise.reject('database not initialized'); diff --git a/ext/bg/js/options-form.js b/ext/bg/js/options-form.js index 015c9a0a..68a18d8f 100644 --- a/ext/bg/js/options-form.js +++ b/ext/bg/js/options-form.js @@ -134,20 +134,19 @@ function onDictionaryDelete() {          dictProgress.find('div').css('width', `${current / total * 100.0}%`);      }; -    database().deleteDictionary(dictGroup.data('title'), callback).then(() => { -        dictGroup.slideUp(); -    }).catch(error => { +    database().deleteDictionary(dictGroup.data('title'), callback).catch(error => {          dictError.show().find('span').text(error);      }).then(() => {          dictSpinner.hide();          dictProgress.hide();          dictControls.show(); +        return loadOptions().then(opts => populateDictionaries(opts));      });  }  function onDictionaryImport() { -    const dictImport = $(this); -    dictImport.prop('disabled', true); +    const dictImporter = $('#dict-importer'); +    dictImporter.hide();      const dictError = $('#dict-error');      dictError.hide(); @@ -174,7 +173,7 @@ function onDictionaryImport() {          }).catch(error => {              dictError.show().find('span').text(error);          }).then(() => { -            dictImport.prop('disabled', false); +            dictImporter.show();              dictUrl.val('');              dictUrl.trigger('input');              dictProgress.hide(); @@ -313,6 +312,21 @@ function populateDictionaries(opts) {      });  } +function onPurgeDb() { +    const dictError = $('#dict-error'); +    dictError.hide(); + +    const dictSpinner = $('#dict-spinner'); +    dictSpinner.show(); + +    return database().purge().catch(error => { +        dictError.show().find('span').text(error); +    }).then(() => { +        dictSpinner.hide(); +        return loadOptions().then(opts => populateDictionaries(opts)); +    }); +} +  function onOptionsChanged(e) {      if (!e.originalEvent && !e.isTrigger) {          return; @@ -383,6 +397,7 @@ $(document).ready(() => {          $('input, select').not('.anki-model').change(onOptionsChanged);          $('.anki-model').change(onAnkiModelChanged); +        $('#dict-purge').click(onPurgeDb);          $('#dict-importer a').click(onDictionarySetUrl);          $('#dict-import').click(onDictionaryImport);          $('#dict-url').on('input', onDictionaryUpdateUrl); diff --git a/ext/bg/options.html b/ext/bg/options.html index 6d745b93..c3450c39 100644 --- a/ext/bg/options.html +++ b/ext/bg/options.html @@ -73,7 +73,7 @@                  <p class="help-block">                      Yomichan can import both bundled and custom (see the <a href="https://foosoft.net/projects/yomichan-import">Yomichan Import</a>                      page for details) dictionaries. Although it is also possible to delete unneeded dictionaries, this operation is <em>extremely slow</em> and it is often -                    easier to disable them or simply <a href="javascript:resetDatabase();">reset the database</a>. Finally, please make sure to +                    easier to disable them or simply <a id="dict-purge">purge the database</a>. Finally, please make sure to                      wait for import and delete operations to complete before closing this page.                  </p> @@ -81,7 +81,7 @@                  <div class="alert alert-warning" id="dict-warning">                      <strong>No dictionaries found:</strong> -                    <span>please use the dropdown below to install packaged and external dictionaries</span> +                    <span>please use the drop down below to install packaged and external dictionaries</span>                  </div>                  <div class="alert alert-danger" id="dict-error"> @@ -106,7 +106,7 @@                          </ul>                      </div>                      <input type="text" id="dict-url" class="form-control" placeholder="Dictionary import URL"> -                    <div class="input-group-btn disabled"> +                    <div class="input-group-btn">                          <button type="button" id="dict-import" class="btn btn-primary" disabled>Import</button>                      </div>                  </div> |