diff --git a/Sprint-3/alarmclock/alarmclock.js b/Sprint-3/alarmclock/alarmclock.js index 6ca81cd3b..9857dadb2 100644 --- a/Sprint-3/alarmclock/alarmclock.js +++ b/Sprint-3/alarmclock/alarmclock.js @@ -1,4 +1,49 @@ -function setAlarm() {} +const heading = document.getElementById("timeRemaining"); +const input = document.getElementById("alarmSet"); +const setBtn = document.getElementById("set"); + +const ONE_SECOND = 1000; + +let remaining = 0; +let intervalId = null; + +function format(seconds) { + const minutes = Math.floor(seconds / 60); + const secs = seconds % 60; + return `${minutes}m : ${secs}s`; +} + + +function updateHeading() { + heading.textContent = `Time Remaining: ${format(remaining)}`; +} + +function tick() { + if (remaining <= 0) { + clearInterval(intervalId); + intervalId = null; + updateHeading(); + if (typeof window.playAlarm === "function") { + window.playAlarm(); + } + return; + } + remaining -= 1; + updateHeading(); +} + +function setAlarm() { + const value = parseInt(input.value, 10); + // Guard clause: ignore invalid or non-positive input + if (!Number.isFinite(value) || value <= 0) return; + if (intervalId) clearInterval(intervalId); + remaining = value; + updateHeading(); + intervalId = setInterval(tick, ONE_SECOND); +} + +setBtn.addEventListener("click", setAlarm); +updateHeading(); // DO NOT EDIT BELOW HERE diff --git a/Sprint-3/alarmclock/index.html b/Sprint-3/alarmclock/index.html index 48e2e80d9..970fd0a3f 100644 --- a/Sprint-3/alarmclock/index.html +++ b/Sprint-3/alarmclock/index.html @@ -4,17 +4,23 @@ -