word/finder: move html formatting into common method
[sheet.git] / word / quiz.js
index 5283628407e51fbe84ff5cc54ea02f1c7e88c623..44703948f369b7cb09f4ad9c2b0466ef3b9a1b0f 100644 (file)
@@ -6,6 +6,15 @@ Array.prototype.shuffle = function () {
        return this;
 };
 
+function hashparams() {
+       const encodedhash = window.location.href.split('#').slice(1) || '';
+       if (encodedhash.length == 1) {
+               // location.hash is not encoded in firefox
+               return decodeURIComponent(encodedhash).split('#');
+       }
+       return encodedhash;
+}
+
 class Words {
        constructor(data, root = undefined) {
                this.data = data;
@@ -74,6 +83,15 @@ class Words {
                        get label() {
                                return row[0].replace(/\/.*/, ''); // primary form
                        },
+                       get html() {
+                               let aliases = this.title.split('/');
+                               let html = aliases.shift();
+                               html = html.replace(/\((.+)\)/, '<small>$1</small>');
+                               for (let alias of aliases) {
+                                       html += ` <small>(${alias})</small>`;
+                               }
+                               return html;
+                       },
                        level: row[1],
                        imgid: row[2],
                        thumb(size = 32) {
@@ -111,7 +129,7 @@ class WordQuiz {
                return selection;
        }
 
-       configure(params = window.location.hash.split('#')) {
+       configure(params = hashparams()) {
                const opts = new Map(params.map(arg => arg.split(/[:=](.*)/)));
                for (let [query, val] of opts) {
                        if (query.match(/^\d+$/)) {