From f67ae434345062aed8b9ca4d1644991f0d3f39f5 Mon Sep 17 00:00:00 2001 From: Jak R-S <176810031+jakr-s@users.noreply.github.com> Date: Mon, 8 Dec 2025 14:10:39 +0000 Subject: [PATCH 1/3] feat: implement setAlarm function and update HTML --- Sprint-3/alarmclock/alarmclock.js | 27 ++++++++++++++++++++++++++- Sprint-3/alarmclock/index.html | 7 ++++--- 2 files changed, 30 insertions(+), 4 deletions(-) diff --git a/Sprint-3/alarmclock/alarmclock.js b/Sprint-3/alarmclock/alarmclock.js index 6ca81cd3b..9da4f99cd 100644 --- a/Sprint-3/alarmclock/alarmclock.js +++ b/Sprint-3/alarmclock/alarmclock.js @@ -1,4 +1,29 @@ -function setAlarm() {} +function setAlarm() { + const input = document.getElementById("alarmSet"); + const heading = document.getElementById("timeRemaining"); + let seconds = Number(input.value); + + function updateDisplay(remainingSeconds) { + const minutes = Math.floor(remainingSeconds / 60); + const secs = remainingSeconds % 60; + const formattedTime = `${String(minutes).padStart(2, "0")}:${String(secs).padStart(2, "0")}`; + heading.textContent = `Time Remaining: ${formattedTime}`; + } + + // Set initial display + updateDisplay(seconds); + + // Start countdown + const timerId = setInterval(() => { + seconds--; + updateDisplay(seconds); + + if (seconds <= 0) { + clearInterval(timerId); + playAlarm(); + } + }, 1000); +} // DO NOT EDIT BELOW HERE diff --git a/Sprint-3/alarmclock/index.html b/Sprint-3/alarmclock/index.html index 48e2e80d9..8b3ff248e 100644 --- a/Sprint-3/alarmclock/index.html +++ b/Sprint-3/alarmclock/index.html @@ -1,16 +1,17 @@ - + - Title here + + Alarm clock app

Time Remaining: 00:00

- + From 435d330518f9ed2e52a42f0808ddf2716986e1a3 Mon Sep 17 00:00:00 2001 From: Jak R-S <176810031+jakr-s@users.noreply.github.com> Date: Mon, 8 Dec 2025 14:19:48 +0000 Subject: [PATCH 2/3] feat: change background colour to red on alarm trigger and reset when new alarm set --- Sprint-3/alarmclock/alarmclock.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Sprint-3/alarmclock/alarmclock.js b/Sprint-3/alarmclock/alarmclock.js index 9da4f99cd..548284f71 100644 --- a/Sprint-3/alarmclock/alarmclock.js +++ b/Sprint-3/alarmclock/alarmclock.js @@ -8,6 +8,7 @@ function setAlarm() { const secs = remainingSeconds % 60; const formattedTime = `${String(minutes).padStart(2, "0")}:${String(secs).padStart(2, "0")}`; heading.textContent = `Time Remaining: ${formattedTime}`; + document.body.style.backgroundColor = ""; } // Set initial display @@ -21,6 +22,7 @@ function setAlarm() { if (seconds <= 0) { clearInterval(timerId); playAlarm(); + document.body.style.backgroundColor = "red"; } }, 1000); } From 944fea3c7f3285acbbed62c576ef8d8cc4ee8c22 Mon Sep 17 00:00:00 2001 From: Jak R-S <176810031+jakr-s@users.noreply.github.com> Date: Thu, 11 Dec 2025 13:51:02 +0000 Subject: [PATCH 3/3] feat: improve alarm functionality with input validation and timer reset --- Sprint-3/alarmclock/alarmclock.js | 23 ++++++++++++++++++++--- 1 file changed, 20 insertions(+), 3 deletions(-) diff --git a/Sprint-3/alarmclock/alarmclock.js b/Sprint-3/alarmclock/alarmclock.js index 548284f71..1adde3ff6 100644 --- a/Sprint-3/alarmclock/alarmclock.js +++ b/Sprint-3/alarmclock/alarmclock.js @@ -1,26 +1,43 @@ +let currentTimerId = null; + function setAlarm() { const input = document.getElementById("alarmSet"); const heading = document.getElementById("timeRemaining"); let seconds = Number(input.value); + // Sanitise input + if (!Number.isInteger(seconds) || seconds <= 0) { + alert("Please enter a positive whole number"); + return; + } + + // Reset before starting new countdown + if (currentTimerId !== null) { + clearInterval(currentTimerId); + } + + pauseAlarm(); + + document.body.style.backgroundColor = ""; + function updateDisplay(remainingSeconds) { const minutes = Math.floor(remainingSeconds / 60); const secs = remainingSeconds % 60; const formattedTime = `${String(minutes).padStart(2, "0")}:${String(secs).padStart(2, "0")}`; heading.textContent = `Time Remaining: ${formattedTime}`; - document.body.style.backgroundColor = ""; } // Set initial display updateDisplay(seconds); // Start countdown - const timerId = setInterval(() => { + currentTimerId = setInterval(() => { seconds--; updateDisplay(seconds); if (seconds <= 0) { - clearInterval(timerId); + clearInterval(currentTimerId); + currentTimerId = null; playAlarm(); document.body.style.backgroundColor = "red"; }