// ----------------------------- // Projektübersicht — globale Konstanten & Zustand // ----------------------------- // Diese Datei wird als Erstes von Test.html und project-plan.html geladen und // legt alle zentralen Konstanten (Leistungsphasen, Rollen, Gruppen, Abteilungen, // Farben, Passwort-Hash) sowie den globalen In-Memory-Zustand (db, // currentDepartment, currentTab) fest. Sie stellt keine Funktionen, sondern nur // Daten bereit, auf die alle weiteren Module (js/store.js, js/board.js, // js/gantt.js, js/plan/*, ...) zugreifen. Auf dem Plan-Gantt lädt zusätzlich // js/plan/plan-state.js Zustand für die Planungsseite. // Konstanten: Leistungsphasen, Rollen und LocalStorage-Key const LPHS = ["LPH 1","LPH 2","LPH 3","LPH 4","LPH 5","LPH 6","LPH 7","LPH 8", "W+M"]; // Spalten für Leistungsphasen const ROLES = ["Planung","Projektleitung","Bauüberwachung"]; // Gruppierung der Personen const GROUP_ORDER = ["Aktive Projekte","Kleine Projekte","In Anbahnung","Allgemein"]; // Reihenfolge der Projektgruppen const STORAGE = "projuebersicht_v1"; // Durch lokale UI-State-Persistenz genutzter Key // DEFAULT_DEPARTMENT: Fallback-Abteilung beim ersten Start const DEFAULT_DEPARTMENT = 'ELT'; // DEFAULT_TAB: Tab, der beim ersten Start angezeigt wird ('board' = Projektboard) const DEFAULT_TAB = 'board'; // Farbpalette für GANTT-Balken (eine pro Projekt, wiederholend) const GANTT_COLORS = ['#0071e3','#248a3d','#b25000','#7c3aed','#d70015','#0ca678','#d9480f','#5f3dc4']; // Passwortschutz: SHA256-Hash des erlaubten Passworts. // Wenn Sie das Passwort ändern möchten, generieren Sie den SHA256-Hash (https://emn178.github.io/online-tools/sha256.html) // des neuen Passworts und ersetzen Sie den Wert hier. const PROTECTED_PASSWORD_HASH = "107bab579e8500e459690cf48ba77de32be43cadb8421bbe79fad20a55b39b6f"; // requestedAction speichert die Aktion, die nach erfolgreicher Passwort-Eingabe ausgeführt wird. let requestedAction = null; // saveSyncTimer: Handle für den debounced Speicher-Timer (Sync auf Server) let saveSyncTimer = null; // isAuthenticated: Merkt sich, ob das Passwort-Schutz-Modal bereits erfolgreich bestätigt wurde let isAuthenticated = false; // In-memory Datenbank: Sitzungen (weeks) und aktuell ausgewählte Sitzung let db = { weeks: [], currentWeek: null, globalPeople: {} }; // Aktuelle Abteilung (ELT, HLS, ARCH). Daten werden in sessions// getrennt gespeichert. let currentDepartment = DEFAULT_DEPARTMENT; // currentTab: aktuell aktiver Tab der Hauptseite (z. B. 'board') let currentTab = DEFAULT_TAB; // DEPARTMENTS: Auflistung der gültigen Abteilungen mit Anzeigename und Icon const DEPARTMENTS = { ELT: { label: 'Elektro', icon: '' }, HLS: { label: 'HLS', icon: '' }, ARCH: { label: 'Architektur', icon: '' } };