From c0bdbebdd5c4760320f82cb7471a3113082b2a90 Mon Sep 17 00:00:00 2001 From: Mischa POSLAWSKY Date: Thu, 10 Feb 2022 04:21:22 +0100 Subject: [PATCH] word/finder: order by grade within levels --- tools/mkwordlist | 2 +- word/finder.js | 6 +++++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/tools/mkwordlist b/tools/mkwordlist index 2e38a8d..6f42fc8 100755 --- a/tools/mkwordlist +++ b/tools/mkwordlist @@ -13,7 +13,7 @@ use Data::Dump 'pp'; my %rows; if (my $lang = shift @ARGV) { my %filter = (lang => $lang); - my $cols = "ref, array_to_string(form || alt, '/'), prio, id, cat"; + my $cols = "ref, array_to_string(form || alt, '/'), prio + coalesce(grade, 90) / 100::float, id, cat"; %rows = $db->select(_word_ref => $cols, \%filter)->map_arrays; say pp \%rows =~ s/\\x\{([0-9A-F]+)\}/chr hex $1/ger; diff --git a/word/finder.js b/word/finder.js index 606f033..b1db273 100644 --- a/word/finder.js +++ b/word/finder.js @@ -17,7 +17,11 @@ class WordFinder extends WordQuiz { if (this.cats[ref]) { // delve into subcategory put(worditem, '.parent'); - this.add(worditem, this.cats[ref]); + this.add(worditem, this.cats[ref].sort((a, b) => { + const [worda, wordb] = [this.data[a], this.data[b]]; + return (worda[1] % 1) - (wordb[1] % 1) + || worda[0].localeCompare(wordb[0]); + })); } }); } -- 2.30.0