// Der Verlauf (5.5.0) — die letzten Vorgänge auf einen Blick, statt der // Bibliothek (Commander: „Brauchen wir die wirklich?" — nein: Jellyfin IST // die Bibliothek; die Wiedererkennung braucht keine Ansicht). import type { GeraeteInfo, VorgangEintrag } from '../../gemeinsam/nachrichten' import { leisteAusVorgang } from '../../gemeinsam/vorgangsleiste' import { Badge, TYP_NAMEN, datumKurz, gb } from '../bausteine' import { VorgangsLeiste } from './VorgangsLeiste' const PHASEN_TEXT: Record = { rippt: 'rippt', wartet: 'wartet', komprimiert: 'komprimiert', 'legt-ab': 'legt ab', fertig: 'fertig', fehler: 'Fehler', abgebrochen: 'abgebrochen', } export function phasenTon(p: VorgangEintrag['phase']): 'gruen' | 'gelb' | 'blau' | 'grau' { return p === 'fertig' ? 'gruen' : p === 'fehler' || p === 'abgebrochen' ? 'gelb' : p === 'wartet' ? 'grau' : 'blau' } export function VerlaufKarte({ vorgaenge, aufAlle }: { vorgaenge: VorgangEintrag[]; aufAlle: () => void }) { if (vorgaenge.length === 0) return null const letzte = vorgaenge.slice(0, 6) return (
VERLAUF · die letzten {letzte.length} Vorgänge
{letzte.map((v) => (
{v.titel} {v.jahr !== null && ({v.jahr})} {(TYP_NAMEN[v.typ as GeraeteInfo['typ']] ?? v.typ).toUpperCase()} · {datumKurz(v.begonnen)} {v.phase === 'fertig' && v.fertigBytes > 0 && ` · ${gb(v.fertigBytes)}`} {!v.rohGeloescht && v.rohBytes > 0 && ` · Roh ${gb(v.rohBytes)}`} {v.phase === 'fertig' && v.zielOrdner.length > 0 && ( )}
))}
) }