update Mo 4. Mai 16:31:01 CEST 2020

This commit is contained in:
Robert Richter 2020-05-04 16:31:01 +02:00
parent 15eabd37e9
commit 8f62a88b94
10 changed files with 35 additions and 9 deletions

View File

@ -489,14 +489,14 @@ setInterval(set_clock, 1000);
// Uhrzeit verschieben // Uhrzeit verschieben
$(document).ready(function () { $(document).ready(function () {
setTimeout(function () { setTimeout(function () {
// Position neu setzen
var newq = makeNewPosition(); var newq = makeNewPosition();
$('.clock_y').css('top', newq[0]); $('.clock_y').css('top', newq[0]);
$('.clock_y').css('left', newq[1]); $('.clock_y').css('left', newq[1]);
// langsam verschieben
animateDiv(); animateDiv();
}, 1000); }, 500);
}); });
// neue Random-Position fuer Uhrzeit ermitteln // neue Random-Position fuer Uhrzeit ermitteln

View File

@ -25,6 +25,8 @@ app_cfg.public = {
version: 'Version 1.2', version: 'Version 1.2',
map_tile: 'https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', map_tile: 'https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png',
map_attribution: '&copy; <a href="https://www.openstreetmap.org/copyright">OpenStreetMap</a> contributors' map_attribution: '&copy; <a href="https://www.openstreetmap.org/copyright">OpenStreetMap</a> contributors'
// TODO: Link Impressium
// TODO: Link Datenschutzerklärung
}; };
app_cfg.remote = { app_cfg.remote = {

View File

@ -101,5 +101,10 @@ nsp_dbrd.on('connection', function (socket) {
}); });
// Socket.IO API
// TODO: Schnittstelle zu weiterem Wachalarm-Web-Server um Einsätze und Rückmeldungen untereinander auszutauschen
}; };

View File

