// ==UserScript== // @name WaniKani Quick Info // @namespace WKQI // @version 0.2 // @description Shows available information while waiting for the server response // @author Ethan // @include http*://www.wanikani.com/review/session* // @grant none // @downloadURL https://update.greasyfork.icu/scripts/9814/WaniKani%20Quick%20Info.user.js // @updateURL https://update.greasyfork.icu/scripts/9814/WaniKani%20Quick%20Info.meta.js // ==/UserScript== function getComponents(vocab){ //takes in a string and returns an array containing only the kanji characters in the string. var components = []; for (var c = 0; c < vocab.length; c++){ if(/^[\u4e00-\u9faf]+$/.test(vocab[c])) { components.push(vocab[c]); } } return components; } function doubleKanjiWithFill(charArray, fill){ //takes an array of kanji, and returns a string array with html filling. var htmlArray =[]; for (var i = 0; i < charArray.length; i++){ htmlArray.push(charArray[i] + fill + charArray[i]); } return htmlArray; } //Modified WaniKani functions with new features and meaningful names. if (typeof additionalContent !== 'undefined'){ console.log(additionalContent); additionalContent.itemInfo = function (){ var regex,htmlify; return regex=function(e){ switch(e){ case"radical":return/\[(?:radical)\]/gi; case"kanji":return/\[(?:kanji)\]/gi; case"vocabulary":return/\[(?:vocabulary)\]/gi; case"meaning":return/\[(?:meaning)\]/gi; case"reading":return/\[(?:reading)\]/gi; case"ja":return/\[(?:ja)\]/gi; case"closeTagSpan":return/\[\/(?:radical|kanji|vocabulary|meaning|reading|ja)\]/gi } }, htmlify=function(t){ var n,r,i; t=t.replace("\r\n","

"), i=["radical","kanji","vocabulary","meaning","reading","ja","closeTagSpan"]; for(n in i) r=i[n], t=function(){ switch(r){ case"ja":return t.replace(regex(r),''); case"closeTagSpan":return t.replace(regex(r),""); default:return t.replace(regex(r),'') } }(); return t }, $("#option-item-info").click(function(){ var s,e,n,r,i,o,u,loading, loadingImg; s=$("#item-info"), r=$.jStorage.get("currentItem"), o=$.jStorage.get("questionType"), i=r.rad?"r":r.kan?"k":r.voc?"v":void 0; if(s.is(":visible")&&(s.data("question-type")!==o||s.data("id")!==i+r.id)){ $("#additional-content-load").hide(), $("#information-offline").hide(), e=$("#item-info-col1"), n=$("#item-info-col2"), loading = "";//put crabigator here e.empty(),n.empty(); if(r.rad){ e.html("

Name

"+r.en.join(", ")+'

User Synonyms

' + r.syn.join(" ") + '
'), n.html("

Mnemonics

"+loading+'
'); return u="/json/radical/"+r.id, $.getJSON(u,function(i){ return i.mnemonic=htmlify(i.mnemonic), e.html("

Name

"+i.en+'

User Synonyms

'), n.html("

Mnemonics

"+i.mnemonic+'

Name Note

'), UserSynonyms.load("radical",r.syn.join(),r.id,!0), Notes.add("radical","meaning",r.id,i.meaning_note,$("#note-meaning")), $("#all-info").hide(), // $("#additional-content-load").fadeOut(200), s.data("id","r"+r.id), s.data("question-type",o) } ).fail(function(){return $("#information-offline").show(),s.show()}); } if(r.kan){ var l=r.emph==="onyomi"?r.on:r.kun; e.html('

Meanings

'+r.en.join(", ")+'

User Synonyms

' + r.syn.join(" ") + '

