From be8fbab1f213b81a45f05dd68c202e28a2064129 Mon Sep 17 00:00:00 2001 From: Sandani Kannangara Date: Tue, 21 Jul 2026 20:48:41 +0100 Subject: [PATCH 1/2] Implement alarm clock countdown functionality --- Sprint-3/alarmclock/alarmclock.js | 29 ++++++++++++++++++++++++++++- 1 file changed, 28 insertions(+), 1 deletion(-) diff --git a/Sprint-3/alarmclock/alarmclock.js b/Sprint-3/alarmclock/alarmclock.js index 6ca81cd3b..88d810bca 100644 --- a/Sprint-3/alarmclock/alarmclock.js +++ b/Sprint-3/alarmclock/alarmclock.js @@ -1,4 +1,31 @@ -function setAlarm() {} +const alarmTime = document.querySelector("#alarmSet"); +const timeRemaining = document.querySelector("#timeRemaining"); +let remainingSeconds; + +function setAlarm() { + remainingSeconds = Number(alarmTime.value); + displayTimeRemaining(); + + let timer = setInterval(() => { + remainingSeconds--; + displayTimeRemaining(); + if (remainingSeconds === 0) { + clearInterval(timer); + window.playAlarm(); + } + }, 1000); +} + +function displayTimeRemaining() { + let minutes = Math.floor(remainingSeconds / 60); + let seconds = remainingSeconds % 60; + const formatTime = + minutes.toString().padStart(2, "0") + + ":" + + seconds.toString().padStart(2, "0"); + + timeRemaining.textContent = `Time Remaining: ${formatTime}`; +} // DO NOT EDIT BELOW HERE From 3d71ce8c576c94bd5a82b9693298c9ee32a72596 Mon Sep 17 00:00:00 2001 From: Sandani Kannangara Date: Mon, 27 Jul 2026 19:41:16 +0100 Subject: [PATCH 2/2] Fix alarm timer handling and input validation --- Sprint-3/alarmclock/alarmclock.js | 25 ++++++++++++++++++++----- 1 file changed, 20 insertions(+), 5 deletions(-) diff --git a/Sprint-3/alarmclock/alarmclock.js b/Sprint-3/alarmclock/alarmclock.js index 88d810bca..3dab42d65 100644 --- a/Sprint-3/alarmclock/alarmclock.js +++ b/Sprint-3/alarmclock/alarmclock.js @@ -1,18 +1,32 @@ -const alarmTime = document.querySelector("#alarmSet"); -const timeRemaining = document.querySelector("#timeRemaining"); +const alarmTime = document.getElementById("alarmSet"); +const timeRemaining = document.getElementById("timeRemaining"); let remainingSeconds; +let timer; function setAlarm() { + pauseAlarm(); + remainingSeconds = Number(alarmTime.value); + + if (!Number.isFinite(remainingSeconds) || remainingSeconds <= 0) { + alert("Please enter a valid number."); + return; + } + displayTimeRemaining(); - let timer = setInterval(() => { + timer = setInterval(() => { remainingSeconds--; - displayTimeRemaining(); - if (remainingSeconds === 0) { + + if (remainingSeconds <= 0) { + remainingSeconds = 0; + displayTimeRemaining(); clearInterval(timer); window.playAlarm(); + return; } + + displayTimeRemaining(); }, 1000); } @@ -46,6 +60,7 @@ function playAlarm() { } function pauseAlarm() { + clearInterval(timer); audio.pause(); }