Initial Version
This commit is contained in:
parent
69c96ee16a
commit
bc5ee4a469
|
@ -0,0 +1,247 @@
|
|||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<style>
|
||||
body {
|
||||
display: grid;
|
||||
height: 100vh;
|
||||
width: 100vw;
|
||||
overflow: hidden;
|
||||
grid-template-rows: 15vh 15vh 70vh;
|
||||
grid-template-columns: 50vw 50vw;
|
||||
padding: 0px;
|
||||
margin: 0px;
|
||||
font-family: sans-serif;
|
||||
}
|
||||
|
||||
h1 {
|
||||
text-align: center;
|
||||
font-size: 8vh;
|
||||
margin: 4px;
|
||||
padding: 4px;
|
||||
}
|
||||
|
||||
h2 {
|
||||
font-size: 4vh;
|
||||
text-align: center;
|
||||
margin: 4px;
|
||||
padding: 4px;
|
||||
}
|
||||
|
||||
li{
|
||||
padding-top: 1vh;
|
||||
list-style-type: '- ';
|
||||
}
|
||||
|
||||
.time {
|
||||
/*font-family: monospace;*/
|
||||
text-align: right;
|
||||
}
|
||||
|
||||
#header {
|
||||
/*background-color: #ff8;*/
|
||||
grid-area: 1 / 1 / span 1 / span 2;
|
||||
text-align: center;
|
||||
font-weight: 600;
|
||||
}
|
||||
|
||||
#clock_div {
|
||||
/*background-color: #ff8;*/
|
||||
grid-area: 2 / 1 / span 1 / span 2;
|
||||
text-align: center;
|
||||
font-weight: 600;
|
||||
}
|
||||
|
||||
#clock {
|
||||
font-size: 12vh;
|
||||
}
|
||||
|
||||
#left {
|
||||
/*background-color: #f88;*/
|
||||
grid-area: 3 / 1;
|
||||
font-size: 3vh;
|
||||
}
|
||||
#right {
|
||||
/*background-color: #8f8;*/
|
||||
grid-area: 3 / 2;
|
||||
font-size: 3vh;
|
||||
}
|
||||
|
||||
#right table {
|
||||
padding-top: 15vh;
|
||||
font-size: 4vh;
|
||||
}
|
||||
#right td {
|
||||
padding-top: 1vh;
|
||||
padding-left: 1vw;
|
||||
}
|
||||
|
||||
#right td.time {
|
||||
margin: 0.5vh;
|
||||
padding-left: 1vw;
|
||||
font-weight: 600;
|
||||
}
|
||||
|
||||
#sitzordnung {
|
||||
width: 100%;
|
||||
}
|
||||
#sitzordnung td {
|
||||
height: 2vh;
|
||||
width: 2vh;
|
||||
}
|
||||
#sitzordnung .ok {
|
||||
background-color: #88f;
|
||||
}
|
||||
#sitzordnung .nok {
|
||||
background-color: #f88;
|
||||
}
|
||||
|
||||
#start_btn {
|
||||
position: absolute;
|
||||
bottom: 0;
|
||||
left: 0;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<div id="header">
|
||||
<h1 align="center">Betriebssysteme Klausur</h1>
|
||||
</div>
|
||||
<div id="clock_div">
|
||||
<h1 id="clock" class="time" style="text-align: center">...</h1>
|
||||
</div>
|
||||
<div id="left">
|
||||
<h2>Sitzordnung</h2>
|
||||
<table id="sitzordnung"></table>
|
||||
<script>
|
||||
// Tabelleninhalt
|
||||
var so = "<tr><td colspan=\"100%\" style=\"text-align: center;\">Tafel (vorne)</td></tr>";
|
||||
for(var i=0;i<5;i++) {
|
||||
so+="<tr>"
|
||||
for(var j=0;j<6;j++){
|
||||
so+="<td class=\"ok\"></td>";
|
||||
so+="<td class=\"nok\"></td>";
|
||||
so+="<td class=\"nok\"></td>";
|
||||
}
|
||||
so+="<td class=\"ok\"></td>";
|
||||
so+="</tr><tr>";
|
||||
for(var j=0;j<6;j++){
|
||||
so+="<td class=\"nok\"></td>";
|
||||
so+="<td class=\"nok\"></td>";
|
||||
so+="<td class=\"nok\"></td>";
|
||||
}
|
||||
so+="<td class=\"nok\"></td>";
|
||||
so+="</tr>";
|
||||
}
|
||||
document.getElementById("sitzordnung").innerHTML=so;
|
||||
</script>
|
||||
<ul>
|
||||
<li>Beginnend von vorne / der Tafel</li>
|
||||
<li>1 Reihe belegt, 1 Reihe frei</li>
|
||||
<li>2 freie Plätze zwischen den belegten Plätzen innerhalb einer Reihe</li>
|
||||
<li>also die blauen Plätze in der Abbildung nutzen</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div id="right">
|
||||
<h2>Vorbereitung</h2>
|
||||
<ul>
|
||||
<li>Elektronische Geräte ausschalten und in der Tasche verstauen. (ja, auch Smart-Watches)</li>
|
||||
<li>Auch ein Etui gehört in die Tasche</li>
|
||||
<li>Studierendennachweis (oder Studierendenausweis) <b>UND</b> Lichtbildausweis bereit legen</li>
|
||||
<li>Taschen und Jacken in die Sitzreihe vor Ihnen legen.</li>
|
||||
<li>Am Platz sollten sich befinden:
|
||||
<ul>
|
||||
<li>dokumentenechtes Schreibwerkzeug (aka. Kugelschreiber)</li>
|
||||
<li>Studierendennachweis</li>
|
||||
<li>Lichtbildausweis</li>
|
||||
<li>1 DIN-A4 <i>Spickzettel</i></li>
|
||||
<li>Getränk</li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div id="start_btn"><input type="submit" value="Start" autofocus="autofocus" /></div>
|
||||
<script>
|
||||
var exam_duration = 60; // Normale Bearbeitungszeit in Minuten
|
||||
var extra_duration = 5; // "Namen eintragen"-Zeit in Minuten
|
||||
var early_cutoff = 20; // Frühzeitige Abgabefrist in Minuten vom Ende
|
||||
var startTimeH=-1;
|
||||
var startTimeM=0;
|
||||
var endH = -1;
|
||||
var endM = 0;
|
||||
function start_exam() {
|
||||
document.getElementById("start_btn").onclick=""; // Aktion für den Start-Button deaktivieren
|
||||
document.getElementById("start_btn").innerHTML=""; // Start-Button entfernen
|
||||
if(startTimeH==-1) // Zeit nur setzen, wenn diese nicht bereits gesetzt wurde
|
||||
{
|
||||
startTimeH = new Date().getHours();
|
||||
startTimeM = new Date().getMinutes();
|
||||
startTimeM++;
|
||||
if(startTimeM>=60) {
|
||||
startTimeM=0;
|
||||
startTimeH++;
|
||||
}
|
||||
console.log("Start: " + startTimeH + ":" + startTimeM);
|
||||
}
|
||||
|
||||
// Startzeitpunkt der eigentlichen Bearbeitungszeit
|
||||
var wtH=startTimeH;
|
||||
var wtM=startTimeM + extra_duration;
|
||||
while(wtM>=60) {
|
||||
wtM-=60;
|
||||
wtH++;
|
||||
}
|
||||
|
||||
// Ende der Bearbeitungszeit
|
||||
endH = startTimeH;
|
||||
endM = startTimeM + extra_duration + exam_duration;
|
||||
while(endM>=60) {
|
||||
endM-=60;
|
||||
endH++;
|
||||
}
|
||||
|
||||
// Frist für vorzeitige Abgabe
|
||||
var earlyH = startTimeH;
|
||||
var earlyM = startTimeM+extra_duration+exam_duration-early_cutoff;
|
||||
while(earlyM>=60) {
|
||||
earlyM-=60;
|
||||
earlyH++;
|
||||
}
|
||||
// Inhalte setzen (aka. Vorbereitung und Sitzordnung weg, dafür die Zeitpunkte anzeigen)
|
||||
document.getElementById("left").innerHTML="";
|
||||
document.getElementById("right").innerHTML="<table>"
|
||||
+ "<tr><td>Start: </td><td class=\"time\">" + startTimeH + ":" + (startTimeM<10?"0":"") + startTimeM +"</td></tr>"
|
||||
+ "<tr><td>Start der Bearbeitungszeit: </td><td class=\"time\">" + wtH + ":" + (wtM<10?"0":"") + wtM +"</td></tr>"
|
||||
+ "<tr><td>Vorzeitige Abgabe bis: </td><td class=\"time\">" + earlyH + ":" + (earlyM<10?"0":"") + earlyM +"</td></tr>"
|
||||
+ "<tr style=\"text-decoration: underline; font-size: 5vh;\"><td>Ende der Bearbeitungszeit: </td><td class=\"time\">" + endH + ":" + (endM<10?"0":"") + endM +"</td></tr>"
|
||||
+ "</table>";
|
||||
}
|
||||
|
||||
var clockUpdate = function() {
|
||||
var now = new Date();
|
||||
var secms = now.getMinutes()
|
||||
document.getElementById("clock").innerHTML = new Date().toISOString().replace("T"," ").replace("Z","");
|
||||
document.getElementById("clock").innerHTML = now.getHours() + ":" + (now.getMinutes()<10?"0":"")+now.getMinutes();
|
||||
var hh=endH;
|
||||
var hm=endM-30;
|
||||
if(hm <0) {
|
||||
hm+=60;
|
||||
hh--;
|
||||
}
|
||||
if(endH!=-1 && endH<=now.getHours() && endM<=now.getMinutes()) {
|
||||
document.body.style.backgroundColor="#faa";
|
||||
}
|
||||
else if(endH!=-1 && now.getHours()==hh && now.getMinutes()==hm && now.getSeconds() < 2 && now.getMilliseconds()<500) {
|
||||
document.body.style.backgroundColor="#ffa";
|
||||
}
|
||||
else {
|
||||
document.body.style.backgroundColor="";
|
||||
}
|
||||
};
|
||||
setInterval(clockUpdate, 1);
|
||||
document.getElementById("start_btn").onclick=start_exam;
|
||||
document.getElementById("start_btn").firstChild.onsubmit=start_exam;
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
Reference in New Issue