Refactor z nowa templatka
Deploy to FTP / deploy (push) Successful in 6s

This commit is contained in:
Sebastian Molenda
2026-05-24 14:37:20 +02:00
parent abd320adb4
commit 204375dd39
16 changed files with 2586 additions and 740 deletions
+33 -17
View File
@@ -10,7 +10,6 @@
const feedbackEl = document.getElementById('feedback')
const progressInner = document.getElementById('progress-inner')
const progressLabel = document.getElementById('progress-label')
const scoreLabel = document.getElementById('score-label')
const summaryText = document.getElementById('summary-text')
const totalInput = document.getElementById('total-input')
@@ -47,13 +46,13 @@
})
})
document.getElementById('clear').addEventListener('click', () => { st.buf = ''; answerEl.textContent = '' })
document.getElementById('backspace').addEventListener('click', () => { st.buf = st.buf.slice(0,-1); answerEl.textContent = st.buf || ' ' })
document.getElementById('backspace').addEventListener('click', () => { st.buf = st.buf.slice(0,-1); answerEl.textContent = st.buf || '' })
document.getElementById('submit').addEventListener('click', submit)
window.addEventListener('keydown', e => {
if (!playScreen.classList.contains('hidden')) {
if (/^[0-9]$/.test(e.key) && st.buf.length < 6) { st.buf += e.key; answerEl.textContent = st.buf }
else if (e.key === 'Backspace') { st.buf = st.buf.slice(0,-1); answerEl.textContent = st.buf || ' ' }
else if (e.key === 'Backspace') { st.buf = st.buf.slice(0,-1); answerEl.textContent = st.buf || '' }
else if (e.key === 'Enter') submit()
}
})
@@ -65,9 +64,9 @@
const answer = randInt(1, 10) // quotient (always integer)
const a = b * answer // dividend
st.current = { a, b, answer }
problemEl.textContent = `${a} ÷ ${b} = ?`
problemEl.textContent = `${a} ÷ ${b}`
feedbackEl.textContent = ''
st.buf = ''; answerEl.textContent = ' '
st.buf = ''; answerEl.textContent = ''
updateBar()
}
@@ -77,43 +76,60 @@
st.solved++
if (given === st.current.answer) {
st.score++
feedbackEl.textContent = '✔ dobrze!'
feedbackEl.style.color = '#16a34a'
feedbackEl.textContent = 'Dobrze!'
feedbackEl.classList.add('correct')
feedbackEl.classList.remove('incorrect')
} else {
feedbackEl.textContent = `${st.current.a} ÷ ${st.current.b} = ${st.current.answer}`
feedbackEl.style.color = '#dc2626'
feedbackEl.textContent = `Poprawna odpowiedź: ${st.current.answer}`
feedbackEl.classList.add('incorrect')
feedbackEl.classList.remove('correct')
}
st.buf = ''; answerEl.textContent = ' '
feedbackEl.style.opacity = 1;
st.buf = ''; answerEl.textContent = ''
updateBar()
if (st.solved >= st.total) {
setTimeout(showSummary, 700)
setTimeout(showSummary, 1200)
} else {
setTimeout(nextProblem, 600)
setTimeout(() => {
feedbackEl.style.opacity = 0;
setTimeout(nextProblem, 200);
}, 1000)
}
}
function updateBar() {
const pct = Math.round((st.solved / st.total) * 100)
const pct = st.total > 0 ? Math.round((st.solved / st.total) * 100) : 0
progressInner.style.width = pct + '%'
progressLabel.textContent = `${st.solved}/${st.total}`
scoreLabel.textContent = `${st.score}`
}
function showSummary() {
const pct = Math.round((st.score / st.total) * 100)
summaryText.textContent = `${st.score} / ${st.total} poprawnie (${pct}%)`
const pct = st.total > 0 ? Math.round((st.score / st.total) * 100) : 0
summaryText.textContent = `Twój wynik: ${st.score} / ${st.total} poprawnie (${pct}%)`
show(summaryScreen)
}
function show(screen) {
[selectScreen, playScreen, summaryScreen].forEach(s => s.classList.add('hidden'))
screen.classList.remove('hidden')
if (screen === summaryScreen) {
selectScreen.classList.add('hidden');
playScreen.classList.add('hidden');
}
}
// commit SHA
// commit SHA and default selection
document.addEventListener('DOMContentLoaded', async () => {
const el = document.getElementById('commit-sha')
if (!el) return
// Set default divisor selection
const defaultDivisorBtn = document.querySelector('.table-btn[data-val="0"]');
if(defaultDivisorBtn) {
defaultDivisorBtn.classList.add('active');
st.divisor = 0;
}
let sha = (window.COMMIT_SHA || '').toString().trim()
if (!sha) {
try {