import { FaClock, FaUsers, FaChartLine } from 'react-icons/fa' export default function WorksheetStats({ worksheets }) { if (!worksheets || worksheets.length === 0) { return null } // Gesamtarbeitszeit const totalMinutes = worksheets .filter(ws => !ws.isComment) .reduce((sum, ws) => sum + (ws.totalTime || 0), 0) // Nach Mitarbeiter gruppieren const byEmployee = worksheets.reduce((acc, ws) => { const empId = ws.employeeId if (!acc[empId]) { acc[empId] = { name: ws.employeeName, short: ws.employeeShort, time: 0, count: 0 } } if (!ws.isComment) { acc[empId].time += ws.totalTime || 0 } acc[empId].count += 1 return acc }, {}) // Service Type Verteilung const byServiceType = worksheets.reduce((acc, ws) => { const type = ws.serviceType || 'Unknown' acc[type] = (acc[type] || 0) + 1 return acc }, {}) const formatTime = (minutes) => { if (!minutes || minutes === 0) return '0min' const hours = Math.floor(minutes / 60) const mins = minutes % 60 return hours > 0 ? `${hours}h ${mins}min` : `${mins}min` } return (
{/* Gesamtübersicht */}
Gesamtübersicht
Worksheets: {worksheets.length}
Arbeitszeit: {formatTime(totalMinutes)}
Kommentare: {worksheets.filter(ws => ws.isComment).length}
Ø pro WS: {formatTime(Math.round(totalMinutes / (worksheets.filter(ws => !ws.isComment).length || 1)))}
{/* Mitarbeiter Kombiniertes Diagramm */}
Mitarbeiter-Statistiken
{Object.keys(byEmployee).length === 0 ? (
Keine Mitarbeiter-Daten verfügbar
) : (
{(() => { const employeeArray = Object.values(byEmployee).sort((a, b) => b.time - a.time) const maxTime = Math.max(...employeeArray.map(e => e.time), 1) return employeeArray.map((emp, idx) => { const percentage = maxTime > 0 ? (emp.time / maxTime) * 100 : 0 return (
{emp.short && ( {emp.short} )} {emp.name}
{/* WS Anzahl am Anfang */}
WS {emp.count}
{/* Balken mit Zeit */}
{/* Zeit am Ende des Balkens */} {formatTime(emp.time)}
{/* Zeit außerhalb des Balkens (falls Balken zu kurz) */} {percentage < 30 && (
{formatTime(emp.time)}
)}
) }) })()}
)}
{/* Service Type Verteilung */}
Service Types
{Object.entries(byServiceType).map(([type, count]) => (
{type} {count}
))}
) }