Neue Wandtafel (Touch-Dashboard für Kiosk-Anzeige): Auslastung/Besprochen je Gewerk, Aufgaben-Kennzahlen, Ereignis-Feed nach Art gruppiert, vollständige Projektliste zum Scrollen, automatischer Rücksprung nach Untätigkeit mit sichtbarem Countdown. Eigene Kiosk-Rolle ohne Fachrolle und ohne Schreibrechte. Auslastung: Möglichkeit zum Wechsel der ausgewerteten Sitzung entfernt. Aufräumen nicht mehr benötigter Dateien, README auf aktuellen Stand gebracht. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
41 lines
1.6 KiB
JavaScript
41 lines
1.6 KiB
JavaScript
// -----------------------------
|
|
// Projektübersicht — Datenbank-Backup (Download)
|
|
// -----------------------------
|
|
// Stellt downloadBackup() bereit: lädt einen konsistenten Snapshot der
|
|
// SQLite-Datenbank über GET /backup als .db-Datei herunter (VACUUM INTO,
|
|
// WAL-sicher). Hängt im Seitenmenü von App.html am Button "DB Backup" und
|
|
// nutzt baseUrl() aus js/server.js. Ergänzt das automatische Backup, das der
|
|
// Server beim Start in sessions/backups/ ablegt.
|
|
|
|
// downloadBackup: fordert den DB-Snapshot an und startet den Download.
|
|
// Kein Parameter, keine Rückgabe; Fehler werden über ein Alert gemeldet.
|
|
async function downloadBackup(){
|
|
try {
|
|
const res = await fetch(baseUrl() + '/backup');
|
|
if(!res.ok){
|
|
let msg = 'Server HTTP ' + res.status;
|
|
try {
|
|
const json = await res.json();
|
|
if(json && json.error) msg = json.error;
|
|
} catch(e){ /* Antwort war kein JSON */ }
|
|
throw new Error(msg);
|
|
}
|
|
const blob = await res.blob();
|
|
// heuteIso() (js/utils.js) statt toISOString(): Letzteres rechnet nach
|
|
// UTC um und datierte das Backup zwischen 0 und 2 Uhr Ortszeit auf den
|
|
// Vortag.
|
|
const filename = 'projektuebersicht_backup_' + heuteIso() + '.db';
|
|
|
|
const url = URL.createObjectURL(blob);
|
|
const a = document.createElement('a');
|
|
a.href = url;
|
|
a.download = filename;
|
|
document.body.appendChild(a);
|
|
a.click();
|
|
a.remove();
|
|
setTimeout(() => URL.revokeObjectURL(url), 1000);
|
|
} catch(err){
|
|
console.error('DB-Backup fehlgeschlagen:', err);
|
|
alert('DB-Backup fehlgeschlagen: ' + (err.message || err));
|
|
}
|
|
} |