import { useEffect, useMemo, useState } from 'react' import { FaClock } from 'react-icons/fa' /** Minuten zwischen hhmm-Zeiten, Übernacht (+24h) wie useWorksheets.calculateTime. */ function calculateMinutes(startTime, endTime) { if (!startTime || !endTime) return null const sh = parseInt(startTime.substring(0, 2), 10) const sm = parseInt(startTime.substring(2, 4), 10) const eh = parseInt(endTime.substring(0, 2), 10) const em = parseInt(endTime.substring(2, 4), 10) if ([sh, sm, eh, em].some(Number.isNaN)) return null let diff = eh * 60 + em - (sh * 60 + sm) if (diff < 0) diff += 24 * 60 return diff } function formatMinutes(minutes) { if (minutes === null || minutes === undefined) return '–' const h = Math.floor(minutes / 60) const m = minutes % 60 return h > 0 ? `${h}h ${m}min` : `${m}min` } /** * Startzeit fuer Git-Push-Worksheets nachtragen: Die Endzeit wurde beim Push * automatisch gesetzt, hier wird der Arbeitsbeginn erfasst. Beim Speichern * wird totalTime berechnet und isComment auf false gesetzt, damit der Eintrag * in der Arbeitszeit-Statistik zaehlt. */ export default function EditWorksheetTimeModal({ isOpen, onClose, worksheet, onSave }) { const [startDate, setStartDate] = useState('') const [startTime, setStartTime] = useState('') const [saving, setSaving] = useState(false) const [error, setError] = useState('') useEffect(() => { if (isOpen && worksheet) { setStartDate(worksheet.startDate || worksheet.endDate || '') setStartTime(worksheet.startTime || '') setError('') } }, [isOpen, worksheet]) const totalTime = useMemo( () => calculateMinutes(startTime, worksheet?.endTime), [startTime, worksheet] ) if (!isOpen || !worksheet) return null const handleSubmit = async (e) => { e.preventDefault() if (!/^\d{2}\.\d{2}\.\d{4}$/.test(startDate)) { setError('Startdatum bitte als TT.MM.JJJJ angeben.') return } if (!/^\d{4}$/.test(startTime)) { setError('Startzeit bitte als HHMM angeben (z.B. 0930).') return } if (totalTime === null) { setError('Zeit konnte nicht berechnet werden.') return } setSaving(true) setError('') const result = await onSave(worksheet, { startDate, startTime, totalTime, isComment: false, }) setSaving(false) if (result?.success) { onClose() } else { setError(result?.error || 'Speichern fehlgeschlagen') } } return (
×

Zeit nachtragen – WSID {worksheet.wsid}

Die Endzeit wurde beim Git-Push automatisch gesetzt ({worksheet.endDate} {worksheet.endTime ? `${worksheet.endTime.substring(0, 2)}:${worksheet.endTime.substring(2, 4)}` : ''}). Trage hier ein, wann die Arbeit begonnen hat.

{error && (
{error}
)}
setStartDate(e.target.value)} placeholder="11.07.2026" required />
setStartTime(e.target.value.replace(/[^0-9]/g, '').slice(0, 4))} placeholder="0930" maxLength={4} required />
{formatMinutes(totalTime)}
) }