From 93a73e6977a7ffb69875358bfbb7663fb42b6a25 Mon Sep 17 00:00:00 2001 From: LiyemaMfengwana Date: Mon, 10 Aug 2026 18:44:10 +0200 Subject: [PATCH 01/14] change index title --- 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 0cf81a32ca5f82817e664e8ac974c26e58287502 Mon Sep 17 00:00:00 2001 From: LiyemaMfengwana Date: Mon, 10 Aug 2026 18:52:58 +0200 Subject: [PATCH 02/14] add js --- Sprint-3/alarmclock/alarmclock.js | 25 ++++++++++++++++++++++++- Sprint-3/alarmclock/index.html | 2 +- 2 files changed, 25 insertions(+), 2 deletions(-) diff --git a/Sprint-3/alarmclock/alarmclock.js b/Sprint-3/alarmclock/alarmclock.js index 6ca81cd3b..4f66668d4 100644 --- a/Sprint-3/alarmclock/alarmclock.js +++ b/Sprint-3/alarmclock/alarmclock.js @@ -1,4 +1,27 @@ -function setAlarm() {} +function setAlarm() { + let seconds = Number(document.getElementById("input").value); + + function countdown() { + let minutes = Math.floor(seconds / 60); + let remainingSeconds = seconds % 60; + + let formattedMinutes = String(minutes).padStart(2, "0"); + let formattedSeconds = String(remainingSeconds).padStart(2, "0"); + + document.getElementById("title").textContent = + `Time Remaining: ${formattedMinutes}:${formattedSeconds}`; + + if (seconds === 0) { + playAlarm(); + return; + } + + seconds--; + setTimeout(countdown, 1000); + } + + countdown(); +} // DO NOT EDIT BELOW HERE diff --git a/Sprint-3/alarmclock/index.html b/Sprint-3/alarmclock/index.html index ff2d3b453..66748001e 100644 --- a/Sprint-3/alarmclock/index.html +++ b/Sprint-3/alarmclock/index.html @@ -1,4 +1,4 @@ - + From af2f111e1a97f9d60ea0e41e7f3d4b3b4f64db23 Mon Sep 17 00:00:00 2001 From: LiyemaMfengwana Date: Mon, 10 Aug 2026 18:57:23 +0200 Subject: [PATCH 03/14] edit js --- Sprint-3/alarmclock/alarmclock.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Sprint-3/alarmclock/alarmclock.js b/Sprint-3/alarmclock/alarmclock.js index 4f66668d4..bea223946 100644 --- a/Sprint-3/alarmclock/alarmclock.js +++ b/Sprint-3/alarmclock/alarmclock.js @@ -1,5 +1,5 @@ function setAlarm() { - let seconds = Number(document.getElementById("input").value); + let seconds = Number(document.getElementById("alarmSet").value); function countdown() { let minutes = Math.floor(seconds / 60); @@ -8,7 +8,7 @@ function setAlarm() { let formattedMinutes = String(minutes).padStart(2, "0"); let formattedSeconds = String(remainingSeconds).padStart(2, "0"); - document.getElementById("title").textContent = + document.getElementById("timeRemaining").textContent = `Time Remaining: ${formattedMinutes}:${formattedSeconds}`; if (seconds === 0) { From 18dfc0763eb8199c67ac3f4a830e0076de29a662 Mon Sep 17 00:00:00 2001 From: LiyemaMfengwana Date: Sat, 15 Aug 2026 19:11:23 +0200 Subject: [PATCH 04/14] add let timer --- 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 bea223946..d021fc568 100644 --- a/Sprint-3/alarmclock/alarmclock.js +++ b/Sprint-3/alarmclock/alarmclock.js @@ -1,3 +1,5 @@ +let timer; //let here because timer will be assigned a new timeout ID each time. + function setAlarm() { let seconds = Number(document.getElementById("alarmSet").value); From b9d984c8737ab0b0147b650a36bb3ba57f6c4440 Mon Sep 17 00:00:00 2001 From: LiyemaMfengwana Date: Sat, 15 Aug 2026 19:14:43 +0200 Subject: [PATCH 05/14] change let to const --- Sprint-3/alarmclock/alarmclock.js | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/Sprint-3/alarmclock/alarmclock.js b/Sprint-3/alarmclock/alarmclock.js index d021fc568..b7a5963b8 100644 --- a/Sprint-3/alarmclock/alarmclock.js +++ b/Sprint-3/alarmclock/alarmclock.js @@ -4,11 +4,11 @@ function setAlarm() { let seconds = Number(document.getElementById("alarmSet").value); function countdown() { - let minutes = Math.floor(seconds / 60); - let remainingSeconds = seconds % 60; + const minutes = Math.floor(seconds / 60); + const remainingSeconds = seconds % 60; - let formattedMinutes = String(minutes).padStart(2, "0"); - let formattedSeconds = String(remainingSeconds).padStart(2, "0"); + const formattedMinutes = String(minutes).padStart(2, "0"); + const formattedSeconds = String(remainingSeconds).padStart(2, "0"); document.getElementById("timeRemaining").textContent = `Time Remaining: ${formattedMinutes}:${formattedSeconds}`; From 15bfe5952185319b49d662d0c4ec5c765069346c Mon Sep 17 00:00:00 2001 From: LiyemaMfengwana Date: Sat, 15 Aug 2026 19:17:54 +0200 Subject: [PATCH 06/14] change setalarm function --- Sprint-3/alarmclock/alarmclock.js | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/Sprint-3/alarmclock/alarmclock.js b/Sprint-3/alarmclock/alarmclock.js index b7a5963b8..de69522d7 100644 --- a/Sprint-3/alarmclock/alarmclock.js +++ b/Sprint-3/alarmclock/alarmclock.js @@ -1,7 +1,17 @@ let timer; //let here because timer will be assigned a new timeout ID each time. function setAlarm() { - let seconds = Number(document.getElementById("alarmSet").value); + clearTimeout(timer); // Stop the previous countdown if there is one + + const input = document.getElementById("alarmSet"); + + // Convert the input value from a string to a number + let seconds = Number(input.value); + + // Don't start the alarm if the input is empty or negative/zero + if (input.value === "" || seconds <= 0) { + return; + } function countdown() { const minutes = Math.floor(seconds / 60); From d78233b8adbb0c52e71ab43347df334385b78290 Mon Sep 17 00:00:00 2001 From: LiyemaMfengwana Date: Sat, 15 Aug 2026 19:23:31 +0200 Subject: [PATCH 07/14] Save the timer ID so we can cancel it if a new alarm is set --- 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 de69522d7..feb468455 100644 --- a/Sprint-3/alarmclock/alarmclock.js +++ b/Sprint-3/alarmclock/alarmclock.js @@ -29,7 +29,7 @@ function setAlarm() { } seconds--; - setTimeout(countdown, 1000); + timer = setTimeout(countdown, 1000); } countdown(); From cc49374e72455de36c0a54c21940387afaa3c0ba Mon Sep 17 00:00:00 2001 From: LiyemaMfengwana Date: Sat, 15 Aug 2026 19:25:46 +0200 Subject: [PATCH 08/14] comment --- 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 feb468455..4f806cc28 100644 --- a/Sprint-3/alarmclock/alarmclock.js +++ b/Sprint-3/alarmclock/alarmclock.js @@ -1,4 +1,4 @@ -let timer; //let here because timer will be assigned a new timeout ID each time. +let timer; // let because timer will be assigned a new timeout ID each time. function setAlarm() { clearTimeout(timer); // Stop the previous countdown if there is one From 3e316db20f63f3048c4de25009e709a578cba9ca Mon Sep 17 00:00:00 2001 From: LiyemaMfengwana Date: Sat, 15 Aug 2026 19:39:05 +0200 Subject: [PATCH 09/14] add type min to 1 --- Sprint-3/alarmclock/alarmclock.js | 1 + Sprint-3/alarmclock/index.html | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/Sprint-3/alarmclock/alarmclock.js b/Sprint-3/alarmclock/alarmclock.js index 4f806cc28..55648a7b4 100644 --- a/Sprint-3/alarmclock/alarmclock.js +++ b/Sprint-3/alarmclock/alarmclock.js @@ -25,6 +25,7 @@ function setAlarm() { if (seconds === 0) { playAlarm(); + input.value = ""; return; } diff --git a/Sprint-3/alarmclock/index.html b/Sprint-3/alarmclock/index.html index 66748001e..806e27f24 100644 --- a/Sprint-3/alarmclock/index.html +++ b/Sprint-3/alarmclock/index.html @@ -9,7 +9,7 @@

