Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
26 changes: 25 additions & 1 deletion Sprint-3/alarmclock/alarmclock.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,28 @@
function setAlarm() {}
const input = document.getElementById("alarmSet");
const timeDisplay = document.querySelector("span");

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.

span is a fairly generic element, so using it as the selector for the time display can make the code less specific and more fragile. Could you find out why selecting a span for this purpose is not considered good practice, and update the selector accordingly?


function setAlarm() {
let timeInput = Number(input.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.

Some input values could make your app behave abnormally. Could you add code to sanitise or reject them?

let minutes = Math.floor(timeInput / 60);
let seconds = timeInput % 60;

minutes = minutes.toString().padStart(2, "0");
seconds = seconds.toString().padStart(2, "0");
timeDisplay.textContent = `${minutes}:${seconds}`;

const alarm = setInterval(() => {
timeInput--;
let remainingMinutes = Math.floor(timeInput / 60);
let remainingSeconds = timeInput % 60;
remainingMinutes = remainingMinutes.toString().padStart(2, "0");
remainingSeconds = remainingSeconds.toString().padStart(2, "0");
timeDisplay.textContent = `${remainingMinutes}:${remainingSeconds}`;
Comment on lines +15 to +19

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 15-19 is very similar to those on lines 6-11.
To adhere to the DRY principle, could you refactor the repeated code into a reusable function?

if (timeInput === 0) {
playAlarm();
clearInterval(alarm);
}
}, 1000);
}

// DO NOT EDIT BELOW HERE

Expand Down
34 changes: 17 additions & 17 deletions Sprint-3/alarmclock/index.html
Original file line number Diff line number Diff line change
@@ -1,20 +1,20 @@

<!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>
<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: <span>00:00</span></h1>
<label for="alarmSet">Set time to:</label>
<input id="alarmSet" type="number" min="1" />
<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