WIP
This commit is contained in:
parent
0498ea5d36
commit
148291d3a7
@ -82,6 +82,12 @@ class Translator {
|
||||
});
|
||||
}
|
||||
|
||||
findTermGrouped(text, dictionaries, enableSoftKatakanaSearch) {
|
||||
return this.findTerm(text, dictionaries, enableSoftKatakanaSearch).then(({length, definitions}) => {
|
||||
return {length, definitions: groupTermDefs(definitions)};
|
||||
});
|
||||
}
|
||||
|
||||
findKanji(text, dictionaries) {
|
||||
const processed = {}, promises = [];
|
||||
for (const c of text) {
|
||||
|
@ -116,7 +116,7 @@ function groupTermDefs(definitions) {
|
||||
|
||||
const tagCounts = {};
|
||||
for (const tag of groupDefs.map(def => def.tags)) {
|
||||
const count = tagsGlobal[tag.name] || 0;
|
||||
const count = tagCounts[tag.name] || 0;
|
||||
tagCounts[tag.name] = count + 1;
|
||||
}
|
||||
|
||||
|
@ -188,7 +188,29 @@ class Yomichan {
|
||||
}
|
||||
|
||||
promiseCallback(
|
||||
this.translator.findTerm(text, dictionaries, this.options.enableSoftKatakanaSearch),
|
||||
this.translator.findTerm(
|
||||
text,
|
||||
dictionaries,
|
||||
this.options.enableSoftKatakanaSearch
|
||||
),
|
||||
callback
|
||||
);
|
||||
}
|
||||
|
||||
api_findTermGrouped({text, callback}) {
|
||||
const dictionaries = [];
|
||||
for (const title in this.options.dictionaries) {
|
||||
if (this.options.dictionaries[title].enableTerms) {
|
||||
dictionaries.push(title);
|
||||
}
|
||||
}
|
||||
|
||||
promiseCallback(
|
||||
this.translator.findTermGrouped(
|
||||
text,
|
||||
dictionaries,
|
||||
this.options.enableSoftKatakanaSearch
|
||||
),
|
||||
callback
|
||||
);
|
||||
}
|
||||
|
@ -146,7 +146,14 @@ class Driver {
|
||||
searchTerms(textSource) {
|
||||
textSource.setEndOffset(this.options.scanLength);
|
||||
|
||||
return findTerm(textSource.text()).then(({definitions, length}) => {
|
||||
let findFunc = findTerm;
|
||||
let showFunc = this.popup.showTermDefs.bind(this.popup);
|
||||
if (this.options.groupTermResults) {
|
||||
findFunc = findTermGrouped;
|
||||
showFunc = this.popup.showTermGroupedDefs.bind(this.popup);
|
||||
}
|
||||
|
||||
return findFunc(textSource.text()).then(({definitions, length}) => {
|
||||
if (definitions.length === 0) {
|
||||
return false;
|
||||
} else {
|
||||
@ -159,7 +166,7 @@ class Driver {
|
||||
});
|
||||
|
||||
this.popup.showNextTo(textSource.getRect());
|
||||
this.popup.showTermDefs(definitions, this.options);
|
||||
showFunc(definitions, this.options);
|
||||
this.lastTextSource = textSource;
|
||||
if (this.options.selectMatchedText) {
|
||||
textSource.select();
|
||||
|
@ -61,6 +61,37 @@ class Frame {
|
||||
});
|
||||
}
|
||||
|
||||
api_showTermGroupedDefs({definitions, options}) {
|
||||
const sequence = ++this.sequence;
|
||||
const context = {
|
||||
definitions,
|
||||
addable: options.ankiMethod !== 'disabled',
|
||||
playback: options.enableAudioPlayback
|
||||
};
|
||||
|
||||
this.definitions = definitions;
|
||||
this.showSpinner(false);
|
||||
window.scrollTo(0, 0);
|
||||
|
||||
renderText(context, 'term-list.html').then(content => {
|
||||
$('.content').html(content);
|
||||
$('.action-add-note').click(this.onAddNote.bind(this));
|
||||
|
||||
$('.kanji-link').click(e => {
|
||||
e.preventDefault();
|
||||
findKanji($(e.target).text()).then(kdefs => this.api_showKanjiDefs({options, definitions: kdefs}));
|
||||
});
|
||||
|
||||
$('.action-play-audio').click(e => {
|
||||
e.preventDefault();
|
||||
const index = $(e.currentTarget).data('index');
|
||||
this.playAudio(this.definitions[index]);
|
||||
});
|
||||
|
||||
this.updateAddNoteButtons(['term_kanji', 'term_kana'], sequence);
|
||||
});
|
||||
}
|
||||
|
||||
api_showKanjiDefs({definitions, options}) {
|
||||
const sequence = ++this.sequence;
|
||||
const context = {
|
||||
|
@ -74,6 +74,10 @@ class Popup {
|
||||
this.invokeApi('showTermDefs', {definitions, options});
|
||||
}
|
||||
|
||||
showTermGroupedDefs(definitions, options) {
|
||||
this.invokeApi('showTermGroupedDefs', {definitions, options});
|
||||
}
|
||||
|
||||
showKanjiDefs(definitions, options) {
|
||||
this.invokeApi('showKanjiDefs', {definitions, options});
|
||||
}
|
||||
|
@ -41,6 +41,10 @@ function findTerm(text) {
|
||||
return invokeBgApi('findTerm', {text});
|
||||
}
|
||||
|
||||
function findTermGrouped(text) {
|
||||
return invokeBgApi('findTermGrouped', {text});
|
||||
}
|
||||
|
||||
function findKanji(text) {
|
||||
return invokeBgApi('findKanji', {text});
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user