// Hauswart screens const HauswartDashboard = ({onNav, ctx}) => { const [tasks, setTasks] = React.useState(HAUSWART_TASKS); const [tickets, setTickets] = React.useState([]); const toggle = (id) => setTasks(tasks.map(t=>t.id===id?{...t, done:!t.done}:t)); const firstName = ctx?.session?.name?.split(' ')[0] || 'Hauswart'; const now = new Date(); const dateStr = now.toLocaleDateString('de-CH', {weekday:'long', day:'numeric', month:'long'}); React.useEffect(() => { Store.getTickets().then(ts => setTickets(ts.filter(t => t.status !== 'erledigt'))); }, [ctx?.dataTick]); return ( <> t.due==='Heute').length} Aufgaben heute · ${tickets.length} offene Meldungen`} actions={} />
t.due==='Heute').length)} unit="Aufg." delta={`${tasks.filter(t=>t.due==='Heute'&&t.done).length} erledigt`} deltaDir="up"/> t.urgency==='dringend').length + ' dringend'}/>
Woche}>
{tasks.filter(t=>t.due==='Heute').map(t=>(
{t.title}
{t.type}·{t.prop} {t.ticket && <>·{t.ticket}}
{!t.done && }
))}
{tasks.filter(t=>t.due!=='Heute').length > 0 && <>
DIESE WOCHE
{tasks.filter(t=>t.due!=='Heute').map(t=>(
{t.title}
{t.prop} · {t.type}
{t.due}
))}
} {tickets.length}}> {tickets.length === 0 ? (
Keine offenen Meldungen.
) : ( {tickets.map(t=>( ))}
{t.id}
{t.title}
{t.unit||'—'} · {t.category}
{STATUS_LABELS[t.status]?.label||t.status}
)}
{[ {d:'Mo',l:'Treppenhaus',w:'EG–2.OG',s:'done'}, {d:'Di',l:'Waschküche',w:'Reinigung + Service',s:'open'}, {d:'Mi',l:'Aussen­bereich',w:'Garten & Wege',s:'open'}, {d:'Do',l:'Treppenhaus',w:'3.OG–DG',s:'open'}, {d:'Fr',l:'Container',w:'Abfall & Recycling',s:'open'}, ].map((r,i)=>(
{r.d}
{r.l}
{r.w}
{r.s==='done'?erledigt:offen}
))}
{[['Name', ctx?.session?.name], ['E-Mail', ctx?.session?.email], ['Rolle', 'Hauswart']].map(([k,v])=>(
{k} {v||'—'}
))}
); }; Object.assign(window, {HauswartDashboard});