60 lines
2.0 KiB
JavaScript
60 lines
2.0 KiB
JavaScript
const boxes = document.getElementsByClassName('current_webcam_image_box');
|
|
const reload_interval = setInterval(reloadImages, 60000);
|
|
const wakeup_hour = 5; //UTC
|
|
const sleep_hour = 18; //UTC
|
|
|
|
window.onload = function() {
|
|
reloadImages();
|
|
};
|
|
|
|
function checkImageSource(image_url) {
|
|
var http_request = new XMLHttpRequest();
|
|
http_request.open('HEAD', image_url, false);
|
|
http_request.send();
|
|
|
|
return http_request.status;
|
|
}
|
|
|
|
function reloadImages() {
|
|
console.log('reload in progress');
|
|
|
|
Array.prototype.forEach.call(boxes, function(box) {
|
|
var headline = box.childNodes[1]
|
|
var image = box.childNodes[3]
|
|
var status_text = box.childNodes[5]
|
|
var sleep_text = box.childNodes[7]
|
|
|
|
if (checkImageSource(image.src) == 200) {
|
|
status_text.style = "visibility:hidden"
|
|
sleep_text.style = "visibility:hidden"
|
|
image.style = "width:100%;visibility:visible"
|
|
if (!image.src.includes('?')) {
|
|
image.src = `${image.src}?${Date.now()}`;
|
|
} else {
|
|
image.src = image.src.slice(0, image.src.indexOf('?') + 1) + Date.now();
|
|
}
|
|
} else {
|
|
|
|
console.log('unable to find image on server');
|
|
|
|
const now = new Date();
|
|
const currentHour = now.getUTCHours();
|
|
console.log(currentHour)
|
|
|
|
if ((currentHour >= wakeup_hour) && (currentHour < sleep_hour)) {
|
|
console.log("Camera error/fault occurred")
|
|
sleep_text.style = "visibility:hidden"
|
|
image.alt = "Webcam nicht erreichbar."
|
|
image.style = "width:100%;visibility:hidden"
|
|
status_text.style = "visibility:visible"
|
|
} else {
|
|
console.log("Camera in sleep mode")
|
|
status_text.style = "visibility:hidden"
|
|
image.alt = "Webcam im Ruhemodus."
|
|
image.style = "width:100%;visibility:hidden"
|
|
sleep_text.style = "visibility:visible"
|
|
}
|
|
}
|
|
});
|
|
console.log('reload finished');
|
|
} |