diff options
Diffstat (limited to 'ext')
| -rw-r--r-- | ext/bg/js/dictionary.js | 38 | ||||
| -rw-r--r-- | ext/bg/js/util.js | 4 | 
2 files changed, 25 insertions, 17 deletions
| diff --git a/ext/bg/js/dictionary.js b/ext/bg/js/dictionary.js index a2a4047a..936f3dd8 100644 --- a/ext/bg/js/dictionary.js +++ b/ext/bg/js/dictionary.js @@ -33,7 +33,9 @@ class Dictionary {          this.db.version(1).stores({              terms: '++id, dictionary, expression, reading',              kanji: '++, dictionary, character', -            entities: '++, dictionary, name', +            entities: '++, dictionary', +            termDicts: '++, dictionary', +            kanjiDicts: '++, dictionary, version',              meta: 'name, value',          });      } @@ -135,22 +137,24 @@ class Dictionary {              return Promise.reject('database not initialized');          } -        const indexLoaded = (dictionary, entities) => { -            this.entities = entities || {}; - -            const rows = []; -            for (const name in entities || {}) { -                rows.push({ -                    dictionary, -                    name, -                    value: entities[name] -                }); -            } +        const indexLoaded = (dictionary, version, entities) => { +            return this.db.termDicts.add({dictionary, version}).then(() => { +                this.entities = entities || {}; + +                const rows = []; +                for (const name in entities || {}) { +                    rows.push({ +                        dictionary, +                        name, +                        value: entities[name] +                    }); +                } -            return this.db.entities.bulkAdd(rows); +                return this.db.entities.bulkAdd(rows); +            });          }; -        const entriesLoaded = (dictionary, entries, total, current) => { +        const entriesLoaded = (dictionary, version, entries, total, current) => {              const rows = [];              for (const [expression, reading, tags, ...glossary] of entries) {                  rows.push({ @@ -177,7 +181,11 @@ class Dictionary {              return Promise.reject('database not initialized');          } -        const entriesLoaded = (dictionary, entries, total, current)  => { +        const indexLoaded = (dictionary, version) => { +            return this.db.kanjiDicts.add({dictionary, version}); +        }; + +        const entriesLoaded = (dictionary, version, entries, total, current)  => {              const rows = [];              for (const [character, onyomi, kunyomi, tags, ...meanings] of entries) {                  rows.push({ diff --git a/ext/bg/js/util.js b/ext/bg/js/util.js index 9b17f43c..ac365135 100644 --- a/ext/bg/js/util.js +++ b/ext/bg/js/util.js @@ -121,7 +121,7 @@ function importJsonDb(indexUrl, indexLoaded, entriesLoaded) {      const indexDir = indexUrl.slice(0, indexUrl.lastIndexOf('/'));      return loadJson(indexUrl).then(index => {          if (indexLoaded !== null) { -            return indexLoaded(index.title, index.entities, index.banks).then(() => index); +            return indexLoaded(index.title, index.version, index.entities, index.banks).then(() => index);          }          return index; @@ -129,7 +129,7 @@ function importJsonDb(indexUrl, indexLoaded, entriesLoaded) {          const loaders = [];          for (let i = 1; i <= index.banks; ++i) {              const bankUrl = `${indexDir}/bank_${i}.json`; -            loaders.push(() => loadJson(bankUrl).then(entries => entriesLoaded(index.title, entries, index.banks, i))); +            loaders.push(() => loadJson(bankUrl).then(entries => entriesLoaded(index.title, index.version, entries, index.banks, i)));          }          let chain = Promise.resolve(); |