diff options
| -rw-r--r-- | ext/bg/js/search.js | 59 | ||||
| -rw-r--r-- | ext/bg/js/yomichan.js | 45 | ||||
| -rw-r--r-- | ext/bg/search.html | 13 | ||||
| -rw-r--r-- | ext/fg/js/driver.js | 3 | ||||
| -rw-r--r-- | ext/fg/js/frame.js | 6 | ||||
| -rw-r--r-- | ext/fg/js/util.js | 6 | 
6 files changed, 96 insertions, 36 deletions
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 @@          <title>Yomichan Search</title>          <link rel="stylesheet" type="text/css" href="../lib/bootstrap-3.3.7-dist/css/bootstrap.min.css">          <link rel="stylesheet" type="text/css" href="../lib/bootstrap-3.3.7-dist/css/bootstrap-theme.min.css"> +        <link rel="stylesheet" type="text/css" href="../fg/css/frame.css">      </head>      <body>          <div class="container-fluid">              <p> -                <div class="input-group"> -                    <input type="text" class="form-control" placeholder="Search for..."> +                <form class="input-group"> +                    <input type="text" class="form-control" placeholder="Search for..." id="query">                      <span class="input-group-btn"> -                        <button class="btn btn-default form-control" type="button">Search</button> +                        <input type="submit" class="btn btn-default form-control" id="search" value="Search">                      </span> -                </div> +                </form>              </p> + +            <div id="content"></div>          </div> +        <script src="../lib/jquery-3.1.1.min.js"></script>          <script src="js/gecko.js"></script> +        <script src="js/util.js"></script>          <script src="js/search.js"></script>      </body>  </html> diff --git a/ext/fg/js/driver.js b/ext/fg/js/driver.js index c953481e..87cce875 100644 --- a/ext/fg/js/driver.js +++ b/ext/fg/js/driver.js @@ -139,8 +139,7 @@ class Driver {      searchTerms(textSource) {          textSource.setEndOffset(this.options.scanning.length); -        const findFunc = this.options.general.groupResults ? bgTermsFindGrouped : bgTermsFind; -        return findFunc(textSource.text()).then(({definitions, length}) => { +        return bgTermsFind(textSource.text()).then(({definitions, length}) => {              if (definitions.length === 0) {                  return false;              } else { diff --git a/ext/fg/js/frame.js b/ext/fg/js/frame.js index b5077531..32e227d0 100644 --- a/ext/fg/js/frame.js +++ b/ext/fg/js/frame.js @@ -36,7 +36,7 @@ class Frame {          const params = {              definitions,              grouped: options.general.groupResults, -            addable: options.ankiMethod !== 'disabled', +            addable: options.anki.enabled,              playback: options.general.audioPlayback          }; @@ -49,7 +49,7 @@ class Frame {          this.showSpinner(false);          window.scrollTo(0, 0); -        bgTextRender(params, 'terms.html').then(content => { +        bgTextRender('terms.html', params).then(content => {              $('#content').html(content);              $('.action-add-note').click(this.onAddNote.bind(this)); @@ -87,7 +87,7 @@ class Frame {          this.showSpinner(false);          window.scrollTo(0, 0); -        bgTextRender(params, 'kanji.html').then(content => { +        bgTextRender('kanji.html', params).then(content => {              $('#content').html(content);              $('.action-add-note').click(this.onAddNote.bind(this)); diff --git a/ext/fg/js/util.js b/ext/fg/js/util.js index 85552a31..c38112f5 100644 --- a/ext/fg/js/util.js +++ b/ext/fg/js/util.js @@ -46,15 +46,11 @@ function bgTermsFind(text) {      return bgInvoke('termsFind', {text});  } -function bgTermsFindGrouped(text) { -    return bgInvoke('termsFindGrouped', {text}); -} -  function bgKanjiFind(text) {      return bgInvoke('kanjiFind', {text});  } -function bgTextRender(data, template) { +function bgTextRender(template, data) {      return bgInvoke('textRender', {data, template});  }  |