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); }