From ab0d072d991e18fa0aea9555abafc0fef4548fbd Mon Sep 17 00:00:00 2001
From: zohrehKazemianpour
<129424353+zohrehKazemianpour@users.noreply.github.com>
Date: Tue, 1 Jul 2025 15:08:05 +0100
Subject: [PATCH 1/6] update alarmclock.js
---
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..791cb2506 100644
--- a/Sprint-3/alarmclock/alarmclock.js
+++ b/Sprint-3/alarmclock/alarmclock.js
@@ -1,4 +1,31 @@
-function setAlarm() {}
+let intervalID;
+
+function setAlarm() {
+ const timeRemaining = document.getElementById("timeRemaining");
+ const input = document.getElementById("alarmSet");
+ let totalSeconds = Number(input.value);
+ let minutes = Math.floor(totalSeconds / 60);
+ let seconds = totalSeconds % 60;
+
+ timeRemaining.innerHTML = `Time Remaining ${minutes
+ .toString()
+ .padStart(2, "0")}:${seconds.toString().padStart(2, "0")}`;
+
+ intervalID = setInterval(() => {
+ --totalSeconds;
+ let minutes = Math.floor(totalSeconds / 60);
+ let seconds = totalSeconds % 60;
+
+ timeRemaining.innerHTML = `Time Remaining ${minutes
+ .toString()
+ .padStart(2, "0")}:${seconds.toString().padStart(2, "0")}`;
+
+ if (totalSeconds === 0) {
+ clearInterval(intervalID);
+ playAlarm();
+ }
+ }, 1000);
+}
// DO NOT EDIT BELOW HERE
From db54d887ac276cb0ee421e922c2ca3788e1e422a Mon Sep 17 00:00:00 2001
From: zohrehKazemianpour
<129424353+zohrehKazemianpour@users.noreply.github.com>
Date: Wed, 23 Jul 2025 08:23:54 +0100
Subject: [PATCH 2/6] update index.html
---
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 1d7fec3d56c56990b6ab4f8814fa8118b74d4b52 Mon Sep 17 00:00:00 2001
From: zohrehKazemianpour
<129424353+zohrehKazemianpour@users.noreply.github.com>
Date: Wed, 23 Jul 2025 08:37:42 +0100
Subject: [PATCH 3/6] change let to const for immutable variables
---
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 791cb2506..b522c3203 100644
--- a/Sprint-3/alarmclock/alarmclock.js
+++ b/Sprint-3/alarmclock/alarmclock.js
@@ -4,8 +4,8 @@ function setAlarm() {
const timeRemaining = document.getElementById("timeRemaining");
const input = document.getElementById("alarmSet");
let totalSeconds = Number(input.value);
- let minutes = Math.floor(totalSeconds / 60);
- let seconds = totalSeconds % 60;
+ const minutes = Math.floor(totalSeconds / 60);
+ const seconds = totalSeconds % 60;
timeRemaining.innerHTML = `Time Remaining ${minutes
.toString()
From 9144093c6c3f84bb42e2e6b86df9864370dc5fb8 Mon Sep 17 00:00:00 2001
From: zohrehKazemianpour
<129424353+zohrehKazemianpour@users.noreply.github.com>
Date: Wed, 23 Jul 2025 08:48:02 +0100
Subject: [PATCH 4/6] Refactor: Extract time display logic into reusable
function
---
Sprint-3/alarmclock/alarmclock.js | 19 ++++++++-----------
1 file changed, 8 insertions(+), 11 deletions(-)
diff --git a/Sprint-3/alarmclock/alarmclock.js b/Sprint-3/alarmclock/alarmclock.js
index b522c3203..3f57516f2 100644
--- a/Sprint-3/alarmclock/alarmclock.js
+++ b/Sprint-3/alarmclock/alarmclock.js
@@ -1,24 +1,21 @@
let intervalID;
-
-function setAlarm() {
- const timeRemaining = document.getElementById("timeRemaining");
- const input = document.getElementById("alarmSet");
- let totalSeconds = Number(input.value);
+function updateTimeDisplay() {
const minutes = Math.floor(totalSeconds / 60);
const seconds = totalSeconds % 60;
timeRemaining.innerHTML = `Time Remaining ${minutes
.toString()
.padStart(2, "0")}:${seconds.toString().padStart(2, "0")}`;
+}
+
+function setAlarm() {
+ const timeRemaining = document.getElementById("timeRemaining");
+ const input = document.getElementById("alarmSet");
+ let totalSeconds = Number(input.value);
intervalID = setInterval(() => {
--totalSeconds;
- let minutes = Math.floor(totalSeconds / 60);
- let seconds = totalSeconds % 60;
-
- timeRemaining.innerHTML = `Time Remaining ${minutes
- .toString()
- .padStart(2, "0")}:${seconds.toString().padStart(2, "0")}`;
+ updateTimeDisplay();
if (totalSeconds === 0) {
clearInterval(intervalID);
From 71ff230e5ea65fa4dbe6dfe780d5909bf3932d21 Mon Sep 17 00:00:00 2001
From: zohrehKazemianpour
<129424353+zohrehKazemianpour@users.noreply.github.com>
Date: Wed, 23 Jul 2025 09:34:15 +0100
Subject: [PATCH 5/6] fix multiple interval bug
---
Sprint-3/alarmclock/alarmclock.js | 14 +++++++++++---
1 file changed, 11 insertions(+), 3 deletions(-)
diff --git a/Sprint-3/alarmclock/alarmclock.js b/Sprint-3/alarmclock/alarmclock.js
index 3f57516f2..8435a93e2 100644
--- a/Sprint-3/alarmclock/alarmclock.js
+++ b/Sprint-3/alarmclock/alarmclock.js
@@ -1,17 +1,25 @@
let intervalID;
+let totalSeconds;
+
function updateTimeDisplay() {
const minutes = Math.floor(totalSeconds / 60);
const seconds = totalSeconds % 60;
-
+ const timeRemaining = document.getElementById("timeRemaining");
timeRemaining.innerHTML = `Time Remaining ${minutes
.toString()
.padStart(2, "0")}:${seconds.toString().padStart(2, "0")}`;
}
function setAlarm() {
- const timeRemaining = document.getElementById("timeRemaining");
const input = document.getElementById("alarmSet");
- let totalSeconds = Number(input.value);
+
+ if (intervalID) {
+ clearInterval(intervalID);
+ }
+
+ totalSeconds = Number(input.value);
+
+ updateTimeDisplay();
intervalID = setInterval(() => {
--totalSeconds;
From fc3fbeb5f2164118c7d570359e2b00403436241f Mon Sep 17 00:00:00 2001
From: zohrehKazemianpour
<129424353+zohrehKazemianpour@users.noreply.github.com>
Date: Wed, 23 Jul 2025 10:38:19 +0100
Subject: [PATCH 6/6] add input validation
---
Sprint-3/alarmclock/alarmclock.js | 15 ++++++++++++++-
1 file changed, 14 insertions(+), 1 deletion(-)
diff --git a/Sprint-3/alarmclock/alarmclock.js b/Sprint-3/alarmclock/alarmclock.js
index 8435a93e2..bfcc459ff 100644
--- a/Sprint-3/alarmclock/alarmclock.js
+++ b/Sprint-3/alarmclock/alarmclock.js
@@ -12,12 +12,24 @@ function updateTimeDisplay() {
function setAlarm() {
const input = document.getElementById("alarmSet");
+ const inputValue = input.value.trim();
+ if (inputValue === "") {
+ alert("Please enter a time value")
+ return;
+ }
+
+ const parsedValue = Number(inputValue);
+
+ if (isNaN(parsedValue) || parsedValue <= 0 || !Number.isInteger(parsedValue)) {
+ alert("Please enter a positive whole number");
+ return;
+ }
if (intervalID) {
clearInterval(intervalID);
}
- totalSeconds = Number(input.value);
+ totalSeconds = parsedValue;
updateTimeDisplay();
@@ -28,6 +40,7 @@ function setAlarm() {
if (totalSeconds === 0) {
clearInterval(intervalID);
playAlarm();
+ intervalID = null;
}
}, 1000);
}