From 214963bb88ef37009103955e3ec1893e9c0e6564 Mon Sep 17 00:00:00 2001 From: overflowerror Date: Mon, 30 Oct 2023 00:59:35 +0100 Subject: [PATCH] feat: Disable input once countdown has started --- dist/main.css | 4 ++++ src/index.js | 41 ++++++++++++++++++++++++++++++++++------- 2 files changed, 38 insertions(+), 7 deletions(-) diff --git a/dist/main.css b/dist/main.css index 0147ec2..1417e7b 100644 --- a/dist/main.css +++ b/dist/main.css @@ -43,4 +43,8 @@ body { #countdown .down { top: calc(3.3vw + 0.2vw); +} + +#countdown.counting .up, #countdown.counting .down { + display: none; } \ No newline at end of file diff --git a/src/index.js b/src/index.js index a5e4644..6dea6b0 100644 --- a/src/index.js +++ b/src/index.js @@ -1,4 +1,6 @@ (function() { + var countdown = null; + const parts = { "days": { "next": null, @@ -68,8 +70,37 @@ }; } + const start = function() { + state.total = parseTime(); + state.current = state.total; + state.counting = true; + + countdown.classList.add("counting"); + + var part = "seconds"; + while(part) { + const partObj = parts[part]; + partObj.input.disabled = true; + part = partObj.next; + } + } + + const stop = function() { + state.counting = false; + + countdown.classList.remove("counting"); + + var part = "seconds"; + while(part) { + const partObj = parts[part]; + partObj.input.disabled = false; + part = partObj.next; + } + } + window.addEventListener("load", function() { - Array.from(document.getElementById("countdown").getElementsByClassName("part")).forEach(element => { + countdown = document.getElementById("countdown"); + Array.from(countdown.getElementsByClassName("part")).forEach(element => { const part = parts[element.id]; part.element = element; part.input = element.getElementsByTagName("input")[0]; @@ -117,11 +148,7 @@ }); }); - document.getElementById("start").addEventListener("click", function() { - state.total = parseTime(); - state.current = state.total; - state.counting = true; - }); + document.getElementById("start").addEventListener("click", start); window.setInterval(function() { if (state.counting) { @@ -130,7 +157,7 @@ update(state.current); if (state.current == 0) { - state.counting = false; + stop(); } } }, 1000);