@flowselections/logistiek-engine 1.0.237 → 1.0.239

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"StandaardgegevensCard.d.ts","sourceRoot":"","sources":["../../src/components/StandaardgegevensCard.tsx"],"names":[],"mappings":"AAaA,wBAAgB,qBAAqB,gCA8CpC"}
1
+ {"version":3,"file":"StandaardgegevensCard.d.ts","sourceRoot":"","sources":["../../src/components/StandaardgegevensCard.tsx"],"names":[],"mappings":"AAaA,wBAAgB,qBAAqB,gCAgDpC"}
@@ -1,4 +1,4 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
1
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
2
  // ============================================================================
3
3
  // src/components/StandaardgegevensCard.tsx — Engine-status: standaardgegevens
4
4
  // ============================================================================
@@ -24,7 +24,7 @@ export function StandaardgegevensCard() {
24
24
  const eerder = aangevuldeOnderdelen(laatste);
25
25
  const meldingen = Array.isArray(resultaat?.meldingen) ? resultaat.meldingen : [];
26
26
  return (_jsxs(Card, { children: [_jsxs(CardHeader, { children: [_jsxs(CardTitle, { className: "flex items-center gap-2 text-base", children: [_jsx(Database, { className: "h-4 w-4" }), " Standaardgegevens", fout ? _jsx(Badge, { variant: "destructive", children: "Controle mislukt" })
27
- : resultaat ? _jsx(Badge, { variant: "secondary", children: nu.length ? "Aangevuld" : "Compleet" }) : null] }), _jsx(CardDescription, { children: "Ladingdragers, Floriday-vertalingen, planinstellingen, tijdinstelling en strategie." })] }), _jsxs(CardContent, { className: "space-y-2 text-sm", children: [fout && _jsxs("p", { className: "text-destructive", children: ["Kon niet controleren: ", fout] }), nu.length > 0 && (_jsxs("div", { children: [_jsx("p", { className: "font-medium", children: "Zojuist aangevuld:" }), _jsx("ul", { className: "list-disc pl-5", children: nu.map((t) => _jsx("li", { children: t }, t)) })] })), nu.length === 0 && eerder.length > 0 && laatste?.op && (_jsxs("div", { children: [_jsxs("p", { className: "text-muted-foreground", children: ["Laatst aangevuld op ", new Date(laatste.op).toLocaleString("nl-NL"), ":"] }), _jsx("ul", { className: "list-disc pl-5 text-muted-foreground", children: eerder.map((t) => _jsx("li", { children: t }, t)) })] })), resultaat && nu.length === 0 && eerder.length === 0 && _jsx("p", { className: "text-muted-foreground", children: "Alle standaardgegevens zijn aanwezig." }), meldingen.map((m) => _jsx("p", { className: "text-destructive", children: m }, m)), _jsx(OnderhoudStatus, {}), _jsx(ProductiebonStatus, {})] })] }));
27
+ : resultaat ? _jsx(Badge, { variant: "secondary", children: nu.length ? "Aangevuld" : "Compleet" }) : null] }), _jsx(CardDescription, { children: "Ladingdragers, Floriday-vertalingen, planinstellingen, tijdinstelling en strategie." })] }), _jsxs(CardContent, { className: "space-y-2 text-sm", children: [fout && _jsxs("p", { className: "text-destructive", children: ["Kon niet controleren: ", fout] }), nu.length > 0 && (_jsxs("div", { children: [_jsx("p", { className: "font-medium", children: "Zojuist aangevuld:" }), _jsx("ul", { className: "list-disc pl-5", children: nu.map((t) => _jsx("li", { children: t }, t)) })] })), nu.length === 0 && eerder.length > 0 && laatste?.op && (_jsxs("div", { children: [_jsxs("p", { className: "text-muted-foreground", children: ["Laatst aangevuld op ", new Date(laatste.op).toLocaleString("nl-NL"), ":"] }), _jsx("ul", { className: "list-disc pl-5 text-muted-foreground", children: eerder.map((t) => _jsx("li", { children: t }, t)) })] })), resultaat && nu.length === 0 && eerder.length === 0 && _jsx("p", { className: "text-muted-foreground", children: "Alle standaardgegevens zijn aanwezig." }), meldingen.map((m) => _jsx("p", { className: "text-destructive", children: m }, m)), _jsx(OnderhoudStatus, {}), _jsx(ProductiebonStatus, {}), _jsx(SamenvoeggroepenStatus, {}), _jsx(StickerSyncStatus, {})] })] }));
28
28
  }
