From 47f91e5a2b9ade3e91b1b10010ecc1ee03274545 Mon Sep 17 00:00:00 2001 From: alexandru-pocovnicu <109530683+alexandru-pocovnicu@users.noreply.github.com> Date: Mon, 16 Mar 2026 18:10:34 +0000 Subject: [PATCH 01/30] Fix: update document title to 'Alarm clock app' --- Sprint-3/alarmclock/index.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Sprint-3/alarmclock/index.html b/Sprint-3/alarmclock/index.html index 48e2e80d9..ff2d3b453 100644 --- a/Sprint-3/alarmclock/index.html +++ b/Sprint-3/alarmclock/index.html @@ -4,7 +4,7 @@ - Title here + Alarm clock app
From 41537a4e542793664307726b3116daf266bd7660 Mon Sep 17 00:00:00 2001 From: alexandru-pocovnicu <109530683+alexandru-pocovnicu@users.noreply.github.com> Date: Mon, 16 Mar 2026 18:36:18 +0000 Subject: [PATCH 02/30] Fix: implement setAlarm function to display time remaining --- 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..852151821 100644 --- a/Sprint-3/alarmclock/alarmclock.js +++ b/Sprint-3/alarmclock/alarmclock.js @@ -1,4 +1,11 @@ -function setAlarm() {} +function setAlarm() { + const alarmSetEl=document.getElementById("alarmSet") + const timeRemainingEl = document.getElementById("timeRemaining"); + timeRemainingEl.innerHTML=`Time Remaining: ${alarmSetEl.value}` + console.log(alarmSetEl.value); + + +} // DO NOT EDIT BELOW HERE From 3ab9799b78d8e2cda78c9939890c8e83739e2d00 Mon Sep 17 00:00:00 2001 From: alexandru-pocovnicu <109530683+alexandru-pocovnicu@users.noreply.github.com> Date: Mon, 16 Mar 2026 18:51:00 +0000 Subject: [PATCH 03/30] extract the seconds and minutes --- 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 852151821..4b260f5ff 100644 --- a/Sprint-3/alarmclock/alarmclock.js +++ b/Sprint-3/alarmclock/alarmclock.js @@ -1,8 +1,15 @@ function setAlarm() { const alarmSetEl=document.getElementById("alarmSet") const timeRemainingEl = document.getElementById("timeRemaining"); + +let totalSeconds=alarmSetEl.value +let seconds=totalSeconds%60 +let minutes=(totalSeconds-seconds)/60 + + timeRemainingEl.innerHTML=`Time Remaining: ${alarmSetEl.value}` - console.log(alarmSetEl.value); + + console.log(minutes); } From 8a4ba115d877c5eefd338eee2a8012953f7f772b Mon Sep 17 00:00:00 2001 From: alexandru-pocovnicu <109530683+alexandru-pocovnicu@users.noreply.github.com> Date: Thu, 19 Mar 2026 16:56:34 +0000 Subject: [PATCH 04/30] Refactor: enhance setAlarm function to improve countdown display and logic --- Sprint-3/alarmclock/alarmclock.js | 36 ++++++++++++++++++++----------- 1 file changed, 24 insertions(+), 12 deletions(-) diff --git a/Sprint-3/alarmclock/alarmclock.js b/Sprint-3/alarmclock/alarmclock.js index 4b260f5ff..400b02628 100644 --- a/Sprint-3/alarmclock/alarmclock.js +++ b/Sprint-3/alarmclock/alarmclock.js @@ -1,18 +1,30 @@ function setAlarm() { - const alarmSetEl=document.getElementById("alarmSet") - const timeRemainingEl = document.getElementById("timeRemaining"); - -let totalSeconds=alarmSetEl.value -let seconds=totalSeconds%60 -let minutes=(totalSeconds-seconds)/60 - - - timeRemainingEl.innerHTML=`Time Remaining: ${alarmSetEl.value}` + const alarmSetEl = document.getElementById("alarmSet"); + const timeRemainingEl = document.getElementById("timeRemaining"); + let totalSeconds = +alarmSetEl.value; + let intervalId; + function updateCountDown() { + let seconds = totalSeconds % 60; + let minutes = (totalSeconds - seconds) / 60; + + let paddedSeconds = seconds.toString().padStart(2, "0"); + let paddedMinutes = minutes.toString().padStart(2, "0"); + timeRemainingEl.innerHTML = `Time Remaining: ${paddedMinutes}:${paddedSeconds}`; + alarmSetEl.value = null; + + if (totalSeconds === 0) { + playAlarm(); + clearInterval(intervalId); + return; + } + totalSeconds -= 1; + } + + updateCountDown(); + intervalId = setInterval(updateCountDown, 1000); +} - console.log(minutes); - -} // DO NOT EDIT BELOW HERE From ca62e4749bb4223909e1890076ad202862441485 Mon Sep 17 00:00:00 2001 From: alexandru-pocovnicu <109530683+alexandru-pocovnicu@users.noreply.github.com> Date: Fri, 20 Mar 2026 17:22:09 +0000 Subject: [PATCH 05/30] change background to blue when stop alarm is selected --- Sprint-3/alarmclock/alarmclock.js | 4 ++++ Sprint-3/alarmclock/style.css | 4 ++++ 2 files changed, 8 insertions(+) diff --git a/Sprint-3/alarmclock/alarmclock.js b/Sprint-3/alarmclock/alarmclock.js index 400b02628..af07382c7 100644 --- a/Sprint-3/alarmclock/alarmclock.js +++ b/Sprint-3/alarmclock/alarmclock.js @@ -13,8 +13,11 @@ function setAlarm() { alarmSetEl.value = null; if (totalSeconds === 0) { + document.body.classList.add("finish-countdown") + playAlarm(); clearInterval(intervalId); + return; } totalSeconds -= 1; @@ -37,6 +40,7 @@ function setup() { document.getElementById("stop").addEventListener("click", () => { pauseAlarm(); + document.body.classList.remove("finish-countdown"); }); } diff --git a/Sprint-3/alarmclock/style.css b/Sprint-3/alarmclock/style.css index 0c72de38b..70759381a 100644 --- a/Sprint-3/alarmclock/style.css +++ b/Sprint-3/alarmclock/style.css @@ -13,3 +13,7 @@ h1 { text-align: center; } + +.finish-countdown { +background-color: darkblue; +} From 08fbcbd7a2aeca65ab95f24b1a7a39ed9f3b9fdb Mon Sep 17 00:00:00 2001 From: alexandru-pocovnicu <109530683+alexandru-pocovnicu@users.noreply.github.com> Date: Fri, 20 Mar 2026 17:32:21 +0000 Subject: [PATCH 06/30] alternate background color --- Sprint-3/alarmclock/readme.md | 2 +- Sprint-3/alarmclock/style.css | 11 ++++++++++- 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/Sprint-3/alarmclock/readme.md b/Sprint-3/alarmclock/readme.md index c00a20c9c..3ff659297 100644 --- a/Sprint-3/alarmclock/readme.md +++ b/Sprint-3/alarmclock/readme.md @@ -6,7 +6,7 @@ First off, once you've branched off `main`, then update the title element in `in You will need to write your implementation in `alarmclock.js`. ## How the clock should work - + When you click the `Set Alarm` button the counter at the top of the screen should change to the number you entered in the `input` field. For example, if the `input` field says `10` then the title should say `Time Remaining: 00:10`. Every one second the title should count down by one. diff --git a/Sprint-3/alarmclock/style.css b/Sprint-3/alarmclock/style.css index 70759381a..6e5bc4424 100644 --- a/Sprint-3/alarmclock/style.css +++ b/Sprint-3/alarmclock/style.css @@ -15,5 +15,14 @@ h1 { } .finish-countdown { -background-color: darkblue; +animation: police 0.5s infinite; +} + +@keyframes police { + from{ + background-color:blue; + } + to{ + background-color: red; + } } From aa8df3bf65e5cc9f8293a1a8261b39d9644acb64 Mon Sep 17 00:00:00 2001 From: alexandru-pocovnicu <109530683+alexandru-pocovnicu@users.noreply.github.com> Date: Fri, 20 Mar 2026 17:41:18 +0000 Subject: [PATCH 07/30] deleted code for remove class --- 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 af07382c7..64a6feac9 100644 --- a/Sprint-3/alarmclock/alarmclock.js +++ b/Sprint-3/alarmclock/alarmclock.js @@ -40,7 +40,6 @@ function setup() { document.getElementById("stop").addEventListener("click", () => { pauseAlarm(); - document.body.classList.remove("finish-countdown"); }); } From 950cd4aa0a004bb80ded55ca9af932f3b6980341 Mon Sep 17 00:00:00 2001 From: alexandru-pocovnicu <109530683+alexandru-pocovnicu@users.noreply.github.com> Date: Thu, 2 Apr 2026 16:48:54 +0100 Subject: [PATCH 08/30] added return when the input is 0, so timer doesn't start --- Sprint-3/alarmclock/alarmclock.js | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/Sprint-3/alarmclock/alarmclock.js b/Sprint-3/alarmclock/alarmclock.js index 64a6feac9..306163920 100644 --- a/Sprint-3/alarmclock/alarmclock.js +++ b/Sprint-3/alarmclock/alarmclock.js @@ -2,6 +2,10 @@ function setAlarm() { const alarmSetEl = document.getElementById("alarmSet"); const timeRemainingEl = document.getElementById("timeRemaining"); let totalSeconds = +alarmSetEl.value; + if (totalSeconds === 0) { + alarmSetEl.value = null; + return; + } let intervalId; function updateCountDown() { let seconds = totalSeconds % 60; @@ -13,11 +17,11 @@ function setAlarm() { alarmSetEl.value = null; if (totalSeconds === 0) { - document.body.classList.add("finish-countdown") - + document.body.classList.add("finish-countdown"); + playAlarm(); clearInterval(intervalId); - + return; } totalSeconds -= 1; @@ -27,8 +31,6 @@ function setAlarm() { intervalId = setInterval(updateCountDown, 1000); } - - // DO NOT EDIT BELOW HERE var audio = new Audio("alarmsound.mp3"); From 4aafd505685f9400de885b06beafb5428efdc7c9 Mon Sep 17 00:00:00 2001 From: alexandru-pocovnicu <109530683+alexandru-pocovnicu@users.noreply.github.com> Date: Fri, 3 Apr 2026 09:35:00 +0100 Subject: [PATCH 09/30] added function to clean the initial state --- Sprint-3/alarmclock/alarmclock.js | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/Sprint-3/alarmclock/alarmclock.js b/Sprint-3/alarmclock/alarmclock.js index 306163920..58846b1e1 100644 --- a/Sprint-3/alarmclock/alarmclock.js +++ b/Sprint-3/alarmclock/alarmclock.js @@ -1,3 +1,4 @@ +let intervalId; function setAlarm() { const alarmSetEl = document.getElementById("alarmSet"); const timeRemainingEl = document.getElementById("timeRemaining"); @@ -6,7 +7,8 @@ function setAlarm() { alarmSetEl.value = null; return; } - let intervalId; + cleanInitialState(); + function updateCountDown() { let seconds = totalSeconds % 60; let minutes = (totalSeconds - seconds) / 60; @@ -31,6 +33,14 @@ function setAlarm() { intervalId = setInterval(updateCountDown, 1000); } +function cleanInitialState() { + clearInterval(intervalId); + document.body.classList.remove("finish-countdown"); + document.getElementById("timeRemaining").innerHTML = "Time Remaining: 00:00"; + document.getElementById("alarmSet").value = null; + pauseAlarm(); +} + // DO NOT EDIT BELOW HERE var audio = new Audio("alarmsound.mp3"); From dc665e594887bdbcfb3016a27cd051f07fc25f3e Mon Sep 17 00:00:00 2001 From: alexandru-pocovnicu <109530683+alexandru-pocovnicu@users.noreply.github.com> Date: Fri, 3 Apr 2026 09:39:10 +0100 Subject: [PATCH 10/30] add checks for valid input --- 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 58846b1e1..7315f3623 100644 --- a/Sprint-3/alarmclock/alarmclock.js +++ b/Sprint-3/alarmclock/alarmclock.js @@ -3,7 +3,11 @@ function setAlarm() { const alarmSetEl = document.getElementById("alarmSet"); const timeRemainingEl = document.getElementById("timeRemaining"); let totalSeconds = +alarmSetEl.value; - if (totalSeconds === 0) { + if ( + totalSeconds <= 0 || + isNaN(totalSeconds) || + !Number.isInteger(totalSeconds) + ) { alarmSetEl.value = null; return; } From b81719d42406b1fb5c59732a3d678e6ed7d3e1b8 Mon Sep 17 00:00:00 2001 From: alexandru-pocovnicu <109530683+alexandru-pocovnicu@users.noreply.github.com> Date: Sat, 4 Apr 2026 14:17:59 +0100 Subject: [PATCH 11/30] create pause button, --- Sprint-3/alarmclock/alarmclock.js | 13 ++++++++++++- Sprint-3/alarmclock/index.html | 1 + 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/Sprint-3/alarmclock/alarmclock.js b/Sprint-3/alarmclock/alarmclock.js index 7315f3623..bf1d31d49 100644 --- a/Sprint-3/alarmclock/alarmclock.js +++ b/Sprint-3/alarmclock/alarmclock.js @@ -1,7 +1,13 @@ let intervalId; function setAlarm() { + const pauseButton = document.getElementById("pause-button"); + pauseButton.removeAttribute("id"); + pauseButton.classList.add("unpause-alarm"); + pauseButton.addEventListener("click", pauseCountDown); + const alarmSetEl = document.getElementById("alarmSet"); const timeRemainingEl = document.getElementById("timeRemaining"); + let totalSeconds = +alarmSetEl.value; if ( totalSeconds <= 0 || @@ -22,7 +28,7 @@ function setAlarm() { timeRemainingEl.innerHTML = `Time Remaining: ${paddedMinutes}:${paddedSeconds}`; alarmSetEl.value = null; - if (totalSeconds === 0) { + if (totalSeconds <= 0) { document.body.classList.add("finish-countdown"); playAlarm(); @@ -30,6 +36,7 @@ function setAlarm() { return; } + console.log(totalSeconds); totalSeconds -= 1; } @@ -37,6 +44,10 @@ function setAlarm() { intervalId = setInterval(updateCountDown, 1000); } +function pauseCountDown() { + clearInterval(intervalId); +} + function cleanInitialState() { clearInterval(intervalId); document.body.classList.remove("finish-countdown"); diff --git a/Sprint-3/alarmclock/index.html b/Sprint-3/alarmclock/index.html index ff2d3b453..15f18b5e5 100644 --- a/Sprint-3/alarmclock/index.html +++ b/Sprint-3/alarmclock/index.html @@ -14,6 +14,7 @@

