import Link from 'next/link'; import { Fortschrittsbalken } from '@/komponenten/Fortschrittsbalken'; import type { Wochensicht } from '@/lib/planung/sicht'; import { alsDatumText, kalenderwocheText } from '@/lib/zeit'; const statusText: Record = { geplant: { text: 'geplant', ton: 'neutral', zeichen: '○' }, laufend: { text: 'läuft', ton: 'warnung', zeichen: '▶' }, abgeschlossen: { text: 'abgeschlossen', ton: 'gut', zeichen: '✓' }, }; /** * Die Wochenansicht – für den Azubi die Startseite, für den Ausbilder dieselbe * Woche in der Ansicht seines Azubis. */ export function WochenAnsicht({ sicht, istAzubi, wochenLink, }: { sicht: Wochensicht; istAzubi: boolean; /** Vorlage für den Verweis auf eine andere Woche, `{nr}` wird ersetzt. */ wochenLink: string; }) { const zurWoche = (nummer: number) => wochenLink.replace('{nr}', String(nummer)); const { woche, planung, fortschritt, tage } = sicht; const status = statusText[planung.status] ?? statusText.geplant!; return (
Woche {woche.nummer} {status.zeichen} {status.text} {alsDatumText(planung.geplantVon)} – {alsDatumText(planung.geplantBis)} · {kalenderwocheText(planung.geplantVon)}

{woche.titel}

{woche.leitfrage}

{woche.ziel}

{planung.tatsaechlichVon && planung.tatsaechlichVon !== planung.geplantVon ? (

Tatsächlich begonnen am {alsDatumText(planung.tatsaechlichVon)}, geplant war der{' '} {alsDatumText(planung.geplantVon)}.

) : null} {planung.notiz ? (

Notiz des Ausbilders: {planung.notiz}

) : null}
{fortschritt.offen.length > 0 ? (

{istAzubi ? 'Das ist diese Woche noch offen' : 'Offen bei deinem Azubi'}

    {fortschritt.offen.map((bereich) => (
  • {bereich.titel} {bereich.zaehlwerk.erledigt} von {bereich.zaehlwerk.gesamt}
  • ))}
) : fortschritt.gesamt > 0 ? (

✓ Diese Woche ist vollständig abgearbeitet.

) : null}

Die Woche

    {tage.map((tag) => (
  1. {tag.tag} {alsDatumText(tag.datum)} {tag.istHeute ? ● heute : null}
    Theorie {tag.theorie.length === 0 ? ( – ) : (
      {tag.theorie.map((handout) => { const gelesen = sicht.handouts.find((h) => h.handout.id === handout.id)?.gelesen ?? false; return (
    • {handout.id} {handout.titel} {gelesen ? ( ✓ gelesen ) : null}
    • ); })}
    )}
    Praxis {tag.praxis || '–'}
  2. ))}

Handouts dieser Woche

{sicht.handouts.length === 0 ? (

Keine.

) : (
    {sicht.handouts.map(({ handout, gelesen }) => (
  • {handout.id} {handout.titel} {gelesen ? '✓' : '○'}
  • ))}
)}
{sicht.module.aufgaben ? (

Praxisaufgaben

{sicht.aufgaben.length === 0 ? (

Keine.

) : (
    {sicht.aufgaben.map((aufgabe) => (
  • {aufgabe.id} {aufgabe.titel}
    {aufgabe.zeitrahmen}
  • ))}
)}
) : null} {sicht.module.checklisten ? (

Checklisten

{sicht.checklisten.length === 0 ? (

Keine.

) : (
    {sicht.checklisten.map((liste) => (
  • {liste.titel}
  • ))}
)}
) : null} {sicht.module.kontrollen ? (

Lernzielkontrolle

{sicht.kontrolle ? (

{sicht.kontrolle.titel}
{sicht.kontrolle.fragen.length} Fragen ·{' '} {sicht.kontrolle.fragen.reduce((summe, f) => summe + f.punkte, 0)} Punkte {sicht.kontrolle.dauer_minuten ? ` · ${sicht.kontrolle.dauer_minuten} Minuten` : ''}

) : (

Diese Woche keine.

)}
) : null}
); }