/* ########################### */ /* ######### LEAFLET ######### */ /* ########################### */ // Karte definieren var map = L.map('map', { zoomControl: false }).setView([51.733005, 14.338048], 13); // Layer der Karte mapLink = L.tileLayer( 'https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', { //map_tile, { maxZoom: 18 }).addTo(map); // Icon der Karte zuordnen var redIcon = new L.Icon({ iconUrl: '/media/marker-icon-2x-red.png', shadowUrl: '/media/marker-shadow.png', iconSize: [25, 41], iconAnchor: [12, 41], popupAnchor: [1, -34], shadowSize: [41, 41] }); // Icon setzen var marker = L.marker(new L.LatLng(0, 0), { icon: redIcon }).addTo(map); // GeoJSON vordefinieren var geojson = L.geoJSON().addTo(map); /* ########################### */ /* ####### Rückmeldung ####### */ /* ########################### */ var counter_rmld = []; var counter_ID = 0; function start_counter(zeitstempel, ablaufzeit) { // Split timestamp into [ Y, M, D, h, m, s ] var t1 = zeitstempel.split(/[- :]/), t2 = ablaufzeit.split(/[- :]/); var start = new Date(t1[0], t1[1] - 1, t1[2], t1[3], t1[4], t1[5]), end = new Date(t2[0], t2[1] - 1, t2[2], t2[3], t2[4], t2[5]); clearInterval(counter_ID); counter_ID = setInterval(function () { do_progressbar(start, end); }, 1000); }; function reset_rmld(p_uuid) { var bar_uuid = 'bar-' + p_uuid; $('#pg-ek').children().each(function (i) { if (!$(this).hasClass(bar_uuid)) { $(this).remove(); }; }); $('#pg-ma').children().each(function (i) { if (!$(this).hasClass(bar_uuid)) { $(this).remove(); }; }); $('#pg-fk').children().each(function (i) { if (!$(this).hasClass(bar_uuid)) { $(this).remove(); }; }); }; function add_resp_progressbar(p_uuid, p_id, p_type, p_agt, p_start, p_end) { // Hintergrund der Progressbar festlegen var bar_background = ''; var bar_border = ''; if (p_agt) { bar_border = 'border border-warning'; }; switch (p_type) { case 'ek': bar_background = 'bg-success'; break; case 'ma': bar_background = 'bg-info'; break; case 'fk': bar_background = 'bg-light'; break; default: bar_background = ''; break; }; var bar_uuid = 'bar-' + p_uuid; // pruefen ob div mit id 'pg-'+p_id schon vorhanden ist var pgbar = document.getElementById('pg-' + p_id); if (!pgbar) { $('#pg-' + p_type).append('
'); $('#pg-' + p_id).append(''); $('#pg-bar-' + p_id).append(''); } else { // TODO PG-Bar ändern falls neue/angepasste Rückmeldung }; // Zeitschiene Anpassen clearInterval(counter_rmld[p_id]); counter_rmld[p_id] = 0; counter_rmld[p_id] = setInterval(function () { do_rmld_bar(p_id, p_start, p_end); }, 1000); }; function do_rmld_bar(p_id, start, end) { //console.log(p_id); today = new Date(); // restliche Zeit ermitteln var current_progress = Math.round(100 / (start.getTime() - end.getTime()) * (start.getTime() - today.getTime())); var diff = Math.abs(end - today); var minutesDifference = Math.floor(diff / 1000 / 60); diff -= minutesDifference * 1000 * 60; var secondsDifference = Math.floor(diff / 1000); if (secondsDifference <= 9) { secondsDifference = '0' + secondsDifference; }; var minutes = minutesDifference + ':' + secondsDifference; // Progressbar anpassen if (current_progress >= 100) { $('#pg-bar-' + p_id) .css('width', '100%') .attr('aria-valuenow', 100) .addClass('ion-md-checkmark-circle'); $('#pg-text-' + p_id).text(''); // FIXME Counter_Id not defined clearInterval(counter_ID[p_id]); } else { $('#pg-bar-' + p_id) .css('width', current_progress + '%') .attr('aria-valuenow', current_progress); $('#pg-text-' + p_id).text(minutes); }; }; function recount_rmld(p_uuid) { var bar_uuid = 'bar-' + p_uuid; var agt_count = 0; // Zähler auf 0 Setzen $('#ek-counter').text(0); $('#ma-counter').text(0); $('#fk-counter').text(0); $('#agt-counter').text(0); // EK zählen $('#pg-ek').children().each(function (i) { if ($(this).hasClass(bar_uuid)) { var tmp_count = parseInt($('#ek-counter').text()); $('#ek-counter').text(tmp_count + 1); if ($(this).hasClass('border-warning')) { agt_count++; }; }; }); // MA zählen $('#pg-ma').children().each(function (i) { if ($(this).hasClass(bar_uuid)) { var tmp_count = parseInt($('#ma-counter').text()); $('#ma-counter').text(tmp_count + 1); if ($(this).hasClass('border-warning')) { agt_count++; }; }; }); // FK zählen $('#pg-fk').children().each(function (i) { if ($(this).hasClass(bar_uuid)) { var tmp_count = parseInt($('#fk-counter').text()); $('#fk-counter').text(tmp_count + 1); if ($(this).hasClass('border-warning')) { agt_count++; }; }; }); // AGT setzen $('#agt-counter').text(agt_count); // Rückmeldecontainer anzeigen/ausblenden if ($('#ek-counter').text() == '0' && $('#ma-counter').text() == '0' && $('#fk-counter').text() == '0' && $('#agt-counter').text() == '0') { $('#rmld_container').addClass('d-none'); } else { $('#rmld_container').removeClass('d-none'); }; }; /* ########################### */ /* ####### Timeline ######## */ /* ########################### */ // DOM element where the Timeline will be attached var container = document.getElementById('visualization'); var items = new vis.DataSet(); var groups = new vis.DataSet(); // Configuration for the Timeline var customDate = new Date(); var alert_start = new Date(customDate.setMinutes(customDate.getMinutes() - 2)); var timeline_end = new Date(customDate.setMinutes(customDate.getMinutes() + 13)); var options = { rollingMode: { follow: true, offset: 0.25 }, start: alert_start, end: timeline_end }; // Create a Timeline var timeline = new vis.Timeline(container, items, options); timeline.setGroups(groups); /* ########################### */ /* ######## SOCKET.IO ######## */ /* ########################### */ // Websocket var socket = io('/dbrd'); // Wachen-ID bei Connect an Server senden socket.on('connect', function () { socket.emit('dbrd', dbrd_uuid); $('#waipModal').modal('hide'); // TODO: bei Reconnect des Clients durch Verbindungsabbruch, erneut Daten anfordern }); socket.on('connect_error', function (err) { $('#waipModalTitle').html('FEHLER'); $('#waipModalBody').html('Verbindung zum Server getrennt!'); $('#waipModal').modal('show'); }); // ID von Server und Client vergleichen, falls ungleich -> Seite neu laden socket.on('io.version', function (server_id) { if (client_id != server_id) { $('#waipModal').modal('hide'); setTimeout(function () { $('#waipModalTitle').html('ACHTUNG'); $('#waipModalBody').html('Neue Server-Version. Seite wird in 10 Sekunden neu geladen!'); $('#waipModal').modal('show'); setTimeout(function () { location.reload(); }, 10000); }, 1000); }; }); // ggf. Fehler ausgeben socket.on('io.error', function (data) { console.log('Error:', data); }); // Daten löschen, Uhr anzeigen socket.on('io.deleted', function (data) { console.log('del') // Einsatz nicht mehr vorhanden $('#waipModal').modal('hide'); setTimeout(function () { $('#waipModalTitle').html('ACHTUNG'); $('#waipModalBody').html(`Der aufgerufene Einsatz wurde gelöscht und ist in diesem System nicht mehr verfügbar.