+ {notis} +
+ + {b.felbeskrivning && ( +”{b.felbeskrivning}”
+✔ {k.text}
+ ))} + {!avslutat && pagaende &&🔄 {pagaende}
} + {b.ejKontrollerat.slice(avslutat ? 0 : 1).map((e, i) => ( +⏳ {e}
+ ))} +| {h.beskrivning} | ++ {h.varde} + {h.enhet ? ` ${h.enhet}` : ""} + | +
+ {tidKlockslag(post.tidpunkt)}{" "} + {handelseRubrik(post)} +
+ ))} +{pagaende}
+{b.totalArbetstid}
+ {tidsfordelningsRader(arende, nu).map((r) => ( ++ {r.label}: {r.tid} +
+ ))} ++ Ärende #{arende.nummer} · startat {tidDatum(arende.skapad)} · genererad ur ärendets händelselogg +
++ Delningslänken kräver att ärendet är synkat mot molnet (inloggad användare). +
- Inga ärenden ännu. Starta med att identifiera ett objekt. -
+ {alla.length > 0 && ( ++ Inga ärenden ännu. Starta med att identifiera ett objekt — eller utforska ett färdigt demoärende + med komplett arbetslogg, brief och kundrapport. +
+Inga ärenden i det här filtret.
)} {lista.map((arende) => { diff --git a/src/pages/felsokning/DelatArende.tsx b/src/pages/felsokning/DelatArende.tsx index 128c1b1..44fb1f1 100644 --- a/src/pages/felsokning/DelatArende.tsx +++ b/src/pages/felsokning/DelatArende.tsx @@ -1,14 +1,12 @@ -// Live Share: skrivskyddad livevy av ett ärende — det kunden, arbetsledaren -// eller en extern partner ser via delningslänken. Uppdateras automatiskt -// när ny information registreras. Interna poster (kategoribyten) visas inte. +// Intern förhandsvisning av Live Share-vyn: läser ur lokala storen och +// uppdateras live medan teknikern arbetar. Den publika delningslänken +// (via delningskod) renderar exakt samma vy. import { useEffect, useState } from "react"; import { useParams } from "react-router-dom"; -import { handelseRubrik } from "@/felsokning/domain"; -import { arAvslutat, brief, foton, tidsfordelningsRader } from "@/felsokning/projektioner"; -import { metodikForArende, useFelsokning } from "@/felsokning/store"; -import { tidDatum, tidKlockslag } from "@/felsokning/format"; -import { FelsokningSkal, Panel } from "@/felsokning/ui"; +import { DelatArendeVy } from "@/felsokning/DelatArendeVy"; +import { useFelsokning } from "@/felsokning/store"; +import { FelsokningSkal } from "@/felsokning/ui"; export default function DelatArende() { const { id } = useParams<{ id: string }>(); @@ -28,114 +26,11 @@ export default function DelatArende() { ); } - const metodik = metodikForArende(arende); - const b = brief(arende, metodik, nu); - const avslutat = arAvslutat(arende); - const bilder = foton(arende); - const matvarden = arende.handelser.filter((p) => p.handelse.typ === "matvarde"); - // Hypoteser är internt arbetsmaterial och delas inte externt — - // de får aldrig riskera att läsas som konstaterade fel. - const kundposter = arende.handelser.filter( - (p) => p.handelse.typ !== "kategori_byte" && p.handelse.typ !== "hypotes", - ); - const pagaende = b.rekommenderatNastaSteg[0]; - return ( -- Skrivskyddad livevy — uppdateras automatiskt när verkstaden registrerar ny information. Extern delning - via säker länk aktiveras när backend är i drift; detta är samma vy. -
- - {b.felbeskrivning && ( -”{b.felbeskrivning}”
-✔ {k.text}
- ))} - {!avslutat && pagaende &&🔄 {pagaende}
} - {b.ejKontrollerat.slice(avslutat ? 0 : 1).map((e, i) => ( -⏳ {e}
- ))} -| {h.beskrivning} | -- {h.varde} - {h.enhet ? ` ${h.enhet}` : ""} - | -
- {tidKlockslag(post.tidpunkt)}{" "} - {handelseRubrik(post)} -
- ))} -{pagaende}
-{b.totalArbetstid}
- {tidsfordelningsRader(arende, nu).map((r) => ( -- {r.label}: {r.tid} -
- ))} -- Ärende #{arende.nummer} · startat {tidDatum(arende.skapad)} · genererad ur ärendets händelselogg -
-+ {status === "laddar" + ? "Hämtar ärendet …" + : "Ärendet är inte tillgängligt. Kontrollera länken med verkstaden — delningen kan ha stängts av."} +
+