From e889c7543227d2aeee90553fea9c59524c2cec95 Mon Sep 17 00:00:00 2001 From: Mischa POSLAWSKY Date: Wed, 20 Oct 2021 23:35:08 +0200 Subject: [PATCH] word/quiz: rewrite javascript object to class --- word/quiz.js | 63 ++++++++++++++++++++++++++-------------------------- 1 file changed, 31 insertions(+), 32 deletions(-) diff --git a/word/quiz.js b/word/quiz.js index 3bfa2ca..ef5e0d8 100644 --- a/word/quiz.js +++ b/word/quiz.js @@ -1,36 +1,35 @@ -let quiz = { -dataurl: '/data/wordlist.nl.json', +class Quiz { + next() { + let word = this.words.shift(); + let form = put(this.form, + '+img[src=$]+ul', `/data/word/en/${word[0]}.jpg`, + ); -next: () => { - let word = quiz.words.shift(); - let form = put(quiz.form, - 'img[src=$]+ul', `/data/word/en/${word[0]}.jpg`, - ); - - let answers = [word[2], quiz.words[1][2], quiz.words[2][2], quiz.words[3][2]] - .sort(() => {return .5 - Math.random()}) // shuffle - answers.forEach(suggest => { - let option = put(form, 'li', suggest, {onclick: () => { - if (suggest != word[2]) { - // incorrect - put(option, '.wrong'); - return; - } - put(option, '.good'); - window.setTimeout(quiz.next, 500); - }}); - }); -}, - -setup: () => { - fetch(quiz.dataurl).then(res => res.json()).then(json => { - quiz.form = document.getElementById('quiz'); - quiz.words = Object.values(json) + let answers = [word[2], this.words[1][2], this.words[2][2], this.words[3][2]] .sort(() => {return .5 - Math.random()}) // shuffle - .map(row => row.split(/:/)) - quiz.next(); - }); -}, + answers.forEach(suggest => { + let option = put(form, 'li', suggest, {onclick: () => { + if (suggest != word[2]) { + // incorrect + put(option, '.wrong'); + return; + } + put(option, '.good'); + window.setTimeout(() => this.next(), 500); + }}); + }); + } + + constructor() { + this.dataurl = '/data/wordlist.nl.json'; + fetch(this.dataurl).then(res => res.json()).then(json => { + this.form = document.getElementById('quiz'); + this.words = Object.values(json) + .sort(() => {return .5 - Math.random()}) // shuffle + .map(row => row.split(/:/)) + this.next(); + }); + } }; -quiz.setup(); +new Quiz(); -- 2.30.0