From 13bf268fac27e9aeb746abf1ce108e6ea15250d0 Mon Sep 17 00:00:00 2001 From: Edina Kurdi Date: Thu, 13 Aug 2026 11:59:08 +0100 Subject: [PATCH 01/10] add title to html --- Sprint-3/alarmclock/index.html | 37 ++++++++++++++++++---------------- 1 file changed, 20 insertions(+), 17 deletions(-) diff --git a/Sprint-3/alarmclock/index.html b/Sprint-3/alarmclock/index.html index 48e2e80d9..36715d7d9 100644 --- a/Sprint-3/alarmclock/index.html +++ b/Sprint-3/alarmclock/index.html @@ -1,20 +1,23 @@ - - - - - Title here - - -
-

Time Remaining: 00:00

- - - - -
- - - + + + + + Alarm clock app + + + +
+

Time Remaining: 00:00

+ + + + + +
+ + + + \ No newline at end of file From d22745d5d0dde368fdfa4a86d485450c87486084 Mon Sep 17 00:00:00 2001 From: Edina Kurdi Date: Thu, 13 Aug 2026 12:25:19 +0100 Subject: [PATCH 02/10] start implementing setAlarm() --- Sprint-3/alarmclock/alarmclock.js | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/Sprint-3/alarmclock/alarmclock.js b/Sprint-3/alarmclock/alarmclock.js index 6ca81cd3b..f49cb61e3 100644 --- a/Sprint-3/alarmclock/alarmclock.js +++ b/Sprint-3/alarmclock/alarmclock.js @@ -1,4 +1,11 @@ -function setAlarm() {} +function setAlarm() { + let timeInput = document.getElementById("alarmSet"); + // console.log(timeInput.value); + const timeRemaining = document.getElementById("timeRemaining"); + const minutes = String(Math.floor(timeInput.value / 60)).padstart(2, "0"); + const seconds = String(timeInput.value - minutes * 60).padStart(2, "0"); + timeRemaining.textContent = `Time remaining: ${minutes}:${seconds}`; +} // DO NOT EDIT BELOW HERE From e667709eca1d28d5b502ad5de04ae00d289069dd Mon Sep 17 00:00:00 2001 From: Edina Kurdi Date: Thu, 13 Aug 2026 12:25:54 +0100 Subject: [PATCH 03/10] start implementing setAlarm() function --- Sprint-3/alarmclock/alarmclock.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Sprint-3/alarmclock/alarmclock.js b/Sprint-3/alarmclock/alarmclock.js index f49cb61e3..4c58412fe 100644 --- a/Sprint-3/alarmclock/alarmclock.js +++ b/Sprint-3/alarmclock/alarmclock.js @@ -2,9 +2,9 @@ function setAlarm() { let timeInput = document.getElementById("alarmSet"); // console.log(timeInput.value); const timeRemaining = document.getElementById("timeRemaining"); - const minutes = String(Math.floor(timeInput.value / 60)).padstart(2, "0"); + const minutes = String(Math.floor(timeInput.value / 60)).padStart(2, "0"); const seconds = String(timeInput.value - minutes * 60).padStart(2, "0"); - timeRemaining.textContent = `Time remaining: ${minutes}:${seconds}`; + timeRemaining.textContent = `Time Remaining: ${minutes}:${seconds}`; } // DO NOT EDIT BELOW HERE From 1751d493ac3dffc74328e49f0d1ebe6ad1c029a4 Mon Sep 17 00:00:00 2001 From: Edina Kurdi Date: Thu, 13 Aug 2026 12:57:50 +0100 Subject: [PATCH 04/10] start countdown --- Sprint-3/alarmclock/alarmclock.js | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/Sprint-3/alarmclock/alarmclock.js b/Sprint-3/alarmclock/alarmclock.js index 4c58412fe..8cd880374 100644 --- a/Sprint-3/alarmclock/alarmclock.js +++ b/Sprint-3/alarmclock/alarmclock.js @@ -1,10 +1,20 @@ function setAlarm() { - let timeInput = document.getElementById("alarmSet"); + const timeInput = document.getElementById("alarmSet"); // console.log(timeInput.value); + let remainingSeconds = timeInput.value; + const timeRemaining = document.getElementById("timeRemaining"); - const minutes = String(Math.floor(timeInput.value / 60)).padStart(2, "0"); - const seconds = String(timeInput.value - minutes * 60).padStart(2, "0"); + const minutes = String(Math.floor(remainingSeconds / 60)).padStart(2, "0"); + const seconds = String(remainingSeconds - minutes * 60).padStart(2, "0"); + timeRemaining.textContent = `Time Remaining: ${minutes}:${seconds}`; + + setInterval(() => { + remainingSeconds--; + const minutes = String(Math.floor(remainingSeconds / 60)).padStart(2, "0"); + const seconds = String(remainingSeconds - minutes * 60).padStart(2, "0"); + timeRemaining.textContent = `Time Remaining: ${minutes}:${seconds}`; + }, 1000); } // DO NOT EDIT BELOW HERE From 45dfc50b67edb54a4233559a804a52195925ffb3 Mon Sep 17 00:00:00 2001 From: Edina Kurdi Date: Thu, 13 Aug 2026 13:08:26 +0100 Subject: [PATCH 05/10] set a stopping point --- Sprint-3/alarmclock/alarmclock.js | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/Sprint-3/alarmclock/alarmclock.js b/Sprint-3/alarmclock/alarmclock.js index 8cd880374..803662c42 100644 --- a/Sprint-3/alarmclock/alarmclock.js +++ b/Sprint-3/alarmclock/alarmclock.js @@ -9,11 +9,15 @@ function setAlarm() { timeRemaining.textContent = `Time Remaining: ${minutes}:${seconds}`; - setInterval(() => { + const timer = setInterval(() => { remainingSeconds--; const minutes = String(Math.floor(remainingSeconds / 60)).padStart(2, "0"); const seconds = String(remainingSeconds - minutes * 60).padStart(2, "0"); timeRemaining.textContent = `Time Remaining: ${minutes}:${seconds}`; + if (remainingSeconds === 0) { + playAlarm(); + clearInterval(timer); + } }, 1000); } From 57d6de09f1773c171e6c416e425f959c0ccb7cb1 Mon Sep 17 00:00:00 2001 From: Edina Kurdi Date: Fri, 14 Aug 2026 15:37:00 +0100 Subject: [PATCH 06/10] delete unused code --- Sprint-3/alarmclock/alarmclock.js | 1 - 1 file changed, 1 deletion(-) diff --git a/Sprint-3/alarmclock/alarmclock.js b/Sprint-3/alarmclock/alarmclock.js index 803662c42..1dd6b7857 100644 --- a/Sprint-3/alarmclock/alarmclock.js +++ b/Sprint-3/alarmclock/alarmclock.js @@ -1,6 +1,5 @@ function setAlarm() { const timeInput = document.getElementById("alarmSet"); - // console.log(timeInput.value); let remainingSeconds = timeInput.value; const timeRemaining = document.getElementById("timeRemaining"); From efd9c411d72af625d4647f14aa936dbb379ab6be Mon Sep 17 00:00:00 2001 From: Edina Kurdi Date: Fri, 14 Aug 2026 15:53:32 +0100 Subject: [PATCH 07/10] add validation for user input to account for decimals and negative numbers and empty strings --- Sprint-3/alarmclock/alarmclock.js | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/Sprint-3/alarmclock/alarmclock.js b/Sprint-3/alarmclock/alarmclock.js index 1dd6b7857..636c9ea93 100644 --- a/Sprint-3/alarmclock/alarmclock.js +++ b/Sprint-3/alarmclock/alarmclock.js @@ -1,6 +1,10 @@ function setAlarm() { const timeInput = document.getElementById("alarmSet"); - let remainingSeconds = timeInput.value; + let remainingSeconds = parseInt(timeInput.value); + if (isNaN(remainingSeconds) || remainingSeconds <= 0) { + alert("Please provide a valid number of seconds"); + return; + } const timeRemaining = document.getElementById("timeRemaining"); const minutes = String(Math.floor(remainingSeconds / 60)).padStart(2, "0"); From 2e32afc6f747155f6baebffc7ca13dc81e8a9bab Mon Sep 17 00:00:00 2001 From: Edina Kurdi Date: Fri, 14 Aug 2026 16:05:10 +0100 Subject: [PATCH 08/10] implement time conversion function to be re-used in the function --- Sprint-3/alarmclock/alarmclock.js | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/Sprint-3/alarmclock/alarmclock.js b/Sprint-3/alarmclock/alarmclock.js index 636c9ea93..5cdd05c5c 100644 --- a/Sprint-3/alarmclock/alarmclock.js +++ b/Sprint-3/alarmclock/alarmclock.js @@ -1,3 +1,9 @@ +function timeConvert(sec) { + let minutes = String(Math.floor(sec / 60)).padStart(2, "0"); + let seconds = String(sec % 60).padStart(2, "0"); + return `${minutes}:${seconds}`; +} + function setAlarm() { const timeInput = document.getElementById("alarmSet"); let remainingSeconds = parseInt(timeInput.value); @@ -7,16 +13,14 @@ function setAlarm() { } const timeRemaining = document.getElementById("timeRemaining"); - const minutes = String(Math.floor(remainingSeconds / 60)).padStart(2, "0"); - const seconds = String(remainingSeconds - minutes * 60).padStart(2, "0"); - timeRemaining.textContent = `Time Remaining: ${minutes}:${seconds}`; + timeRemaining.textContent = `Time Remaining: ${timeConvert(remainingSeconds)}`; const timer = setInterval(() => { remainingSeconds--; const minutes = String(Math.floor(remainingSeconds / 60)).padStart(2, "0"); const seconds = String(remainingSeconds - minutes * 60).padStart(2, "0"); - timeRemaining.textContent = `Time Remaining: ${minutes}:${seconds}`; + timeRemaining.textContent = `Time Remaining: ${timeConvert(remainingSeconds)}`; if (remainingSeconds === 0) { playAlarm(); clearInterval(timer); From 5893a8c319499e440ffd90f853f0f9844db853b8 Mon Sep 17 00:00:00 2001 From: Edina Kurdi Date: Fri, 14 Aug 2026 16:29:40 +0100 Subject: [PATCH 09/10] reset actibe timer and audio before a new countdown --- Sprint-3/alarmclock/alarmclock.js | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/Sprint-3/alarmclock/alarmclock.js b/Sprint-3/alarmclock/alarmclock.js index 5cdd05c5c..0db683554 100644 --- a/Sprint-3/alarmclock/alarmclock.js +++ b/Sprint-3/alarmclock/alarmclock.js @@ -4,7 +4,11 @@ function timeConvert(sec) { return `${minutes}:${seconds}`; } +let timer; function setAlarm() { + clearInterval(timer); + pauseAlarm(); + const timeInput = document.getElementById("alarmSet"); let remainingSeconds = parseInt(timeInput.value); if (isNaN(remainingSeconds) || remainingSeconds <= 0) { @@ -16,10 +20,8 @@ function setAlarm() { timeRemaining.textContent = `Time Remaining: ${timeConvert(remainingSeconds)}`; - const timer = setInterval(() => { + timer = setInterval(() => { remainingSeconds--; - const minutes = String(Math.floor(remainingSeconds / 60)).padStart(2, "0"); - const seconds = String(remainingSeconds - minutes * 60).padStart(2, "0"); timeRemaining.textContent = `Time Remaining: ${timeConvert(remainingSeconds)}`; if (remainingSeconds === 0) { playAlarm(); From 3fcc665d5aed5d05d82d5cfd6a866f9012ed60de Mon Sep 17 00:00:00 2001 From: Edina Kurdi Date: Fri, 14 Aug 2026 16:43:02 +0100 Subject: [PATCH 10/10] reset input box after a timer starts --- Sprint-3/alarmclock/alarmclock.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Sprint-3/alarmclock/alarmclock.js b/Sprint-3/alarmclock/alarmclock.js index 0db683554..0f7a1263e 100644 --- a/Sprint-3/alarmclock/alarmclock.js +++ b/Sprint-3/alarmclock/alarmclock.js @@ -16,6 +16,8 @@ function setAlarm() { return; } + timeInput.value = ""; + const timeRemaining = document.getElementById("timeRemaining"); timeRemaining.textContent = `Time Remaining: ${timeConvert(remainingSeconds)}`;