From: Mischa POSLAWSKY Date: Sat, 30 May 2020 06:27:30 +0000 (+0200) Subject: word: order siblings by grade X-Git-Tag: v1.13~241 X-Git-Url: http://git.shiar.nl/sheet.git/commitdiff_plain/3d0e1e761a53934cfdadf6e7e28ced4ec6e603e3 word: order siblings by grade Optional precedence before alphabetical neutral. --- diff --git a/tools/word.pg.sql b/tools/word.pg.sql index 1dc4f5b..31a117e 100644 --- a/tools/word.pg.sql +++ b/tools/word.pg.sql @@ -5,6 +5,7 @@ CREATE TABLE word ( cat integer REFERENCES word (id), ref integer REFERENCES word (id), prio smallint NOT NULL DEFAULT '1', + grade integer, cover boolean NOT NULL DEFAULT FALSE, source text, thumb text[], @@ -19,6 +20,7 @@ COMMENT ON COLUMN word.lang IS 'ISO 639-3 language code'; COMMENT ON COLUMN word.cat IS 'hierarchical classification'; COMMENT ON COLUMN word.ref IS 'reference to equivalent eng translation'; COMMENT ON COLUMN word.prio IS 'difficulty level or importance; lower values have precedence'; +COMMENT ON COLUMN word.grade IS 'ascending hierarchical order, preceding default alphabetical'; COMMENT ON COLUMN word.cover IS 'highlight if selected'; COMMENT ON COLUMN word.source IS 'URI of downloaded image'; COMMENT ON COLUMN word.thumb IS 'ImageMagick convert options to create thumbnail from source image'; @@ -34,6 +36,6 @@ $$ LANGUAGE SQL IMMUTABLE; CREATE OR REPLACE VIEW _cat_words AS SELECT exportform(word.*) form, sub.*, word.lang, word.ref FROM word RIGHT JOIN ( - SELECT cat id, array_agg(exportform(word.*) ORDER BY form) forms + SELECT cat id, array_agg(exportform(word.*) ORDER BY grade, form) forms FROM word WHERE ref IS NULL GROUP BY cat ) sub USING (id); diff --git a/writer.plp b/writer.plp index bae010c..f4819b7 100644 --- a/writer.plp +++ b/writer.plp @@ -37,6 +37,9 @@ input:not([type]) { padding: .4rem; font-family: monospace; } +input[type=number] { + max-width: 7em; +} select { padding: .3rem .2rem; /* TODO: input */ } @@ -103,6 +106,7 @@ my @wordcols = ( lang => 'Language', cat => 'Category', ref => undef, # included with cat + grade => undef, # " prio => 'Level', cover => undef, # included with prio form => 'Translation', @@ -225,6 +229,9 @@ for my $colinfo (pairs @wordcols) { ), 'cover', !!$row->{cover} && ' checked', 'Highlighted' ); + printf('', + 'grade', 'Order', Entity($row->{grade}) + ); } else { printf '', $col, Entity($val); @@ -261,7 +268,7 @@ while (my $ref = $parents->hash) { printf '
  • %s
  • ', $ref->{id}, Entity($ref->{form}); } say "
  • $row->{form}
  • "; -my $children = $db->select(word => '*', {cat => $row->{id}}); +my $children = $db->select(word => '*', {cat => $row->{id}}, 'grade, id'); while (my $ref = $children->hash) { printf '
  • %s
  • ', $ref->{id}, Entity($ref->{form}); }