fixes
This commit is contained in:
@@ -64,6 +64,9 @@ document.addEventListener('DOMContentLoaded', async function() {
|
||||
// Ping-IP laden
|
||||
loadPingIP();
|
||||
|
||||
// Statistiken laden
|
||||
loadUserStats();
|
||||
|
||||
loadWeek();
|
||||
|
||||
document.getElementById('prevWeek').addEventListener('click', function() {
|
||||
@@ -520,6 +523,7 @@ function updateOvertimeDisplay() {
|
||||
|
||||
// Gesamtstunden berechnen - direkt aus DOM-Elementen lesen für Echtzeit-Aktualisierung
|
||||
let totalHours = 0;
|
||||
let vacationHours = 0;
|
||||
const startDateObj = new Date(startDate);
|
||||
for (let i = 0; i < 7; i++) {
|
||||
const date = new Date(startDateObj);
|
||||
@@ -532,8 +536,30 @@ function updateOvertimeDisplay() {
|
||||
const sickCheckbox = document.querySelector(`input[data-date="${dateStr}"][data-field="sick_status"]`);
|
||||
const sickStatus = sickCheckbox ? sickCheckbox.checked : (currentEntries[dateStr]?.sick_status || false);
|
||||
|
||||
// Wenn Urlaub oder Krank, zähle nur diese Stunden (nicht zusätzlich Arbeitsstunden)
|
||||
if (vacationType === 'full') {
|
||||
totalHours += 8; // Ganzer Tag Urlaub = 8 Stunden
|
||||
vacationHours += 8; // Ganzer Tag Urlaub = 8 Stunden
|
||||
} else if (vacationType === 'half') {
|
||||
vacationHours += 4; // Halber Tag Urlaub = 4 Stunden
|
||||
// Bei halbem Tag Urlaub können noch Arbeitsstunden vorhanden sein
|
||||
const startInput = document.querySelector(`input[data-date="${dateStr}"][data-field="start_time"]`);
|
||||
const endInput = document.querySelector(`input[data-date="${dateStr}"][data-field="end_time"]`);
|
||||
const breakInput = document.querySelector(`input[data-date="${dateStr}"][data-field="break_minutes"]`);
|
||||
|
||||
const startTime = startInput ? startInput.value : '';
|
||||
const endTime = endInput ? endInput.value : '';
|
||||
const breakMinutes = parseInt(breakInput ? breakInput.value : 0) || 0;
|
||||
|
||||
if (startTime && endTime) {
|
||||
const start = new Date(`2000-01-01T${startTime}`);
|
||||
const end = new Date(`2000-01-01T${endTime}`);
|
||||
const diffMs = end - start;
|
||||
const hours = (diffMs / (1000 * 60 * 60)) - (breakMinutes / 60);
|
||||
totalHours += hours;
|
||||
} else if (currentEntries[dateStr]?.total_hours) {
|
||||
// Fallback auf gespeicherte Werte
|
||||
totalHours += parseFloat(currentEntries[dateStr].total_hours) || 0;
|
||||
}
|
||||
} else if (sickStatus) {
|
||||
totalHours += 8; // Krank = 8 Stunden
|
||||
} else {
|
||||
@@ -559,24 +585,6 @@ function updateOvertimeDisplay() {
|
||||
}
|
||||
}
|
||||
|
||||
// Urlaubsstunden berechnen (Urlaub zählt als normale Arbeitszeit)
|
||||
let vacationHours = 0;
|
||||
const startDateObj2 = new Date(startDate);
|
||||
for (let i = 0; i < 7; i++) {
|
||||
const date = new Date(startDateObj2);
|
||||
date.setDate(date.getDate() + i);
|
||||
const dateStr = formatDate(date);
|
||||
|
||||
const vacationSelect = document.querySelector(`select[data-date="${dateStr}"][data-field="vacation_type"]`);
|
||||
const vacationType = vacationSelect ? vacationSelect.value : (currentEntries[dateStr]?.vacation_type || '');
|
||||
|
||||
if (vacationType === 'full') {
|
||||
vacationHours += 8; // Ganzer Tag = 8 Stunden
|
||||
} else if (vacationType === 'half') {
|
||||
vacationHours += 4; // Halber Tag = 4 Stunden
|
||||
}
|
||||
}
|
||||
|
||||
// Genommene Überstunden berechnen - direkt aus DOM lesen
|
||||
let overtimeTaken = 0;
|
||||
const startDateObj3 = new Date(startDate);
|
||||
@@ -1172,7 +1180,8 @@ async function submitWeekWithReason(versionReason) {
|
||||
const versionText = result.version ? ` (Version ${result.version})` : '';
|
||||
alert(`Stundenzettel wurde erfolgreich eingereicht${versionText}!`);
|
||||
loadWeek(); // Neu laden um Status zu aktualisieren
|
||||
// Statistiken werden durch updateOvertimeDisplay() aktualisiert
|
||||
// Statistiken aktualisieren
|
||||
loadUserStats();
|
||||
} else {
|
||||
console.error('Fehler-Details:', result);
|
||||
alert(result.error || 'Fehler beim Einreichen des Stundenzettels');
|
||||
|
||||
Reference in New Issue
Block a user