X-Git-Url: http://git.shiar.nl/sheet.git/blobdiff_plain/20332e82f5c6365a8d65c75192985d846a99a2dd..v1.14-7-ge90c9ada43:/word/finder.js
diff --git a/word/finder.js b/word/finder.js
index 606f033..ed89054 100644
--- a/word/finder.js
+++ b/word/finder.js
@@ -1,31 +1,77 @@
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]) {
- // delve into subcategory
- put(worditem, '.parent');
- this.add(worditem, this.cats[ref]);
+ if (this.preset.debug) {
+ put(figitem, '[title=$]', `id ${word.id} level ${word.level}`);
+ }
+ put(worditem, '.level' + word.level);
+ if (!word.subs.length) {
+ return;
+ }
+ 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 = '';
});
}
+ 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() {}