import { useNavigate, useParams } from "react-router-dom"; import { NachfuellDialog } from "./kontrolle/NachfuellDialog"; import { PositionCard } from "./kontrolle/PositionCard"; import { useKontrolle } from "./kontrolle/useKontrolle"; import { gruppiereNachFach, OHNE_FACH } from "../utils/fachGruppierung"; export function KontrollPage() { const { objektId } = useParams<{ objektId: string }>(); const navigate = useNavigate(); const { online, objekt, sperre, positionen, startFehler, wirdAbgeschlossen, abschlussFehler, alleUebertragen, nachfuellDialog, starteKontrolle, eingabeAendern, positionSenden, fehlerErneutVersuchen, abschliessen, abbrechen, jetztNachfuellen, nachfuellDialogSchliessen, } = useKontrolle(objektId); const fachGruppen = gruppiereNachFach(positionen, (zustand) => zustand.fach); const nurOhneFach = fachGruppen.length === 1 && fachGruppen[0][0] === OHNE_FACH; async function handleAbschliessen() { if (await abschliessen()) { navigate("/objekte"); } } async function handleAbbrechen() { const grund = window.prompt("Grund für den Abbruch (optional):") ?? undefined; await abbrechen(grund); navigate("/objekte"); } if (sperre) { return ( Objekt gesperrt Wird gerade kontrolliert von {sperre.benutzer ?? "unbekannt"}, seit {sperre.seit}. starteKontrolle(true)}> Trotzdem übernehmen ); } if (startFehler) { return ( {startFehler} starteKontrolle(false)}> Erneut versuchen ); } return ( {objekt?.name ?? "Kontrolle"} {positionen.length > 0 && ( {positionen.filter((p) => p.status === "gespeichert").length} von {positionen.length} Positionen bestätigt p.status === "gespeichert").length / positionen.length) * 100 )}%`, }} /> )} {!online && ( Kein Netz – Eingaben werden lokal gespeichert und automatisch übertragen, sobald wieder Verbindung besteht. )} {fachGruppen.map(([fach, gruppenPositionen]) => ( {!nurOhneFach && {fach}} {gruppenPositionen.map((zustand) => ( {nachfuellDialog?.materialId === zustand.position.material_id && ( jetztNachfuellen(nachfuellDialog.fehlbestandId, menge)} onSchliessen={nachfuellDialogSchliessen} /> )} ))} ))} {abschlussFehler && {abschlussFehler}} {alleUebertragen ? "Kontrolle abschließen" : "Noch nicht alle Positionen gespeichert…"} Kontrolle abbrechen ); }
Wird gerade kontrolliert von {sperre.benutzer ?? "unbekannt"}, seit {sperre.seit}.