basic structure for feature-merge-similar-results
This commit is contained in:
parent
9106b59af6
commit
b24c705234
@ -29,9 +29,9 @@ async function apiTermsFind(text) {
|
|||||||
const options = utilBackend().options;
|
const options = utilBackend().options;
|
||||||
const translator = utilBackend().translator;
|
const translator = utilBackend().translator;
|
||||||
|
|
||||||
const searcher = options.general.groupResults ?
|
const searcher = (options.general.resultOutputMode === 'merge') && translator.findTermsMerged.bind(translator)
|
||||||
translator.findTermsGrouped.bind(translator) :
|
|| (options.general.resultOutputMode === 'split') && translator.findTermsSplit.bind(translator)
|
||||||
translator.findTermsSplit.bind(translator);
|
|| (options.general.resultOutputMode === 'group') && translator.findTermsGrouped.bind(translator);
|
||||||
|
|
||||||
const {definitions, length} = await searcher(
|
const {definitions, length} = await searcher(
|
||||||
text,
|
text,
|
||||||
|
@ -208,7 +208,7 @@ class Database {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
for (const [expression, reading, tags, rules, score, glossary] of entries) {
|
for (const [expression, reading, tags, rules, score, glossary, sequence] of entries) {
|
||||||
rows.push({
|
rows.push({
|
||||||
expression,
|
expression,
|
||||||
reading,
|
reading,
|
||||||
@ -216,6 +216,7 @@ class Database {
|
|||||||
rules,
|
rules,
|
||||||
score,
|
score,
|
||||||
glossary,
|
glossary,
|
||||||
|
sequence,
|
||||||
dictionary: summary.title
|
dictionary: summary.title
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
@ -207,7 +207,8 @@ async function dictFieldFormat(field, definition, mode, options) {
|
|||||||
const data = {
|
const data = {
|
||||||
marker,
|
marker,
|
||||||
definition,
|
definition,
|
||||||
group: options.general.groupResults,
|
group: options.general.resultOutputMode === 'group',
|
||||||
|
merge: options.general.resultOutputMode === 'merge',
|
||||||
modeTermKanji: mode === 'term-kanji',
|
modeTermKanji: mode === 'term-kanji',
|
||||||
modeTermKana: mode === 'term-kana',
|
modeTermKana: mode === 'term-kana',
|
||||||
modeKanji: mode === 'kanji'
|
modeKanji: mode === 'kanji'
|
||||||
|
@ -132,7 +132,7 @@ function optionsSetDefaults(options) {
|
|||||||
enable: true,
|
enable: true,
|
||||||
audioSource: 'jpod101',
|
audioSource: 'jpod101',
|
||||||
audioVolume: 100,
|
audioVolume: 100,
|
||||||
groupResults: true,
|
resultOutputMode: 'group',
|
||||||
debugInfo: false,
|
debugInfo: false,
|
||||||
maxResults: 32,
|
maxResults: 32,
|
||||||
showAdvanced: false,
|
showAdvanced: false,
|
||||||
|
@ -22,9 +22,9 @@ async function formRead() {
|
|||||||
const optionsNew = $.extend(true, {}, optionsOld);
|
const optionsNew = $.extend(true, {}, optionsOld);
|
||||||
|
|
||||||
optionsNew.general.showGuide = $('#show-usage-guide').prop('checked');
|
optionsNew.general.showGuide = $('#show-usage-guide').prop('checked');
|
||||||
|
optionsNew.general.resultOutputMode = $('#result-output-mode').val();
|
||||||
optionsNew.general.audioSource = $('#audio-playback-source').val();
|
optionsNew.general.audioSource = $('#audio-playback-source').val();
|
||||||
optionsNew.general.audioVolume = parseFloat($('#audio-playback-volume').val());
|
optionsNew.general.audioVolume = parseFloat($('#audio-playback-volume').val());
|
||||||
optionsNew.general.groupResults = $('#group-terms-results').prop('checked');
|
|
||||||
optionsNew.general.debugInfo = $('#show-debug-info').prop('checked');
|
optionsNew.general.debugInfo = $('#show-debug-info').prop('checked');
|
||||||
optionsNew.general.showAdvanced = $('#show-advanced-options').prop('checked');
|
optionsNew.general.showAdvanced = $('#show-advanced-options').prop('checked');
|
||||||
optionsNew.general.maxResults = parseInt($('#max-displayed-results').val(), 10);
|
optionsNew.general.maxResults = parseInt($('#max-displayed-results').val(), 10);
|
||||||
@ -124,9 +124,9 @@ async function onReady() {
|
|||||||
const options = await optionsLoad();
|
const options = await optionsLoad();
|
||||||
|
|
||||||
$('#show-usage-guide').prop('checked', options.general.showGuide);
|
$('#show-usage-guide').prop('checked', options.general.showGuide);
|
||||||
|
$('#result-output-mode').val(options.general.resultOutputMode);
|
||||||
$('#audio-playback-source').val(options.general.audioSource);
|
$('#audio-playback-source').val(options.general.audioSource);
|
||||||
$('#audio-playback-volume').val(options.general.audioVolume);
|
$('#audio-playback-volume').val(options.general.audioVolume);
|
||||||
$('#group-terms-results').prop('checked', options.general.groupResults);
|
|
||||||
$('#show-debug-info').prop('checked', options.general.debugInfo);
|
$('#show-debug-info').prop('checked', options.general.debugInfo);
|
||||||
$('#show-advanced-options').prop('checked', options.general.showAdvanced);
|
$('#show-advanced-options').prop('checked', options.general.showAdvanced);
|
||||||
$('#max-displayed-results').val(options.general.maxResults);
|
$('#max-displayed-results').val(options.general.maxResults);
|
||||||
|
@ -48,6 +48,18 @@ class Translator {
|
|||||||
return {length, definitions: definitionsGrouped};
|
return {length, definitions: definitionsGrouped};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
async findTermsMerged(text, dictionaries, alphanumeric) {
|
||||||
|
const titles = Object.keys(dictionaries);
|
||||||
|
const {length, definitions} = await this.findTerms(text, dictionaries, alphanumeric);
|
||||||
|
|
||||||
|
const definitionsMerged = dictTermsGroup(definitions, dictionaries);
|
||||||
|
// for (const definition of definitionsMerged) {
|
||||||
|
// await this.buildTermFrequencies(definition, titles);
|
||||||
|
// }
|
||||||
|
|
||||||
|
return {length, definitions: definitionsMerged};
|
||||||
|
}
|
||||||
|
|
||||||
async findTermsSplit(text, dictionaries, alphanumeric) {
|
async findTermsSplit(text, dictionaries, alphanumeric) {
|
||||||
const titles = Object.keys(dictionaries);
|
const titles = Object.keys(dictionaries);
|
||||||
const {length, definitions} = await this.findTerms(text, dictionaries, alphanumeric);
|
const {length, definitions} = await this.findTerms(text, dictionaries, alphanumeric);
|
||||||
@ -90,7 +102,8 @@ class Translator {
|
|||||||
expression: definition.expression,
|
expression: definition.expression,
|
||||||
reading: definition.reading,
|
reading: definition.reading,
|
||||||
glossary: definition.glossary,
|
glossary: definition.glossary,
|
||||||
tags: dictTagsSort(tags)
|
tags: dictTagsSort(tags),
|
||||||
|
sequence: definition.sequence
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -35,10 +35,6 @@
|
|||||||
<label><input type="checkbox" id="show-usage-guide"> Show usage guide on startup</label>
|
<label><input type="checkbox" id="show-usage-guide"> Show usage guide on startup</label>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="checkbox">
|
|
||||||
<label><input type="checkbox" id="group-terms-results"> Group term results</label>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="checkbox">
|
<div class="checkbox">
|
||||||
<label><input type="checkbox" id="show-advanced-options"> Show advanced options</label>
|
<label><input type="checkbox" id="show-advanced-options"> Show advanced options</label>
|
||||||
</div>
|
</div>
|
||||||
@ -47,6 +43,15 @@
|
|||||||
<label><input type="checkbox" id="show-debug-info"> Show debug information</label>
|
<label><input type="checkbox" id="show-debug-info"> Show debug information</label>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<div class="form-group">
|
||||||
|
<label for="result-output-mode">Result output mode</label>
|
||||||
|
<select class="form-control" id="result-output-mode">
|
||||||
|
<option value="group">Group results by written form and reading</option>
|
||||||
|
<option value="merge">Group results by main dictionary entry ID (experimental)</option>
|
||||||
|
<option value="split">Split definitions to their own results</option>
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
|
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<label for="audio-playback-source">Audio playback source</label>
|
<label for="audio-playback-source">Audio playback source</label>
|
||||||
<select class="form-control" id="audio-playback-source">
|
<select class="form-control" id="audio-playback-source">
|
||||||
|
@ -234,7 +234,8 @@ class Display {
|
|||||||
const params = {
|
const params = {
|
||||||
definitions,
|
definitions,
|
||||||
addable: options.anki.enable,
|
addable: options.anki.enable,
|
||||||
grouped: options.general.groupResults,
|
grouped: options.general.resultOutputMode === 'group',
|
||||||
|
merged: options.general.resultOutputMode === 'merge',
|
||||||
playback: options.general.audioSource !== 'disabled',
|
playback: options.general.audioSource !== 'disabled',
|
||||||
debug: options.general.debugInfo
|
debug: options.general.debugInfo
|
||||||
};
|
};
|
||||||
|
Loading…
Reference in New Issue
Block a user