From d985a3d1220953fa3ba80ae1186cb274850c4cc1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=90=D0=BD=D1=82=D0=BE=D0=BD=20=D0=A2=D1=80=D0=BE=D1=88?= =?UTF-8?q?=D0=B8=D0=BD?= Date: Thu, 16 Jul 2026 23:46:33 +0300 Subject: [PATCH] better mistakes list --- app.js | 52 ++++++++++++++++++++++++++++++++-------------------- styles.css | 7 +++++++ 2 files changed, 39 insertions(+), 20 deletions(-) diff --git a/app.js b/app.js index 6779636..d3229f0 100644 --- a/app.js +++ b/app.js @@ -16,7 +16,7 @@ const STRINGS = { timeLimit: 'Time Limit', numberOfRounds: 'Number of Questions', play: 'Go!', - timeLeft: 'Time left', + timeLeft: '\u23F1', submit: 'Submit', next: 'Next', results: 'Results', @@ -56,7 +56,7 @@ const STRINGS = { timeLimit: '\u0412\u0440\u0435\u043C\u044F \u043D\u0430 \u043E\u0442\u0432\u0435\u0442', numberOfRounds: '\u041A\u043E\u043B\u0438\u0447\u0435\u0441\u0442\u0432\u043E \u0432\u043E\u043F\u0440\u043E\u0441\u043E\u0432', play: '\u0412\u043F\u0435\u0440\u0451\u0434!', - timeLeft: '\u041E\u0441\u0442\u0430\u043B\u043E\u0441\u044C', + timeLeft: '\u23F1', submit: '\u041E\u0442\u043F\u0440\u0430\u0432\u0438\u0442\u044C', next: '\u0414\u0430\u043B\u0435\u0435', results: '\u0420\u0435\u0437\u0443\u043B\u044C\u0442\u0430\u0442\u044B', @@ -442,12 +442,15 @@ function handleChoice(idx, val, choices) { allBtns[correctIdx].classList.add('correct-choice'); feedback.textContent = t('incorrect', {n: game.correctAnswer}); feedback.className = 'answer-feedback incorrect'; - game.mistakes.push({ - key: game.system, - system: SYSTEMS[game.system].toDisplay(game.correctAnswer), - decimal: game.correctAnswer, - systemName: systemName(game.system), - }); + if (!game.mistakes.some(m => m.decimal === game.correctAnswer)) { + game.mistakes.push({ + key: game.system, + system: SYSTEMS[game.system].toDisplay(game.correctAnswer), + decimal: game.correctAnswer, + systemName: systemName(game.system), + wrong: val, + }); + } } document.getElementById('score-incorrect').textContent = MARK_INCORRECT + (game.currentRound - game.correctCount); @@ -498,12 +501,15 @@ function renderNumpad() { } else { feedback.textContent = t('incorrect', {n: game.correctAnswer}); feedback.className = 'answer-feedback incorrect'; - game.mistakes.push({ - key: game.system, - system: SYSTEMS[game.system].toDisplay(game.correctAnswer), - decimal: game.correctAnswer, - systemName: systemName(game.system), - }); + if (!game.mistakes.some(m => m.decimal === game.correctAnswer)) { + game.mistakes.push({ + key: game.system, + system: SYSTEMS[game.system].toDisplay(game.correctAnswer), + decimal: game.correctAnswer, + systemName: systemName(game.system), + wrong: val, + }); + } } document.getElementById('score-incorrect').textContent = MARK_INCORRECT + (game.currentRound - game.correctCount); @@ -567,12 +573,14 @@ function startTimer() { const feedback = document.getElementById('answer-feedback'); feedback.textContent = t('timesUp', {n: game.correctAnswer}); feedback.className = 'answer-feedback incorrect'; - game.mistakes.push({ - key: game.system, - system: SYSTEMS[game.system].toDisplay(game.correctAnswer), - decimal: game.correctAnswer, - systemName: systemName(game.system), - }); + if (!game.mistakes.some(m => m.decimal === game.correctAnswer)) { + game.mistakes.push({ + key: game.system, + system: SYSTEMS[game.system].toDisplay(game.correctAnswer), + decimal: game.correctAnswer, + systemName: systemName(game.system), + }); + } document.getElementById('score-incorrect').textContent = MARK_INCORRECT + (game.currentRound - game.correctCount); document.getElementById('btn-next').classList.remove('hidden'); @@ -625,6 +633,10 @@ function endGame() {
${m.system}
\u2B95
${m.decimal}
+ ${m.wrong + ? '
\u2718 ' + m.wrong + '
' + : '
\u2718 \u23F1
' + } `; listEl.appendChild(item); }); diff --git a/styles.css b/styles.css index 6368f3f..bb33838 100644 --- a/styles.css +++ b/styles.css @@ -619,6 +619,13 @@ body { color: var(--correct); } +.result-wrong { + font-size: 1.2rem; + font-weight: 600; + color: var(--incorrect); + margin-left: auto; +} + .no-mistakes { text-align: center; color: var(--correct);