Time Remaining: 00:00

- + From ee991a5fb4e038833b4fc9c88f0a77a8d5b72707 Mon Sep 17 00:00:00 2001 From: LiyemaMfengwana Date: Sat, 15 Aug 2026 19:42:39 +0200 Subject: [PATCH 10/14] Prevent negative alarm input --- Sprint-3/alarmclock/alarmclock.js | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/Sprint-3/alarmclock/alarmclock.js b/Sprint-3/alarmclock/alarmclock.js index 55648a7b4..19fd03367 100644 --- a/Sprint-3/alarmclock/alarmclock.js +++ b/Sprint-3/alarmclock/alarmclock.js @@ -1,5 +1,13 @@ let timer; // let because timer will be assigned a new timeout ID each time. +const input = document.getElementById("alarmSet"); + +input.addEventListener("keydown", function (event) { + if (event.key === "-" || event.key === "e") { + event.preventDefault(); + } +}); + function setAlarm() { clearTimeout(timer); // Stop the previous countdown if there is one From eb7342ba569d7f33b11804b873a9ca03aa5e2714 Mon Sep 17 00:00:00 2001 From: LiyemaMfengwana Date: Sat, 15 Aug 2026 19:45:55 +0200 Subject: [PATCH 11/14] fix error --- Sprint-3/alarmclock/index.html | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Sprint-3/alarmclock/index.html b/Sprint-3/alarmclock/index.html index 806e27f24..0883b6e51 100644 --- a/Sprint-3/alarmclock/index.html +++ b/Sprint-3/alarmclock/index.html @@ -9,8 +9,8 @@

