From 54114b5b9f274079b9181bd814dd6216cdad3bbc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Simon=20Gr=C3=BCssing?= Date: Thu, 11 Jun 2026 12:36:12 +0200 Subject: [PATCH] =?UTF-8?q?Add:=20PDF-Viewer=20inline=20+=20Team-Fortschri?= =?UTF-8?q?tt=20auf=20=C3=9Cbersicht-Tab?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Claude Sonnet 4.6 --- frontend/src/pages/OffboardingDetailPage.jsx | 65 +++++++++++++++++--- 1 file changed, 55 insertions(+), 10 deletions(-) diff --git a/frontend/src/pages/OffboardingDetailPage.jsx b/frontend/src/pages/OffboardingDetailPage.jsx index a6d1e2f..2813195 100644 --- a/frontend/src/pages/OffboardingDetailPage.jsx +++ b/frontend/src/pages/OffboardingDetailPage.jsx @@ -372,6 +372,45 @@ export default function OffboardingDetailPage() { ))} + {/* Team-Fortschritt */} +
+
πŸ‘₯ Checklisten-Fortschritt nach Team
+
+ {['it', 'hr', 'buchhaltung'].map(team => { + const teamProcs = processes.filter(p => p.responsible_team === team); + if (!teamProcs.length) return null; + const done = teamProcs.filter(p => !!checklist[`proc_${p.id}`]).length; + const pctT = Math.round(done / teamProcs.length * 100); + const tc = TEAM_COLORS[team]; + const isMyTeam = userTeam === team; + return ( +
+
+ {TEAM_ICONS[team]} + {TEAM_LABELS[team]} + {isMyTeam && Dein Team} +
+
+ {done} / {teamProcs.length} erledigt + {pctT}% +
+
+
+
+ {pctT < 100 && ( +
+ ⚠ {teamProcs.length - done} Aufgabe{teamProcs.length - done !== 1 ? 'n' : ''} offen +
+ )} + {pctT === 100 && ( +
βœ“ VollstΓ€ndig abgehakt
+ )} +
+ ); + })} +
+
+ {/* Allgemeine Infos */}
πŸ“‹ Allgemeine Infos
@@ -489,25 +528,31 @@ export default function OffboardingDetailPage() { )}
-
πŸ“„ PDF-Dokument
- {protocol.pdf_path ? ( -
-
PDF vorhanden
+
+
πŸ“„ PDF-Dokument
+ {protocol.pdf_file_path && (
- + πŸ“₯ Download {canAct && ( )}
-
+ )} +
+ {protocol.pdf_file_path ? ( +