a33e2bfcbf
- Demoärende med ett klick: komplett vibrationsärende (Volvo XC60) med 1 tim 35 min historik — besvarade symptomfrågor, fyra hjulfoton, mätvärden, provkörning, inaktivitetsförklaring, överlämning mellan två tekniker och en hypotes. Testat: tidsordning, arbetstid, kvar- varande kontroller så guiden kan fortsätta live i demon. - Dashboard enligt direktivet: räknare och filter Alla/Pågående/Klara. - Publik delningssida /felsokning/delad/:kod som läser via hamta_delat_arende utan inloggning och pollar för liveuppdatering; delad vykomponent med interna förhandsvisningen; Kopiera delningslänk i rapportfliken. - Utskriftsvänlig kundrapport: svart på vitt vid utskrift, knappar och fält döljs automatiskt. - Demomanus i docs/DEMO.md med steg-för-steg-flöde och tabell över demoläge kontra produktion. Verifierat: 21 vitest-tester gröna, produktionsbygge ok, Playwright- röktest inkl. demoflödet i färsk profil. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_012EQg3rJsrQ1ZNTvkzmQAtt
37 lines
1.2 KiB
TypeScript
37 lines
1.2 KiB
TypeScript
// 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 { DelatArendeVy } from "@/felsokning/DelatArendeVy";
|
|
import { useFelsokning } from "@/felsokning/store";
|
|
import { FelsokningSkal } from "@/felsokning/ui";
|
|
|
|
export default function DelatArende() {
|
|
const { id } = useParams<{ id: string }>();
|
|
const arende = useFelsokning((s) => (id ? s.arenden[id] : undefined));
|
|
const [nu, setNu] = useState(() => new Date().toISOString());
|
|
|
|
useEffect(() => {
|
|
const timer = setInterval(() => setNu(new Date().toISOString()), 30000);
|
|
return () => clearInterval(timer);
|
|
}, []);
|
|
|
|
if (!arende) {
|
|
return (
|
|
<FelsokningSkal rubrik="Delat ärende">
|
|
<p className="text-lg text-zinc-300">Ärendet är inte tillgängligt.</p>
|
|
</FelsokningSkal>
|
|
);
|
|
}
|
|
|
|
return (
|
|
<DelatArendeVy
|
|
arende={arende}
|
|
nu={nu}
|
|
notis="Skrivskyddad livevy — uppdateras automatiskt när verkstaden registrerar ny information. Detta är förhandsvisningen; den externa delningslänken visar samma vy."
|
|
/>
|
|
);
|
|
}
|