Skip to content
23 changes: 22 additions & 1 deletion Sprint-3/alarmclock/alarmclock.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,25 @@
function setAlarm() {}
function setAlarm() {
const timeInput = document.getElementById("alarmSet");
// console.log(timeInput.value);
let remainingSeconds = timeInput.value;

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

  • Using raw input without proper validation is a dangerous practice. For number, we should consider

    • What type of number should it be? Integer or floating point number?
    • What range of numbers are acceptable?
    • What kind of invalid value should also be rejected?
  • Unused code and comments should be removed to keep the code clean.

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thank you for pointing this out.
Code is updated accordingly.


const timeRemaining = document.getElementById("timeRemaining");
const minutes = String(Math.floor(remainingSeconds / 60)).padStart(2, "0");
const seconds = String(remainingSeconds - minutes * 60).padStart(2, "0");

timeRemaining.textContent = `Time Remaining: ${minutes}:${seconds}`;

const timer = setInterval(() => {
remainingSeconds--;
const minutes = String(Math.floor(remainingSeconds / 60)).padStart(2, "0");
const seconds = String(remainingSeconds - minutes * 60).padStart(2, "0");
timeRemaining.textContent = `Time Remaining: ${minutes}:${seconds}`;

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code on lines 7-10 is very similar to those on lines 14-16.
To adhere to the DRY principle in programming, could you refactor the repeated code into a reusable function?

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

done.

if (remainingSeconds === 0) {
playAlarm();
clearInterval(timer);
}
}, 1000);
}

// DO NOT EDIT BELOW HERE

Expand Down
37 changes: 20 additions & 17 deletions Sprint-3/alarmclock/index.html
Original file line number Diff line number Diff line change
@@ -1,20 +1,23 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<link rel="stylesheet" href="style.css" />
<title>Title here</title>
</head>
<body>
<div class="centre">
<h1 id="timeRemaining">Time Remaining: 00:00</h1>
<label for="alarmSet">Set time to:</label>
<input id="alarmSet" type="number" />

<button id="set" type="button">Set Alarm</button>
<button id="stop" type="button">Stop Alarm</button>
</div>
<script src="alarmclock.js"></script>
</body>
</html>
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<link rel="stylesheet" href="style.css" />
<title>Alarm clock app</title>
</head>

<body>
<div class="centre">
<h1 id="timeRemaining">Time Remaining: 00:00</h1>
<label for="alarmSet">Set time to:</label>
<input id="alarmSet" type="number" />

<button id="set" type="button">Set Alarm</button>
<button id="stop" type="button">Stop Alarm</button>
</div>
<script src="alarmclock.js"></script>
</body>

</html>
Loading