- 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").
+
+
@@ -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`));