diff --git a/ext/bg/js/search.js b/ext/bg/js/search.js index 348e7680..9368a3cd 100644 --- a/ext/bg/js/search.js +++ b/ext/bg/js/search.js @@ -17,3 +17,62 @@ */ +function onSearch(e) { + e.preventDefault(); + + instYomi().termsFind($('#query').val()).then(({length, definitions}) => { + const options = instYomi().options; + const params = { + definitions, + grouped: options.general.groupResults, + addable: options.anki.enabled, + playback: options.general.audioPlayback + }; + + return instYomi().textRender('terms.html', params); + }).then(content => { + $('#content').html(content); + }); + + // const sequence = ++this.sequence; + // const params = { + // definitions, + // grouped: options.general.groupResults, + // addable: options.ankiMethod !== 'disabled', + // playback: options.general.audioPlayback + // }; + + // definitions.forEach(definition => { + // definition.sentence = context.sentence; + // definition.url = context.url; + // }); + + // this.definitions = definitions; + // this.showSpinner(false); + // window.scrollTo(0, 0); + + // bgTextRender(params, 'terms.html').then(content => { + // $('#content').html(content); + // $('.action-add-note').click(this.onAddNote.bind(this)); + + // $('.kanji-link').click(e => { + // e.preventDefault(); + // const character = $(e.target).text(); + // bgKanjiFind(character).then(definitions => this.api_showKanjiDefs({definitions, options, context})); + // }); + + // $('.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); + // }).catch(error => { + // this.handleError(error); + // }); +} + +$(document).ready(() => { + $('#search').click(onSearch); +}); diff --git a/ext/bg/js/yomichan.js b/ext/bg/js/yomichan.js index 63e3e959..898f2eea 100644 --- a/ext/bg/js/yomichan.js +++ b/ext/bg/js/yomichan.js @@ -126,39 +126,40 @@ class Yomichan { return note; } + termsFind(text) { + const searcher = this.options.general.groupResults ? + this.translator.findTermsGrouped.bind(this.translator) : + this.translator.findTerms.bind(this.translator); + + return searcher(text, dictEnabled(this.options), this.options.general.softKatakana).then(({definitions, length}) => { + return {length, definitions: definitions.slice(0, this.options.general.maxResults)}; + }); + } + + kanjiFind(text) { + return this.translator.findKanji(text, dictEnabled(this.options)).then(definitions => { + return definitions.slice(0, this.options.general.maxResults); + }); + } + + textRender(template, data) { + return Handlebars.templates[template](data); + } + api_optionsGet({callback}) { promiseCallback(optionsLoad(), callback); } api_kanjiFind({text, callback}) { - promiseCallback( - this.translator.findKanji(text, dictEnabled(this.options)).then(definitions => { - return definitions.slice(0, this.options.general.maxResults); - }), - callback - ); + promiseCallback(this.kanjiFind(text), callback); } api_termsFind({text, callback}) { - promiseCallback( - this.translator.findTerms(text, dictEnabled(this.options), this.options.general.softKatakana).then(({definitions, length}) => { - return {length, definitions: definitions.slice(0, this.options.general.maxResults)}; - }), - callback - ); - } - - api_termsFindGrouped({text, callback}) { - promiseCallback( - this.translator.findTermsGrouped(text, dictEnabled(this.options), this.options.general.softKatakana).then(({definitions, length}) => { - return {length, definitions: definitions.slice(0, this.options.general.maxResults)}; - }), - callback - ); + promiseCallback(this.termsFind(text), callback); } api_textRender({template, data, callback}) { - callback({result: Handlebars.templates[template](data)}); + callback({result: this.textRender(template, data)}); } api_definitionAdd({definition, mode, callback}) { diff --git a/ext/bg/search.html b/ext/bg/search.html index 0fbe8699..68bc6e03 100644 --- a/ext/bg/search.html +++ b/ext/bg/search.html @@ -5,19 +5,24 @@
-