29
29
  // 1.0.228: wachtrij per status, oudste trace-regel en laatste opruimronde.
30
30
  function OnderhoudStatus() {
@@ -40,6 +40,30 @@ function OnderhoudStatus() {
40
40
  const prune = o.laatsteOpruimronde;
41
41
  return (_jsxs("div", { className: "border-t pt-2 text-muted-foreground", children: [_jsx("p", { className: "font-medium text-foreground", children: "Onderhoud" }), _jsxs("p", { children: ["Wachtrij: ", wachtrij.length ? wachtrij.map(([s, n]) => `${s} ${n}`).join(" · ") : "leeg"] }), _jsxs("p", { children: ["Oudste trace-regel: ", o.oudsteTrace ? new Date(o.oudsteTrace).toLocaleString("nl-NL") : "geen"] }), _jsxs("p", { children: ["Laatste opruimronde: ", prune?.op ? `${new Date(prune.op).toLocaleString("nl-NL")} (${prune.verwijderd ?? 0} verwijderd)` : "nog niet"] })] }));
42
42
  }
43
+ // Geannuleerde/verwijderde orders die uit een samenvoeggroep zijn gehaald.
44
+ function SamenvoeggroepenStatus() {
45
+ const [info, setInfo] = useState(null);
46
+ const [fout, setFout] = useState(null);
47
+ useEffect(() => {
48
+ supabase.rpc("logistics_buffers_herstel_status").then(({ data, error }) => {
49
+ if (error) {
50
+ console.error("logistics_buffers_herstel_status", error);
51
+ setFout(error.message);
52
+ return;
53
+ }
54
+ setInfo(data && typeof data === "object" ? data : null);
55
+ });
56
+ }, []);
57
+ if (fout)
58
+ return _jsx("p", { className: "text-destructive", children: "Samenvoeggroepen: status kon niet worden gelezen." });
59
+ if (!info)
60
+ return null;
61
+ const fouten = Array.isArray(info.fouten) ? info.fouten : [];
62
+ const groepen = info.stand?.totaalGroepen ?? 0;
63
+ return (_jsxs("div", { className: "border-t pt-2", children: [_jsx("p", { className: "font-medium", children: "Samenvoeggroepen" }), _jsx("p", { className: "text-muted-foreground", children: groepen > 0
64
+ ? `${groepen} groep(en) hersteld: ${info.stand?.totaalOrders ?? 0} geannuleerde of verwijderde order(s) eruit gehaald${info.stand?.laatsteOp ? ` (laatst ${formatDatumTijd(info.stand.laatsteOp)})` : ""}.`
65
+ : "Geen groepen met geannuleerde orders gevonden." }), (info.nogInGroep ?? 0) > 0 && (_jsxs("p", { className: "text-destructive", children: ["Nog ", info.nogInGroep, " geannuleerde order(s) in een groep."] })), fouten.map((f, i) => (_jsxs("p", { className: "text-destructive", children: [formatDatumTijd(f.op), ": ", f.melding] }, i)))] }));
66
+ }
43
67
  function ProductiebonStatus() {
44
68
  const [info, setInfo] = useState(null);
45
69
  const [fout, setFout] = useState(null);
@@ -62,3 +86,24 @@ function ProductiebonStatus() {
62
86
  return (_jsxs("div", { className: "border-t pt-2", children: [_jsx("p", { className: "font-medium", children: "Productiebonnen" }), _jsxs("p", { className: "text-muted-foreground", children: [info.inWachtrij ?? 0, " in wachtrij, ", info.wachtOpGoedkeuring ?? 0, " wachten op goedkeuring."] }), typeof info.stationMelding === "string" && info.stationMelding !== "" &&
63
87
  !stationMeldingen.includes(info.stationMelding) && (_jsx("p", { className: "text-destructive", children: info.stationMelding })), stationMeldingen.map((m, i) => (_jsx("p", { className: "text-destructive", children: m }, `s${i}`))), fouten.map((f, i) => (_jsxs("p", { className: "text-destructive", children: [formatDatumTijd(f.op), ": ", f.melding] }, i)))] }));
64
88
  }
89
+ // Fouten van de stickerstappen uit de laatste Engine-ronde.
90
+ function StickerSyncStatus() {
91
+ const [info, setInfo] = useState(null);
92
+ const [fout, setFout] = useState(null);
93
+ useEffect(() => {
94
+ supabase.rpc("logistics_sticker_sync_status").then(({ data, error }) => {
95
+ if (error) {
96
+ console.error("logistics_sticker_sync_status", error);
97
+ setFout(error.message);
98
+ return;
99
+ }
100
+ setInfo(data && typeof data === "object" ? data : null);
101
+ });
102
+ }, []);
103
+ if (fout)
104
+ return _jsx("p", { className: "text-destructive", children: "Stickers: status kon niet worden gelezen." });
105
+ if (!info || !info.bekend)
106
+ return null;
107
+ const fouten = Array.isArray(info.fouten) ? info.fouten : [];
108
+ return (_jsxs("div", { className: "border-t pt-2", children: [_jsx("p", { className: "font-medium", children: "Stickers" }), fouten.length === 0 ? (_jsxs("p", { className: "text-muted-foreground", children: ["Laatste ronde zonder fouten", info.op ? ` (${formatDatumTijd(info.op)})` : "", "."] })) : (_jsxs(_Fragment, { children: [_jsxs("p", { className: "text-destructive", children: ["De stickerstap mislukte in de laatste ronde", info.op ? ` (${formatDatumTijd(info.op)})` : "", ". Neem contact op met de beheerder."] }), fouten.map((f, i) => (_jsxs("p", { className: "text-destructive", children: [f.stap ?? "stap", ": ", f.fout ?? "onbekende fout"] }, i)))] }))] }));
109
+ }
@@ -1 +1 @@
1
- {"version":3,"file":"previewAuthStorage.d.ts","sourceRoot":"","sources":["../../../src/integrations/supabase/previewAuthStorage.ts"],"names":[],"mappings":"AAEA,kHAAkH;AAClH,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,MAAM,GAAG,IAAI,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IACjE,OAAO,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC9D,UAAU,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACnD;AA6BD;;;GAGG;AACH,wBAAgB,sBAAsB,IAAI,kBAAkB,GAAG,SAAS,CAsGvE"}
1
+ {"version":3,"file":"previewAuthStorage.d.ts","sourceRoot":"","sources":["../../../src/integrations/supabase/previewAuthStorage.ts"],"names":[],"mappings":"AAEA,kHAAkH;AAClH,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,MAAM,GAAG,IAAI,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IACjE,OAAO,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC9D,UAAU,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACnD;AA6BD;;;GAGG;AACH,wBAAgB,sBAAsB,IAAI,kBAAkB,GAAG,SAAS,CAuGvE"}
@@ -24,9 +24,10 @@ export function brokeredPreviewStorage() {
24
24
  const onPreviewZone = PREVIEW_ZONES.some((z) => host === z || host.endsWith('.' + z));
25
25
  // Read the id only from non-user-controlled host positions, so a user-named
26
26
  // preview--<name> host can't smuggle another project's id.
27
- const UUID = '[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}';
27
+ const UUID = '[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}';
28
28
  const projectId = onPreviewZone
29
29
  ? (new RegExp('^(?:id-preview(?:-[a-z0-9]+)?|project)--(' + UUID + ')(?:-dev)?(?=\\.|$)', 'i').exec(host)?.[1]
30
+ ?? new RegExp('^live--(' + UUID + ')(?:-thr_[a-z0-9]+)?(?=\\.|$)', 'i').exec(host)?.[1]
30
31
  ?? new RegExp('^(' + UUID + ')(?=[.-])', 'i').exec(host)?.[1])
31
32
  : undefined;
32
33
  // lib.dom types window.parent and location.ancestorOrigins as always set, but a