X-Git-Url: http://git.shiar.nl/sheet.git/blobdiff_plain/a02aa8df0929a3ea7a51e2f88d1cc60c7076eca9..20ca68ae05fb47fc98efa06bb675df13d4c94de5:/word/finder.js diff --git a/word/finder.js b/word/finder.js index e720bfd..ed89054 100644 --- a/word/finder.js +++ b/word/finder.js @@ -1,6 +1,5 @@ class WordFinder extends WordQuiz { namehtml(name) { - //let wbr = new RegExp('\w{4} [^aoeuiyc\W] [rl]?+ \K (?= [^aoeuiy\W] [rl]? [aoeuiy] \w)', 'g'); let aliases = name.split('/'); let html = aliases.shift(); html = html.replace(/\((.+)\)/, '$1'); @@ -11,30 +10,49 @@ class WordFinder extends WordQuiz { } add(catitem, rows) { - rows.forEach(ref => { - const [title, level, imgid, subs] = this.data[ref]; + rows.forEach(word => { + if (!word) return; const worditem = put(catitem, 'li'); const figitem = put(worditem, 'figure'); - if (imgid) { - put(figitem, 'img[src=$]', `/data/word/32/${imgid}.jpg`); + if (word.imgid) { + put(figitem, 'img[src=$]', word.thumb()); } - if (title) { + if (word.title) { put(figitem, 'figcaption', { - innerHTML: this.namehtml(title), + innerHTML: this.namehtml(word.title), }); } - put(worditem, '.level' + level); - if (level <= 1 && subs.length >= 4) { - put(worditem, '.large'); + if (this.preset.debug) { + put(figitem, '[title=$]', `id ${word.id} level ${word.level}`); } - if (subs.length) { - // delve into subcategory - put(worditem, '.parent'); - this.add(put(worditem, 'ul'), subs); + put(worditem, '.level' + word.level); + if (!word.subs.length) { + return; } - if (this.preset.debug) { - put(figitem, '[title=$]', `id ${ref} level ${level}`); + if (word.level <= 1 && word.subs.length >= 4) { + put(worditem, '.large'); } + put(worditem, '.parent.expand'); + + put(figitem, '[data-sup=$]', word.subs.length); + figitem.onclick = () => { + let expansion; + if (expansion = worditem.querySelector('ul')) { + put(expansion, '!'); + put(worditem, '.expand'); + return; + } + expansion = put(worditem, 'ul'); + this.add(expansion, word.subs); + put(worditem, '!expand'); + }; + return; + + // delve into subcategory + const expansion = put(worditem, 'ul'); + //expansion.style.display = 'none'; + this.add(expansion, word.subs); + //worditem.onclick = () => expansion.style.display = ''; }); } @@ -51,7 +69,7 @@ class WordFinder extends WordQuiz { } this.form.innerHTML = ''; put(this.form, 'p', 'Under construction.'); - for (let cat of this.preset.cat || this.data[''][3]) { + for (let cat of this.data.root()) { this.add(put(this.form, 'ul.gallery'), [cat]); } }