Progress callback for dictionary loading
This commit is contained in:
parent
0e89d0e7e6
commit
17366e521a
@ -130,7 +130,7 @@ class Dictionary {
|
||||
});
|
||||
}
|
||||
|
||||
importTermDict(indexUrl) {
|
||||
importTermDict(indexUrl, callback) {
|
||||
if (this.db === null) {
|
||||
return Promise.reject('database not initialized');
|
||||
}
|
||||
@ -161,7 +161,11 @@ class Dictionary {
|
||||
rows.push({expression, reading, tags, glossary});
|
||||
}
|
||||
|
||||
return this.db.terms.bulkAdd(rows);
|
||||
return this.db.terms.bulkAdd(rows).then(() => {
|
||||
if (callback) {
|
||||
callback(i, index.banks);
|
||||
}
|
||||
});
|
||||
});
|
||||
});
|
||||
}
|
||||
@ -176,7 +180,7 @@ class Dictionary {
|
||||
});
|
||||
}
|
||||
|
||||
importKanjiDict(indexUrl) {
|
||||
importKanjiDict(indexUrl, callback) {
|
||||
if (this.db === null) {
|
||||
return Promise.reject('database not initialized');
|
||||
}
|
||||
@ -193,7 +197,11 @@ class Dictionary {
|
||||
rows.push({character, onyomi, kunyomi, tags, meanings});
|
||||
}
|
||||
|
||||
return this.db.kanji.bulkAdd(rows);
|
||||
return this.db.kanji.bulkAdd(rows).then(() => {
|
||||
if (callback) {
|
||||
callback(i, index.banks);
|
||||
}
|
||||
});
|
||||
});
|
||||
});
|
||||
}
|
||||
|
@ -25,7 +25,7 @@ class Translator {
|
||||
this.deinflector = new Deinflector();
|
||||
}
|
||||
|
||||
loadData() {
|
||||
loadData(callback) {
|
||||
if (this.loaded) {
|
||||
return Promise.resolve();
|
||||
}
|
||||
@ -37,13 +37,37 @@ class Translator {
|
||||
this.tagMeta = tagMeta;
|
||||
return this.dictionary.prepareDb();
|
||||
}).then(exists => {
|
||||
if (!exists) {
|
||||
return Promise.all([
|
||||
this.dictionary.importKanjiDict('bg/data/kanjidic/index.json'),
|
||||
this.dictionary.importTermDict('bg/data/edict/index.json'),
|
||||
this.dictionary.importTermDict('bg/data/enamdict/index.json')
|
||||
]).then(() => this.dictionary.sealDb());
|
||||
if (exists) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (callback) {
|
||||
callback({state: 'begin', progress: 0});
|
||||
}
|
||||
|
||||
let banksLoaded = 0;
|
||||
let banksTotal = 0;
|
||||
|
||||
const bankCallback = (loaded, total) => {
|
||||
banksLoaded += loaded;
|
||||
banksTotal += total;
|
||||
|
||||
if (callback) {
|
||||
callback({state: 'update', progress: Math.ceil(100 * banksLoaded / banksTotal)});
|
||||
}
|
||||
};
|
||||
|
||||
return Promise.all([
|
||||
this.dictionary.importTermDict('bg/data/edict/index.json', bankCallback),
|
||||
this.dictionary.importTermDict('bg/data/enamdict/index.json', bankCallback),
|
||||
this.dictionary.importKanjiDict('bg/data/kanjidic/index.json', bankCallback),
|
||||
]).then(() => {
|
||||
return this.dictionary.sealDb();
|
||||
}).then(() => {
|
||||
if (callback) {
|
||||
callback({state: 'end', progress: 100});
|
||||
}
|
||||
});
|
||||
}).then(() => {
|
||||
this.loaded = true;
|
||||
});
|
||||
|
Loading…
Reference in New Issue
Block a user