|
|
|
<!doctype html>
|
|
|
|
<html>
|
|
|
|
<head>
|
|
|
|
<meta charset="utf-8" />
|
|
|
|
<title>Stream Time</title>
|
|
|
|
<style type="text/css">
|
|
|
|
#clock {
|
|
|
|
margin-bottom: 3px;
|
|
|
|
}
|
|
|
|
</style>
|
|
|
|
</head>
|
|
|
|
<body>
|
|
|
|
<div id="clock"></div>
|
|
|
|
<div><input type="number" id="delay" value="10" min="0" /> seconds of delay</div>
|
|
|
|
<script type="text/javascript">
|
|
|
|
let busStartTime = null;
|
|
|
|
|
|
|
|
function updateClock() {
|
|
|
|
let delay = parseInt(document.getElementById("delay").value);
|
|
|
|
if (isNaN(delay)) {
|
|
|
|
delay = 0;
|
|
|
|
}
|
|
|
|
let time = (new Date() - busStartTime) / 1000 - delay;
|
|
|
|
|
|
|
|
let sign = "";
|
|
|
|
if (time < 0) {
|
|
|
|
time = -time;
|
|
|
|
sign = "-";
|
|
|
|
}
|
|
|
|
|
|
|
|
let hours = Math.trunc(time / 3600).toString();
|
|
|
|
let mins = Math.trunc((time % 3600) / 60).toString();
|
|
|
|
let secs = Math.trunc(time % 60).toString();
|
|
|
|
|
|
|
|
if (mins.length < 2) {
|
|
|
|
mins = "0" + mins;
|
|
|
|
}
|
|
|
|
if (secs.length < 2) {
|
|
|
|
secs = "0" + secs;
|
|
|
|
}
|
|
|
|
let formatted = sign + hours + ":" + mins + ":" + secs;
|
|
|
|
document.getElementById("clock").innerText = formatted;
|
|
|
|
}
|
|
|
|
|
|
|
|
async function initialize() {
|
|
|
|
const dataResponse = await fetch("/thrimshim/defaults");
|
|
|
|
const data = await dataResponse.json();
|
|
|
|
busStartTime = new Date(data.bustime_start);
|
|
|
|
|
|
|
|
setInterval(updateClock, 1000);
|
|
|
|
}
|
|
|
|
|
|
|
|
initialize();
|
|
|
|
</script>
|
|
|
|
</body>
|
|
|
|
</html>
|