From 229a2dea419edfd1a16ca1d440e6d85995cb3ec6 Mon Sep 17 00:00:00 2001 From: Ahmad Hmedan Date: Fri, 5 Dec 2025 17:11:59 +0000 Subject: [PATCH 1/6] update the page title and write alarmclock code --- Sprint-3/alarmclock/alarmclock.js | 35 ++++++++++++++++++++++++++++++- Sprint-3/alarmclock/index.html | 2 +- 2 files changed, 35 insertions(+), 2 deletions(-) diff --git a/Sprint-3/alarmclock/alarmclock.js b/Sprint-3/alarmclock/alarmclock.js index 6ca81cd3b..15b8895bf 100644 --- a/Sprint-3/alarmclock/alarmclock.js +++ b/Sprint-3/alarmclock/alarmclock.js @@ -1,4 +1,37 @@ -function setAlarm() {} +let timerId = null; +let remainingSeconds = 0; + +function updateDisplay() { + let minutes = String(Math.floor(remainingSeconds / 60)).padStart(2, "0"); + let seconds = String(remainingSeconds % 60).padStart(2, "0"); + document.getElementById( + "timeRemaining" + ).textContent = `Time Remaining: ${minutes}:${seconds}`; +} + +function startCountdown() { + timerId = setInterval(() => { + remainingSeconds -= 1; + updateDisplay(); + if (remainingSeconds === 0) { + remainingSeconds = 0; + clearInterval(timerId); + timerId = null; + playAlarm(); + } + }, 1000); +} + +function setAlarm() { + const input = document.getElementById("alarmSet"); + const inputValue = Number(input.value); + clearInterval(timerId); + timerId = null; + remainingSeconds = inputValue; + + updateDisplay(); + startCountdown(); +} // DO NOT EDIT BELOW HERE diff --git a/Sprint-3/alarmclock/index.html b/Sprint-3/alarmclock/index.html index 48e2e80d9..9ced13b41 100644 --- a/Sprint-3/alarmclock/index.html +++ b/Sprint-3/alarmclock/index.html @@ -4,7 +4,7 @@ - Title here + Alarm clock app"
From ee63ed79395560b80c26ba54233e8e8c303f6a40 Mon Sep 17 00:00:00 2001 From: Ahmad Hmedan Date: Fri, 5 Dec 2025 17:29:03 +0000 Subject: [PATCH 2/6] clear the input field after user click set alarm --- 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 15b8895bf..28ec4864f 100644 --- a/Sprint-3/alarmclock/alarmclock.js +++ b/Sprint-3/alarmclock/alarmclock.js @@ -28,9 +28,10 @@ function setAlarm() { clearInterval(timerId); timerId = null; remainingSeconds = inputValue; - + updateDisplay(); startCountdown(); + input.value = ""; } // DO NOT EDIT BELOW HERE From b4bde21b83356aa0cdeccec805df51acb56133cb Mon Sep 17 00:00:00 2001 From: Ahmad Hmedan Date: Fri, 5 Dec 2025 17:50:33 +0000 Subject: [PATCH 3/6] handl zero input and empty input --- Sprint-3/alarmclock/alarmclock.js | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/Sprint-3/alarmclock/alarmclock.js b/Sprint-3/alarmclock/alarmclock.js index 28ec4864f..6e079d768 100644 --- a/Sprint-3/alarmclock/alarmclock.js +++ b/Sprint-3/alarmclock/alarmclock.js @@ -11,20 +11,24 @@ function updateDisplay() { function startCountdown() { timerId = setInterval(() => { - remainingSeconds -= 1; + updateDisplay(); - if (remainingSeconds === 0) { + if (remainingSeconds <= 0) { remainingSeconds = 0; clearInterval(timerId); timerId = null; playAlarm(); } + remainingSeconds -= 1; }, 1000); } function setAlarm() { const input = document.getElementById("alarmSet"); + if (input.value==="")return; const inputValue = Number(input.value); + + clearInterval(timerId); timerId = null; remainingSeconds = inputValue; From ccf9c345d21a97d10df18c6511f7d7356317ee4d Mon Sep 17 00:00:00 2001 From: Ahmad Hmedan Date: Fri, 5 Dec 2025 18:06:04 +0000 Subject: [PATCH 4/6] handle negative input --- Sprint-3/alarmclock/alarmclock.js | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/Sprint-3/alarmclock/alarmclock.js b/Sprint-3/alarmclock/alarmclock.js index 6e079d768..242621f71 100644 --- a/Sprint-3/alarmclock/alarmclock.js +++ b/Sprint-3/alarmclock/alarmclock.js @@ -10,9 +10,10 @@ function updateDisplay() { } function startCountdown() { + if (remainingSeconds < 0) remainingSeconds = 0; timerId = setInterval(() => { - updateDisplay(); + if (remainingSeconds <= 0) { remainingSeconds = 0; clearInterval(timerId); @@ -25,14 +26,12 @@ function startCountdown() { function setAlarm() { const input = document.getElementById("alarmSet"); - if (input.value==="")return; + if (input.value === "") return; const inputValue = Number(input.value); - - clearInterval(timerId); timerId = null; remainingSeconds = inputValue; - + updateDisplay(); startCountdown(); input.value = ""; From 2cd628f5a8bf7a4f6a154daef46787571fad8a6a Mon Sep 17 00:00:00 2001 From: Ahmad Hmedan Date: Sat, 6 Dec 2025 10:16:00 +0000 Subject: [PATCH 5/6] use const instead let in the updateDisplay function \n decrement the remainSecond before calling updateDisplay \n handle zero and negative-input --- Sprint-3/alarmclock/alarmclock.js | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/Sprint-3/alarmclock/alarmclock.js b/Sprint-3/alarmclock/alarmclock.js index 242621f71..59cb2e5de 100644 --- a/Sprint-3/alarmclock/alarmclock.js +++ b/Sprint-3/alarmclock/alarmclock.js @@ -2,16 +2,16 @@ let timerId = null; let remainingSeconds = 0; function updateDisplay() { - let minutes = String(Math.floor(remainingSeconds / 60)).padStart(2, "0"); - let seconds = String(remainingSeconds % 60).padStart(2, "0"); + const minutes = String(Math.floor(remainingSeconds / 60)).padStart(2, "0"); + const seconds = String(remainingSeconds % 60).padStart(2, "0"); document.getElementById( "timeRemaining" ).textContent = `Time Remaining: ${minutes}:${seconds}`; } function startCountdown() { - if (remainingSeconds < 0) remainingSeconds = 0; timerId = setInterval(() => { + remainingSeconds--; updateDisplay(); if (remainingSeconds <= 0) { @@ -20,20 +20,24 @@ function startCountdown() { timerId = null; playAlarm(); } - remainingSeconds -= 1; }, 1000); } function setAlarm() { const input = document.getElementById("alarmSet"); if (input.value === "") return; - const inputValue = Number(input.value); + remainingSeconds = Number(input.value); clearInterval(timerId); timerId = null; - remainingSeconds = inputValue; - updateDisplay(); - startCountdown(); + if (remainingSeconds <= 0) { + remainingSeconds = 0; + updateDisplay(); + playAlarm(); + } else { + updateDisplay(); + startCountdown(); + } input.value = ""; } From 61111e7d9a4900dec1e06ac29952a0bb2418eb07 Mon Sep 17 00:00:00 2001 From: Ahmad Hmedan Date: Sat, 6 Dec 2025 10:25:42 +0000 Subject: [PATCH 6/6] handle string input --- 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 59cb2e5de..839606f73 100644 --- a/Sprint-3/alarmclock/alarmclock.js +++ b/Sprint-3/alarmclock/alarmclock.js @@ -27,6 +27,7 @@ function setAlarm() { const input = document.getElementById("alarmSet"); if (input.value === "") return; remainingSeconds = Number(input.value); + if (!Number.isFinite(remainingSeconds)) return; clearInterval(timerId); timerId = null;