From 9f753dad93f2cd0c1d0f86982cf1cdfa9a4b9ef7 Mon Sep 17 00:00:00 2001 From: cyf Date: Wed, 12 Aug 2026 02:32:08 +0100 Subject: [PATCH 1/5] Update page 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 3eb88fc491b3c06ebe0d48420ec739697e498ab1 Mon Sep 17 00:00:00 2001 From: cyf Date: Wed, 12 Aug 2026 02:53:23 +0100 Subject: [PATCH 2/5] Implement alarm clock countdown --- Sprint-3/alarmclock/alarmclock.js | 40 +++++++++++++++++++++++++++++-- 1 file changed, 38 insertions(+), 2 deletions(-) diff --git a/Sprint-3/alarmclock/alarmclock.js b/Sprint-3/alarmclock/alarmclock.js index 6ca81cd3b..1089326c0 100644 --- a/Sprint-3/alarmclock/alarmclock.js +++ b/Sprint-3/alarmclock/alarmclock.js @@ -1,4 +1,40 @@ -function setAlarm() {} +let timer; + +function updateDisplay(time) { + + let heading = document.getElementById("timeRemaining"); + let minutes = Math.floor(time / 60); + let seconds = time % 60; + + heading.innerText = + "Time Remaining: " + + String(minutes).padStart(2, "0") + + ":" + + String(seconds).padStart(2, "0"); +} + +function setAlarm() { + + if (timer) clearInterval(timer); + audio.pause(); + audio.currentTime = 0; + + let time = Number(document.getElementById("alarmSet").value); + if (isNaN(time) || !Number.isInteger(time) || time <= 0) return; + + updateDisplay(time); + + timer = setInterval(function () { + time = time - 1; + + updateDisplay(time); + + if (time <= 0) { + playAlarm(); + clearInterval(timer); + } + }, 1000); +} // DO NOT EDIT BELOW HERE @@ -22,4 +58,4 @@ function pauseAlarm() { audio.pause(); } -window.onload = setup; +window.onload = setup; \ No newline at end of file From 2bc64b233cce7716acde113092d8416e07d8b77b Mon Sep 17 00:00:00 2001 From: cyf Date: Wed, 12 Aug 2026 21:37:08 +0100 Subject: [PATCH 3/5] Validate alarm input before clearing timer --- 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 1089326c0..49d6f75e6 100644 --- a/Sprint-3/alarmclock/alarmclock.js +++ b/Sprint-3/alarmclock/alarmclock.js @@ -14,16 +14,15 @@ function updateDisplay(time) { } function setAlarm() { - - if (timer) clearInterval(timer); - audio.pause(); - audio.currentTime = 0; - let time = Number(document.getElementById("alarmSet").value); if (isNaN(time) || !Number.isInteger(time) || time <= 0) return; updateDisplay(time); + if (timer) clearInterval(timer); + audio.pause(); + audio.currentTime = 0; + timer = setInterval(function () { time = time - 1; From 038cbf9116a8461291d4f54546cad751cb8e1c03 Mon Sep 17 00:00:00 2001 From: cyf Date: Wed, 12 Aug 2026 21:49:48 +0100 Subject: [PATCH 4/5] Simplify alarm input validation --- 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 49d6f75e6..20d159bd2 100644 --- a/Sprint-3/alarmclock/alarmclock.js +++ b/Sprint-3/alarmclock/alarmclock.js @@ -15,7 +15,7 @@ function updateDisplay(time) { function setAlarm() { let time = Number(document.getElementById("alarmSet").value); - if (isNaN(time) || !Number.isInteger(time) || time <= 0) return; + if (!Number.isInteger(time) || time <= 0) return; updateDisplay(time); From 044d0d56a502e2dab4e621041b623655109c2916 Mon Sep 17 00:00:00 2001 From: cyf Date: Wed, 12 Aug 2026 21:56:05 +0100 Subject: [PATCH 5/5] Use const for non-reassigned variables --- Sprint-3/alarmclock/alarmclock.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Sprint-3/alarmclock/alarmclock.js b/Sprint-3/alarmclock/alarmclock.js index 20d159bd2..094781c1d 100644 --- a/Sprint-3/alarmclock/alarmclock.js +++ b/Sprint-3/alarmclock/alarmclock.js @@ -2,9 +2,9 @@ let timer; function updateDisplay(time) { - let heading = document.getElementById("timeRemaining"); - let minutes = Math.floor(time / 60); - let seconds = time % 60; + const heading = document.getElementById("timeRemaining"); + const minutes = Math.floor(time / 60); + const seconds = time % 60; heading.innerText = "Time Remaining: " +