Important Readings ('+r.emph+")

"+l+'
"); n.html('

Meaning Mnemonic

'+loading+'

Reading Mnemonic

'+loading+'
'), o==="meaning"?$("#item-info-reading, #item-info-reading-mnemonic, #note-reading").hide():$("#item-info-meaning, #item-info-meaning-mnemonic, #note-meaning, .user-synonyms").hide(); u="/json/kanji/"+r.id; return $.getJSON(u,function(i){ var u,a,f,c,h; i.meaning_mnemonic=htmlify(i.meaning_mnemonic), i.reading_mnemonic=htmlify(i.reading_mnemonic), i.meaning_hint=htmlify(i.meaning_hint), i.reading_hint=htmlify(i.reading_hint), c="", h=i.related; for(f in h)a=h[f], u=a.custom_font_name?'':/.png/i.test(a.rad)?'':a.rad, c+='
  • '+u+" "+a.en.split(",")[0]+"
  • "; return e.html('

    Meanings

    '+i.en+'

    User Synonyms

    Important Readings ('+r.emph+")

    "+l+'
    "), n.html('

    Meaning Mnemonic

    '+i.meaning_mnemonic+'

    HINT

    '+i.meaning_hint+'

    Meaning Note

    Reading Mnemonic

    '+i.reading_mnemonic+'

    HINT

    '+i.reading_hint+'

    Reading Note

    '), Notes.add("kanji","meaning",r.id,i.meaning_note,$("#note-meaning")), Notes.add("kanji","reading",r.id,i.reading_note,$("#note-reading")), UserSynonyms.load("kanji",r.syn.join(),r.id,!0), o==="meaning"?$("#item-info-reading, #item-info-reading-mnemonic, #note-reading") .hide():$("#item-info-meaning, #item-info-meaning-mnemonic, #note-meaning, .user-synonyms") .hide(),$("#all-info") .show(),//$("#additional-content-load") // .fadeOut(200), s.data("id","k"+r.id), s.data("question-type",o) }).fail(function(){return $("#information-offline").show(),s.show()}); } if(r.voc){ e.html('

    Meanings

    '+r.en.join(", ")+'

    User Synonyms

    ' + r.syn.join(" ") +'

    Reading

    '+r.kana.join(", ")+'

    Part of Speech

    '+loading+'

    Reading Explanation

    '+loading+'

    Context Sentence

    '+loading+"
    "), o==="meaning"?$("#item-info-reading, #item-info-reading-mnemonic, #note-reading").hide():$("#item-info-meaning, #item-info-meaning-mnemonic, #note-meaning, .user-synonyms").hide(); return u="/json/vocabulary/"+r.id, $.getJSON(u,function(i){ var u,a,f,l,c; i.meaning_explanation=htmlify(i.meaning_explanation), i.reading_explanation=htmlify(i.reading_explanation), l="", c=i.related; for(f in c)a=c[f], l+='
  • '+a.kan+" "+a.en+"
  • "; return u=i.sentences.length===0?"

    N/A

    ":"

    "+i.sentences[0][0]+"

    "+i.sentences[0][1]+"

    ", e.html('

    Meanings

    '+i.en+'

    User Synonyms

    Reading

    '+i.kana+'

    Part of Speech

    '+i.part_of_speech+'
    "), n.html('

    Meaning Explanation

    '+i.meaning_explanation+'

    Meaning Note

    Reading Explanation

    '+i.reading_explanation+'

    Reading Note

    Context Sentence

    '+u+"
    "), Notes.add("vocabulary","meaning",r.id,i.meaning_note,$("#note-meaning")), Notes.add("vocabulary","reading",r.id,i.reading_note,$("#note-reading")), UserSynonyms.load("vocabulary",r.syn.join(),r.id,!0), o==="meaning"?$("#item-info-reading, #item-info-reading-mnemonic, #note-reading").hide():$("#item-info-meaning, #item-info-meaning-mnemonic, #note-meaning, .user-synonyms").hide(), $("#all-info").show(), // alert("stop"), //$("#additional-content-load").fadeOut(200), s.data("id","v"+r.id), s.data("question-type",o)}).fail(function(){return $("#information-offline").show(),s.show()}) } } }); } }else{ console.log("WKQI: additionalContent object not found"); } additionalContent.itemInfo();