212 lines
8.7 KiB
HTML
212 lines
8.7 KiB
HTML
<!DOCTYPE html>
|
||
<html lang="de">
|
||
<head>
|
||
<meta charset="UTF-8">
|
||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||
<title>Projektübersicht Elektro</title>
|
||
<link rel="stylesheet" href="styles.css?v=3">
|
||
<script src="https://cdnjs.cloudflare.com/ajax/libs/crypto-js/4.1.1/crypto-js.min.js"></script>
|
||
<script src="https://cdnjs.cloudflare.com/ajax/libs/pdfmake/0.2.10/pdfmake.min.js"></script>
|
||
<script src="https://cdnjs.cloudflare.com/ajax/libs/pdfmake/0.2.10/vfs_fonts.js"></script>
|
||
</head>
|
||
<body>
|
||
<div class="dept-tabs">
|
||
<button class="menu-corner-btn" onclick="toggleHeader()" title="Menü öffnen/schließen" aria-expanded="false" aria-controls="headerMenu">
|
||
<span class="header-toggle-icon">☰</span>
|
||
</button>
|
||
<div class="dept-tabs-center">
|
||
<button class="dept-tab active" data-dept="ELT" onclick="switchDepartment('ELT')">ELT</button>
|
||
<button class="dept-tab" data-dept="HLS" onclick="switchDepartment('HLS')">HLS</button>
|
||
<button class="dept-tab" data-dept="ARCH" onclick="switchDepartment('ARCH')">Architektur</button>
|
||
</div>
|
||
</div>
|
||
|
||
<header>
|
||
<div class="header-bar">
|
||
<h1 id="pageTitle">Projektübersicht Elektro</h1>
|
||
<img src="dein_bild.ico" alt="Logo" class="header-logo">
|
||
</div>
|
||
</header>
|
||
|
||
<div id="headerMenu" class="side-menu" aria-hidden="true">
|
||
<div class="side-menu-header">
|
||
<span>Menü</span>
|
||
<div class="side-menu-header-actions">
|
||
<button class="theme-toggle-circle" id="themeToggle" onclick="toggleTheme()" title="Hell/Dunkel umschalten">
|
||
<span id="themeIcon">🌙</span>
|
||
</button>
|
||
<button class="header-toggle secondary" onclick="toggleHeader()" title="Menü schließen">
|
||
<span class="header-toggle-icon">✕</span>
|
||
</button>
|
||
</div>
|
||
</div>
|
||
<div class="side-menu-content">
|
||
<div class="menu-section">
|
||
<div class="menu-label">Sitzung (KW)</div>
|
||
<select id="weekSelect" onchange="switchWeek(this.value)"></select>
|
||
<div id="weekDateDisplay" class="week-date"></div>
|
||
</div>
|
||
|
||
<hr class="menu-divider">
|
||
|
||
<div class="menu-section">
|
||
<div class="menu-label">Sitzungen verwalten</div>
|
||
<button onclick="newWeek()">+ Neue Sitzung</button>
|
||
<button class="secondary" onclick="cloneWeek()">Sitzung duplizieren</button>
|
||
<button class="danger" onclick="deleteWeek()">Sitzung löschen</button>
|
||
</div>
|
||
|
||
<hr class="menu-divider">
|
||
|
||
<div class="menu-section">
|
||
<div class="menu-label">Präsentation</div>
|
||
<button class="secondary" onclick="exportPDF()">PDF Export</button>
|
||
<button class="secondary" onclick="startShowMode()">Show Mode</button>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<!-- Show Mode Overlay -->
|
||
<div id="showModeOverlay" class="show-mode-overlay" style="display:none;" onclick="pauseShowMode()">
|
||
<div class="show-mode-header">
|
||
<span id="showModeTitle">Show Mode</span>
|
||
<button class="secondary" onclick="stopShowMode()">Beenden</button>
|
||
</div>
|
||
<div id="showModeContent" class="show-mode-content"></div>
|
||
<div id="showModePaused" class="show-mode-paused" style="display:none;">Pausiert – berühre zum Fortsetzen</div>
|
||
</div>
|
||
<div id="sideMenuBackdrop" class="side-menu-backdrop" onclick="toggleHeader()"></div>
|
||
|
||
<div class="tabs">
|
||
<button class="tab active" data-tab="board" onclick="showTab('board')">Projektboard</button>
|
||
<button class="tab" data-tab="load" onclick="showTab('load')">Auslastung</button>
|
||
<button class="tab" data-tab="projects" onclick="showTab('projects')">Projekte</button>
|
||
<button class="tab" data-tab="people" onclick="showTab('people')">Projektbeteiligte</button>
|
||
</div>
|
||
|
||
<div class="container">
|
||
<!-- BOARD -->
|
||
<div id="board">
|
||
<div class="legend">
|
||
<span><span class="swatch" style="background:#2f855a"></span> Beteiligt X</span>
|
||
<span><span class="swatch" style="background:#d69e2e"></span> Optional (X)</span>
|
||
</div>
|
||
<div class="table-wrap">
|
||
<table id="boardTable"></table>
|
||
</div>
|
||
<div id="boardLegend" style="margin-top:16px; padding:12px; background:#f7fafc; border-radius:6px; font-size:12px;"></div>
|
||
</div>
|
||
|
||
<!-- LOAD -->
|
||
<div id="load" style="display:none">
|
||
<div class="section-title">Auslastung der Projektbeteiligten</div>
|
||
<div class="toolbar" style="margin-bottom:12px">
|
||
<label>Auswertung:</label>
|
||
<select id="loadScope" onchange="renderLoad()">
|
||
<option value="current">Aktuelle Sitzung</option>
|
||
<option value="all">Alle Sitzungen (Historie)</option>
|
||
</select>
|
||
<span class="hint">Auswertung über den rollenspezifischen Gewichtungsfaktor je Leistungsphase.</span>
|
||
</div>
|
||
<div class="load-grid" id="loadGrid"></div>
|
||
</div>
|
||
|
||
<!-- PROJECTS -->
|
||
<div id="projects" style="display:none">
|
||
<div class="section-title">Projekte verwalten</div>
|
||
<div class="toolbar" style="margin-bottom:12px">
|
||
<button onclick="openNewProjModal()">+ Neues Projekt</button>
|
||
</div>
|
||
<div id="projectsList"></div>
|
||
</div>
|
||
|
||
<!-- PEOPLE -->
|
||
<div id="people" style="display:none">
|
||
<div class="section-title">Projektbeteiligte verwalten</div>
|
||
<div class="toolbar" style="margin-bottom:12px; align-items: flex-start;">
|
||
<input type="text" id="newPersonName" placeholder="Kürzel (z.B. AP)" style="width:100px">
|
||
<input type="text" id="newPersonFullName" placeholder="Voller Name (z.B. Anton Peters)">
|
||
<input type="text" id="newPersonEmail" placeholder="E-Mail (z.B. anton.peters@rauschenberg-ing.de)">
|
||
<div class="role-checkboxes">
|
||
<label><input type="checkbox" name="newPersonRoles" value="Planung"> Planung</label>
|
||
<label><input type="checkbox" name="newPersonRoles" value="Projektleitung"> Projektleitung</label>
|
||
<label><input type="checkbox" name="newPersonRoles" value="Bauüberwachung"> Bauüberwachung</label>
|
||
</div>
|
||
<button onclick="addPerson()">+ Person hinzufügen</button>
|
||
</div>
|
||
<div id="peopleList"></div>
|
||
</div>
|
||
</div>
|
||
|
||
<!-- Passwort Modal -->
|
||
<div class="modal-bg" id="passwordModal">
|
||
<div class="modal">
|
||
<h2>Zugriff erforderlich</h2>
|
||
<p style="color:#666;margin-bottom:12px">Bitte geben Sie das Passwort ein, um auf diesen Bereich zuzugreifen.</p>
|
||
<div class="form-row">
|
||
<label>Passwort</label>
|
||
<input type="password" id="passwordInput" placeholder="Passwort eingeben" onkeypress="if(event.key==='Enter') confirmPassword()">
|
||
</div>
|
||
<div class="toolbar">
|
||
<button onclick="confirmPassword()">Bestätigen</button>
|
||
<button class="secondary" onclick="closePasswordModal()">Abbrechen</button>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<!-- Aufwand je Leistungsphase Modal -->
|
||
<div class="modal-bg" id="lpModal" style="display:none">
|
||
<div class="modal">
|
||
<h2>Aufwand je Leistungsphase</h2>
|
||
<p style="color:#888;margin-bottom:6px" id="lpModalProject"></p>
|
||
<p class="hint" style="margin-bottom:10px">
|
||
Rollenbezogene Gewichtungsfaktoren je Leistungsphase (Standard 1,0).
|
||
Die amtierende Leistungsphase wird pro Projekt im Tab „Projekte" gewählt.
|
||
</p>
|
||
<div id="lpModalRows"></div>
|
||
<div class="toolbar" style="margin-top:12px">
|
||
<button onclick="saveLpModal()">Speichern</button>
|
||
<button class="secondary" onclick="closeLpModal()">Abbrechen</button>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<!-- Neues Projekt Modal (inkl. LP-Aufwand) -->
|
||
<div class="modal-bg" id="newProjModal" style="display:none">
|
||
<div class="modal">
|
||
<h2>Neues Projekt</h2>
|
||
<div class="form-row">
|
||
<label>Projekt-Nr.</label>
|
||
<input type="text" id="newProjNr" placeholder="z. B. 26-4001" style="width:100%">
|
||
</div>
|
||
<div class="form-row">
|
||
<label>Bezeichnung</label>
|
||
<input type="text" id="newProjName" placeholder="Projektbezeichnung" style="width:100%">
|
||
</div>
|
||
<div class="form-row">
|
||
<label>Gruppe</label>
|
||
<select id="newProjGroup" style="width:100%">
|
||
<option>Aktive Projekte</option>
|
||
<option>Kleine Projekte</option>
|
||
<option>In Anbahnung</option>
|
||
<option>Allgemein</option>
|
||
</select>
|
||
</div>
|
||
<div class="form-row">
|
||
<label>Aktive Leistungsphase</label>
|
||
<select id="newProjActiveLP" style="width:100%"></select>
|
||
</div>
|
||
<p class="hint" style="margin:8px 0 10px">
|
||
Rollenbezogener Gewichtungsfaktor je Leistungsphase (Standard 1,0).
|
||
</p>
|
||
<div id="newProjLpRows"></div>
|
||
<div class="toolbar" style="margin-top:12px">
|
||
<button onclick="saveNewProj()">Anlegen</button>
|
||
<button class="secondary" onclick="closeNewProjModal()">Abbrechen</button>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<script src="main.v2.js"></script>
|
||
</body>
|
||
</html> |