From 72460a3f0885b80f669a6d63b48ac5625d8da2f8 Mon Sep 17 00:00:00 2001 From: enjoy15 Date: Sat, 22 Nov 2025 08:02:26 +0000 Subject: [PATCH 1/2] update alarm clock app --- Sprint-3/alarmclock/alarmclock.js | 43 ++++++++++++++++++++++++++++++- Sprint-3/alarmclock/index.html | 2 +- 2 files changed, 43 insertions(+), 2 deletions(-) diff --git a/Sprint-3/alarmclock/alarmclock.js b/Sprint-3/alarmclock/alarmclock.js index 6ca81cd3b..da1fb057b 100644 --- a/Sprint-3/alarmclock/alarmclock.js +++ b/Sprint-3/alarmclock/alarmclock.js @@ -1,4 +1,45 @@ -function setAlarm() {} +const heading = document.getElementById("timeRemaining"); +const input = document.getElementById("alarmSet"); +const setBtn = document.getElementById("set"); + +let remaining = 0; +let intervalId = null; + +function format(seconds) { + const m = String(Math.floor(seconds / 60)).padStart(2, "0"); + const s = String(seconds % 60).padStart(2, "0"); + return `${m}:${s}`; +} + +function updateHeading() { + heading.textContent = `Time Remaining: ${format(remaining)}`; +} + +function tick() { + if (remaining <= 0) { + clearInterval(intervalId); + intervalId = null; + updateHeading(); + if (typeof window.playAlarm === "function") { + window.playAlarm(); + } + return; + } + remaining -= 1; + updateHeading(); +} + +function setAlarm() { + const value = parseInt(input.value, 10); + if (!Number.isFinite(value) || value <= 0) return; + if (intervalId) clearInterval(intervalId); + remaining = value; + updateHeading(); + intervalId = setInterval(tick, 1000); +} + +setBtn.addEventListener("click", setAlarm); +updateHeading(); // DO NOT EDIT BELOW HERE 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 858311d11134dc7a9d3a2c146e80773d75897f90 Mon Sep 17 00:00:00 2001 From: enjoy15 Date: Sat, 22 Nov 2025 14:24:42 +0000 Subject: [PATCH 2/2] address comments in alarmclock.js --- Sprint-3/alarmclock/alarmclock.js | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/Sprint-3/alarmclock/alarmclock.js b/Sprint-3/alarmclock/alarmclock.js index da1fb057b..9f2f24c32 100644 --- a/Sprint-3/alarmclock/alarmclock.js +++ b/Sprint-3/alarmclock/alarmclock.js @@ -6,8 +6,8 @@ let remaining = 0; let intervalId = null; function format(seconds) { - const m = String(Math.floor(seconds / 60)).padStart(2, "0"); - const s = String(seconds % 60).padStart(2, "0"); + const minute = String(Math.floor(seconds / 60)).padStart(2, "0"); + const second = String(seconds % 60).padStart(2, "0"); return `${m}:${s}`; } @@ -31,6 +31,7 @@ function tick() { function setAlarm() { const value = parseInt(input.value, 10); + // Guard clause: ignore invalid or non-positive input if (!Number.isFinite(value) || value <= 0) return; if (intervalId) clearInterval(intervalId); remaining = value;