Refactor TimeEntryService and StatusBox component to integrate missing break minutes into time calculations. Update logic to ensure "Offen" time reflects accurate values, including breaks, and adjust frontend display to clarify time representation without redundant pause indications. Enhance output formatting for improved clarity in time displays.
This commit is contained in:
@@ -247,19 +247,26 @@ const updateOpenTime = () => {
|
||||
|
||||
openTime.value = `${hours.toString().padStart(2, '0')}:${minutes.toString().padStart(2, '0')}:${seconds.toString().padStart(2, '0')}`
|
||||
|
||||
// Berechne "Normales Arbeitsende" = Jetzt + Offen + fehlende Pausen
|
||||
const totalRemainingSeconds = remainingSeconds + (missingBreakMinutes.value * 60)
|
||||
// Berechne "Normales Arbeitsende" = Jetzt + Offen (Pausen sind bereits in Offen enthalten)
|
||||
const totalRemainingSeconds = remainingSeconds
|
||||
const endTimestamp = now + (totalRemainingSeconds * 1000)
|
||||
const endDate = new Date(endTimestamp)
|
||||
const endHours = endDate.getHours()
|
||||
const endMinutes = endDate.getMinutes()
|
||||
const endSeconds = endDate.getSeconds()
|
||||
|
||||
// Zeige auch fehlende Pausen an (falls vorhanden)
|
||||
if (missingBreakMinutes.value > 0) {
|
||||
regularEndTime.value = `${endHours.toString().padStart(2, '0')}:${endMinutes.toString().padStart(2, '0')}:${endSeconds.toString().padStart(2, '0')} (+${missingBreakMinutes.value}min Pause)`
|
||||
} else {
|
||||
regularEndTime.value = `${endHours.toString().padStart(2, '0')}:${endMinutes.toString().padStart(2, '0')}:${endSeconds.toString().padStart(2, '0')}`
|
||||
// Ausgabe ohne zusätzlichen Pausen-Hinweis; Zeit stammt bereits inkl. Pausen aus Backend
|
||||
regularEndTime.value = `${endHours.toString().padStart(2, '0')}:${endMinutes.toString().padStart(2, '0')}:${endSeconds.toString().padStart(2, '0')} Uhr`
|
||||
|
||||
// Override: Berechne Normales Arbeitsende deterministisch aus Start + 8h + fehlende Pausen
|
||||
if (workStartTime.value) {
|
||||
const baseDailyMinutes = 8 * 60 // Fallback auf 8h
|
||||
const endTs = workStartTime.value + (baseDailyMinutes + (missingBreakMinutes.value || 0)) * 60 * 1000
|
||||
const endDt = new Date(endTs)
|
||||
const eh = endDt.getHours()
|
||||
const em = endDt.getMinutes()
|
||||
const es = endDt.getSeconds()
|
||||
regularEndTime.value = `${eh.toString().padStart(2, '0')}:${em.toString().padStart(2, '0')}:${es.toString().padStart(2, '0')} Uhr`
|
||||
}
|
||||
} else {
|
||||
openTime.value = 'Arbeitsende erreicht'
|
||||
@@ -384,9 +391,9 @@ onBeforeUnmount(() => {
|
||||
|
||||
const displayRows = computed(() => {
|
||||
const rows = {
|
||||
'Derzeit gearbeitet': currentlyWorkedTime.value, // Verwende berechneten Wert
|
||||
'Offen': openTime.value, // Verwende berechneten Wert
|
||||
'Normales Arbeitsende': regularEndTime.value // Verwende berechneten Wert
|
||||
'Derzeit gearbeitet': currentlyWorkedTime.value === '—' ? currentlyWorkedTime.value : currentlyWorkedTime.value + ' h',
|
||||
'Offen': openTime.value === '—' ? openTime.value : openTime.value + ' h',
|
||||
'Normales Arbeitsende': regularEndTime.value // Verwende berechneten Wert (hat bereits "Uhr")
|
||||
}
|
||||
|
||||
// Füge andere Stats hinzu
|
||||
@@ -416,16 +423,19 @@ const displayRows = computed(() => {
|
||||
if (key === 'overtime') {
|
||||
const isNegative = val.startsWith('-');
|
||||
const displayLabel = isNegative ? 'Fehlzeit (Woche)' : 'Überstunden (Woche)';
|
||||
const displayValue = isNegative ? val.substring(1) : val; // Entferne Minus-Zeichen
|
||||
const displayValue = isNegative ? val.substring(1) + ' h' : val + ' h'; // Entferne Minus-Zeichen, füge " h" hinzu
|
||||
rows[displayLabel] = displayValue;
|
||||
} else if (key === 'totalOvertime') {
|
||||
const isNegative = val.startsWith('-');
|
||||
const displayLabel = isNegative ? 'Fehlzeit (Gesamt)' : 'Überstunden (Gesamt)';
|
||||
const displayValue = isNegative ? val.substring(1) : val; // Entferne Minus-Zeichen
|
||||
const displayValue = isNegative ? val.substring(1) + ' h' : val + ' h'; // Entferne Minus-Zeichen, füge " h" hinzu
|
||||
rows[displayLabel] = displayValue;
|
||||
} else if (key === 'adjustedEndTodayGeneral' || key === 'adjustedEndTodayWeek') {
|
||||
// Füge " Uhr" zu Uhrzeiten hinzu
|
||||
rows[label] = val + ' Uhr';
|
||||
} else if (key === 'weekWorktime' || key === 'openForWeek' || key === 'nonWorkingHours') {
|
||||
// Füge " h" zu Zeiten hinzu (außer bei "—")
|
||||
rows[label] = val === '—' ? val : val + ' h';
|
||||
} else {
|
||||
rows[label] = val;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user