From 392f578930ee8d042a76ea2f571ab97db1f85a77 Mon Sep 17 00:00:00 2001 From: Marco Omainska Date: Fri, 13 Jan 2023 22:26:32 +0100 Subject: [PATCH 01/19] =?UTF-8?q?=E2=9C=A8=20niai:=20sort=20kanji=20by=20w?= =?UTF-8?q?k-level?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- wanikani-similar-kanji/wk_niai.main.js | 30 ++++++++++++++++++++------ 1 file changed, 24 insertions(+), 6 deletions(-) diff --git a/wanikani-similar-kanji/wk_niai.main.js b/wanikani-similar-kanji/wk_niai.main.js index bc39c0d..87af74c 100644 --- a/wanikani-similar-kanji/wk_niai.main.js +++ b/wanikani-similar-kanji/wk_niai.main.js @@ -117,13 +117,31 @@ function WK_Niai() if (this.settings.use_alt) use_sources = [...this.settings.alt_sources, ...use_sources]; - const similar_list = [kanji, - ...this.ndb.getSimilar(kanji, - this.settings.user_level, - use_sources, - this.settings.min_score)]; - let char_list = []; + // sort similar kanji by level + var similar_kanji = this.ndb.getSimilar(kanji,this.settings.user_level,use_sources,this.settings.min_score); + similar_kanji.sort(function(kanjiA,kanjiB) { + // kanjis not in DB should be shown last + const kanjiA_inDB = this.ndb.isKanjiInDB(kanjiA); + const kanjiB_inDB = this.ndb.isKanjiInDB(kanjiB); + if (!kanjiA_inDB && !kanjiB) + return 0; + else if (kanjiA_inDB && !kanjiB) + return -1; + else if (!kanjiA_inDB && kanjiB) + return 1; + + // sort by ascending level + const kanjiA_level = this.ndb.getInfo(kanjiA).level; + const kanjiB_level = this.ndb.getInfo(kanjiB).level; + if (kanjiA_level < kanjiB_level) + return -1; + if (kanjiA_level > kanjiB_level) + return 1; + return 0; + }); + const similar_list = [kanji,...similar_kanji]; + let char_list = []; similar_list.forEach( function(sim_kanji, i) { From a6450f0cca6241d2795984a11b07179513917c5e Mon Sep 17 00:00:00 2001 From: Marco Omainska Date: Fri, 13 Jan 2023 22:44:32 +0100 Subject: [PATCH 02/19] =?UTF-8?q?=F0=9F=90=9B=20niai:=20attempt=20to=20fix?= =?UTF-8?q?=20sorting=20bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- wanikani-similar-kanji/wk_niai.main.js | 40 ++++++++++++++------------ 1 file changed, 21 insertions(+), 19 deletions(-) diff --git a/wanikani-similar-kanji/wk_niai.main.js b/wanikani-similar-kanji/wk_niai.main.js index 87af74c..13804cb 100644 --- a/wanikani-similar-kanji/wk_niai.main.js +++ b/wanikani-similar-kanji/wk_niai.main.js @@ -119,26 +119,28 @@ function WK_Niai() // sort similar kanji by level var similar_kanji = this.ndb.getSimilar(kanji,this.settings.user_level,use_sources,this.settings.min_score); - similar_kanji.sort(function(kanjiA,kanjiB) { - // kanjis not in DB should be shown last - const kanjiA_inDB = this.ndb.isKanjiInDB(kanjiA); - const kanjiB_inDB = this.ndb.isKanjiInDB(kanjiB); - if (!kanjiA_inDB && !kanjiB) + similar_kanji.sort( + function(kanjiA,kanjiB) { + // kanjis not in DB should be shown last + const kanjiA_inDB = this.ndb.isKanjiInDB(kanjiA); + const kanjiB_inDB = this.ndb.isKanjiInDB(kanjiB); + if (!kanjiA_inDB && !kanjiB) + return 0; + else if (kanjiA_inDB && !kanjiB) + return -1; + else if (!kanjiA_inDB && kanjiB) + return 1; + + // sort by ascending level + const kanjiA_level = this.ndb.getInfo(kanjiA).level; + const kanjiB_level = this.ndb.getInfo(kanjiB).level; + if (kanjiA_level < kanjiB_level) + return -1; + if (kanjiA_level > kanjiB_level) + return 1; return 0; - else if (kanjiA_inDB && !kanjiB) - return -1; - else if (!kanjiA_inDB && kanjiB) - return 1; - - // sort by ascending level - const kanjiA_level = this.ndb.getInfo(kanjiA).level; - const kanjiB_level = this.ndb.getInfo(kanjiB).level; - if (kanjiA_level < kanjiB_level) - return -1; - if (kanjiA_level > kanjiB_level) - return 1; - return 0; - }); + }.bind(this) + ); const similar_list = [kanji,...similar_kanji]; let char_list = []; From b438283692f7f47b4f8d4887702bbece5e7d8a22 Mon Sep 17 00:00:00 2001 From: Marco Omainska Date: Fri, 20 Jan 2023 18:26:07 +0900 Subject: [PATCH 03/19] =?UTF-8?q?=E2=9C=A8=20change=20to=20sort=20by=20sco?= =?UTF-8?q?re?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- wanikani-similar-kanji/wk_niai.main.js | 70 +++++++++++++++++--------- 1 file changed, 47 insertions(+), 23 deletions(-) diff --git a/wanikani-similar-kanji/wk_niai.main.js b/wanikani-similar-kanji/wk_niai.main.js index 13804cb..2d5a81e 100644 --- a/wanikani-similar-kanji/wk_niai.main.js +++ b/wanikani-similar-kanji/wk_niai.main.js @@ -107,6 +107,50 @@ function WK_Niai() return result; }; + const sort_by_level = function(kanjiA,kanjiB) + { + // kanjis not in DB should be shown last + const kanjiA_inDB = this.ndb.isKanjiInDB(kanjiA); + const kanjiB_inDB = this.ndb.isKanjiInDB(kanjiB); + if (!kanjiA_inDB && !kanjiB) + return 0; + else if (kanjiA_inDB && !kanjiB) + return -1; + else if (!kanjiA_inDB && kanjiB) + return 1; + + // sort by ascending level + const kanjiA_level = this.ndb.getInfo(kanjiA).level; + const kanjiB_level = this.ndb.getInfo(kanjiB).level; + if (kanjiA_level < kanjiB_level) + return -1; + if (kanjiA_level > kanjiB_level) + return 1; + return 0; + }; + + const sort_by_score = function(kanjiA,kanjiB) + { + // kanjis not in DB should be shown last + const kanjiA_inDB = this.ndb.isKanjiInDB(kanjiA); + const kanjiB_inDB = this.ndb.isKanjiInDB(kanjiB); + if (!kanjiA_inDB && !kanjiB) + return 0; + else if (kanjiA_inDB && !kanjiB) + return -1; + else if (!kanjiA_inDB && kanjiB) + return 1; + + // sort by descending score + const kanjiA_score = this.ndb.getInfo(kanjiA).score; + const kanjiB_score = this.ndb.getInfo(kanjiB).score; + if (kanjiA_score < kanjiB_score) + return 1; + if (kanjiA_score > kanjiB_score) + return -1; + return 0; + }; + // ######################################################################### WK_Niai.prototype.populateNiaiSection = function(kanji, curPage) { @@ -117,30 +161,10 @@ function WK_Niai() if (this.settings.use_alt) use_sources = [...this.settings.alt_sources, ...use_sources]; - // sort similar kanji by level + // sort similar kanji by: score, level, ... var similar_kanji = this.ndb.getSimilar(kanji,this.settings.user_level,use_sources,this.settings.min_score); - similar_kanji.sort( - function(kanjiA,kanjiB) { - // kanjis not in DB should be shown last - const kanjiA_inDB = this.ndb.isKanjiInDB(kanjiA); - const kanjiB_inDB = this.ndb.isKanjiInDB(kanjiB); - if (!kanjiA_inDB && !kanjiB) - return 0; - else if (kanjiA_inDB && !kanjiB) - return -1; - else if (!kanjiA_inDB && kanjiB) - return 1; - - // sort by ascending level - const kanjiA_level = this.ndb.getInfo(kanjiA).level; - const kanjiB_level = this.ndb.getInfo(kanjiB).level; - if (kanjiA_level < kanjiB_level) - return -1; - if (kanjiA_level > kanjiB_level) - return 1; - return 0; - }.bind(this) - ); + similar_kanji.sort((kanjiA,kanjiB) => sort_by_score(kanjiA,kanjiB).bind(this)); + // similar_kanji.sort((kanjiA,kanjiB) => sort_by_level(kanjiA,kanjiB).bind(this)); const similar_list = [kanji,...similar_kanji]; let char_list = []; From 746ff119f6c9b0f5f6048183f9cc2eca464d5eb3 Mon Sep 17 00:00:00 2001 From: Marco Omainska Date: Fri, 20 Jan 2023 18:31:41 +0900 Subject: [PATCH 04/19] =?UTF-8?q?=F0=9F=90=9B=20fix=20bug:=20function=20ha?= =?UTF-8?q?s=20not=20been=20binded=20to=20'this'?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- wanikani-similar-kanji/wk_niai.main.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/wanikani-similar-kanji/wk_niai.main.js b/wanikani-similar-kanji/wk_niai.main.js index 2d5a81e..376e9cb 100644 --- a/wanikani-similar-kanji/wk_niai.main.js +++ b/wanikani-similar-kanji/wk_niai.main.js @@ -163,8 +163,8 @@ function WK_Niai() // sort similar kanji by: score, level, ... var similar_kanji = this.ndb.getSimilar(kanji,this.settings.user_level,use_sources,this.settings.min_score); - similar_kanji.sort((kanjiA,kanjiB) => sort_by_score(kanjiA,kanjiB).bind(this)); - // similar_kanji.sort((kanjiA,kanjiB) => sort_by_level(kanjiA,kanjiB).bind(this)); + similar_kanji.sort(sort_by_score.bind(this)); + // similar_kanji.sort(sort_by_level.bind(this)); const similar_list = [kanji,...similar_kanji]; let char_list = []; From 12de089a5634e8ba0a7b8df1b384d09a91e97da5 Mon Sep 17 00:00:00 2001 From: Marco Omainska Date: Fri, 20 Jan 2023 18:49:31 +0900 Subject: [PATCH 05/19] =?UTF-8?q?=F0=9F=90=9B=20fix=20bug:=20kanjis=20not?= =?UTF-8?q?=20in=20WK?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- wanikani-similar-kanji/wk_niai.main.js | 61 ++++++++++++++++++++++---- 1 file changed, 52 insertions(+), 9 deletions(-) diff --git a/wanikani-similar-kanji/wk_niai.main.js b/wanikani-similar-kanji/wk_niai.main.js index 376e9cb..85b7a04 100644 --- a/wanikani-similar-kanji/wk_niai.main.js +++ b/wanikani-similar-kanji/wk_niai.main.js @@ -109,14 +109,24 @@ function WK_Niai() const sort_by_level = function(kanjiA,kanjiB) { - // kanjis not in DB should be shown last + // kanjis not in DB -> move to end const kanjiA_inDB = this.ndb.isKanjiInDB(kanjiA); const kanjiB_inDB = this.ndb.isKanjiInDB(kanjiB); - if (!kanjiA_inDB && !kanjiB) + if (!kanjiA_inDB && !kanjiB_inDB) return 0; - else if (kanjiA_inDB && !kanjiB) + else if (kanjiA_inDB && !kanjiB_inDB) return -1; - else if (!kanjiA_inDB && kanjiB) + else if (!kanjiA_inDB && kanjiB_inDB) + return 1; + + // treat kanji not in WK as a level over 60 + const kanjiA_inWK = this.ndb.isKanjiInWK(kanjiA); + const kanjiB_inWK = this.ndb.isKanjiInWK(kanjiB); + if (!kanjiA_inWK && !kanjiB_inWK) + return 0; + else if (kanjiA_inWK && !kanjiB_inWK) + return -1; + else if (!kanjiA_inWK && kanjiB_inWK) return 1; // sort by ascending level @@ -131,16 +141,16 @@ function WK_Niai() const sort_by_score = function(kanjiA,kanjiB) { - // kanjis not in DB should be shown last + // kanjis not in DB -> move to end const kanjiA_inDB = this.ndb.isKanjiInDB(kanjiA); const kanjiB_inDB = this.ndb.isKanjiInDB(kanjiB); - if (!kanjiA_inDB && !kanjiB) + if (!kanjiA_inDB && !kanjiB_inDB) return 0; - else if (kanjiA_inDB && !kanjiB) + else if (kanjiA_inDB && !kanjiB_inDB) return -1; - else if (!kanjiA_inDB && kanjiB) + else if (!kanjiA_inDB && kanjiB_inDB) return 1; - + // sort by descending score const kanjiA_score = this.ndb.getInfo(kanjiA).score; const kanjiB_score = this.ndb.getInfo(kanjiB).score; @@ -151,6 +161,39 @@ function WK_Niai() return 0; }; + const sort_by_locked_status = function(kanjiA,kanjiB) + { + // kanjis not in DB -> move to end + const kanjiA_inDB = this.ndb.isKanjiInDB(kanjiA); + const kanjiB_inDB = this.ndb.isKanjiInDB(kanjiB); + if (!kanjiA_inDB && !kanjiB_inDB) + return 0; + else if (kanjiA_inDB && !kanjiB_inDB) + return -1; + else if (!kanjiA_inDB && kanjiB_inDB) + return 1; + + // treat kanji not in WK as locked "for ever" -> show last + const kanjiA_inWK = this.ndb.isKanjiInWK(kanjiA); + const kanjiB_inWK = this.ndb.isKanjiInWK(kanjiB); + if (!kanjiA_inWK && !kanjiB_inWK) + return 0; + else if (kanjiA_inWK && !kanjiB_inWK) + return -1; + else if (!kanjiA_inWK && kanjiB_inWK) + return 1; + + // kanjis locked should be shown last + const kanjiA_islocked = this.ndb.isKanjiLocked(kanjiA,this.settings.user_level); + const kanjiB_islocked = this.ndb.isKanjiLocked(kanjiB,this.settings.user_level); + if (!kanjiA_islocked && !kanjiB_islocked) + return 0; + else if (kanjiA_islocked && !kanjiB_islocked) + return -1; + else if (!kanjiA_islocked && kanjiB_islocked) + return 1; + }; + // ######################################################################### WK_Niai.prototype.populateNiaiSection = function(kanji, curPage) { From 13970257ef49753363604a358bf9e292d0de5fa5 Mon Sep 17 00:00:00 2001 From: Marco Omainska Date: Fri, 20 Jan 2023 18:51:18 +0900 Subject: [PATCH 06/19] =?UTF-8?q?=F0=9F=90=9B=20fix=20bug:=20sort=20by=20l?= =?UTF-8?q?ocked=20status?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- wanikani-similar-kanji/wk_niai.main.js | 1 + 1 file changed, 1 insertion(+) diff --git a/wanikani-similar-kanji/wk_niai.main.js b/wanikani-similar-kanji/wk_niai.main.js index 85b7a04..38d8df0 100644 --- a/wanikani-similar-kanji/wk_niai.main.js +++ b/wanikani-similar-kanji/wk_niai.main.js @@ -208,6 +208,7 @@ function WK_Niai() var similar_kanji = this.ndb.getSimilar(kanji,this.settings.user_level,use_sources,this.settings.min_score); similar_kanji.sort(sort_by_score.bind(this)); // similar_kanji.sort(sort_by_level.bind(this)); + similar_kanji.sort(sort_by_locked_status.bind(this)); const similar_list = [kanji,...similar_kanji]; let char_list = []; From fc2a432a33508bb3663646c2fc6610f0469252cd Mon Sep 17 00:00:00 2001 From: Marco Omainska Date: Fri, 20 Jan 2023 18:54:51 +0900 Subject: [PATCH 07/19] =?UTF-8?q?=F0=9F=90=9B=20fix=20bug:=20sorted=20lock?= =?UTF-8?q?ed=20status=20wrong=20direction?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- wanikani-similar-kanji/wk_niai.main.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/wanikani-similar-kanji/wk_niai.main.js b/wanikani-similar-kanji/wk_niai.main.js index 38d8df0..e8539f0 100644 --- a/wanikani-similar-kanji/wk_niai.main.js +++ b/wanikani-similar-kanji/wk_niai.main.js @@ -189,9 +189,9 @@ function WK_Niai() if (!kanjiA_islocked && !kanjiB_islocked) return 0; else if (kanjiA_islocked && !kanjiB_islocked) - return -1; - else if (!kanjiA_islocked && kanjiB_islocked) return 1; + else if (!kanjiA_islocked && kanjiB_islocked) + return -1; }; // ######################################################################### @@ -206,7 +206,7 @@ function WK_Niai() // sort similar kanji by: score, level, ... var similar_kanji = this.ndb.getSimilar(kanji,this.settings.user_level,use_sources,this.settings.min_score); - similar_kanji.sort(sort_by_score.bind(this)); + // similar_kanji.sort(sort_by_score.bind(this)); // DB is already sorted by score, therefore no need to do it again // similar_kanji.sort(sort_by_level.bind(this)); similar_kanji.sort(sort_by_locked_status.bind(this)); From 7917f5322d969beba6a4222e5a5cc6867c0423e1 Mon Sep 17 00:00:00 2001 From: Marco Omainska Date: Fri, 20 Jan 2023 19:01:57 +0900 Subject: [PATCH 08/19] =?UTF-8?q?=F0=9F=90=9B=20fix=20bug:=20kanji=20not?= =?UTF-8?q?=20in=20WK?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- wanikani-similar-kanji/wk_niai.main.js | 37 +++++++++++++------------- 1 file changed, 19 insertions(+), 18 deletions(-) diff --git a/wanikani-similar-kanji/wk_niai.main.js b/wanikani-similar-kanji/wk_niai.main.js index e8539f0..4cec09c 100644 --- a/wanikani-similar-kanji/wk_niai.main.js +++ b/wanikani-similar-kanji/wk_niai.main.js @@ -119,15 +119,15 @@ function WK_Niai() else if (!kanjiA_inDB && kanjiB_inDB) return 1; - // treat kanji not in WK as a level over 60 - const kanjiA_inWK = this.ndb.isKanjiInWK(kanjiA); - const kanjiB_inWK = this.ndb.isKanjiInWK(kanjiB); - if (!kanjiA_inWK && !kanjiB_inWK) - return 0; - else if (kanjiA_inWK && !kanjiB_inWK) - return -1; - else if (!kanjiA_inWK && kanjiB_inWK) - return 1; + // // treat kanji not in WK as a level over 60 + // const kanjiA_inWK = this.ndb.isKanjiInWK(kanjiA); + // const kanjiB_inWK = this.ndb.isKanjiInWK(kanjiB); + // if (!kanjiA_inWK && !kanjiB_inWK) + // return 0; + // else if (kanjiA_inWK && !kanjiB_inWK) + // return -1; + // else if (!kanjiA_inWK && kanjiB_inWK) + // return 1; // sort by ascending level const kanjiA_level = this.ndb.getInfo(kanjiA).level; @@ -173,15 +173,15 @@ function WK_Niai() else if (!kanjiA_inDB && kanjiB_inDB) return 1; - // treat kanji not in WK as locked "for ever" -> show last - const kanjiA_inWK = this.ndb.isKanjiInWK(kanjiA); - const kanjiB_inWK = this.ndb.isKanjiInWK(kanjiB); - if (!kanjiA_inWK && !kanjiB_inWK) - return 0; - else if (kanjiA_inWK && !kanjiB_inWK) - return -1; - else if (!kanjiA_inWK && kanjiB_inWK) - return 1; + // // treat kanji not in WK as locked "for ever" -> show last + // const kanjiA_inWK = this.ndb.isKanjiInWK(kanjiA); + // const kanjiB_inWK = this.ndb.isKanjiInWK(kanjiB); + // if (!kanjiA_inWK && !kanjiB_inWK) + // return 0; + // else if (kanjiA_inWK && !kanjiB_inWK) + // return -1; + // else if (!kanjiA_inWK && kanjiB_inWK) + // return 1; // kanjis locked should be shown last const kanjiA_islocked = this.ndb.isKanjiLocked(kanjiA,this.settings.user_level); @@ -192,6 +192,7 @@ function WK_Niai() return 1; else if (!kanjiA_islocked && kanjiB_islocked) return -1; + return 0; }; // ######################################################################### From 805c305f04c2c9fb492ebb30bc54235f05d84c03 Mon Sep 17 00:00:00 2001 From: Marco Omainska Date: Fri, 20 Jan 2023 19:41:10 +0900 Subject: [PATCH 09/19] =?UTF-8?q?=E2=9A=A1=EF=B8=8F=20improve=20sorting=20?= =?UTF-8?q?methods?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- wanikani-similar-kanji/wk_niai.main.js | 98 +++++++++++--------------- 1 file changed, 42 insertions(+), 56 deletions(-) diff --git a/wanikani-similar-kanji/wk_niai.main.js b/wanikani-similar-kanji/wk_niai.main.js index 4cec09c..6c3633a 100644 --- a/wanikani-similar-kanji/wk_niai.main.js +++ b/wanikani-similar-kanji/wk_niai.main.js @@ -118,50 +118,29 @@ function WK_Niai() return -1; else if (!kanjiA_inDB && kanjiB_inDB) return 1; - - // // treat kanji not in WK as a level over 60 - // const kanjiA_inWK = this.ndb.isKanjiInWK(kanjiA); - // const kanjiB_inWK = this.ndb.isKanjiInWK(kanjiB); - // if (!kanjiA_inWK && !kanjiB_inWK) - // return 0; - // else if (kanjiA_inWK && !kanjiB_inWK) - // return -1; - // else if (!kanjiA_inWK && kanjiB_inWK) - // return 1; - - // sort by ascending level - const kanjiA_level = this.ndb.getInfo(kanjiA).level; - const kanjiB_level = this.ndb.getInfo(kanjiB).level; + + // sort kanji by ascending level + // note: treat kanjis not in WK as level over 60 + const kanjiA_level = this.ndb.isKanjiInWK(kanjiA) ? this.ndb.getInfo(kanjiA).level : 99; + const kanjiB_level = this.ndb.isKanjiInWK(kanjiB) ? this.ndb.getInfo(kanjiB).level : 99; if (kanjiA_level < kanjiB_level) return -1; - if (kanjiA_level > kanjiB_level) + else if (kanjiA_level > kanjiB_level) return 1; - return 0; - }; - - const sort_by_score = function(kanjiA,kanjiB) - { - // kanjis not in DB -> move to end - const kanjiA_inDB = this.ndb.isKanjiInDB(kanjiA); - const kanjiB_inDB = this.ndb.isKanjiInDB(kanjiB); - if (!kanjiA_inDB && !kanjiB_inDB) + else + { + // both kanjis have same level, so sort them by score + const kanjiA_score = this.ndb.getInfo(kanjiA).score; + const kanjiB_score = this.ndb.getInfo(kanjiB).score; + if (kanjiA_score < kanjiB_score) + return 1; + if (kanjiA_score > kanjiB_score) + return -1; return 0; - else if (kanjiA_inDB && !kanjiB_inDB) - return -1; - else if (!kanjiA_inDB && kanjiB_inDB) - return 1; - - // sort by descending score - const kanjiA_score = this.ndb.getInfo(kanjiA).score; - const kanjiB_score = this.ndb.getInfo(kanjiB).score; - if (kanjiA_score < kanjiB_score) - return 1; - if (kanjiA_score > kanjiB_score) - return -1; - return 0; + } }; - const sort_by_locked_status = function(kanjiA,kanjiB) + const sort_by_locked_score = function(kanjiA,kanjiB) { // kanjis not in DB -> move to end const kanjiA_inDB = this.ndb.isKanjiInDB(kanjiA); @@ -173,26 +152,34 @@ function WK_Niai() else if (!kanjiA_inDB && kanjiB_inDB) return 1; - // // treat kanji not in WK as locked "for ever" -> show last - // const kanjiA_inWK = this.ndb.isKanjiInWK(kanjiA); - // const kanjiB_inWK = this.ndb.isKanjiInWK(kanjiB); - // if (!kanjiA_inWK && !kanjiB_inWK) - // return 0; - // else if (kanjiA_inWK && !kanjiB_inWK) - // return -1; - // else if (!kanjiA_inWK && kanjiB_inWK) - // return 1; - // kanjis locked should be shown last - const kanjiA_islocked = this.ndb.isKanjiLocked(kanjiA,this.settings.user_level); - const kanjiB_islocked = this.ndb.isKanjiLocked(kanjiB,this.settings.user_level); + // note: treat kanjis not in WK as locked too + const kanjiA_islocked = this.ndb.isKanjiInWK(kanjiA) ? this.ndb.isKanjiLocked(kanjiA,this.settings.user_level) : true; + const kanjiB_islocked = this.ndb.isKanjiInWK(kanjiB) ? this.ndb.isKanjiLocked(kanjiB,this.settings.user_level) : true; + const kanjiA_score = this.ndb.getInfo(kanjiA).score; + const kanjiB_score = this.ndb.getInfo(kanjiB).score; if (!kanjiA_islocked && !kanjiB_islocked) + { + // both kanjis are unlocked, so sort them by score + if (kanjiA_score < kanjiB_score) + return 1; + if (kanjiA_score > kanjiB_score) + return -1; return 0; + } else if (kanjiA_islocked && !kanjiB_islocked) - return 1; + return 1; // move locked kanji to end else if (!kanjiA_islocked && kanjiB_islocked) - return -1; - return 0; + return -1; // move locked kanji to end + else + { + // both kanjis are locked, so sort them by score + if (kanjiA_score < kanjiB_score) + return 1; + if (kanjiA_score > kanjiB_score) + return -1; + return 0; + } }; // ######################################################################### @@ -207,9 +194,8 @@ function WK_Niai() // sort similar kanji by: score, level, ... var similar_kanji = this.ndb.getSimilar(kanji,this.settings.user_level,use_sources,this.settings.min_score); - // similar_kanji.sort(sort_by_score.bind(this)); // DB is already sorted by score, therefore no need to do it again - // similar_kanji.sort(sort_by_level.bind(this)); - similar_kanji.sort(sort_by_locked_status.bind(this)); + similar_kanji.sort(sort_by_locked_score.bind(this)); + // similar_kanji.sort(sort_by_locked_level.bind(this)); const similar_list = [kanji,...similar_kanji]; let char_list = []; From 2dbc118b75292e75848f55e68c766403db12ae68 Mon Sep 17 00:00:00 2001 From: lupomikti <25500382+lupomikti@users.noreply.github.com> Date: Thu, 30 Nov 2023 19:47:02 -0800 Subject: [PATCH 10/19] Niai: cleanup --- wanikani-similar-kanji/wk_niai.main.js | 38 ++------------------------ 1 file changed, 2 insertions(+), 36 deletions(-) diff --git a/wanikani-similar-kanji/wk_niai.main.js b/wanikani-similar-kanji/wk_niai.main.js index d4aaf36..1dae94c 100644 --- a/wanikani-similar-kanji/wk_niai.main.js +++ b/wanikani-similar-kanji/wk_niai.main.js @@ -107,40 +107,7 @@ function WK_Niai() return result; }; - const sort_by_level = function(kanjiA,kanjiB) - { - // kanjis not in DB -> move to end - const kanjiA_inDB = this.ndb.isKanjiInDB(kanjiA); - const kanjiB_inDB = this.ndb.isKanjiInDB(kanjiB); - if (!kanjiA_inDB && !kanjiB_inDB) - return 0; - else if (kanjiA_inDB && !kanjiB_inDB) - return -1; - else if (!kanjiA_inDB && kanjiB_inDB) - return 1; - - // sort kanji by ascending level - // note: treat kanjis not in WK as level over 60 - const kanjiA_level = this.ndb.isKanjiInWK(kanjiA) ? this.ndb.getInfo(kanjiA).level : 99; - const kanjiB_level = this.ndb.isKanjiInWK(kanjiB) ? this.ndb.getInfo(kanjiB).level : 99; - if (kanjiA_level < kanjiB_level) - return -1; - else if (kanjiA_level > kanjiB_level) - return 1; - else - { - // both kanjis have same level, so sort them by score - const kanjiA_score = this.ndb.getInfo(kanjiA).score; - const kanjiB_score = this.ndb.getInfo(kanjiB).score; - if (kanjiA_score < kanjiB_score) - return 1; - if (kanjiA_score > kanjiB_score) - return -1; - return 0; - } - }; - - const sort_by_locked_score = function(kanjiA,kanjiB) + const sort_by_locked_score = function(kanjiA, kanjiB) { // kanjis not in DB -> move to end const kanjiA_inDB = this.ndb.isKanjiInDB(kanjiA); @@ -192,10 +159,9 @@ function WK_Niai() if (this.settings.use_alt) use_sources = [...this.settings.alt_sources, ...use_sources]; - // sort similar kanji by: score, level, ... + // sort similar kanji by: score, locked status var similar_kanji = this.ndb.getSimilar(kanji,this.settings.user_level,use_sources,this.settings.min_score); similar_kanji.sort(sort_by_locked_score.bind(this)); - // similar_kanji.sort(sort_by_locked_level.bind(this)); const similar_list = [kanji,...similar_kanji]; let char_list = []; From 5c6e9706b644e07059cea3755a62a1e765495e42 Mon Sep 17 00:00:00 2001 From: lupomikti <25500382+lupomikti@users.noreply.github.com> Date: Sun, 3 Dec 2023 13:02:25 -0800 Subject: [PATCH 11/19] Fix: Niai: properly include sorting by score after level --- wanikani-similar-kanji/wk_niai.db.js | 3 +- wanikani-similar-kanji/wk_niai.main.js | 48 +------------------------- 2 files changed, 3 insertions(+), 48 deletions(-) diff --git a/wanikani-similar-kanji/wk_niai.db.js b/wanikani-similar-kanji/wk_niai.db.js index c616db8..3da1b08 100644 --- a/wanikani-similar-kanji/wk_niai.db.js +++ b/wanikani-similar-kanji/wk_niai.db.js @@ -131,7 +131,8 @@ function NiaiDB() let result = Object.values(similar_kanji); - result.sort((a,b) => 2*Math.sign(b.score - a.score) + + result.sort((a,b) => a.locked - b.locked + || 2*Math.sign(b.score - a.score) + a.kan.localeCompare(b.kan)) .splice(19); diff --git a/wanikani-similar-kanji/wk_niai.main.js b/wanikani-similar-kanji/wk_niai.main.js index 1dae94c..36b4758 100644 --- a/wanikani-similar-kanji/wk_niai.main.js +++ b/wanikani-similar-kanji/wk_niai.main.js @@ -107,48 +107,6 @@ function WK_Niai() return result; }; - const sort_by_locked_score = function(kanjiA, kanjiB) - { - // kanjis not in DB -> move to end - const kanjiA_inDB = this.ndb.isKanjiInDB(kanjiA); - const kanjiB_inDB = this.ndb.isKanjiInDB(kanjiB); - if (!kanjiA_inDB && !kanjiB_inDB) - return 0; - else if (kanjiA_inDB && !kanjiB_inDB) - return -1; - else if (!kanjiA_inDB && kanjiB_inDB) - return 1; - - // kanjis locked should be shown last - // note: treat kanjis not in WK as locked too - const kanjiA_islocked = this.ndb.isKanjiInWK(kanjiA) ? this.ndb.isKanjiLocked(kanjiA,this.settings.user_level) : true; - const kanjiB_islocked = this.ndb.isKanjiInWK(kanjiB) ? this.ndb.isKanjiLocked(kanjiB,this.settings.user_level) : true; - const kanjiA_score = this.ndb.getInfo(kanjiA).score; - const kanjiB_score = this.ndb.getInfo(kanjiB).score; - if (!kanjiA_islocked && !kanjiB_islocked) - { - // both kanjis are unlocked, so sort them by score - if (kanjiA_score < kanjiB_score) - return 1; - if (kanjiA_score > kanjiB_score) - return -1; - return 0; - } - else if (kanjiA_islocked && !kanjiB_islocked) - return 1; // move locked kanji to end - else if (!kanjiA_islocked && kanjiB_islocked) - return -1; // move locked kanji to end - else - { - // both kanjis are locked, so sort them by score - if (kanjiA_score < kanjiB_score) - return 1; - if (kanjiA_score > kanjiB_score) - return -1; - return 0; - } - }; - // ######################################################################### WK_Niai.prototype.populateNiaiSection = function(kanji, curPage) { @@ -159,11 +117,7 @@ function WK_Niai() if (this.settings.use_alt) use_sources = [...this.settings.alt_sources, ...use_sources]; - // sort similar kanji by: score, locked status - var similar_kanji = this.ndb.getSimilar(kanji,this.settings.user_level,use_sources,this.settings.min_score); - similar_kanji.sort(sort_by_locked_score.bind(this)); - - const similar_list = [kanji,...similar_kanji]; + const similar_list = [kanji,...this.ndb.getSimilar(kanji,this.settings.user_level,use_sources,this.settings.min_score)]; let char_list = []; similar_list.forEach( function(sim_kanji, i) From 28b40b5fc3765f48c368874d9cde2d4cf51a9830 Mon Sep 17 00:00:00 2001 From: lupomikti <25500382+lupomikti@users.noreply.github.com> Date: Sun, 3 Dec 2023 13:16:46 -0800 Subject: [PATCH 12/19] Fix: Niai: sorting happens before cache update Due to the internal database not being up to date with Wanikani content movements, unlocked items would end up in the locked section. This address the issue by incorporating more use of open framework in updating items --- wanikani-similar-kanji/wk_niai.db.js | 64 +++++++++++++++++++++----- wanikani-similar-kanji/wk_niai.main.js | 7 ++- 2 files changed, 55 insertions(+), 16 deletions(-) diff --git a/wanikani-similar-kanji/wk_niai.db.js b/wanikani-similar-kanji/wk_niai.db.js index 3da1b08..61e4f7e 100644 --- a/wanikani-similar-kanji/wk_niai.db.js +++ b/wanikani-similar-kanji/wk_niai.db.js @@ -14,12 +14,12 @@ function NiaiDB() NiaiDB.prototype = { constructor: NiaiDB, - init: function(override_db) + init: async function(override_db) { this.override_db = override_db; if (typeof wkof === `object`) - this.wkof_items = this.load_wkof_items(); + this.wkof_items = await this.load_wkof_items(); }, load_wkof_items: async function() @@ -43,8 +43,10 @@ function NiaiDB() isKanjiInWK: function(kanji) { // WK started adding new kanji, treat unknown kanji gracefully - if (!this.isKanjiInDB(kanji)) + if (!this.isKanjiInDB(kanji) && !(kanji in this.wkof_items)) return false; + else if (!this.isKanjiInDB(kanji) && (kanji in this.wkof_items)) + return true; return (this.lookup_db[kanji].level !== 99); }, @@ -57,21 +59,59 @@ function NiaiDB() isKanjiLocked: function(kanji, level) { if (this.isKanjiInDB(kanji)) - return (this.lookup_db[kanji].level > level); - else - return true; + return (this.lookup_db[kanji].level === 99 || this.wkof_items[kanji].data.level > level); + else if (kanji in this.wkof_items) + return (this.wkof_items[kanji].data.level > level); + + return true; }, getInfo: function(kanji) { - if (!this.isKanjiInDB(kanji)) + if (!this.isKanjiInDB(kanji) && !(kanji in this.wkof_items)) return {"meanings": "Not in DB!", "readings": " ", level: "N/A"}; + else if (!this.isKanjiInDB(kanji) && (kanji in this.wkof_items)) { + // we need to build the k_info object from the open framework data + let k_data = this.wkof_items[kanji].data; + let k_info = { + kunyomi: [], + onyomi: [], + nanori: [], + important_reading: '' + }; + + for (const reading_info of k_data.readings) { + switch (reading_info.type) { + case 'kunyomi': + k_info.kunyomi.push(reading_info.reading); + if (reading_info.primary) k_info.important_reading = 'kunyomi'; + break; + case 'onyomi': + k_info.onyomi.push(reading_info.reading); + if (reading_info.primary) k_info.important_reading = 'onyomi'; + break; + case 'nanori': + k_info.nanori.push(reading_info.reading); + if (reading_info.primary) k_info.important_reading = 'nanori'; + break; + default: + break; + } + } + + k_info.level = k_data.level; + k_info.meanings = k_data.meanings.map(m => m.meaning); + k_info.readings = k_info[k_info.important_reading]; - let k_info = this.lookup_db[kanji]; + return k_info; + } + else { + let k_info = this.lookup_db[kanji]; - k_info.readings = k_info[k_info.important_reading]; + k_info.readings = k_info[k_info.important_reading]; - return k_info; + return k_info; + } }, getSimilar: function(kanji, level, sources, min_score) @@ -142,9 +182,9 @@ function NiaiDB() // Use the WK Open Framework to replace the offine DB of Niai // ######################################################################### - WK_Niai.prototype.update_wk_cache = async function(similar_list) + WK_Niai.prototype.update_wk_cache = function(similar_list) { - let index = await this.ndb.wkof_items; + let index = this.ndb.wkof_items; similar_list.forEach((sim_kanji) => { let item = index[sim_kanji]; if (item) { diff --git a/wanikani-similar-kanji/wk_niai.main.js b/wanikani-similar-kanji/wk_niai.main.js index 36b4758..010a8e7 100644 --- a/wanikani-similar-kanji/wk_niai.main.js +++ b/wanikani-similar-kanji/wk_niai.main.js @@ -181,7 +181,7 @@ function WK_Niai() // ######################################################################### // ######################################################################### - WK_Niai.prototype.init = function() + WK_Niai.prototype.init = async function() { GM_addStyle(GM_getResourceText(`niai_style`) .replace(/\.wk_namespace/g, `#niai_section#niai_section#niai_section#niai_section`)); @@ -209,7 +209,7 @@ function WK_Niai() } : function() {}; - this.ndb.init(this.override_db); + await this.ndb.init(this.override_db); this.log(`The script element is:`, GM_info); this.log("The override db is", this.override_db); @@ -263,8 +263,7 @@ let promise = typeof wkof !== `undefined` ? (wkof.include(`Jquery`), wkof.ready( promise.then(() => { const wk_niai = new WK_Niai(); - wk_niai.init(); - wk_niai.run(); + wk_niai.init().then(() => wk_niai.run()); }); // ############################################################################# // ############################################################################# From 95d74418a7d8209e114bfbe4ae50e1260d84ab60 Mon Sep 17 00:00:00 2001 From: lupomikti <25500382+lupomikti@users.noreply.github.com> Date: Sun, 3 Dec 2023 13:18:53 -0800 Subject: [PATCH 13/19] Niai: update user.js New minor version due to scope of the changes made regarding further incorporation of Wanikani Open Framework --- wanikani-similar-kanji/wk_niai.user.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/wanikani-similar-kanji/wk_niai.user.js b/wanikani-similar-kanji/wk_niai.user.js index b55a28d..85afe97 100644 --- a/wanikani-similar-kanji/wk_niai.user.js +++ b/wanikani-similar-kanji/wk_niai.user.js @@ -1,6 +1,6 @@ // ==UserScript== // @name Wanikani Niai Similar Kanji -// @version 1.3.25 +// @version 1.4.0 // @author acm // @description Adds a visually similar kanji section to content pages, reviews, and lessons // @license GPL version 3 or any later version; http://www.gnu.org/copyleft/gpl.html @@ -30,10 +30,10 @@ // // @require https://greasyfork.org/scripts/430565-wanikani-item-info-injector/code/WaniKani%20Item%20Info%20Injector.user.js?version=1276693 // -// @require https://raw.githubusercontent.com/mwil/wanikani-userscripts/8ee517737d604f1df0ff103a33b69f1f07218815/wanikani-similar-kanji/wk_niai.db.js +// @require https://raw.githubusercontent.com/mwil/wanikani-userscripts/28b40b5fc3765f48c368874d9cde2d4cf51a9830/wanikani-similar-kanji/wk_niai.db.js // @require https://raw.githubusercontent.com/mwil/wanikani-userscripts/8ee517737d604f1df0ff103a33b69f1f07218815/wanikani-similar-kanji/wk_niai.modal.js // @require https://raw.githubusercontent.com/mwil/wanikani-userscripts/8ee517737d604f1df0ff103a33b69f1f07218815/wanikani-similar-kanji/wk_niai.html.js -// @require https://raw.githubusercontent.com/mwil/wanikani-userscripts/3ecdbcadd04d0832ab98540eea5f918489841f41/wanikani-similar-kanji/wk_niai.main.js +// @require https://raw.githubusercontent.com/mwil/wanikani-userscripts/28b40b5fc3765f48c368874d9cde2d4cf51a9830/wanikani-similar-kanji/wk_niai.main.js // // @grant GM_log // @grant GM_getValue From c1cf36cbd7789613544bd7c0a47123e74434662a Mon Sep 17 00:00:00 2001 From: Lupo <25500382+lupomikti@users.noreply.github.com> Date: Wed, 27 Dec 2023 13:17:21 -0800 Subject: [PATCH 14/19] Small fix for determining locked status --- wanikani-similar-kanji/wk_niai.db.js | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/wanikani-similar-kanji/wk_niai.db.js b/wanikani-similar-kanji/wk_niai.db.js index 61e4f7e..38073ce 100644 --- a/wanikani-similar-kanji/wk_niai.db.js +++ b/wanikani-similar-kanji/wk_niai.db.js @@ -58,10 +58,10 @@ function NiaiDB() isKanjiLocked: function(kanji, level) { - if (this.isKanjiInDB(kanji)) - return (this.lookup_db[kanji].level === 99 || this.wkof_items[kanji].data.level > level); - else if (kanji in this.wkof_items) + if (kanji in this.wkof_items) return (this.wkof_items[kanji].data.level > level); + else if (this.isKanjiInDB(kanji)) + return (this.lookup_db[kanji].level === 99 || this.wkof_items[kanji].data.level > level); return true; }, @@ -70,7 +70,7 @@ function NiaiDB() { if (!this.isKanjiInDB(kanji) && !(kanji in this.wkof_items)) return {"meanings": "Not in DB!", "readings": " ", level: "N/A"}; - else if (!this.isKanjiInDB(kanji) && (kanji in this.wkof_items)) { + else if (kanji in this.wkof_items) { // if it's in wkof fetch we don't care about local db info // we need to build the k_info object from the open framework data let k_data = this.wkof_items[kanji].data; let k_info = { @@ -105,7 +105,7 @@ function NiaiDB() return k_info; } - else { + else { // not in wkof fetch, must be in local db let k_info = this.lookup_db[kanji]; k_info.readings = k_info[k_info.important_reading]; From d9efa947f1407d9cb707d96dfa39ec6b9f8dca40 Mon Sep 17 00:00:00 2001 From: Lupo <25500382+lupomikti@users.noreply.github.com> Date: Wed, 27 Dec 2023 13:18:21 -0800 Subject: [PATCH 15/19] Niai: update user.js --- wanikani-similar-kanji/wk_niai.user.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/wanikani-similar-kanji/wk_niai.user.js b/wanikani-similar-kanji/wk_niai.user.js index 85afe97..93f3245 100644 --- a/wanikani-similar-kanji/wk_niai.user.js +++ b/wanikani-similar-kanji/wk_niai.user.js @@ -1,6 +1,6 @@ // ==UserScript== // @name Wanikani Niai Similar Kanji -// @version 1.4.0 +// @version 1.4.1 // @author acm // @description Adds a visually similar kanji section to content pages, reviews, and lessons // @license GPL version 3 or any later version; http://www.gnu.org/copyleft/gpl.html @@ -30,7 +30,7 @@ // // @require https://greasyfork.org/scripts/430565-wanikani-item-info-injector/code/WaniKani%20Item%20Info%20Injector.user.js?version=1276693 // -// @require https://raw.githubusercontent.com/mwil/wanikani-userscripts/28b40b5fc3765f48c368874d9cde2d4cf51a9830/wanikani-similar-kanji/wk_niai.db.js +// @require https://raw.githubusercontent.com/mwil/wanikani-userscripts/c1cf36cbd7789613544bd7c0a47123e74434662a/wanikani-similar-kanji/wk_niai.db.js // @require https://raw.githubusercontent.com/mwil/wanikani-userscripts/8ee517737d604f1df0ff103a33b69f1f07218815/wanikani-similar-kanji/wk_niai.modal.js // @require https://raw.githubusercontent.com/mwil/wanikani-userscripts/8ee517737d604f1df0ff103a33b69f1f07218815/wanikani-similar-kanji/wk_niai.html.js // @require https://raw.githubusercontent.com/mwil/wanikani-userscripts/28b40b5fc3765f48c368874d9cde2d4cf51a9830/wanikani-similar-kanji/wk_niai.main.js From 62a6bbbf2f586335e54c0def6796c0c0cafa5c41 Mon Sep 17 00:00:00 2001 From: lupomikti <25500382+lupomikti@users.noreply.github.com> Date: Thu, 28 Dec 2023 12:47:49 -0800 Subject: [PATCH 16/19] Niai: update user.js after merge --- wanikani-similar-kanji/wk_niai.user.js | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/wanikani-similar-kanji/wk_niai.user.js b/wanikani-similar-kanji/wk_niai.user.js index 7c65a94..205b179 100644 --- a/wanikani-similar-kanji/wk_niai.user.js +++ b/wanikani-similar-kanji/wk_niai.user.js @@ -1,6 +1,6 @@ // ==UserScript== // @name Wanikani Niai Similar Kanji -// @version 1.4.1 +// @version 1.4.2 // @author acm // @description Adds a visually similar kanji section to content pages, reviews, and lessons // @license GPL version 3 or any later version; http://www.gnu.org/copyleft/gpl.html @@ -20,7 +20,7 @@ // @resource manual_db https://raw.githubusercontent.com/mwil/wanikani-userscripts/8ee517737d604f1df0ff103a33b69f1f07218815/wanikani-similar-kanji/db/manual_esc.json // @resource lookup_db https://raw.githubusercontent.com/mwil/wanikani-userscripts/8ee517737d604f1df0ff103a33b69f1f07218815/wanikani-similar-kanji/db/lookup_esc.json // -// @resource niai_style https://raw.githubusercontent.com/mwil/wanikani-userscripts/7e1d846282c6d962fbe28b6e3a8c0b50a61220c9/wanikani-similar-kanji/css/wk_niai.css +// @resource niai_style https://raw.githubusercontent.com/mwil/wanikani-userscripts/0a8aedf168b4f522e618b6f7cc1caa179417da97/wanikani-similar-kanji/css/wk_niai.css // // @resource chargrid https://raw.githubusercontent.com/mwil/wanikani-userscripts/0e0833ee8175b903d34108210759c1a457408833/styles/css/chargrid.css // @resource bootstrapcss https://raw.githubusercontent.com/mwil/wanikani-userscripts/45e295823c7d6d40630ddd14c95a78df093fb296/styles/bootstrap/css/bootstrap.crop.css @@ -30,10 +30,10 @@ // // @require https://greasyfork.org/scripts/430565-wanikani-item-info-injector/code/WaniKani%20Item%20Info%20Injector.user.js?version=1276693 // -// @require https://raw.githubusercontent.com/mwil/wanikani-userscripts/e57d0de325d2c020da8723df1bac4c0035dc88db/wanikani-similar-kanji/wk_niai.db.js -// @require https://raw.githubusercontent.com/mwil/wanikani-userscripts/0691a2c5d05338606f731ea9f98e0b2dbd18c784/wanikani-similar-kanji/wk_niai.modal.js -// @require https://raw.githubusercontent.com/mwil/wanikani-userscripts/45e295823c7d6d40630ddd14c95a78df093fb296/wanikani-similar-kanji/wk_niai.html.js -// @require https://raw.githubusercontent.com/mwil/wanikani-userscripts/b5f681f7f94aaa48caa6927a3a5c6a17d39739d8/wanikani-similar-kanji/wk_niai.main.js +// @require https://raw.githubusercontent.com/mwil/wanikani-userscripts/0a8aedf168b4f522e618b6f7cc1caa179417da97/wanikani-similar-kanji/wk_niai.db.js +// @require https://raw.githubusercontent.com/mwil/wanikani-userscripts/0a8aedf168b4f522e618b6f7cc1caa179417da97/wanikani-similar-kanji/wk_niai.modal.js +// @require https://raw.githubusercontent.com/mwil/wanikani-userscripts/0a8aedf168b4f522e618b6f7cc1caa179417da97/wanikani-similar-kanji/wk_niai.html.js +// @require https://raw.githubusercontent.com/mwil/wanikani-userscripts/0a8aedf168b4f522e618b6f7cc1caa179417da97/wanikani-similar-kanji/wk_niai.main.js // // @grant GM_log // @grant GM_getValue From 2c01480da9634ac33d3624c0566c9c00f5a38d59 Mon Sep 17 00:00:00 2001 From: lupomikti <25500382+lupomikti@users.noreply.github.com> Date: Mon, 10 Jun 2024 15:18:08 -0700 Subject: [PATCH 17/19] Niai: update sha in user.js to what it is in master --- wanikani-similar-kanji/wk_niai.user.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/wanikani-similar-kanji/wk_niai.user.js b/wanikani-similar-kanji/wk_niai.user.js index a1ceee8..08ec561 100644 --- a/wanikani-similar-kanji/wk_niai.user.js +++ b/wanikani-similar-kanji/wk_niai.user.js @@ -20,7 +20,7 @@ // @resource manual_db https://raw.githubusercontent.com/mwil/wanikani-userscripts/8ee517737d604f1df0ff103a33b69f1f07218815/wanikani-similar-kanji/db/manual_esc.json // @resource lookup_db https://raw.githubusercontent.com/mwil/wanikani-userscripts/8ee517737d604f1df0ff103a33b69f1f07218815/wanikani-similar-kanji/db/lookup_esc.json // -// @resource niai_style https://raw.githubusercontent.com/mwil/wanikani-userscripts/0a8aedf168b4f522e618b6f7cc1caa179417da97/wanikani-similar-kanji/css/wk_niai.css +// @resource niai_style https://raw.githubusercontent.com/mwil/wanikani-userscripts/7e1d846282c6d962fbe28b6e3a8c0b50a61220c9/wanikani-similar-kanji/css/wk_niai.css // // @resource chargrid https://raw.githubusercontent.com/mwil/wanikani-userscripts/0e0833ee8175b903d34108210759c1a457408833/styles/css/chargrid.css // @resource bootstrapcss https://raw.githubusercontent.com/mwil/wanikani-userscripts/45e295823c7d6d40630ddd14c95a78df093fb296/styles/bootstrap/css/bootstrap.crop.css From 3f17bcb2657bf62a3b3c063764d352d1713b2085 Mon Sep 17 00:00:00 2001 From: lupomikti <25500382+lupomikti@users.noreply.github.com> Date: Mon, 10 Jun 2024 16:13:18 -0700 Subject: [PATCH 18/19] Niai: update handling of items not in DB but on WK --- wanikani-similar-kanji/wk_niai.db.js | 4 ++-- wanikani-similar-kanji/wk_niai.main.js | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/wanikani-similar-kanji/wk_niai.db.js b/wanikani-similar-kanji/wk_niai.db.js index cf3b750..59b6675 100644 --- a/wanikani-similar-kanji/wk_niai.db.js +++ b/wanikani-similar-kanji/wk_niai.db.js @@ -137,9 +137,9 @@ function NiaiDB() let score = source.base_score + (hasScore ? sim_info.score : 0.0); - if (!this.isKanjiInDB(sim_kanji)) + if (!this.isKanjiInDB(sim_kanji) && !this.isKanjiInWK(sim_kanji)) { - console.log("Ignoring", sim_kanji, ", not in DB yet!"); + console.log("Ignoring", sim_kanji, ", not in DB or WK yet!"); return; // equivalent to continue } diff --git a/wanikani-similar-kanji/wk_niai.main.js b/wanikani-similar-kanji/wk_niai.main.js index 5087e45..f239ded 100644 --- a/wanikani-similar-kanji/wk_niai.main.js +++ b/wanikani-similar-kanji/wk_niai.main.js @@ -202,7 +202,7 @@ function initializeCustomIcons() similar_list.forEach( function(sim_kanji, i) { - if (!this.ndb.isKanjiInDB(sim_kanji)) + if (!this.ndb.isKanjiInDB(sim_kanji) && !this.ndb.isKanjiInWK(sim_kanji)) return; const sim_info = this.ndb.getInfo(sim_kanji); From 8b61601bb9fc0137821dcc6f73a324e6b7ac6b76 Mon Sep 17 00:00:00 2001 From: lupomikti <25500382+lupomikti@users.noreply.github.com> Date: Mon, 10 Jun 2024 16:15:29 -0700 Subject: [PATCH 19/19] Niai: same as last commit Forgot a change in html.js --- wanikani-similar-kanji/wk_niai.html.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/wanikani-similar-kanji/wk_niai.html.js b/wanikani-similar-kanji/wk_niai.html.js index 856e18c..65bfc9e 100644 --- a/wanikani-similar-kanji/wk_niai.html.js +++ b/wanikani-similar-kanji/wk_niai.html.js @@ -289,7 +289,7 @@ } ); - if (!found && this.ndb.isKanjiInDB(new_kanji)) + if (!found && (this.ndb.isKanjiInWK(new_kanji) || this.ndb.isKanjiInDB(new_kanji))) this.override_db[kanji].push({"kan": new_kanji, "score": 1.0}); GM_setValue(`override_db`, JSON.stringify(this.override_db));