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}
))}
)
}