This repository has been archived on 2024-04-26. You can view files and clone it, but cannot push or open issues or pull requests.
static/counter/index.html

137 lines
3.4 KiB
HTML

<!DOCTYPE html>
<html>
<head>
<meta content="text/html;charset=utf-8" http-equiv="Content-Type">
<meta content="utf-8" http-equiv="encoding">
<link rel="stylesheet" type="text/css" href="index.css">
<style>
.deadline {
display: inline;
}
.late {
color: red;
}
</style>
</head>
<body>
<h1>Grades when</h1>
<h2>AN Resit</h2>
<p>
The resit for AN was at 2023-07-28.</br>
The grade deadline <span class="deadline" data-deadline="2023-08-18"></span>.
</p>
<h2>OT</h2>
<p>
The hand-in of the OT report was at 2023-06-04.</br>
The grade deadline <span class="deadline" data-deadline="2023-06-22"></span>.
</p>
<h2>RP2</h2>
<p>
The hand-in of the RP2 report was at 2023-07-14.</br>
The final date of re-enrolment <span class="deadline" data-deadline="2023-08-31"></span>.
</p>
<h2>AS</h2>
<p>
The grades were published 2023-07-19 🎉
</p>
<h1>References</h2>
OER-A (<a href="https://beeldbank.uva.nl/m/4ae52bce4e5d86a8/original/OER-2022-2023-FNWI-MSc-EN.pdf">link</a>):
<ul>
<li>The resit for an examination must not take place within ten working days of the announcement of the result of the examination being resat.</li>
<li>The examiner determines the result (= mark) of a written examination as soon as possible, but at the latest within fifteen working days.</li>
</ul>
<!--
OER-A 2022 - 2023:
The resit for an examination must not take place within ten working days of the announcement of the result of the examination being resat.
The examiner determines the result (= mark) of a written examination as soon as possible, but at the latest within fifteen working days.
AS
Exam date 30th May
Deadline grade 19th June
Retake date 4th August
Deadline grade for resit 21st July
OT
OT deadline date 4th June
OT grade deadline 22th June
RP2
RP2 handin date 14th July
Final re-enrollment date 31th August
-->
<script>
function set_deadlines() {
const minute = 60;
const hour = 60 * minute;
const day = 24 * hour;
const now = Date.now();
const deadlines = document.getElementsByClassName('deadline');
for (let i = 0; i < deadlines.length; ++i) {
const deadline = deadlines[i];
const dl_date = Date.parse(deadline.dataset.deadline);
var str = "";
str += dl_date > now ? "is at " : "was at ";
var time_added = false;
str += deadline.dataset.deadline;
str += " (";
str += "<span";
str += dl_date < now ? ' class="late">' : ">";
var timediff = Math.round((now - dl_date) / 1000);
timediff = timediff < 0 ? -timediff : timediff
if (timediff >= day) {
const days = Math.floor(timediff / day);
str += days + " days";
time_added = true;
timediff -= days * day;
}
if (timediff >= hour) {
const hours = Math.floor(timediff / hour);
if (time_added) {
str += ", ";
}
str += hours + " hours";
time_added = true;
timediff -= hours * hour;
}
if (timediff >= minute) {
const minutes = Math.floor(timediff / minute);
if (time_added) {
str += ", ";
}
str += minutes + " minutes";
time_added = true;
timediff -= minutes * minute;
}
if (time_added) {
str += " and ";
}
str += timediff + " seconds";
time_added = true;
str += dl_date > now ? " from now" : " ago";
str += "</span>" ;
str += ")";
deadline.innerHTML = str;
}
}
setInterval(set_deadlines, 1000);
set_deadlines();
</script>
</body>
</html