@ -1,6 +1,7 @@
module.exports = function (fs, bcrypt, app_cfg) { module.exports = function (fs, bcrypt, app_cfg) {
// TODO: gegen better-sqlite3 ersetzen // TODO: gegen better-sqlite3 ersetzen
// BUG: Zeit von UTC auf lokale Zeit anpassen
// Datenbank einrichten // Datenbank einrichten
const sqlite3 = require('sqlite3').verbose(); const sqlite3 = require('sqlite3').verbose();

View File

@ -2,10 +2,12 @@ module.exports = function (io, sql, tw, async, app_cfg) {
// Einsatzmeldung in Datenbank speichern // Einsatzmeldung in Datenbank speichern
function einsatz_speichern(einsatz_rohdaten) { function einsatz_speichern(einsatz_rohdaten) {
// TODO: Einsatzdaten auf Validität prüfen
// Einsatzmeldung (JSON) speichern // Einsatzmeldung (JSON) speichern
sql.db_einsatz_speichern(einsatz_rohdaten, function (waip_id) { sql.db_einsatz_speichern(einsatz_rohdaten, function (waip_id) {
sql.db_log('WAIP', 'DEBUG: Neuer Einsatz mit der ID ' + waip_id); sql.db_log('WAIP', 'DEBUG: Neuer Einsatz mit der ID ' + waip_id);
// nach dem Speichern anhand der waip_id die beteiligten Wachennummern zum Einsatz ermitteln // nach dem Speichern anhand der waip_id die beteiligten Wachennummern zum Einsatz ermitteln
// FIXME: Einsatz nur verteilen, falls dieser nicht bereits so angezeigt wurde (Doppelalarmierung vermeiden)
sql.db_get_einsatz_rooms(waip_id, function (socket_rooms) { sql.db_get_einsatz_rooms(waip_id, function (socket_rooms) {
if (socket_rooms) { if (socket_rooms) {
socket_rooms.forEach(function (rooms) { socket_rooms.forEach(function (rooms) {
@ -303,13 +305,13 @@ module.exports = function (io, sql, tw, async, app_cfg) {
}; };
}); });
// TODO: an Dashboard senden, das der Einsatz gelöscht wurde // TODO: an Dashboard senden, das der Einsatz gelöscht wurde
// TODO: Rueckmeldung löschen, und vorher backup // FIXME: Rueckmeldung löschen, und vorher backup
// Einsatz löschen // Einsatz löschen
sql.db_log('WAIP', 'Einsatz ' + waip_id + ' wird gelöscht'); sql.db_log('WAIP', 'Einsatz ' + waip_id + ' wird gelöscht');
sql.db_einsatz_loeschen(waip_id); sql.db_einsatz_loeschen(waip_id);
}; };
}); });
// TODO: löschen alter Sounddaten nach alter (15min) und socket-id (nicht mehr verbunden) // löschen alter Sounddaten nach alter (15min) und socket-id (nicht mehr verbunden)
const fs = require('fs'); const fs = require('fs');
fs.readdirSync(process.cwd() + app_cfg.global.soundpath).forEach(file => { fs.readdirSync(process.cwd() + app_cfg.global.soundpath).forEach(file => {
// nur die mp3s von alten clients loeschen // nur die mp3s von alten clients loeschen

View File

@ -5,6 +5,10 @@ append head
script(src='/js/datatables.min.js') script(src='/js/datatables.min.js')
script(src='/js/dataTables.bootstrap4.min.js') script(src='/js/dataTables.bootstrap4.min.js')
// TODO: Seite mit aktiven Clients anpassen:
    - nicht zwingend als Tabelle, sondern eher als .col mit Buttons um Aktionen an Clients zu senden
    - einzelnen Client über Verwaltungsoberfläche neu laden lassen
block content block content
main(role='main') main(role='main')
.container .container

View File

@ -1,4 +1,6 @@
// BUG: Darstellung in Safari-Mobil fehlerhaft (generell Mobil, ggf. extra Darstellung)
#waiptableau.fullheight.row.no-gutters #waiptableau.fullheight.row.no-gutters
// BUG: Buttons für Sounds werden fehlerhaft dargestellt
.col-6.h-5.d-flex.align-items-center.py-1.text-muted.tf_singleline .col-6.h-5.d-flex.align-items-center.py-1.text-muted.tf_singleline
button#replay.btn.btn-outline-light.h-100.py-1 button#replay.btn.btn-outline-light.h-100.py-1
.ion-md-play-circle .ion-md-play-circle

View File

@ -1,5 +1,12 @@
extends layout extends layout
// TODO: - Login verbessern:
    - Login-Seite benötigt Fehlerrückmeldung (wie Nutzerverwaltung): falsches Kennwort, Nutzer nicht vorhanden etc.
    - Login/Logout protokollieren
    - fehlerhafte/doppelte Logins protokollieren 
    - prüfen ob es sinnvoll ist, bereits eingeloggte User nicht mehr zulassen (Session prüfen)
    - bei fehlendem Login zur Login-Seite weiterleiten und nach dem Login die zuvor besuchte Seite anzeigen
block content block content
main(role='main') main(role='main')
.container .container

View File

@ -38,6 +38,7 @@ block content
script(src='/js/leaflet.js') script(src='/js/leaflet.js')
script. script.
// TODO: internen Kartendienst nutzen // TODO: internen Kartendienst nutzen
// TODO: Kartendienst-Credit anzeigen
// var map_tile = !{JSON.stringify(public.map_tile).replace(/<\//g, '<\\/')} // var map_tile = !{JSON.stringify(public.map_tile).replace(/<\//g, '<\\/')}
var data = !{JSON.stringify(dataSet).replace(/<\//g, '<\\/')} var data = !{JSON.stringify(dataSet).replace(/<\//g, '<\\/')}
for (var i in data) { for (var i in data) {

View File

@ -22,4 +22,6 @@ block content
if(i+1 == reset_counter) if(i+1 == reset_counter)
option(selected)= i+1 option(selected)= i+1
else else
option= i+1 option= i+1
// TODO: anpassen der Durchsage je Benutzer, durch eigene Ersetzung und Reihenfolge
// TODO: Ausnahmen festlegen können, wann keine Musik abgespielt wird