diff options
| -rw-r--r-- | ext/js/language/dictionary-importer.js | 28 | ||||
| -rw-r--r-- | test/test-database.js | 12 | 
2 files changed, 37 insertions, 3 deletions
| diff --git a/ext/js/language/dictionary-importer.js b/ext/js/language/dictionary-importer.js index 5629e197..4144de66 100644 --- a/ext/js/language/dictionary-importer.js +++ b/ext/js/language/dictionary-importer.js @@ -128,7 +128,15 @@ class DictionaryImporter {          // Add dictionary descriptor          this._progressNextStep(termList.length + termMetaList.length + kanjiList.length + kanjiMetaList.length + tagList.length + media.length); -        const summary = this._createSummary(dictionaryTitle, version, index, {prefixWildcardsSupported}); +        const counts = { +            terms: {total: termList.length}, +            termMeta: this._getMetaCounts(termMetaList), +            kanji: {total: kanjiList.length}, +            kanjiMeta: this._getMetaCounts(kanjiMetaList), +            tagMeta: {total: tagList.length}, +            media: {total: media.length} +        }; +        const summary = this._createSummary(dictionaryTitle, version, index, {prefixWildcardsSupported, counts});          dictionaryDatabase.bulkAdd('dictionaries', [summary], 0, 1);          // Add data @@ -189,7 +197,8 @@ class DictionaryImporter {              title: dictionaryTitle,              revision: index.revision,              sequenced: index.sequenced, -            version +            version, +            importDate: Date.now()          };          const {author, url, description, attribution} = index; @@ -556,4 +565,19 @@ class DictionaryImporter {          }          return results;      } + +    _getMetaCounts(metaList) { +        const countsMap = new Map(); +        for (const {mode} of metaList) { +            let count = countsMap.get(mode); +            count = typeof count !== 'undefined' ? count + 1 : 1; +            countsMap.set(mode, count); +        } +        const counts = {total: metaList.length}; +        for (const [key, value] of countsMap.entries()) { +            if (Object.prototype.hasOwnProperty.call(counts, key)) { continue; } +            counts[key] = value; +        } +        return counts; +    }  } diff --git a/test/test-database.js b/test/test-database.js index a87a3f72..c24dedbd 100644 --- a/test/test-database.js +++ b/test/test-database.js @@ -147,7 +147,16 @@ async function testDatabase1() {              revision: 'test',              sequenced: true,              version: 3, -            prefixWildcardsSupported: true +            importDate: 0, +            prefixWildcardsSupported: true, +            counts: { +                kanji: {total: 2}, +                kanjiMeta: {total: 2, freq: 2}, +                media: {total: 4}, +                tagMeta: {total: 15}, +                termMeta: {total: 16, freq: 9, pitch: 7}, +                terms: {total: 20} +            }          };          // Import data @@ -158,6 +167,7 @@ async function testDatabase1() {              testDictionarySource,              {prefixWildcardsSupported: true}          ); +        expectedSummary.importDate = result.importDate;          vm.assert.deepStrictEqual(errors, []);          vm.assert.deepStrictEqual(result, expectedSummary);          assert.ok(progressEvent); |