summaryrefslogtreecommitdiff
path: root/ext
diff options
context:
space:
mode:
authorsiikamiika <siikamiika@users.noreply.github.com>2019-08-01 02:20:09 +0300
committersiikamiika <siikamiika@users.noreply.github.com>2019-08-01 02:20:09 +0300
commitb8df9896e643c772253749a335b2abf0daa7a282 (patch)
treef4bd8f3e5dbbd7e50426d3ba5f31311b830d651e /ext
parent7cfcfb3bf34bb128dc4f5a47e7846fe4cc4c8c81 (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.html2
-rw-r--r--ext/fg/js/float.js35
-rw-r--r--ext/mixed/js/display.js1
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) {