feat: Disable input once countdown has started

This commit is contained in:
overflowerror 2023-10-30 00:59:35 +01:00
parent 9e4edbf0bc
commit 214963bb88
2 changed files with 38 additions and 7 deletions

4
dist/main.css vendored
View file

@ -43,4 +43,8 @@ body {
#countdown .down {
top: calc(3.3vw + 0.2vw);
}
#countdown.counting .up, #countdown.counting .down {
display: none;
}

View file

@ -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);