Skip to content

Commit ec76105

Browse files
committed
Segment due date live update
Fixes #447
1 parent fd160c5 commit ec76105

File tree

1 file changed

+23
-0
lines changed

1 file changed

+23
-0
lines changed

src/checker/checker.js

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -596,6 +596,29 @@ try {
596596
document.querySelector('[data-segment-due]').setAttribute('hidden', '');
597597
if (selectedSegment.due) {
598598
document.querySelector('[data-segment-due]').innerHTML = `<i class="bi bi-calendar3"></i> Due ${new Date(`${selectedSegment.due}T00:00:00`).toLocaleDateString('en-US', { weekday: 'short', year: 'numeric', month: 'short', day: 'numeric' })}`;
599+
if (document.querySelector('[data-segment-due]')._interval) clearInterval(document.querySelector('[data-segment-due]')._interval);
600+
document.querySelector('[data-segment-due]')._interval = setInterval(() => {
601+
const dueTime = new Date(`${selectedSegment.due}T00:00:00`).getTime();
602+
const currentTime = new Date().getTime();
603+
var timeDiff = dueTime - currentTime;
604+
var prefix = 'in ';
605+
var suffix = '';
606+
if (timeDiff < 0) {
607+
timeDiff = Math.abs(timeDiff);
608+
prefix = 'Past due - ';
609+
suffix = ' ago';
610+
}
611+
const days = Math.floor(timeDiff / (1000 * 60 * 60 * 24));
612+
const hours = Math.floor((timeDiff % (1000 * 60 * 60 * 24)) / (1000 * 60 * 60));
613+
const minutes = Math.floor((timeDiff % (1000 * 60 * 60)) / (1000 * 60));
614+
const seconds = Math.floor((timeDiff % (1000 * 60)) / 1000);
615+
var timeString = prefix;
616+
if (days > 0) timeString += `${days} day${days > 1 ? 's' : ''}, `;
617+
if (hours > 0) timeString += `${hours} hour${hours > 1 ? 's' : ''}, `;
618+
if (minutes > 0) timeString += `${minutes} minute${minutes !== 1 ? 's' : ''}, `;
619+
if (hours === 0) timeString += `${seconds} second${seconds !== 1 ? 's' : ''}, `;
620+
document.querySelector('[data-segment-due]').innerHTML = `<i class="bi bi-calendar3"></i> Due ${new Date(`${selectedSegment.due}T00:00:00`).toLocaleDateString('en-US', { weekday: 'short', year: 'numeric', month: 'short', day: 'numeric' })} (${timeString.slice(0, -2)}${suffix})`;
621+
}, 1000);
599622
document.querySelector('[data-segment-due]').removeAttribute('hidden');
600623
};
601624
questions.removeEventListener("change", updateQuestion);

0 commit comments

Comments
 (0)