Time Remaining: 00:00

- - + + From 8d4054884fc60aa43515c1d3286b566eb011173d Mon Sep 17 00:00:00 2001 From: LiyemaMfengwana Date: Sat, 15 Aug 2026 19:54:50 +0200 Subject: [PATCH 12/14] edit --- Sprint-3/alarmclock/alarmclock.js | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/Sprint-3/alarmclock/alarmclock.js b/Sprint-3/alarmclock/alarmclock.js index 19fd03367..aa7912cee 100644 --- a/Sprint-3/alarmclock/alarmclock.js +++ b/Sprint-3/alarmclock/alarmclock.js @@ -1,4 +1,5 @@ let timer; // let because timer will be assigned a new timeout ID each time. +let timerRunning = false; const input = document.getElementById("alarmSet"); @@ -9,7 +10,9 @@ input.addEventListener("keydown", function (event) { }); function setAlarm() { - clearTimeout(timer); // Stop the previous countdown if there is one + if (timerRunning) { + return; + } const input = document.getElementById("alarmSet"); From 8ace4a4881ff9b589e9071beff45245566b8602f Mon Sep 17 00:00:00 2001 From: LiyemaMfengwana Date: Sat, 15 Aug 2026 19:56:32 +0200 Subject: [PATCH 13/14] disable set alarm button --- Sprint-3/alarmclock/alarmclock.js | 3 +++ 1 file changed, 3 insertions(+) diff --git a/Sprint-3/alarmclock/alarmclock.js b/Sprint-3/alarmclock/alarmclock.js index aa7912cee..3ac090f11 100644 --- a/Sprint-3/alarmclock/alarmclock.js +++ b/Sprint-3/alarmclock/alarmclock.js @@ -24,6 +24,9 @@ function setAlarm() { return; } + timerRunning = true; + document.getElementById("set").disabled = true; + function countdown() { const minutes = Math.floor(seconds / 60); const remainingSeconds = seconds % 60; From 21be02b3338fde1b6cb2f7fff4ba119a7f2e5a82 Mon Sep 17 00:00:00 2001 From: LiyemaMfengwana Date: Sat, 15 Aug 2026 19:58:50 +0200 Subject: [PATCH 14/14] add code --- 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 3ac090f11..775e2e5f4 100644 --- a/Sprint-3/alarmclock/alarmclock.js +++ b/Sprint-3/alarmclock/alarmclock.js @@ -40,6 +40,8 @@ function setAlarm() { if (seconds === 0) { playAlarm(); input.value = ""; + timerRunning = false; + document.getElementById("set").disabled = false; return; }