34 lines
1.2 KiB
JavaScript
34 lines
1.2 KiB
JavaScript
|
document.addEventListener("DOMContentLoaded", () => {
|
||
|
for (const countdown of document.querySelectorAll(".countdown")) {
|
||
|
const deadline = countdown.getAttribute("data-deadline");
|
||
|
const deadlineDate = new Date(parseInt(deadline, 10) * 1000);
|
||
|
|
||
|
function updateCountdown() {
|
||
|
const remainingMs = deadlineDate.getTime() - new Date().getTime();
|
||
|
const remainingMinutes = remainingMs / 1000 / 60;
|
||
|
const remainingHours = remainingMinutes / 60;
|
||
|
const remainingDays = remainingHours / 24; // no daylight savings transitions during the jam mmkay
|
||
|
|
||
|
let str = "imminently";
|
||
|
if (remainingMinutes < 60) {
|
||
|
str = `in ${Math.ceil(remainingMinutes)} ${
|
||
|
remainingMinutes === 1 ? "minute" : "minutes"
|
||
|
}`;
|
||
|
} else if (remainingHours < 24) {
|
||
|
str = `in ${Math.ceil(remainingHours)} ${
|
||
|
remainingHours === 1 ? "hour" : "hours"
|
||
|
}`;
|
||
|
} else {
|
||
|
str = `in ${Math.ceil(remainingDays)} ${
|
||
|
remainingDays === 1 ? "day" : "days"
|
||
|
}`;
|
||
|
}
|
||
|
|
||
|
countdown.innerText = str;
|
||
|
}
|
||
|
|
||
|
updateCountdown();
|
||
|
setInterval(updateCountdown, 1000 * 60);
|
||
|
}
|
||
|
});
|