let index = 0;
let cue_timestamp = [];
let query_timestamp = [];
let min_timespan = [];
let eventSource = new EventSource("eventsource.php?query=-1", {
headers: {
'Accept-Encoding:': 'identity'
}
});
eventSource.onmessage = function (event) {
let data = JSON.parse(event.data);
for (let elementID in data)
if (elementID.substring(0, 6) === "evt_tp") {
index = Number(elementID.substring(6));
query_timestamp[index] = Number(data[elementID]);
} else if (elementID.substring(0, 6) === "evt_tm") {
index = Number(elementID.substring(6));
min_timespan[index] = Number(data[elementID]);
} else if (elementID.substring(0, 6) === "evt_ts") {
index = Number(elementID.substring(6));
cue_timestamp[index] = Number(data[elementID]);
countup(index);
} else {
let element = document.getElementById(elementID);
if (element) element.innerHTML = data[elementID];
}
};
function countup(index) {
let timespan = new Date().getTime() - cue_timestamp[index] * 1000;
let timestring;
let nextCountup;
if (timespan < 1000) {
timestring = "jetzt";
nextCountup = 1000-timespan;
} else {
let h = Math.floor(timespan / 3600000);
let m = Math.floor(timespan / 60000) % 60;
let s = Math.floor(timespan / 1000) % 60;
let ms = timespan % 1000;
if (h > 0) {
timestring = (h > 0 ? h + " h, " : "") + (h > 0 && m < 10 ? "0" : "") + m + " min";
nextCountup = 60001 - ms - 1000 * s;
} else {
nextCountup = 1001 - ms;
timestring = (m > 0 ? m + " min, " : "") + (m > 0 && s < 10 ? "0" : "") + s + " s";
}
}
setTimeout(countup, nextCountup, index);
let elementID = "evt_ts" + index;
let el = document.getElementById(elementID);
if (el != null) el.innerHTML = timestring;
}
function countdown(index) {
let timespan = query_timestamp[index] * 1000 - new Date().getTime();
if (timespan < min_timespan[index]*1000)
timespan = min_timespan[index]*1000;
let timestring;
let nextCountdown;
if (timespan < 1000) {
timestring = "Aufruf erfolgt in Kürze.";
nextCountdown = 1000;
} else {
let h = Math.floor(timespan / 3600000);
let m = Math.floor(timespan / 60000) % 60;
let s = Math.floor(timespan / 1000) % 60;
let ms = timespan % 1000;
if (h*60+m > 61) {
timestring = (h > 0 ? h + " h, " : "") + (h > 0 && m < 10 ? "0" : "") + m + " min";
nextCountdown = ms+1 + 1000*s;
} else {
nextCountdown = ms+1;
timestring = (m > 0 ? m + " min, " : "") + (m > 0 && s < 10 ? "0" : "") + s + " s";
}
}
setTimeout(countdown, nextCountdown, index);
let elementID = "evt_tp" + index;
let el = document.getElementById(elementID);
if (el != null) el.innerHTML = timestring;
}
$(window).on('beforeunload', function(){
eventSource.close();
});