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 (