From f9ffdd6fbc0a76d0b6840d8bfead35f0019e2597 Mon Sep 17 00:00:00 2001 From: khalidbih Date: Mon, 30 Mar 2026 00:27:57 +0100 Subject: [PATCH 1/2] Add working alarm clock with countdown and sound --- Sprint-3/alarmclock/alarmclock.js | 32 ++++++++++++++++++++++++++++++- 1 file changed, 31 insertions(+), 1 deletion(-) diff --git a/Sprint-3/alarmclock/alarmclock.js b/Sprint-3/alarmclock/alarmclock.js index 6ca81cd3b..3303f9bac 100644 --- a/Sprint-3/alarmclock/alarmclock.js +++ b/Sprint-3/alarmclock/alarmclock.js @@ -1,4 +1,34 @@ -function setAlarm() {} +function setAlarm() { + let timer; + + const input = document.getElementById("alarmSet").value; + let timeLeft = Number(input); + + updateDisplay(timeLeft); + + clearInterval(timer); + + timer = setInterval(() => { + timeLeft--; + + updateDisplay(timeLeft); + + if (timeLeft <= 0) { + clearInterval(timer); + playAlarm(); + document.body.style.backgroundColor = "red"; + } + }, 1000); +} + +function updateDisplay(secondsLeft) { + const heading = document.getElementById("timeRemaining"); + + const minutes = Math.floor(secondsLeft / 60); + const seconds = secondsLeft % 60; + + heading.innerText = `Time Remaining: ${String(minutes).padStart(2, "0")}:${String(seconds).padStart(2, "0")}`; +} // DO NOT EDIT BELOW HERE From b0576a06b6fb298c56da1ca76f145148ab04caf6 Mon Sep 17 00:00:00 2001 From: khalidbih Date: Sun, 5 Apr 2026 16:26:31 +0100 Subject: [PATCH 2/2] Fix input validation and timer handling in alarm clock --- Sprint-3/alarmclock/alarmclock.js | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/Sprint-3/alarmclock/alarmclock.js b/Sprint-3/alarmclock/alarmclock.js index 3303f9bac..1fdaf20e6 100644 --- a/Sprint-3/alarmclock/alarmclock.js +++ b/Sprint-3/alarmclock/alarmclock.js @@ -1,11 +1,21 @@ -function setAlarm() { - let timer; +let timer; +function setAlarm() { const input = document.getElementById("alarmSet").value; let timeLeft = Number(input); updateDisplay(timeLeft); + if (input === "" || isNaN(timeLeft)) { + return; + } + + if (timeLeft < 0) { + return; + } + + updateDisplay(timeLeft); + clearInterval(timer); timer = setInterval(() => { @@ -24,6 +34,10 @@ function setAlarm() { function updateDisplay(secondsLeft) { const heading = document.getElementById("timeRemaining"); + if (secondsLeft < 0) { + secondsLeft = 0; + } + const minutes = Math.floor(secondsLeft / 60); const seconds = secondsLeft % 60;