70 von 78 Arbeitsblättern sind Git-Pushes, die das Kundenportal mit
employeeId "gitea" anlegt; in employeeName steht der Gitea-Name des
Pushers ("knso", "ANDJ", "JUSN" oder der volle Name). Sie gehören dem
Mitarbeiter mit diesem Kürzel oder Namen - der eigene employees-Eintrag
kommt jetzt aus dem AuthContext.
Bei offenen Pushes heißt der Button "Zeit nachtragen": Beginn ist Pflicht,
das Ende ist der Push. Beim Speichern wird isComment false, damit die Zeit
in der Arbeitszeit zählt (wie früher im Modal der alten Ticketzeile).
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
36 lines
1.0 KiB
React
36 lines
1.0 KiB
React
// Klick irgendwo ins Datumsfeld oeffnet den Kalender, nicht nur das kleine Symbol
|
|
const openCalendar = (e) => {
|
|
try {
|
|
e.currentTarget.showPicker?.()
|
|
} catch {
|
|
// aeltere Browser: Kalender bleibt ueber das Symbol erreichbar
|
|
}
|
|
}
|
|
|
|
/* Datum mit Kalender und Uhrzeit nebeneinander. Werte wie die Browser-Felder:
|
|
Datum "yyyy-mm-dd", Uhrzeit "hh:mm" - umgerechnet wird erst beim Speichern. */
|
|
export default function DateTimeInput({ id, date, time, onDateChange, onTimeChange, min, required, timeRequired, timeLabel }) {
|
|
return (
|
|
<div className="datetime-pair">
|
|
<input
|
|
id={id}
|
|
type="date"
|
|
className="form-control"
|
|
min={min || undefined}
|
|
required={required}
|
|
value={date}
|
|
onChange={(e) => onDateChange(e.target.value)}
|
|
onClick={openCalendar}
|
|
/>
|
|
<input
|
|
type="time"
|
|
className="form-control"
|
|
aria-label={timeLabel}
|
|
required={timeRequired}
|
|
value={time}
|
|
onChange={(e) => onTimeChange(e.target.value)}
|
|
/>
|
|
</div>
|
|
)
|
|
}
|