Wandtafel-Dashboard, Dateibereinigung und Auslastungs-Vereinfachung

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>
This commit is contained in:
erikandClaude Sonnet 5 committed 2026-10-02 15:14:47 +02:00
1 parent bc30f2900b
commit db63a29365
47 files changed
+16486 -3768

No files matched your search

+11 -2
View File
@@ -1,7 +1,7 @@
// -----------------------------
// Projektübersicht — globale Konstanten & Zustand
// -----------------------------
// Diese Datei wird als Erstes von Test.html geladen und
// Diese Datei wird als Erstes von App.html geladen und
// legt alle zentralen Konstanten (Leistungsphasen, Rollen, Gruppen, Abteilungen,
// Farben, Passwort-Hash) sowie den globalen In-Memory-Zustand (db, currentTab)
// fest. Sie stellt keine Funktionen, sondern nur Daten bereit, auf die alle
@@ -45,6 +45,14 @@ let APP_SETTINGS = {
vollzeitStundenProWoche: 40,
auslastungSchwelleGelb: 0.75,
auslastungSchwelleRot: 1.0,
// referenzHonorar/verteilzeitraumWochen fehlten hier, obwohl
// berechneAuslastung() (js/load/load.js) beide liest. Die Aufrufstellen
// fingen das mit eigenen Rückfallwerten ab (|| 250000, || 12) — die Vorgabe
// stand damit an drei Stellen, und eine im Admin-Bereich geänderte
// Server-Vorgabe wäre an den Rückfallwerten vorbeigelaufen. Werte identisch
// zu APP_SETTING_DEFS (server.js), wie bei allen Schlüsseln hier.
referenzHonorar: 250000,
verteilzeitraumWochen: 12,
aufwandVorlage: {
'LPH 1': { Planung: 0.4, Projektleitung: 0.2, Bauüberwachung: 0 },
'LPH 2': { Planung: 0.4, Projektleitung: 0.2, Bauüberwachung: 0 },
@@ -138,6 +146,7 @@ const TAB_SLUGS = {
people: 'Projektbeteiligte',
planung: 'Planung',
dashboard:'MeineAufgaben',
wand: 'Wandtafel',
settings: 'Einstellungen',
admin: 'Admin'
};
@@ -148,7 +157,7 @@ const TAB_BY_SLUG = Object.fromEntries(Object.entries(TAB_SLUGS).map(([k,v]) =>
// aber nicht mehr erzeugt, weil er in TAB_SLUGS fehlt.
TAB_BY_SLUG['Projekte'] = 'board';
// PLAN_SLUG: URL-Schlüssel des Projektbereichs (Bereich #plan von Test.html),
// PLAN_SLUG: URL-Schlüssel des Projektbereichs (Bereich #plan von App.html),
// im gleichen Deep-Link-Schema wie die Tabs: "/Projektplan/<Projektname>",
// dazu ?weekLabel=…&projNr=… als Parameter. Steht nicht in TAB_SLUGS, weil
// die Adresse das geöffnete Projekt mitträgt und deshalb nicht fest ist —