X-Git-Url: http://git.shiar.nl/sheet.git/blobdiff_plain/c0bdbebdd5c4760320f82cb7471a3113082b2a90..43d481448a3819d58326be4587eadbedcf486e46:/word/finder.js diff --git a/word/finder.js b/word/finder.js index b1db273..9d2b6cf 100644 --- a/word/finder.js +++ b/word/finder.js @@ -1,35 +1,61 @@ class WordFinder extends WordQuiz { - add(parentitem, rows) { - const catitem = put(parentitem, 'ul'); - rows.forEach(ref => { - const [title, level, imgid] = this.data[ref]; + namehtml(name) { + let aliases = name.split('/'); + let html = aliases.shift(); + html = html.replace(/\((.+)\)/, '$1'); + for (let alias of aliases) { + html += ` (${alias})`; + } + return html; + } + + add(catitem, rows) { + 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) { - let html = title.replace(/\/(.*)/, ' ($1)'); + if (word.title) { put(figitem, 'figcaption', { - innerHTML: html, + innerHTML: this.namehtml(word.title), }); } - if (this.cats[ref]) { + put(worditem, '.level' + word.level); + if (word.level <= 1 && word.subs.length >= 4) { + put(worditem, '.large'); + } + if (word.subs.length) { // delve into subcategory put(worditem, '.parent'); - 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]); - })); + const expansion = put(worditem, 'ul'); + //expansion.style.display = 'none'; + this.add(expansion, word.subs); + //worditem.onclick = () => expansion.style.display = ''; + } + if (this.preset.debug) { + put(figitem, '[title=$]', `id ${word.id} level ${word.level}`); } }); } + configure(input) { + this.preset.level = 3; + this.preset.images = false; + return super.configure(input); + } + setup() { - this.gallery = document.getElementById('gallery'); - put(this.gallery, '-p', 'Under construction.'); - this.add(this.gallery, this.preset.cat ? [this.preset.cat] : this.cats[null]); + super.setup(); + if (this.preset.debug) { + put(document.head, 'link', {rel: 'stylesheet', href: '/word/debug.css'}); + } + this.form.innerHTML = ''; + put(this.form, 'p', 'Under construction.'); + for (let cat of this.data.root()) { + this.add(put(this.form, 'ul.gallery'), [cat]); + } } stop() {}