From 53fa90f23e51a0aecf94e5be7db577997e87a7b6 Mon Sep 17 00:00:00 2001 From: Pretty Taruvinga Date: Sat, 7 Mar 2026 14:25:25 +0200 Subject: [PATCH 01/10] implement correct median calculation --- Sprint-1/fix/median.js | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/Sprint-1/fix/median.js b/Sprint-1/fix/median.js index b22590bc6..f7d2fd653 100644 --- a/Sprint-1/fix/median.js +++ b/Sprint-1/fix/median.js @@ -6,9 +6,21 @@ // or 'list' has mixed values (the function is expected to sort only numbers). function calculateMedian(list) { - const middleIndex = Math.floor(list.length / 2); - const median = list.splice(middleIndex, 1)[0]; - return median; + // Filter out non-numeric values and sort the remaining numbers + const numbers = list + .filter((x) => typeof x === "number" && !isNaN(x)) + .sort((a, b) => a - b); + + if (numbers.length === 0) { + return null; + } + + const mid = Math.floor(numbers.length / 2); + if (numbers.length % 2 === 0) { + return (numbers[mid - 1] + numbers[mid]) / 2; + } else { + return numbers[mid]; + } } module.exports = calculateMedian; From ef66a7cab5fe9e58917c8b0ae28e75d2f024b2ee Mon Sep 17 00:00:00 2001 From: Pretty Taruvinga Date: Tue, 14 Apr 2026 12:16:11 +0200 Subject: [PATCH 02/10] revert to main --- Sprint-1/fix/median.js | 18 +++--------------- 1 file changed, 3 insertions(+), 15 deletions(-) diff --git a/Sprint-1/fix/median.js b/Sprint-1/fix/median.js index f7d2fd653..b22590bc6 100644 --- a/Sprint-1/fix/median.js +++ b/Sprint-1/fix/median.js @@ -6,21 +6,9 @@ // or 'list' has mixed values (the function is expected to sort only numbers). function calculateMedian(list) { - // Filter out non-numeric values and sort the remaining numbers - const numbers = list - .filter((x) => typeof x === "number" && !isNaN(x)) - .sort((a, b) => a - b); - - if (numbers.length === 0) { - return null; - } - - const mid = Math.floor(numbers.length / 2); - if (numbers.length % 2 === 0) { - return (numbers[mid - 1] + numbers[mid]) / 2; - } else { - return numbers[mid]; - } + const middleIndex = Math.floor(list.length / 2); + const median = list.splice(middleIndex, 1)[0]; + return median; } module.exports = calculateMedian; From ebb2f79eac74977d6e0f391da04a944b8a1b0c36 Mon Sep 17 00:00:00 2001 From: Pretty Taruvinga Date: Tue, 14 Apr 2026 12:51:33 +0200 Subject: [PATCH 03/10] revert to main --- Sprint-3/alarmclock/alarmclock.js | 36 ++++++++++++++++++++++++++++++- 1 file changed, 35 insertions(+), 1 deletion(-) diff --git a/Sprint-3/alarmclock/alarmclock.js b/Sprint-3/alarmclock/alarmclock.js index 6ca81cd3b..6a255e153 100644 --- a/Sprint-3/alarmclock/alarmclock.js +++ b/Sprint-3/alarmclock/alarmclock.js @@ -1,4 +1,38 @@ -function setAlarm() {} +let timeLeft = 0; +let timer = null; + +function formatTime(seconds) { + let mins = String(Math.floor(seconds / 60)).padStart(2, "0"); + let secs = String(seconds % 60).padStart(2, "0"); + return `${mins}:${secs}`; +} + +function setAlarm() { + const input = document.getElementById("alarmSet").value; + const display = document.getElementById("timeRemaining"); + + timeLeft = parseInt(input, 10); + + if (isNaN(timeLeft) || timeLeft <= 0) { + alert("Please enter a valid number of seconds."); + return; + } + + display.textContent = `Time Remaining: ${formatTime(timeLeft)}`; + + if (timer) { + clearInterval(timer); + } + timer = setInterval(() => { + if (timeLeft > 0) { + timeLeft--; + display.textContent = `Time Remaining: ${formatTime(timeLeft)}`; + } else { + clearInterval(timer); + playAlarm(); + } + }, 1000); +} // DO NOT EDIT BELOW HERE From 9fdb3343441d855c431caa729666803b8d638532 Mon Sep 17 00:00:00 2001 From: Pretty Taruvinga Date: Tue, 14 Apr 2026 22:34:56 +0200 Subject: [PATCH 04/10] Updated index.html --- 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 48e2e80d9..18a51fc66 100644 --- a/Sprint-3/alarmclock/index.html +++ b/Sprint-3/alarmclock/index.html @@ -1,10 +1,10 @@ - + - Title here + Alarm Clock App
From 6cb11f7237b3c478111b0bed75730827e17bad59 Mon Sep 17 00:00:00 2001 From: Pretty Taruvinga Date: Tue, 14 Apr 2026 23:02:33 +0200 Subject: [PATCH 05/10] Fix alarm clock timer logic and display update" --- Sprint-3/alarmclock/alarmclock.js | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/Sprint-3/alarmclock/alarmclock.js b/Sprint-3/alarmclock/alarmclock.js index 6a255e153..0461cb854 100644 --- a/Sprint-3/alarmclock/alarmclock.js +++ b/Sprint-3/alarmclock/alarmclock.js @@ -7,9 +7,13 @@ function formatTime(seconds) { return `${mins}:${secs}`; } +function updateDisplay(timeLeft) { + const display = document.getElementById("timeRemaining"); + display.textContent = `Time Remaining: ${formatTime(timeLeft)}`; +} + function setAlarm() { const input = document.getElementById("alarmSet").value; - const display = document.getElementById("timeRemaining"); timeLeft = parseInt(input, 10); @@ -18,15 +22,16 @@ function setAlarm() { return; } - display.textContent = `Time Remaining: ${formatTime(timeLeft)}`; - if (timer) { clearInterval(timer); } + + updateDisplay(timeLeft); + timer = setInterval(() => { if (timeLeft > 0) { timeLeft--; - display.textContent = `Time Remaining: ${formatTime(timeLeft)}`; + updateDisplay(timeLeft); } else { clearInterval(timer); playAlarm(); From 6b7e2540fba4cfabd1c565dacd280b07b2f30ac9 Mon Sep 17 00:00:00 2001 From: Pretty Taruvinga Date: Tue, 14 Apr 2026 23:20:13 +0200 Subject: [PATCH 06/10] Restore alarm functionality by fixing input handling, variable naming, and timer logic" --- Sprint-3/alarmclock/alarmclock.js | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/Sprint-3/alarmclock/alarmclock.js b/Sprint-3/alarmclock/alarmclock.js index 0461cb854..3a8ec21ec 100644 --- a/Sprint-3/alarmclock/alarmclock.js +++ b/Sprint-3/alarmclock/alarmclock.js @@ -18,7 +18,6 @@ function setAlarm() { timeLeft = parseInt(input, 10); if (isNaN(timeLeft) || timeLeft <= 0) { - alert("Please enter a valid number of seconds."); return; } @@ -29,13 +28,14 @@ function setAlarm() { updateDisplay(timeLeft); timer = setInterval(() => { - if (timeLeft > 0) { - timeLeft--; - updateDisplay(timeLeft); - } else { + if (timeLeft <= 0) { clearInterval(timer); playAlarm(); + return; } + + timeLeft--; + updateDisplay(timeLeft); }, 1000); } From 948fa59f7bb41e65ecd973c4d84e7c9670ac79d1 Mon Sep 17 00:00:00 2001 From: Pretty Taruvinga Date: Tue, 14 Apr 2026 23:23:02 +0200 Subject: [PATCH 07/10] Reset timer state before starting new countdown" --- Sprint-3/alarmclock/alarmclock.js | 1 + 1 file changed, 1 insertion(+) diff --git a/Sprint-3/alarmclock/alarmclock.js b/Sprint-3/alarmclock/alarmclock.js index 3a8ec21ec..a951bbf29 100644 --- a/Sprint-3/alarmclock/alarmclock.js +++ b/Sprint-3/alarmclock/alarmclock.js @@ -23,6 +23,7 @@ function setAlarm() { if (timer) { clearInterval(timer); + timer = null; } updateDisplay(timeLeft); From e54e3fcc3b3abb9d4e22967a389df09df485554c Mon Sep 17 00:00:00 2001 From: Pretty Taruvinga Date: Tue, 14 Apr 2026 23:26:26 +0200 Subject: [PATCH 08/10] Trigger alarm immediately when countdown reaches zero" --- Sprint-3/alarmclock/alarmclock.js | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/Sprint-3/alarmclock/alarmclock.js b/Sprint-3/alarmclock/alarmclock.js index a951bbf29..36e74b1cc 100644 --- a/Sprint-3/alarmclock/alarmclock.js +++ b/Sprint-3/alarmclock/alarmclock.js @@ -29,14 +29,13 @@ function setAlarm() { updateDisplay(timeLeft); timer = setInterval(() => { + timeLeft--; + updateDisplay(timeLeft); if (timeLeft <= 0) { clearInterval(timer); + timer = null; playAlarm(); - return; } - - timeLeft--; - updateDisplay(timeLeft); }, 1000); } From ae98f15d7e294edfce27fd893a6ea3982c79268d Mon Sep 17 00:00:00 2001 From: Pretty Taruvinga Date: Wed, 15 Apr 2026 13:13:49 +0200 Subject: [PATCH 09/10] Move timeLeft into setAlarm and remove global variable --- Sprint-3/alarmclock/alarmclock.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Sprint-3/alarmclock/alarmclock.js b/Sprint-3/alarmclock/alarmclock.js index 36e74b1cc..4ba9f2fc8 100644 --- a/Sprint-3/alarmclock/alarmclock.js +++ b/Sprint-3/alarmclock/alarmclock.js @@ -1,4 +1,3 @@ -let timeLeft = 0; let timer = null; function formatTime(seconds) { @@ -13,6 +12,7 @@ function updateDisplay(timeLeft) { } function setAlarm() { + let timeLeft = 0; const input = document.getElementById("alarmSet").value; timeLeft = parseInt(input, 10); @@ -31,6 +31,7 @@ function setAlarm() { timer = setInterval(() => { timeLeft--; updateDisplay(timeLeft); + if (timeLeft <= 0) { clearInterval(timer); timer = null; From bdb176bb707915043a87bc7f6938206a11249dbb Mon Sep 17 00:00:00 2001 From: Pretty Taruvinga Date: Wed, 15 Apr 2026 13:17:21 +0200 Subject: [PATCH 10/10] Reset alarm state when starting a new countdown --- 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 4ba9f2fc8..e2d022c14 100644 --- a/Sprint-3/alarmclock/alarmclock.js +++ b/Sprint-3/alarmclock/alarmclock.js @@ -26,6 +26,8 @@ function setAlarm() { timer = null; } + stopAlarm(); + updateDisplay(timeLeft); timer = setInterval(() => {