From 7fe9c546c008e933b7e1c5d768108f8145fcb038 Mon Sep 17 00:00:00 2001 From: german Date: Tue, 14 Apr 2026 15:13:50 +0400 Subject: [PATCH] Quiz --- DOCS.md | 2 + Find/Find.js | 28 ++- demos/Quiz/image.avif | Bin 0 -> 22193 bytes demos/Quiz/index.js | 309 +++++++++++++++++++++++++++----- demos/Quiz/nomodule-find.min.js | 2 +- 5 files changed, 297 insertions(+), 44 deletions(-) create mode 100644 demos/Quiz/image.avif diff --git a/DOCS.md b/DOCS.md index bf5156a..6a1fbc6 100644 --- a/DOCS.md +++ b/DOCS.md @@ -146,6 +146,8 @@ map.tag(/* TAG элемента */); // Вернет экземпляр map дл map.attach(/* событие */, /* функция */); // EventHandler map.attribute(/* Имя */, /* Значение */); // Задание атрибута map.add(/* HTML */); +map.all(/* CSS-селектор */); // Вернет массив экземпляров map для выбранных элементов +map.property(/* свойство элемента */[, /* значение */]); /* * Функция в attach может принимать параметр. * Этот параметр - обьект Find, map которого был вызван diff --git a/Find/Find.js b/Find/Find.js index 40d5b2e..fd37302 100644 --- a/Find/Find.js +++ b/Find/Find.js @@ -31,6 +31,26 @@ class FindObjectMap { this._num = num; return this; } + all(q) { + const o = this.root.querySelectorAll(q); + if (typeof o === "undefined") { + PrivateFind.error("Нет обьектов для селектора!"); + return undefined; + } + let arr = new Array(); + for (let i = 0; i < o.length; i ++) { + arr[i] = new FindObjectMap(o[i], this._app, this._num + 1) + } + return arr; + } + property(property, to) { + if (typeof to === "undefined") { + return this.root[property]; + } else { + this.root[property] = to; + return this; + } + } select(q) { const o = this.root.querySelector(q); if (typeof o === "undefined") { @@ -39,6 +59,12 @@ class FindObjectMap { } return new FindObjectMap(o, this._app, this._num + 1); } + status() { + if (typeof this.root === "object" && this.root !== null && this.root !== undefined) { + return true; + } + return false; + } read() { return this.root.innerHTML; } @@ -85,7 +111,7 @@ class FindObjectMap { } attach(event, func) { this.root.addEventListener(event, () => { - func(this._app); + func(this._app, this); }); return this; } diff --git a/demos/Quiz/image.avif b/demos/Quiz/image.avif new file mode 100644 index 0000000000000000000000000000000000000000..af174b2b9deb16f152f40592b61bf1f936a37872 GIT binary patch literal 22193 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 literal 0 HcmV?d00001 diff --git a/demos/Quiz/index.js b/demos/Quiz/index.js index f23a73a..b7118de 100644 --- a/demos/Quiz/index.js +++ b/demos/Quiz/index.js @@ -1,20 +1,33 @@ -const qestions = [ +const questions = [ { - qestion: "Мой вопрос", + image: "image.avif", + question: "Мой вопрос", variants: [ "Вариант 1", "Вариант 2", "Вариант 3" ], correct: 0 + }, + { + question: "Мой вопрос", + variants: [ + "Вариант 1", + "Вариант 2", + "Вариант 3" + ], + correct: [0, 1] } ]; class Quiz extends Find.createApp() { - constructor(qestions) { + constructor(questions) { const root = Find.search('root'); super(root); - this.qestions = qestions; + this.question_type = undefined; + this.questions = questions; + this.question = null; + this.correctCount = 0; } init() { @@ -22,11 +35,12 @@ class Quiz extends Find.createApp() { this.setMeta(); this.setCard(); this.stable(); - this.createQestions(); + this.createQuestions(); } setCard() { this.add([ + Find.content('
'), Find.content( `
@@ -41,7 +55,7 @@ class Quiz extends Find.createApp() {
` @@ -52,63 +66,274 @@ class Quiz extends Find.createApp() { setMeta() { this.meta([ Find.content(''), - Find.content('') + Find.content(''), + Find.content( + `` + ) ]); } - createQestions() { + createQuestions() { this.number = 0; - for (let i = 0; i < this.qestions.length; i ++) { - this.select('qestion' + this.number); - this.setTitle(); - this.render(); - this.setForms(this.qestions[i]); - this.setEvents(this.qestions[i]) - .then((result) => { + this.questionsWaiter(null); + } + + questionsWaiter(status) { + const results = [ + { + source: "no_select", + text: "Не выбран не один вариант!", + type: "error" + }, + { + source: "incorrect", + text: "Неправильный ответ!", + type: "error" + }, + { + source: "correct", + text: "Правильный ответ!", + type: "success" + } + ]; + + const isEnd = (this.questions.length === this.number); + if (!isEnd) this.question = this.questions[this.number]; + this.select('question' + this.number); + this.setTitle(); + this.render(); + this.setStatus(status); + this.setForms(isEnd); + this.attachDeleteButton(); + if (isEnd) return; + this.setEvents().then((result) => { + if (result !== 'no_select') { this.number ++; - }) - .catch((error) => { - - }); - this.number ++; + } + + let obj = undefined; + for (obj of results) { + if (obj.source == result) break; + } + + this.questionsWaiter(obj); + }); + } + + setStatus(status) { + const root = this.component(); + const message = root.id('message'); + if (status !== null) { + const elem = status.type === 'error' ? + 'is-danger' : + 'is-success'; + message.html( + Find.content( + `
+ + ${status.text} +
` + ) + ); } } - setEvents() {} - - setTitle() { - this.title('Quiz qestion ' + this.number + ' - Find.js demo'); + attachDeleteButton() { + const root = this.component(); + const button = root.id('delete-info'); + if (button.status()) button.attach('click', app => { + const root = app.component(); + root.id("message").html(''); + }); } - setForms(qe) { + setEvents() { + const root = this.component(); + const que = this.question; + const main = this; + return new Promise((resolve, reject) => { + const get_select = function() { + const button = root.id('test_select'); + button.attach('click', () => { + const name = 'question'; + const type = main.question_type; + let correct = false; + + if (type === 'radio') { + const elem = root.select(`input[name="${name}"]:checked`); + + if (!elem.status()) { + resolve('no_select'); + return; + } + + const answer = Number(elem.value()); + + if (answer === que.correct) correct = true; + } else { + const elements = root.all('input[type="checkbox"]:checked'); + + if (elements.length === 0) { + resolve('no_select'); + return; + } + + const answer = elements.map(elem => Number(elem.property('id').slice(7))); + + let correct_count = 0; + for (let i = 0; i < que.correct.length; i ++) { + + if ( + answer[i] === undefined || + answer[i] === null + ) break; + + if (answer[i] === que.correct[i]) { + correct_count ++; + } + } + + if (correct_count === que.correct.length) { + correct = true; + } + } + + if (correct) { + main.correctCount ++; + resolve('correct'); + } else { + resolve('incorrect'); + } + }); + }; + try { + get_select(); + } catch (err) { + reject(err); + } + }); + } + + setTitle() { + const isEnd = (this.questions.length === this.number); + if (!isEnd) { + this.title(`Quiz вопрос ${String(this.number + 1)}/${this.questions.length} - Find.js демо`); + } else { + this.title('Результаты!'); + } + } + + setForms(isDone) { + if (isDone) { + this.viewResults(); + return; + } + + const que = this.question; let input_id = 0; const root = this.component(); const content = root.id("content"); const title = root.id("title"); - title.text(qe.qestion); - for (let val in (qe.variants)) { - content.add( - Find.content( - ` - - -
` - ) + title.text(que.question); + + if (Array.isArray(que.correct)) { + this.question_type = 'checkbox'; + } else { + this.question_type = 'radio'; + } + + let image = ''; + if (typeof que.image !== "undefined") { + image = Find.content( + `
+ Изображение к вопросу + +
` ); - content.id('text' + input_id).text(qe.variants[val]); + content.add(image); + } + + for (let val in (que.variants)) { + if (Array.isArray(que.correct)) { + this.question_type = 'checkbox'; + content.add( + Find.content( + ` +
` + ) + ); + } else { + content.add( + Find.content( + ` + + +
` + ) + ); + } + content.id('text' + input_id).text(que.variants[val]); input_id ++; } } - setEvents(r) { + viewResults() { + const root = this.component(); + const button = root.id("test_select"); + const content = root.id("content"); + const title = root.id("title"); + let text = 'Попробовать снова'; + let out = ` - ${this.correctCount / (this.questions.length / 100)}%`; + const user = + this.correctCount !== this.questions.length ? + `${this.correctCount} вопросов из ${this.questions.length}.` : + 'все вопросы!'; + if (this.correctCount > (this.questions.length / 2)) { + text = 'На главную'; + } + title.text(`Ваш результат ${out}`); + button.text(text); + content.html( + Find.content( + ` + Вы правильно ответили на ${user} + ` + ) + ); + button.attach('click', () => location.reload()); } } -const quiz = new Quiz(qestions); +const quiz = new Quiz(questions); quiz.init(); \ No newline at end of file diff --git a/demos/Quiz/nomodule-find.min.js b/demos/Quiz/nomodule-find.min.js index 972aad7..e9c75bf 100644 --- a/demos/Quiz/nomodule-find.min.js +++ b/demos/Quiz/nomodule-find.min.js @@ -1 +1 @@ -class FindObjectMap{constructor(t,r,e){return this.root=t,"object"!=typeof this.root&&PrivateFind.error("Неизвестный root!"),this._app=r,this._num=e,this}select(t){const r=this.root.querySelector(t);if(void 0!==r)return new FindObjectMap(r,this._app,this._num+1);PrivateFind.error("Нет обьектов для селектора!")}read(){return this.root.innerHTML}text(t){return 0==arguments.length?this.root.textContent:(this.root.textContent=t,this)}html(t){return 0==arguments.length?this.root.innerHTML:(this.root.innerHTML=t,this)}add(t){const r=this.html();return this.html(r+String(t))}value(t){return 0==arguments.length?this.root.value:(this.root.value=t,this)}id(t){const r=this.root.querySelector("#"+t);if(void 0!==r)return new FindObjectMap(r,this._app,this._num+1);PrivateFind.error("No objects of selector")}tag(t){const r=this.root.getElementsByTagName(t);if(void 0!==r)return new FindObjectMap(r,this._app,this._num+1);PrivateFind.error("No objects of selector")}attach(t,r){return this.root.addEventListener(t,()=>{r(this._app)}),this}merge(){if(0!=this._num)return PrivateFind.error("Вы можете создавать merge-обьект только из корневого map(), но уровень вложенности данного map() равен "+String(this._num)+"!"),this;const t=this._app.getNumberOfGroupFromId(this._app.__id);return this._app.groups[t].html=new Array(this.read()),this}app(){return this._app}main(){return new FindObjectMap(this._app.root,this._app,0)}attribute(t,r){return this.root.setAttribute(t,r),this}}class Find{constructor(t){return this._lll="",this.root=t,this.iter=0,this.groups=new Array,this.groups_count=0,this._map=new FindObjectMap(this.root,this,0),this}static createApp(){return Find}static attach(t,r){return`${t}="${r.replace('"',""")}"`}static css(t){return``}static js(t){return`