To-DO abgearbeitet

This commit is contained in:
2026-02-04 19:03:42 +01:00
parent 76f63ed4ec
commit 063fb68b12
5 changed files with 158 additions and 91 deletions

View File

@@ -374,8 +374,11 @@ function renderWeek() {
endDate.setDate(endDate.getDate() + 6);
const calendarWeek = getCalendarWeek(currentWeekStart);
const submittedText = currentEntries._weekSubmitted === true
? `<br><span style="color: #28a745;">(bereits Abgegeben)</span>`
: '';
document.getElementById('weekTitle').innerHTML =
`Kalenderwoche ${calendarWeek}<br>${formatDateDE(currentWeekStart)} - ${formatDateDE(formatDate(endDate))}`;
`Kalenderwoche ${calendarWeek}<br>${formatDateDE(currentWeekStart)} - ${formatDateDE(formatDate(endDate))}${submittedText}`;
let html = `
<div class="timesheet-grid">
@@ -1410,9 +1413,10 @@ function checkWeekComplete() {
let allWeekdaysFilled = true;
const missingFields = [];
// Prüfe nur Werktage (Montag-Freitag, i < 5)
// Samstag und Sonntag (i >= 5) sind optional
for (let i = 0; i < 5; i++) {
// Prüfe nur so viele Tage wie Arbeitstage pro Woche festgelegt sind
// Samstag und Sonntag sind optional
const requiredDays = userArbeitstage || 5; // Fallback auf 5 wenn nicht gesetzt
for (let i = 0; i < requiredDays; i++) {
const date = new Date(startDate);
date.setDate(date.getDate() + i);
const dateStr = formatDate(date);
@@ -1482,16 +1486,19 @@ function checkWeekComplete() {
}
}
// Prüfe ob die Woche bereits eingereicht wurde (nicht der Status einzelner Einträge!)
// Prüfe ob die Woche bereits eingereicht wurde (für Anzeige, aber Button bleibt aktiv für neue Versionen)
const weekIsSubmitted = currentEntries._weekSubmitted === true;
const submitButton = document.getElementById('submitWeek');
if (submitButton) {
submitButton.disabled = weekIsSubmitted || !allWeekdaysFilled;
// Button nur deaktivieren wenn nicht alle Felder ausgefüllt sind
// Resubmission ist erlaubt, da Versionierung unterstützt wird
submitButton.disabled = !allWeekdaysFilled;
if (weekIsSubmitted) {
submitButton.title = 'Diese Woche wurde bereits eingereicht und kann nicht mehr geändert werden.';
} else if (!allWeekdaysFilled) {
submitButton.title = `Bitte füllen Sie alle Werktage (Montag bis Freitag) aus (Start- und Endzeit). Wochenende ist optional. Fehlend: ${missingFields.join(', ')}`;
if (!allWeekdaysFilled) {
const requiredDaysText = requiredDays === 1 ? '1 Tag' : `${requiredDays} Tage`;
submitButton.title = `Bitte füllen Sie alle ${requiredDaysText} (Start- und Endzeit) aus. Wochenende ist optional. Fehlend: ${missingFields.join(', ')}`;
} else if (weekIsSubmitted) {
submitButton.title = 'Diese Woche wurde bereits eingereicht. Beim erneuten Abschicken wird eine neue Version erstellt.';
} else {
submitButton.title = '';
}
@@ -1545,7 +1552,7 @@ async function submitWeek() {
console.log('Prüfe Validierung für Woche:', currentWeekStart);
// Frontend-Validierung: Prüfen ob alle Werktage (Montag-Freitag) ausgefüllt sind
// Frontend-Validierung: Prüfen ob so viele Tage ausgefüllt sind wie Arbeitstage pro Woche festgelegt sind
let missingFields = [];
let firstMissingInput = null;
@@ -1556,7 +1563,8 @@ async function submitWeek() {
el.style.backgroundColor = '';
});
for (let i = 0; i < 5; i++) {
const requiredDays = userArbeitstage || 5; // Fallback auf 5 wenn nicht gesetzt
for (let i = 0; i < requiredDays; i++) {
const date = new Date(startDate);
date.setDate(date.getDate() + i);
const dateStr = formatDate(date);
@@ -1644,7 +1652,8 @@ async function submitWeek() {
}
// Detaillierte Fehlermeldung
const message = `❌ Bitte füllen Sie alle Werktage (Montag bis Freitag) vollständig aus!\n\n` +
const requiredDaysText = requiredDays === 1 ? '1 Tag' : `${requiredDays} Tage`;
const message = `❌ Bitte füllen Sie alle ${requiredDaysText} vollständig aus!\n\n` +
`Fehlende Eingaben:\n${missingFields.map((field, index) => `\n${index + 1}. ${field}`).join('')}\n\n` +
`Die fehlenden Felder wurden rot markiert.\n` +
`Hinweis: Samstag und Sonntag sind optional.`;