From 6ef60024064f1cf1de04ea8edec8378632097909 Mon Sep 17 00:00:00 2001 From: eyob tech Date: Mon, 27 Jul 2026 23:27:16 +0100 Subject: [PATCH 1/3] Implement setAlarm() with countdown timer and fix template literal syntax error --- Sprint-3/alarmclock/alarmclock.js | 29 +++++++++++++++++++++++++++-- 1 file changed, 27 insertions(+), 2 deletions(-) diff --git a/Sprint-3/alarmclock/alarmclock.js b/Sprint-3/alarmclock/alarmclock.js index 6ca81cd3b..efcdc9307 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 secondsRemaining = Number(input.value); + + function updateDisplay() { + const minutes = Math.floor(secondsRemaining / 60); + const seconds = secondsRemaining % 60; + const paddedMinutes = String(minutes).padStart(2, "0"); + const paddedSeconds = String(seconds).padStart(2, "0"); + heading.innerText = `Time Remaining: ${paddedMinutes}:${paddedSeconds}`; + } + + updateDisplay(); + + const intervalId = setInterval(() => { + secondsRemaining--; + updateDisplay(); + + if (secondsRemaining <= 0) { + clearInterval(intervalId); + playAlarm(); + } + }, 1000); +} // DO NOT EDIT BELOW HERE @@ -22,4 +47,4 @@ function pauseAlarm() { audio.pause(); } -window.onload = setup; +window.onload = setup; \ No newline at end of file From f5346f4c25e148ff959678e3f48d6ce11ef66131 Mon Sep 17 00:00:00 2001 From: eyob tech Date: Thu, 30 Jul 2026 13:14:41 +0100 Subject: [PATCH 2/3] fix page title to say Alarm Clock APP --- Sprint-3/alarmclock/alarmclock.js | 5 +++++ Sprint-3/alarmclock/index.html | 2 +- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/Sprint-3/alarmclock/alarmclock.js b/Sprint-3/alarmclock/alarmclock.js index efcdc9307..694032810 100644 --- a/Sprint-3/alarmclock/alarmclock.js +++ b/Sprint-3/alarmclock/alarmclock.js @@ -4,6 +4,11 @@ function setAlarm() { let secondsRemaining = Number(input.value); +if (!secondsRemaining || secondsRemaining <= 0) { + heading.innerText = "Please enter a number of seconds greater than 0"; + return; +} + function updateDisplay() { const minutes = Math.floor(secondsRemaining / 60); const seconds = secondsRemaining % 60; diff --git a/Sprint-3/alarmclock/index.html b/Sprint-3/alarmclock/index.html index 48e2e80d9..4a91379d3 100644 --- a/Sprint-3/alarmclock/index.html +++ b/Sprint-3/alarmclock/index.html @@ -4,7 +4,7 @@ - Title here + Alarm Clock App
From 7633409301c34820d88c917179366fdff229a645 Mon Sep 17 00:00:00 2001 From: eyob tech Date: Thu, 30 Jul 2026 13:35:12 +0100 Subject: [PATCH 3/3] Clear existing interval before starting a new one on repeated clicks --- Sprint-3/alarmclock/alarmclock.js | 24 ++++++++++++++++-------- 1 file changed, 16 insertions(+), 8 deletions(-) diff --git a/Sprint-3/alarmclock/alarmclock.js b/Sprint-3/alarmclock/alarmclock.js index 694032810..4daa8f240 100644 --- a/Sprint-3/alarmclock/alarmclock.js +++ b/Sprint-3/alarmclock/alarmclock.js @@ -1,30 +1,37 @@ +let currentIntervalId = null; + function setAlarm() { const input = document.getElementById("alarmSet"); const heading = document.getElementById("timeRemaining"); let secondsRemaining = Number(input.value); -if (!secondsRemaining || secondsRemaining <= 0) { - heading.innerText = "Please enter a number of seconds greater than 0"; - return; -} + if (!secondsRemaining || secondsRemaining <= 0) { + heading.innerText = "Please enter a number of seconds greater than 0"; + return; + } function updateDisplay() { const minutes = Math.floor(secondsRemaining / 60); const seconds = secondsRemaining % 60; const paddedMinutes = String(minutes).padStart(2, "0"); const paddedSeconds = String(seconds).padStart(2, "0"); - heading.innerText = `Time Remaining: ${paddedMinutes}:${paddedSeconds}`; + heading.innerText = Time Remaining: ${paddedMinutes}:${paddedSeconds}; } updateDisplay(); - const intervalId = setInterval(() => { + if (currentIntervalId !== null) { + clearInterval(currentIntervalId); + } + + currentIntervalId = setInterval(() => { secondsRemaining--; updateDisplay(); if (secondsRemaining <= 0) { - clearInterval(intervalId); + clearInterval(currentIntervalId); + currentIntervalId = null; playAlarm(); } }, 1000); @@ -52,4 +59,5 @@ function pauseAlarm() { audio.pause(); } -window.onload = setup; \ No newline at end of file +window.onload = setup; +