diff --git a/web-dashboard/index.html b/web-dashboard/index.html index 846a517..a80c02a 100644 --- a/web-dashboard/index.html +++ b/web-dashboard/index.html @@ -321,7 +321,10 @@ line-height: 1.4; white-space: normal; } - .calendar-badge-task { background: var(--green-bg, #E4F3EA); color: var(--green, #2f8f5b); } + .calendar-badge-task-pending { background: var(--yellow-bg, #FDF3DC); color: var(--yellow, #B4780A); } + .calendar-badge-task-completed { background: #DCEAFB; color: #2062B4; } + .calendar-badge-task-verified { background: var(--green-bg, #E4F3EA); color: var(--green, #2f8f5b); } + .calendar-badge-task-missed { background: #FBE0DE; color: #C23B2E; } .calendar-badge-absence { background: var(--yellow-bg, #FDF3DC); color: var(--yellow, #B4780A); } .inventory-thumb { @@ -792,7 +795,10 @@

Putzplan-Kalender & Abwesenheiten

- Zeigt für alle sichtbar, wer wann für welchen Bereich zuständig ist, sowie eingetragene Abwesenheiten (Urlaub, "kann nicht"). + Zeigt für alle sichtbar, wer wann für welchen Bereich zuständig ist und ob die Aufgabe bereits erledigt wurde, sowie eingetragene Abwesenheiten (Urlaub, "kann nicht"). +

+

+ ○ Offen   ✓ Erledigt   ✓✓ Bestätigt   ✕ Verpasst

@@ -2088,8 +2094,17 @@ cell.appendChild(el('div', 'calendar-day-num', String(d.getDate()))); calendarData.tasks.filter(t => sameDay(new Date(t.dueDate), d)).forEach(t => { - const label = `${t.area}${t.assignedUser ? ' · ' + t.assignedUser.fullName.split(' ')[0] : ''}`; - cell.appendChild(el('div', 'calendar-badge calendar-badge-task', label)); + const statusIcon = { PENDING: '○', COMPLETED: '✓', VERIFIED: '✓✓', MISSED: '✕' }[t.status] || ''; + const statusClass = { + PENDING: 'calendar-badge-task-pending', + COMPLETED: 'calendar-badge-task-completed', + VERIFIED: 'calendar-badge-task-verified', + MISSED: 'calendar-badge-task-missed', + }[t.status] || 'calendar-badge-task-pending'; + const label = `${statusIcon} ${t.area}${t.assignedUser ? ' · ' + t.assignedUser.fullName.split(' ')[0] : ''}`; + const badge = el('div', `calendar-badge ${statusClass}`, label); + badge.title = `${CLEANING_STATUS_LABEL[t.status] || t.status}`; + cell.appendChild(badge); }); calendarData.absences.filter(a => d >= stripTime(new Date(a.startDate)) && d <= stripTime(new Date(a.endDate))).forEach(a => { cell.appendChild(el('div', 'calendar-badge calendar-badge-absence', `${a.user.fullName.split(' ')[0]} abwesend`));