import type { Metadata } from 'next'; import Link from 'next/link'; import { erfordereBenutzer } from '@/lib/auth/rechte'; import { inhalte } from '@/lib/inhalte'; import { alsKartenstand, staendeVon, uebersicht } from '@/lib/repos/karten'; import { fach, fachNamen, heutigerStapel } from '@/lib/lernen/sm2'; import { alsDatumText, heute } from '@/lib/zeit'; import { erfordereModul } from '@/lib/module/pruefen'; export const metadata: Metadata = { title: 'Merkkarten' }; export const dynamic = 'force-dynamic'; const STAPELGROESSE = 20; export default async function KartenSeite() { const benutzer = await erfordereBenutzer(); erfordereModul('karten'); const alle = inhalte(); const heuteDatum = heute(); const istAzubi = benutzer.rolle === 'azubi'; const staende = istAzubi ? staendeVon(benutzer.id) : new Map(); const stand = istAzubi ? uebersicht(benutzer.id, alle.karten.map((k) => k.id), heuteDatum) : { gesamt: alle.karten.length, gelernt: 0, faellig: 0, nieGelernt: alle.karten.length, jeFach: { 1: alle.karten.length, 2: 0, 3: 0, 4: 0, 5: 0 } }; const faelligeAlle = heutigerStapel( alle.karten.map((karte) => ({ karteId: karte.id, faelligAm: staende.get(karte.id)?.faelligAm ?? null, block: karte.block, })), heuteDatum, 9999, ); const jeBlock = alle.bloecke.map((block) => { const desBlocks = alle.karten.filter((k) => k.block === block.id); const faellig = faelligeAlle.filter((f) => f.block === block.id).length; const gelernt = desBlocks.filter((k) => { const zeile = staende.get(k.id); return zeile ? fach(alsKartenstand(zeile)) >= 4 : false; }).length; return { block, gesamt: desBlocks.length, faellig, gelernt }; }); if (!istAzubi) { return (
{alle.karten.length} Karten aus {alle.handouts.length} Handouts. Gelernt wird nur vom Azubi – du siehst hier, was es gibt.
{gesamt} {gesamt === 1 ? 'Karte' : 'Karten'}
{stand.gesamt} Karten insgesamt · {stand.gelernt} sitzen · {stand.nieGelernt} noch nie gelernt
Nichts. Alle Karten liegen weiter hinten – morgen ist wieder etwas dran.
) : ( <>{heuteStapel}{' '} {heuteStapel === 1 ? 'Karte' : 'Karten'} {stand.faellig > STAPELGROESSE ? ( von {stand.faellig} fälligen – der Rest kommt morgen ) : null}
Vor einer Lernzielkontrolle gezielt üben – hier sind auch Karten dabei, die eigentlich erst später dran wären.
{gesamt} Karten · {gelernt} sitzen · {faellig} heute fällig