Time Remaining: 00:00

+
From 83549266d4fda915bb62c05236cb0136ae1fe289 Mon Sep 17 00:00:00 2001 From: alexandru-pocovnicu <109530683+alexandru-pocovnicu@users.noreply.github.com> Date: Sat, 4 Apr 2026 14:18:13 +0100 Subject: [PATCH 12/30] refactor CSS for consistency and clarity --- Sprint-3/alarmclock/style.css | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/Sprint-3/alarmclock/style.css b/Sprint-3/alarmclock/style.css index 6e5bc4424..b1d66b250 100644 --- a/Sprint-3/alarmclock/style.css +++ b/Sprint-3/alarmclock/style.css @@ -15,14 +15,22 @@ h1 { } .finish-countdown { -animation: police 0.5s infinite; + animation: police 0.5s infinite; } @keyframes police { - from{ - background-color:blue; + from { + background-color: blue; } - to{ + to { background-color: red; } } + +#pause-button { + visibility: hidden; +} + +.unpause-alarm{ + +} From 063a0fa323685fbfa5e95e7dbabdd662cf45e0fc Mon Sep 17 00:00:00 2001 From: alexandru-pocovnicu <109530683+alexandru-pocovnicu@users.noreply.github.com> Date: Mon, 6 Apr 2026 11:13:51 +0100 Subject: [PATCH 13/30] addresse reviewer's changes --- Sprint-3/alarmclock/alarmclock.js | 51 +++++++++++++++++++++++++------ 1 file changed, 41 insertions(+), 10 deletions(-) diff --git a/Sprint-3/alarmclock/alarmclock.js b/Sprint-3/alarmclock/alarmclock.js index bf1d31d49..0d2f200bd 100644 --- a/Sprint-3/alarmclock/alarmclock.js +++ b/Sprint-3/alarmclock/alarmclock.js @@ -1,42 +1,47 @@ let intervalId; +let isPaused; +let remainingSeconds = 0; function setAlarm() { + isPaused = false; const pauseButton = document.getElementById("pause-button"); - pauseButton.removeAttribute("id"); - pauseButton.classList.add("unpause-alarm"); - pauseButton.addEventListener("click", pauseCountDown); + if (pauseButton) { + pauseButton.removeAttribute("id"); + pauseButton.classList.add("unpause-alarm"); + pauseButton.addEventListener("click", pauseCountDown); + } const alarmSetEl = document.getElementById("alarmSet"); const timeRemainingEl = document.getElementById("timeRemaining"); - let totalSeconds = +alarmSetEl.value; + remainingSeconds = totalSeconds; + if ( totalSeconds <= 0 || isNaN(totalSeconds) || !Number.isInteger(totalSeconds) ) { - alarmSetEl.value = null; + alarmSetEl.value = ""; return; } cleanInitialState(); function updateCountDown() { + remainingSeconds = totalSeconds; let seconds = totalSeconds % 60; let minutes = (totalSeconds - seconds) / 60; let paddedSeconds = seconds.toString().padStart(2, "0"); let paddedMinutes = minutes.toString().padStart(2, "0"); timeRemainingEl.innerHTML = `Time Remaining: ${paddedMinutes}:${paddedSeconds}`; - alarmSetEl.value = null; if (totalSeconds <= 0) { document.body.classList.add("finish-countdown"); playAlarm(); clearInterval(intervalId); - return; } - console.log(totalSeconds); + totalSeconds -= 1; } @@ -44,8 +49,34 @@ function setAlarm() { intervalId = setInterval(updateCountDown, 1000); } -function pauseCountDown() { - clearInterval(intervalId); +function pauseCountDown(e) { + if (isPaused === false) { + clearInterval(intervalId); + e.target.textContent = "unpause"; + isPaused = true; + } else { + e.target.textContent = "Pause"; + isPaused = false; + intervalId = setInterval(() => { + if (remainingSeconds <= 0) { + clearInterval(intervalId); + return; + } + remainingSeconds -= 1; + const seconds = remainingSeconds % 60; + const minutes = (remainingSeconds - seconds) / 60; + const paddedSeconds = seconds.toString().padStart(2, "0"); + const paddedMinutes = minutes.toString().padStart(2, "0"); + document.getElementById("timeRemaining").innerHTML = + `Time Remaining: ${paddedMinutes}:${paddedSeconds}`; + + if (remainingSeconds <= 0) { + document.body.classList.add("finish-countdown"); + playAlarm(); + clearInterval(intervalId); + } + }, 1000); + } } function cleanInitialState() { From 5d64c667250f7105cca6dc5b5b55ddc4d32c2950 Mon Sep 17 00:00:00 2001 From: alexandru-pocovnicu <109530683+alexandru-pocovnicu@users.noreply.github.com> Date: Mon, 6 Apr 2026 18:35:02 +0100 Subject: [PATCH 14/30] delete redundant 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 0d2f200bd..5f3794ba9 100644 --- a/Sprint-3/alarmclock/alarmclock.js +++ b/Sprint-3/alarmclock/alarmclock.js @@ -26,7 +26,6 @@ function setAlarm() { cleanInitialState(); function updateCountDown() { - remainingSeconds = totalSeconds; let seconds = totalSeconds % 60; let minutes = (totalSeconds - seconds) / 60; From c84e2a981585e6b903074221be5e3f7340803531 Mon Sep 17 00:00:00 2001 From: alexandru-pocovnicu <109530683+alexandru-pocovnicu@users.noreply.github.com> Date: Mon, 6 Apr 2026 18:54:08 +0100 Subject: [PATCH 15/30] created function to update display --- Sprint-3/alarmclock/alarmclock.js | 25 +++++++++++++------------ 1 file changed, 13 insertions(+), 12 deletions(-) diff --git a/Sprint-3/alarmclock/alarmclock.js b/Sprint-3/alarmclock/alarmclock.js index 5f3794ba9..ba510300d 100644 --- a/Sprint-3/alarmclock/alarmclock.js +++ b/Sprint-3/alarmclock/alarmclock.js @@ -26,12 +26,8 @@ function setAlarm() { cleanInitialState(); function updateCountDown() { - let seconds = totalSeconds % 60; - let minutes = (totalSeconds - seconds) / 60; - - let paddedSeconds = seconds.toString().padStart(2, "0"); - let paddedMinutes = minutes.toString().padStart(2, "0"); - timeRemainingEl.innerHTML = `Time Remaining: ${paddedMinutes}:${paddedSeconds}`; + remainingSeconds = totalSeconds; + updateDisplayedTime(remainingSeconds); if (totalSeconds <= 0) { document.body.classList.add("finish-countdown"); @@ -62,12 +58,7 @@ function pauseCountDown(e) { return; } remainingSeconds -= 1; - const seconds = remainingSeconds % 60; - const minutes = (remainingSeconds - seconds) / 60; - const paddedSeconds = seconds.toString().padStart(2, "0"); - const paddedMinutes = minutes.toString().padStart(2, "0"); - document.getElementById("timeRemaining").innerHTML = - `Time Remaining: ${paddedMinutes}:${paddedSeconds}`; + updateDisplayedTime(remainingSeconds); if (remainingSeconds <= 0) { document.body.classList.add("finish-countdown"); @@ -86,6 +77,16 @@ function cleanInitialState() { pauseAlarm(); } +function updateDisplayedTime(totalSeconds) { + let seconds = totalSeconds % 60; + let minutes = (totalSeconds - seconds) / 60; + + let paddedSeconds = seconds.toString().padStart(2, "0"); + let paddedMinutes = minutes.toString().padStart(2, "0"); + document.getElementById("timeRemaining").innerHTML = + `Time Remaining: ${paddedMinutes}:${paddedSeconds}`; +} + // DO NOT EDIT BELOW HERE var audio = new Audio("alarmsound.mp3"); From 894313e2f8547effaf30a578684eda0ea26aef2c Mon Sep 17 00:00:00 2001 From: alexandru-pocovnicu <109530683+alexandru-pocovnicu@users.noreply.github.com> Date: Mon, 6 Apr 2026 19:12:56 +0100 Subject: [PATCH 16/30] move countdown logic to finishCountDown() --- Sprint-3/alarmclock/alarmclock.js | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/Sprint-3/alarmclock/alarmclock.js b/Sprint-3/alarmclock/alarmclock.js index ba510300d..192ddc754 100644 --- a/Sprint-3/alarmclock/alarmclock.js +++ b/Sprint-3/alarmclock/alarmclock.js @@ -30,10 +30,7 @@ function setAlarm() { updateDisplayedTime(remainingSeconds); if (totalSeconds <= 0) { - document.body.classList.add("finish-countdown"); - - playAlarm(); - clearInterval(intervalId); + finishCountDown(); return; } @@ -61,9 +58,7 @@ function pauseCountDown(e) { updateDisplayedTime(remainingSeconds); if (remainingSeconds <= 0) { - document.body.classList.add("finish-countdown"); - playAlarm(); - clearInterval(intervalId); + finishCountDown(); } }, 1000); } @@ -87,6 +82,12 @@ function updateDisplayedTime(totalSeconds) { `Time Remaining: ${paddedMinutes}:${paddedSeconds}`; } +function finishCountDown() { + document.body.classList.add("finish-countdown"); + playAlarm(); + clearInterval(intervalId); +} + // DO NOT EDIT BELOW HERE var audio = new Audio("alarmsound.mp3"); From 3b6db499b6a680a4a0a61c61034fc7a2c994a62a Mon Sep 17 00:00:00 2001 From: alexandru-pocovnicu <109530683+alexandru-pocovnicu@users.noreply.github.com> Date: Mon, 6 Apr 2026 19:19:40 +0100 Subject: [PATCH 17/30] remove unused pause button styles and empty unpause-alarm class --- Sprint-3/alarmclock/style.css | 6 ------ 1 file changed, 6 deletions(-) diff --git a/Sprint-3/alarmclock/style.css b/Sprint-3/alarmclock/style.css index b1d66b250..3482c0e2f 100644 --- a/Sprint-3/alarmclock/style.css +++ b/Sprint-3/alarmclock/style.css @@ -27,10 +27,4 @@ h1 { } } -#pause-button { - visibility: hidden; -} -.unpause-alarm{ - -} From 11d74748cc41516d27fce417ac4488581a6731e6 Mon Sep 17 00:00:00 2001 From: alexandru-pocovnicu <109530683+alexandru-pocovnicu@users.noreply.github.com> Date: Mon, 6 Apr 2026 19:20:49 +0100 Subject: [PATCH 18/30] capitalize unpause button text in pauseCountDown function --- Sprint-3/alarmclock/alarmclock.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Sprint-3/alarmclock/alarmclock.js b/Sprint-3/alarmclock/alarmclock.js index 192ddc754..4724c20cb 100644 --- a/Sprint-3/alarmclock/alarmclock.js +++ b/Sprint-3/alarmclock/alarmclock.js @@ -44,7 +44,7 @@ function setAlarm() { function pauseCountDown(e) { if (isPaused === false) { clearInterval(intervalId); - e.target.textContent = "unpause"; + e.target.textContent = "Unpause"; isPaused = true; } else { e.target.textContent = "Pause"; From 5209ca94dd888c1f7635b455fce6fbe143e1abb5 Mon Sep 17 00:00:00 2001 From: alexandru-pocovnicu <109530683+alexandru-pocovnicu@users.noreply.github.com> Date: Mon, 6 Apr 2026 19:25:16 +0100 Subject: [PATCH 19/30] remove class --- 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 4724c20cb..15a96c091 100644 --- a/Sprint-3/alarmclock/alarmclock.js +++ b/Sprint-3/alarmclock/alarmclock.js @@ -6,7 +6,6 @@ function setAlarm() { const pauseButton = document.getElementById("pause-button"); if (pauseButton) { pauseButton.removeAttribute("id"); - pauseButton.classList.add("unpause-alarm"); pauseButton.addEventListener("click", pauseCountDown); } From 4251c1890cf3fd625ef99a68e69aa917c411e9da Mon Sep 17 00:00:00 2001 From: alexandru-pocovnicu <109530683+alexandru-pocovnicu@users.noreply.github.com> Date: Mon, 6 Apr 2026 19:31:58 +0100 Subject: [PATCH 20/30] remove id attribute from pause button in setAlarm function --- 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 15a96c091..81dc9b999 100644 --- a/Sprint-3/alarmclock/alarmclock.js +++ b/Sprint-3/alarmclock/alarmclock.js @@ -5,7 +5,6 @@ function setAlarm() { isPaused = false; const pauseButton = document.getElementById("pause-button"); if (pauseButton) { - pauseButton.removeAttribute("id"); pauseButton.addEventListener("click", pauseCountDown); } From a65ca54bf44ae1f08af9549be1d46c301cc66e6e Mon Sep 17 00:00:00 2001 From: alexandru-pocovnicu <109530683+alexandru-pocovnicu@users.noreply.github.com> Date: Mon, 6 Apr 2026 19:43:27 +0100 Subject: [PATCH 21/30] set pause button text and ensure event listener is added in setAlarm function --- Sprint-3/alarmclock/alarmclock.js | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/Sprint-3/alarmclock/alarmclock.js b/Sprint-3/alarmclock/alarmclock.js index 81dc9b999..dee2d4767 100644 --- a/Sprint-3/alarmclock/alarmclock.js +++ b/Sprint-3/alarmclock/alarmclock.js @@ -4,9 +4,8 @@ let remainingSeconds = 0; function setAlarm() { isPaused = false; const pauseButton = document.getElementById("pause-button"); - if (pauseButton) { + pauseButton.textContent = "Pause"; pauseButton.addEventListener("click", pauseCountDown); - } const alarmSetEl = document.getElementById("alarmSet"); const timeRemainingEl = document.getElementById("timeRemaining"); From 6d09014d6aab53f407da71ac332c63bff3281ade Mon Sep 17 00:00:00 2001 From: alexandru-pocovnicu <109530683+alexandru-pocovnicu@users.noreply.github.com> Date: Thu, 9 Apr 2026 10:19:52 +0100 Subject: [PATCH 22/30] use display time logic instead of hard coding it --- Sprint-3/alarmclock/alarmclock.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Sprint-3/alarmclock/alarmclock.js b/Sprint-3/alarmclock/alarmclock.js index dee2d4767..c471ae9a4 100644 --- a/Sprint-3/alarmclock/alarmclock.js +++ b/Sprint-3/alarmclock/alarmclock.js @@ -64,7 +64,7 @@ function pauseCountDown(e) { function cleanInitialState() { clearInterval(intervalId); document.body.classList.remove("finish-countdown"); - document.getElementById("timeRemaining").innerHTML = "Time Remaining: 00:00"; + updateDisplayedTime(0)//document.getElementById("timeRemaining").innerHTML = "Time Remaining: 00:00"; document.getElementById("alarmSet").value = null; pauseAlarm(); } From 6799a86aba616241dad82c6ce4727b54ff9d0a1c Mon Sep 17 00:00:00 2001 From: alexandru-pocovnicu <109530683+alexandru-pocovnicu@users.noreply.github.com> Date: Thu, 9 Apr 2026 10:20:15 +0100 Subject: [PATCH 23/30] refactor cleanInitialState to use updateDisplayedTime for resetting display --- Sprint-3/alarmclock/alarmclock.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Sprint-3/alarmclock/alarmclock.js b/Sprint-3/alarmclock/alarmclock.js index c471ae9a4..82277f2fc 100644 --- a/Sprint-3/alarmclock/alarmclock.js +++ b/Sprint-3/alarmclock/alarmclock.js @@ -64,7 +64,7 @@ function pauseCountDown(e) { function cleanInitialState() { clearInterval(intervalId); document.body.classList.remove("finish-countdown"); - updateDisplayedTime(0)//document.getElementById("timeRemaining").innerHTML = "Time Remaining: 00:00"; + updateDisplayedTime(0) document.getElementById("alarmSet").value = null; pauseAlarm(); } From fbb165fa164d4b085b4272ed91d7e763a4271816 Mon Sep 17 00:00:00 2001 From: alexandru-pocovnicu <109530683+alexandru-pocovnicu@users.noreply.github.com> Date: Thu, 9 Apr 2026 14:37:42 +0100 Subject: [PATCH 24/30] initialize isPaused in cleanInitialState function --- Sprint-3/alarmclock/alarmclock.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Sprint-3/alarmclock/alarmclock.js b/Sprint-3/alarmclock/alarmclock.js index 82277f2fc..c58c6ac39 100644 --- a/Sprint-3/alarmclock/alarmclock.js +++ b/Sprint-3/alarmclock/alarmclock.js @@ -2,7 +2,7 @@ let intervalId; let isPaused; let remainingSeconds = 0; function setAlarm() { - isPaused = false; + const pauseButton = document.getElementById("pause-button"); pauseButton.textContent = "Pause"; pauseButton.addEventListener("click", pauseCountDown); @@ -62,6 +62,7 @@ function pauseCountDown(e) { } function cleanInitialState() { + isPaused = false; clearInterval(intervalId); document.body.classList.remove("finish-countdown"); updateDisplayedTime(0) From 74c4c23b9e2306bf4b85d1c63d9070366f5cdca9 Mon Sep 17 00:00:00 2001 From: alexandru-pocovnicu <109530683+alexandru-pocovnicu@users.noreply.github.com> Date: Thu, 9 Apr 2026 14:44:26 +0100 Subject: [PATCH 25/30] remove event listener for pause button before adding a new one in setAlarm function --- Sprint-3/alarmclock/alarmclock.js | 1 + 1 file changed, 1 insertion(+) diff --git a/Sprint-3/alarmclock/alarmclock.js b/Sprint-3/alarmclock/alarmclock.js index c58c6ac39..de0506cd3 100644 --- a/Sprint-3/alarmclock/alarmclock.js +++ b/Sprint-3/alarmclock/alarmclock.js @@ -5,6 +5,7 @@ function setAlarm() { const pauseButton = document.getElementById("pause-button"); pauseButton.textContent = "Pause"; + pauseButton.removeEventListener("click",pauseCountDown) pauseButton.addEventListener("click", pauseCountDown); const alarmSetEl = document.getElementById("alarmSet"); From 35c4a7c627261b05ccc5dd6cbadfec1078794b79 Mon Sep 17 00:00:00 2001 From: alexandru-pocovnicu <109530683+alexandru-pocovnicu@users.noreply.github.com> Date: Sun, 12 Apr 2026 21:33:17 +0100 Subject: [PATCH 26/30] remove redundant assignment of remainingSeconds in setAlarm function --- 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 de0506cd3..8086e96f9 100644 --- a/Sprint-3/alarmclock/alarmclock.js +++ b/Sprint-3/alarmclock/alarmclock.js @@ -11,7 +11,6 @@ function setAlarm() { const alarmSetEl = document.getElementById("alarmSet"); const timeRemainingEl = document.getElementById("timeRemaining"); let totalSeconds = +alarmSetEl.value; - remainingSeconds = totalSeconds; if ( totalSeconds <= 0 || From 5e723c2c1ad51f596d09f08c44b8745d71541094 Mon Sep 17 00:00:00 2001 From: alexandru-pocovnicu <109530683+alexandru-pocovnicu@users.noreply.github.com> Date: Mon, 13 Apr 2026 09:51:34 +0100 Subject: [PATCH 27/30] move pause button listener to window load --- Sprint-3/alarmclock/alarmclock.js | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/Sprint-3/alarmclock/alarmclock.js b/Sprint-3/alarmclock/alarmclock.js index 8086e96f9..72ae0eff0 100644 --- a/Sprint-3/alarmclock/alarmclock.js +++ b/Sprint-3/alarmclock/alarmclock.js @@ -2,11 +2,9 @@ let intervalId; let isPaused; let remainingSeconds = 0; function setAlarm() { - - const pauseButton = document.getElementById("pause-button"); - pauseButton.textContent = "Pause"; - pauseButton.removeEventListener("click",pauseCountDown) - pauseButton.addEventListener("click", pauseCountDown); + // const pauseButton = document.getElementById("pause-button"); + // pauseButton.textContent = "Pause"; + // pauseButton.addEventListener("click", pauseCountDown); const alarmSetEl = document.getElementById("alarmSet"); const timeRemainingEl = document.getElementById("timeRemaining"); @@ -63,9 +61,11 @@ function pauseCountDown(e) { function cleanInitialState() { isPaused = false; + const pauseButton = document.getElementById("pause-button"); + pauseButton.textContent = "Pause"; clearInterval(intervalId); document.body.classList.remove("finish-countdown"); - updateDisplayedTime(0) + updateDisplayedTime(0); document.getElementById("alarmSet").value = null; pauseAlarm(); } @@ -86,6 +86,11 @@ function finishCountDown() { clearInterval(intervalId); } +window.addEventListener("load", function () { + const pauseButton = document.getElementById("pause-button"); + pauseButton.addEventListener("click", pauseCountDown); +}); + // DO NOT EDIT BELOW HERE var audio = new Audio("alarmsound.mp3"); From 4de7371bdb39bc04121598d0296592ec19fa7dc2 Mon Sep 17 00:00:00 2001 From: alexandru-pocovnicu <109530683+alexandru-pocovnicu@users.noreply.github.com> Date: Mon, 13 Apr 2026 09:54:00 +0100 Subject: [PATCH 28/30] set alarm input value to an empty string in cleanInitialState function --- Sprint-3/alarmclock/alarmclock.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Sprint-3/alarmclock/alarmclock.js b/Sprint-3/alarmclock/alarmclock.js index 72ae0eff0..2b102bd93 100644 --- a/Sprint-3/alarmclock/alarmclock.js +++ b/Sprint-3/alarmclock/alarmclock.js @@ -66,7 +66,7 @@ function cleanInitialState() { clearInterval(intervalId); document.body.classList.remove("finish-countdown"); updateDisplayedTime(0); - document.getElementById("alarmSet").value = null; + document.getElementById("alarmSet").value = ""; pauseAlarm(); } From 9ebd6736bae47def7073f0a116d26fed41da608c Mon Sep 17 00:00:00 2001 From: alexandru-pocovnicu <109530683+alexandru-pocovnicu@users.noreply.github.com> Date: Mon, 13 Apr 2026 10:00:23 +0100 Subject: [PATCH 29/30] remove commented-out code for pause button in setAlarm function --- Sprint-3/alarmclock/alarmclock.js | 3 --- 1 file changed, 3 deletions(-) diff --git a/Sprint-3/alarmclock/alarmclock.js b/Sprint-3/alarmclock/alarmclock.js index 2b102bd93..6868339aa 100644 --- a/Sprint-3/alarmclock/alarmclock.js +++ b/Sprint-3/alarmclock/alarmclock.js @@ -2,9 +2,6 @@ let intervalId; let isPaused; let remainingSeconds = 0; function setAlarm() { - // const pauseButton = document.getElementById("pause-button"); - // pauseButton.textContent = "Pause"; - // pauseButton.addEventListener("click", pauseCountDown); const alarmSetEl = document.getElementById("alarmSet"); const timeRemainingEl = document.getElementById("timeRemaining"); From 8c2604306621950e89de34f42bfa7fa51cc5ec98 Mon Sep 17 00:00:00 2001 From: alexandru-pocovnicu <109530683+alexandru-pocovnicu@users.noreply.github.com> Date: Mon, 13 Apr 2026 10:27:06 +0100 Subject: [PATCH 30/30] remove unused variable declaration for timeRemaining element in setAlarm function --- Sprint-3/alarmclock/alarmclock.js | 2 -- 1 file changed, 2 deletions(-) diff --git a/Sprint-3/alarmclock/alarmclock.js b/Sprint-3/alarmclock/alarmclock.js index 6868339aa..baa823f5e 100644 --- a/Sprint-3/alarmclock/alarmclock.js +++ b/Sprint-3/alarmclock/alarmclock.js @@ -2,9 +2,7 @@ let intervalId; let isPaused; let remainingSeconds = 0; function setAlarm() { - const alarmSetEl = document.getElementById("alarmSet"); - const timeRemainingEl = document.getElementById("timeRemaining"); let totalSeconds = +alarmSetEl.value; if (