diff options
author | siikamiika <siikamiika@users.noreply.github.com> | 2019-08-01 02:20:09 +0300 |
---|---|---|
committer | siikamiika <siikamiika@users.noreply.github.com> | 2019-08-01 02:20:09 +0300 |
commit | b8df9896e643c772253749a335b2abf0daa7a282 (patch) | |
tree | f4bd8f3e5dbbd7e50426d3ba5f31311b830d651e /ext | |
parent | 7cfcfb3bf34bb128dc4f5a47e7846fe4cc4c8c81 (diff) |
allow looking up terms from within terms
resolves #167, resolves #139, resolves #75, resolves #151
Diffstat (limited to 'ext')
-rw-r--r-- | ext/fg/float.html | 2 | ||||
-rw-r--r-- | ext/fg/js/float.js | 35 | ||||
-rw-r--r-- | ext/mixed/js/display.js | 1 |
3 files changed, 38 insertions, 0 deletions
diff --git a/ext/fg/float.html b/ext/fg/float.html index fed7eeab..07f2d58b 100644 --- a/ext/fg/float.html +++ b/ext/fg/float.html @@ -36,6 +36,8 @@ <script src="/fg/js/api.js"></script> <script src="/fg/js/util.js"></script> + <script src="/fg/js/document.js"></script> + <script src="/fg/js/source.js"></script> <script src="/mixed/js/display.js"></script> <script src="/fg/js/float.js"></script> diff --git a/ext/fg/js/float.js b/ext/fg/js/float.js index 1deb61a9..65ed89a1 100644 --- a/ext/fg/js/float.js +++ b/ext/fg/js/float.js @@ -123,6 +123,41 @@ class DisplayFloat extends Display { parent.appendChild(this.styleNode); } } + + async onTermLookup(e) { + try { + e.preventDefault(); + + const clickedElement = $(e.target); + const textSource = docRangeFromPoint({x: e.clientX, y: e.clientY}); + textSource.setEndOffset(this.options.scanning.length); + + const {definitions, length} = await apiTermsFind(textSource.text()); + if (definitions.length === 0) { + return false; + } + + textSource.setEndOffset(length); + + const sentence = docSentenceExtract(textSource, this.options.anki.sentenceExt); + + const context = { + source: { + definitions: this.definitions, + index: Display.entryIndexFind(clickedElement) + } + }; + + if (this.context) { + context.sentence = sentence; + context.url = this.context.url; + } + + this.termsShow(definitions, this.options, context); + } catch (e) { + this.onError(e); + } + } } window.yomichan_display = new DisplayFloat(); diff --git a/ext/mixed/js/display.js b/ext/mixed/js/display.js index 43eb93c1..364d67d8 100644 --- a/ext/mixed/js/display.js +++ b/ext/mixed/js/display.js @@ -265,6 +265,7 @@ class Display { $('.action-view-note').click(this.onNoteView.bind(this)); $('.action-play-audio').click(this.onAudioPlay.bind(this)); $('.kanji-link').click(this.onKanjiLookup.bind(this)); + $('.glossary li').click(this.onTermLookup.bind(this)); await this.adderButtonUpdate(['term-kanji', 'term-kana'], sequence); } catch (e) { |