/** * getImage **/ function getImage() { return $.ajax({ url: 'https://www.garmisch.net/pages/extras/webcam_schanze/webcam_api?action=getImageBase64&width=1024&height=576', type: 'GET', cache: false, async: false }); } /** * changePresetPosition **/ function changePresetPosition() { let pos = $('#presetpos option:selected').val(); let ajax_url = 'https://www.garmisch.net/pages/extras/webcam_schanze/webcam_api?action=changePosition&pos=' + pos; $.ajax({ url: ajax_url, type: 'GET', success: function (data) { console.log("Position wird geändert...") waitForNewImage(); }, error: function () { alert("Ein Fehler ist aufgetreten!"); } }); } /** * refreshImage **/ async function refreshImage(image_data = "") { // Ladeanimation einblenden $('#camera_image').css('opacity', '0.5'); $('#img_overlay').css('visibility', 'visible'); $(".loader").css("visibility", "visible"); let image = image_data; if (image === "") { let raw = getImage().responseText; image = "data:image/jpeg;charset=utf-8;base64," + raw; } document.getElementById("camera_image").src = image; // Ladeanimation ausblenden $('#camera_image').css('opacity', '1'); $('#img_overlay').css('visibility', 'hidden'); $('.loader').css('visibility', 'hidden'); } /** * Wartet solange bis ein neueres Bild verfügbar **/ async function waitForNewImage() { // Ladeanimation einblenden $('#camera_image').css('opacity', '0.5'); $('#img_overlay').css('visibility', 'visible'); $(".loader").css("visibility", "visible"); let status; // warten ... await new Promise(r => setTimeout(r, 3000)); $.ajax({ url: 'https://www.garmisch.net/pages/extras/webcam_schanze/webcam_api?action=getStatus', type: 'GET', success: function (data) { status = data.trim(); }, error: function () { alert("Status konnte nicht ermittelt werden!"); }, async: false }); console.log(status); if (status == "ready") { refreshImage(); $("#loader_text").css("visibility", "hidden"); $(".loader").css("visibility", "hidden"); } else { waitForNewImage(); } } /** * setPresetPositions * * holt die Preset Positionen von der Kamera ab * fügt diese in das Select Menü ein **/ async function setPresetPositions() { return $.ajax({ url: 'https://www.garmisch.net/pages/extras/webcam_schanze/webcam_api?action=getPresetPositions', dataType: 'json', contentType: 'application/json; charset=utf-8', type: 'POST', async: false, success: function (data) { var mySelect = $('#presetpos'); Object.keys(data).forEach(function (key) { // console.log(key, data[key]); mySelect.append( $('').val(key).html(data[key]) ); }); } }); } /** * loading * * wird beim Laden der Seite aufgerufen * wartet bis das Bild und Positionen abgeholt sind * versteckt Loading Gif **/ async function loading() { //await Promise.all([refreshImage(), setPresetPositions()]); refreshImage(); setPresetPositions(); $('#pageloader_div').css('visibility', 'hidden'); refreshTimestamp(); } /** * refreshTimestamp * alle 5 Sekunden Timestamp in DB erneuern **/ async function refreshTimestamp() { $.ajax({ url: 'https://www.garmisch.net/pages/extras/webcam_schanze/webcam_api?action=refresh_timestamp', dataType: 'json', contentType: 'application/json; charset=utf-8', type: 'POST', success: function (data) { //console.log('refreshTimestamp! aktiver User: wqid: ' + data.wqid + ' - sessionid: ' + data.sessionid + ' - lastrefresh: ' + data.lastrefresh + ' - queuetime: ' + data.queuetime + ' - remoteip: ' + data.remoteip); console.log('refreshTimestamp! aktiver User: wqid: ' + data.wqid); } }); window.setTimeout(refreshTimestamp, 5000); }