From 31358187cc0563b88d464b730e4ce0edf0526065 Mon Sep 17 00:00:00 2001 From: Dipa-Sarker Date: Sun, 26 Jul 2026 12:47:16 +0100 Subject: [PATCH 1/4] done building alarm clock app --- Sprint-3/alarmclock/alarmclock.js | 50 +++++++++++++++++++++++++++++++ Sprint-3/alarmclock/index.html | 3 +- 2 files changed, 52 insertions(+), 1 deletion(-) diff --git a/Sprint-3/alarmclock/alarmclock.js b/Sprint-3/alarmclock/alarmclock.js index 6ca81cd3b..f3f597492 100644 --- a/Sprint-3/alarmclock/alarmclock.js +++ b/Sprint-3/alarmclock/alarmclock.js @@ -23,3 +23,53 @@ function pauseAlarm() { } window.onload = setup; + +const timeRemainingElement = document.querySelector("#timeRemaining"); +const alarmSetElement = document.querySelector("#alarmSet"); +const setButtonElement = document.querySelector("#set"); +const stopButtonElement = document.querySelector("#stop"); +const bodyElement = document.querySelector("body"); +const alarmSoundElement = document.querySelector("#alarmSound"); + +let remainingTime; +let intervalID; +function triggerAlarm() { + bodyElement.style.backgroundColor = "yellow"; + alarmSoundElement.play(); +} +function setAlarm() { + clearInterval(intervalID); + const alarmTime = alarmSetElement.value; + remainingTime = Number(alarmTime); + const showTimeMinutes = Math.floor(remainingTime / 60) + .toString() + .padStart(2, "0"); + const showTimeSeconds = (remainingTime % 60).toString().padStart(2, "0"); + timeRemainingElement.innerText = showTimeMinutes + ":" + showTimeSeconds; + if (remainingTime === 0) { + triggerAlarm(); + } else { + intervalID = setInterval(countDown, 1000); + } +} +setButtonElement.addEventListener("click", setAlarm); +function countDown() { + if (remainingTime <= 0) { + clearInterval(intervalID); + triggerAlarm(); + return; + } + remainingTime -= 1; + const remainingMinutes = Math.floor(remainingTime / 60) + .toString() + .padStart(2, "0"); + const remainingSeconds = (remainingTime % 60).toString().padStart(2, "0"); + timeRemainingElement.innerText = remainingMinutes + ":" + remainingSeconds; +} +function stopAlarm() { + clearInterval(intervalID); + alarmSoundElement.pause(); + alarmSoundElement.currentTime = 0; + bodyElement.style.backgroundColor = ""; +} +stopButtonElement.addEventListener("click", stopAlarm); diff --git a/Sprint-3/alarmclock/index.html b/Sprint-3/alarmclock/index.html index 48e2e80d9..2a45c65b1 100644 --- a/Sprint-3/alarmclock/index.html +++ b/Sprint-3/alarmclock/index.html @@ -4,13 +4,14 @@ - Title here + Alarm clock app

Time Remaining: 00:00

+ From f71af08ebde317b94b4c62a6e5d30f75d6761a42 Mon Sep 17 00:00:00 2001 From: Dipa-Sarker Date: Fri, 31 Jul 2026 00:27:53 +0100 Subject: [PATCH 2/4] add input validation --- Sprint-3/alarmclock/alarmclock.js | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/Sprint-3/alarmclock/alarmclock.js b/Sprint-3/alarmclock/alarmclock.js index f3f597492..ae3db03fe 100644 --- a/Sprint-3/alarmclock/alarmclock.js +++ b/Sprint-3/alarmclock/alarmclock.js @@ -40,7 +40,13 @@ function triggerAlarm() { function setAlarm() { clearInterval(intervalID); const alarmTime = alarmSetElement.value; + if (alarmTime === "") { + return; + } remainingTime = Number(alarmTime); + if (remainingTime < 0) { + return; + } const showTimeMinutes = Math.floor(remainingTime / 60) .toString() .padStart(2, "0"); From 8eae09967b599d1b6be76e98f4690ebf0dcf4dfd Mon Sep 17 00:00:00 2001 From: Dipa-Sarker Date: Sun, 2 Aug 2026 12:23:12 +0100 Subject: [PATCH 3/4] commented for conditions --- Sprint-3/alarmclock/alarmclock.js | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/Sprint-3/alarmclock/alarmclock.js b/Sprint-3/alarmclock/alarmclock.js index ae3db03fe..41db84006 100644 --- a/Sprint-3/alarmclock/alarmclock.js +++ b/Sprint-3/alarmclock/alarmclock.js @@ -33,30 +33,32 @@ const alarmSoundElement = document.querySelector("#alarmSound"); let remainingTime; let intervalID; + function triggerAlarm() { bodyElement.style.backgroundColor = "yellow"; alarmSoundElement.play(); } + function setAlarm() { clearInterval(intervalID); const alarmTime = alarmSetElement.value; if (alarmTime === "") { return; - } + } //input validation (for emptry input) remainingTime = Number(alarmTime); if (remainingTime < 0) { return; - } + } //input validation(for -ve number input) const showTimeMinutes = Math.floor(remainingTime / 60) .toString() .padStart(2, "0"); const showTimeSeconds = (remainingTime % 60).toString().padStart(2, "0"); timeRemainingElement.innerText = showTimeMinutes + ":" + showTimeSeconds; if (remainingTime === 0) { - triggerAlarm(); + triggerAlarm(); //valid input, when input = 0 then immediately triggers alarm } else { intervalID = setInterval(countDown, 1000); - } + } //valid input, when input = 10 then countdown starts } setButtonElement.addEventListener("click", setAlarm); function countDown() { @@ -64,7 +66,9 @@ function countDown() { clearInterval(intervalID); triggerAlarm(); return; - } + } /*to avoid any chance of -ve counting after countdown reached 0 from 10. + when countdown = 0 alarm triggers immediately and returns from the code */ + remainingTime -= 1; const remainingMinutes = Math.floor(remainingTime / 60) .toString() @@ -72,6 +76,7 @@ function countDown() { const remainingSeconds = (remainingTime % 60).toString().padStart(2, "0"); timeRemainingElement.innerText = remainingMinutes + ":" + remainingSeconds; } + function stopAlarm() { clearInterval(intervalID); alarmSoundElement.pause(); From 0c28ad10cad282536c608dcd12c7393785161029 Mon Sep 17 00:00:00 2001 From: Dipa-Sarker Date: Sun, 2 Aug 2026 12:27:17 +0100 Subject: [PATCH 4/4] replaced getElementByID --- Sprint-3/alarmclock/alarmclock.js | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/Sprint-3/alarmclock/alarmclock.js b/Sprint-3/alarmclock/alarmclock.js index 41db84006..7983b69b0 100644 --- a/Sprint-3/alarmclock/alarmclock.js +++ b/Sprint-3/alarmclock/alarmclock.js @@ -24,12 +24,12 @@ function pauseAlarm() { window.onload = setup; -const timeRemainingElement = document.querySelector("#timeRemaining"); -const alarmSetElement = document.querySelector("#alarmSet"); -const setButtonElement = document.querySelector("#set"); -const stopButtonElement = document.querySelector("#stop"); +const timeRemainingElement = document.getElementById("timeRemaining"); +const alarmSetElement = document.getElementById("alarmSet"); +const setButtonElement = document.getElementById("set"); +const stopButtonElement = document.getElementById("stop"); const bodyElement = document.querySelector("body"); -const alarmSoundElement = document.querySelector("#alarmSound"); +const alarmSoundElement = document.getElementById("alarmSound"); let remainingTime; let intervalID;