@flowselections/layout-maker 1.69.10 → 1.69.13

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.
Files changed (73) hide show
  1. package/dist-lib/components/A4StickervelKaart.d.ts +5 -0
  2. package/dist-lib/components/A4StickervelKaart.d.ts.map +1 -0
  3. package/dist-lib/components/A4StickervelKaart.js +123 -0
  4. package/dist-lib/components/KlaarOmTePrintenBlok.d.ts.map +1 -1
  5. package/dist-lib/components/KlaarOmTePrintenBlok.js +50 -7
  6. package/dist-lib/components/PrintQueuePage.d.ts.map +1 -1
  7. package/dist-lib/components/PrintQueuePage.js +2 -1
  8. package/dist-lib/components/PrintplekDetailPage.d.ts.map +1 -1
  9. package/dist-lib/components/PrintplekDetailPage.js +3 -1
  10. package/dist-lib/components/PrintplekkenPage.d.ts.map +1 -1
  11. package/dist-lib/components/PrintplekkenPage.js +2 -1
  12. package/dist-lib/components/StickerRouteTestKaart.d.ts +5 -0
  13. package/dist-lib/components/StickerRouteTestKaart.d.ts.map +1 -0
  14. package/dist-lib/components/StickerRouteTestKaart.js +75 -0
  15. package/dist-lib/components/UitwijkRegel.d.ts +5 -0
  16. package/dist-lib/components/UitwijkRegel.d.ts.map +1 -0
  17. package/dist-lib/components/UitwijkRegel.js +17 -0
  18. package/dist-lib/components/UitwijkTekening.d.ts +19 -0
  19. package/dist-lib/components/UitwijkTekening.d.ts.map +1 -0
  20. package/dist-lib/components/UitwijkTekening.js +21 -0
  21. package/dist-lib/index.d.ts +12 -0
  22. package/dist-lib/index.d.ts.map +1 -1
  23. package/dist-lib/index.js +14 -0
  24. package/dist-lib/integrations/supabase/types.d.ts +3227 -22
  25. package/dist-lib/integrations/supabase/types.d.ts.map +1 -1
  26. package/dist-lib/lib/belading.d.ts +10 -0
  27. package/dist-lib/lib/belading.d.ts.map +1 -0
  28. package/dist-lib/lib/belading.js +49 -0
  29. package/dist-lib/lib/eigenDocumenten.d.ts +2 -0
  30. package/dist-lib/lib/eigenDocumenten.d.ts.map +1 -1
  31. package/dist-lib/lib/eigenDocumenten.js +22 -0
  32. package/dist-lib/lib/installCheck.d.ts +36 -0
  33. package/dist-lib/lib/installCheck.d.ts.map +1 -0
  34. package/dist-lib/lib/installCheck.js +65 -0
  35. package/dist-lib/lib/klaarOmTePrinten.d.ts +15 -1
  36. package/dist-lib/lib/klaarOmTePrinten.d.ts.map +1 -1
  37. package/dist-lib/lib/klaarOmTePrinten.js +19 -1
  38. package/dist-lib/lib/orderData.server.d.ts.map +1 -1
  39. package/dist-lib/lib/orderData.server.js +20 -17
  40. package/dist-lib/lib/pakbonBuilder.d.ts +6 -0
  41. package/dist-lib/lib/pakbonBuilder.d.ts.map +1 -1
  42. package/dist-lib/lib/pakbonBuilder.js +18 -5
  43. package/dist-lib/lib/pakbonContent.d.ts.map +1 -1
  44. package/dist-lib/lib/pakbonContent.js +4 -1
  45. package/dist-lib/lib/pakbonHtml.d.ts.map +1 -1
  46. package/dist-lib/lib/pakbonHtml.js +5 -2
  47. package/dist-lib/lib/pakbonPresentation.d.ts +3 -1
  48. package/dist-lib/lib/pakbonPresentation.d.ts.map +1 -1
  49. package/dist-lib/lib/pakbonPresentation.js +13 -6
  50. package/dist-lib/lib/printQueue.server.d.ts +11 -0
  51. package/dist-lib/lib/printQueue.server.d.ts.map +1 -1
  52. package/dist-lib/lib/printQueue.server.js +158 -13
  53. package/dist-lib/lib/printService.server.d.ts.map +1 -1
  54. package/dist-lib/lib/printService.server.js +3 -2
  55. package/dist-lib/lib/standaardLayouts.server.d.ts +6 -0
  56. package/dist-lib/lib/standaardLayouts.server.d.ts.map +1 -1
  57. package/dist-lib/lib/standaardLayouts.server.js +13 -0
  58. package/dist-lib/lib/stickerPlaatsing.d.ts +37 -0
  59. package/dist-lib/lib/stickerPlaatsing.d.ts.map +1 -0
  60. package/dist-lib/lib/stickerPlaatsing.js +122 -0
  61. package/dist-lib/lib/stickerUitwijk.d.ts +197 -0
  62. package/dist-lib/lib/stickerUitwijk.d.ts.map +1 -0
  63. package/dist-lib/lib/stickerUitwijk.js +311 -0
  64. package/dist-lib/lib/testprint.d.ts +13 -0
  65. package/dist-lib/lib/testprint.d.ts.map +1 -1
  66. package/dist-lib/lib/testprint.js +38 -0
  67. package/dist-lib/lib/useDocumentData.js +1 -1
  68. package/dist-lib/lib/versie.generated.d.ts +1 -1
  69. package/dist-lib/lib/versie.generated.js +1 -1
  70. package/dist-lib/lib/vroegeWaarschuwing.d.ts +21 -0
  71. package/dist-lib/lib/vroegeWaarschuwing.d.ts.map +1 -0
  72. package/dist-lib/lib/vroegeWaarschuwing.js +15 -0
  73. package/package.json +1 -1
@@ -0,0 +1,5 @@
1
+ /** Instelling per printplek: ligt er een A4-stickervel in de A4-printer, en welke indeling? */
2
+ export declare function A4StickervelKaart({ printplekId }: {
3
+ printplekId: string;
4
+ }): import("react").JSX.Element;
5
+ //# sourceMappingURL=A4StickervelKaart.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"A4StickervelKaart.d.ts","sourceRoot":"","sources":["../../src/components/A4StickervelKaart.tsx"],"names":[],"mappings":"AA4BA,+FAA+F;AAC/F,wBAAgB,iBAAiB,CAAC,EAAE,WAAW,EAAE,EAAE;IAAE,WAAW,EAAE,MAAM,CAAA;CAAE,+BA2JzE"}
@@ -0,0 +1,123 @@
1
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
+ import { useEffect, useState } from "react";
3
+ import { Button, Card, CardContent, CardDescription, CardHeader, CardTitle, Input } from "@flowselections/core";
4
+ import { toast } from "sonner";
5
+ import { supabase } from "../lib/supabaseClient.js";
6
+ import { routeringVoor } from "../lib/printRoutering.js";
7
+ import { printPdf } from "../lib/printApi.js";
8
+ import { testvelPdf } from "../lib/stickerPlaatsing.js";
9
+ import { A4_VELINDELINGEN, a4VelVoor, EIGEN_VEL_VOORSTEL, leesA4StickervelWaarde, velindelingVoor, } from "../lib/stickerUitwijk.js";
10
+ const ELK = "elk";
11
+ const EIGEN = "eigen";
12
+ const VELDEN = [
13
+ ["breedte_mm", "Stickerbreedte (mm)"],
14
+ ["hoogte_mm", "Stickerhoogte (mm)"],
15
+ ["marge_boven_mm", "Marge boven (mm)"],
16
+ ["marge_links_mm", "Marge links (mm)"],
17
+ ["tussen_h_mm", "Tussenruimte horizontaal (mm)"],
18
+ ["tussen_v_mm", "Tussenruimte verticaal (mm)"],
19
+ ];
20
+ /** Instelling per printplek: ligt er een A4-stickervel in de A4-printer, en welke indeling? */
21
+ export function A4StickervelKaart({ printplekId }) {
22
+ const [vel, setVel] = useState(null);
23
+ const [bezig, setBezig] = useState(false);
24
+ const [eigen, setEigen] = useState({
25
+ breedte_mm: "", hoogte_mm: "",
26
+ marge_boven_mm: String(EIGEN_VEL_VOORSTEL.marge_boven_mm), marge_links_mm: String(EIGEN_VEL_VOORSTEL.marge_links_mm),
27
+ tussen_h_mm: String(EIGEN_VEL_VOORSTEL.tussen_h_mm), tussen_v_mm: String(EIGEN_VEL_VOORSTEL.tussen_v_mm),
28
+ });
29
+ const [modus, setModus] = useState(ELK);
30
+ useEffect(() => {
31
+ let weg = false;
32
+ void (async () => {
33
+ const db = supabase;
34
+ // Ensure bij gebruik: oude losse instelling overnemen (alleen beheer; anders stil).
35
+ await db.rpc("layouts_zorg_voor_a4_stickervel").then(() => undefined, () => undefined);
36
+ const { data } = await db.from("print_plekken").select("a4_stickervel").eq("id", printplekId).maybeSingle();
37
+ if (weg)
38
+ return;
39
+ const v = leesA4StickervelWaarde(data?.a4_stickervel) ?? { aanwezig: false };
40
+ setVel(v);
41
+ if (v.breedte_mm && v.hoogte_mm) {
42
+ const vast = A4_VELINDELINGEN.some((i) => i.breedte_mm === v.breedte_mm && i.hoogte_mm === v.hoogte_mm) && v.marge_boven_mm === undefined;
43
+ setModus(vast ? `${v.breedte_mm}x${v.hoogte_mm}` : EIGEN);
44
+ if (!vast) {
45
+ setEigen((e) => {
46
+ const n = { ...e };
47
+ for (const [k] of VELDEN)
48
+ if (v[k] !== undefined)
49
+ n[k] = String(v[k]);
50
+ return n;
51
+ });
52
+ }
53
+ }
54
+ })();
55
+ return () => { weg = true; };
56
+ }, [printplekId]);
57
+ const bewaar = async (nieuw) => {
58
+ setBezig(true);
59
+ const { error } = await supabase.from("print_plekken").update({ a4_stickervel: nieuw }).eq("id", printplekId);
60
+ setBezig(false);
61
+ if (error) {
62
+ toast.error("Opslaan is niet gelukt.");
63
+ return;
64
+ }
65
+ setVel(nieuw);
66
+ toast.success("A4-stickervel opgeslagen.");
67
+ };
68
+ const eigenVel = () => {
69
+ const n = Object.fromEntries(VELDEN.map(([k]) => [k, Number(eigen[k].replace(",", "."))]));
70
+ if (!(n.breedte_mm > 0 && n.hoogte_mm > 0))
71
+ return null;
72
+ if (VELDEN.slice(2).some(([k]) => !(n[k] >= 0)))
73
+ return null;
74
+ return { aanwezig: true, ...n };
75
+ };
76
+ const testprint = async () => {
77
+ const v = modus === EIGEN ? eigenVel() : vel;
78
+ const sticker = v?.breedte_mm && v?.hoogte_mm ? { breedte_mm: v.breedte_mm, hoogte_mm: v.hoogte_mm } : null;
79
+ const indeling = sticker ? a4VelVoor(v, sticker) : null;
80
+ if (!indeling) {
81
+ toast.error("Kies eerst een velindeling of vul een eigen maat in.");
82
+ return;
83
+ }
84
+ setBezig(true);
85
+ try {
86
+ const r = await routeringVoor({ documenttype: "pakbon", printplekId, layoutId: null });
87
+ if (!r.printer_id)
88
+ throw new Error("Geen A4-printer op deze printplek — stel er een in bij de documenten van deze printplek.");
89
+ await printPdf({
90
+ documenttype: "vrij",
91
+ documentnaam: `Testvel A4 ${Math.round(indeling.breedte_mm)}×${Math.round(indeling.hoogte_mm)}`,
92
+ pdfBase64: await testvelPdf(indeling),
93
+ printerId: r.printer_id,
94
+ printplekId,
95
+ payload: { is_testprint: true, is_test: true, test_id: `testvel-${Date.now()}` },
96
+ });
97
+ toast.success("Testvel staat in de printwachtrij. Houd het stickervel ertegen.");
98
+ }
99
+ catch (e) {
100
+ toast.error(e instanceof Error ? e.message : "Testprint is niet gelukt.");
101
+ }
102
+ finally {
103
+ setBezig(false);
104
+ }
105
+ };
106
+ const vasteKeuze = modus !== EIGEN && modus !== ELK ? modus.split("x").map(Number) : null;
107
+ const vastIndeling = vasteKeuze ? velindelingVoor(vasteKeuze[0], vasteKeuze[1]) : null;
108
+ return (_jsxs(Card, { children: [_jsxs(CardHeader, { children: [_jsx(CardTitle, { className: "text-base", children: "A4-stickervel" }), _jsx(CardDescription, { children: "Past een sticker op geen enkel etiket, dan gaat hij 1-op-1 naar de A4-printer: op een stickervel als dat hier ligt, anders op gewoon A4 met snijlijnen. Een eigen vel gaat altijd v\u00F3\u00F3r de standaardindelingen." })] }), _jsxs(CardContent, { className: "space-y-3 text-sm", children: [_jsxs("label", { className: "flex items-center gap-2", children: [_jsx("input", { type: "checkbox", checked: !!vel?.aanwezig, disabled: !vel || bezig, onChange: (e) => void bewaar(e.target.checked ? { aanwezig: true } : { aanwezig: false }) }), "Er ligt een A4-stickervel in de A4-printer van deze printplek"] }), vel?.aanwezig && (_jsxs(_Fragment, { children: [_jsxs("label", { className: "flex flex-wrap items-center gap-2", children: ["Velindeling", _jsxs("select", { className: "rounded-md border bg-background px-2 py-1", value: modus, disabled: bezig, onChange: (e) => {
109
+ const v = e.target.value;
110
+ setModus(v);
111
+ if (v === ELK)
112
+ return void bewaar({ aanwezig: true });
113
+ if (v === EIGEN)
114
+ return;
115
+ const [b, h] = v.split("x").map(Number);
116
+ void bewaar({ aanwezig: true, breedte_mm: b, hoogte_mm: h });
117
+ }, children: [_jsx("option", { value: ELK, children: "Passend bij de sticker (alle vaste indelingen)" }), A4_VELINDELINGEN.map((i) => (_jsxs("option", { value: `${i.breedte_mm}x${i.hoogte_mm}`, children: [i.breedte_mm, "\u00D7", i.hoogte_mm, " mm (", i.kolommen, "\u00D7", i.rijen, " per vel)"] }, `${i.breedte_mm}x${i.hoogte_mm}`))), _jsx("option", { value: EIGEN, children: "Eigen maat\u2026" })] })] }), modus === EIGEN && (_jsxs("div", { className: "space-y-2", children: [_jsx("p", { className: "text-muted-foreground", children: "Neem de maten over van het stickervel (vaak op de verpakking). De voorstelwaarden zijn een begin; controleer ze met de testprint." }), _jsx("div", { className: "grid grid-cols-2 gap-2 sm:grid-cols-3", children: VELDEN.map(([k, label]) => (_jsxs("label", { className: "space-y-1", children: [_jsx("span", { className: "block text-xs text-muted-foreground", children: label }), _jsx(Input, { inputMode: "decimal", value: eigen[k], onChange: (e) => setEigen({ ...eigen, [k]: e.target.value }) })] }, k))) }), (() => {
118
+ const v = eigenVel();
119
+ const i = v ? a4VelVoor(v, { breedte_mm: v.breedte_mm, hoogte_mm: v.hoogte_mm }) : null;
120
+ return _jsx("p", { className: "text-muted-foreground", children: i ? `${i.kolommen} × ${i.rijen} stickers per vel.` : "Vul alle maten in." });
121
+ })(), _jsx(Button, { size: "sm", disabled: bezig || !eigenVel(), onClick: () => { const v = eigenVel(); if (v)
122
+ void bewaar(v); }, children: "Eigen vel opslaan" })] })), vastIndeling && _jsxs("p", { className: "text-muted-foreground", children: [vastIndeling.kolommen, " \u00D7 ", vastIndeling.rijen, " stickers per vel."] }), _jsx(Button, { size: "sm", variant: "outline", disabled: bezig || modus === ELK, onClick: () => void testprint(), children: "Testprint op gewoon papier" })] }))] })] }));
123
+ }
@@ -1 +1 @@
1
- {"version":3,"file":"KlaarOmTePrintenBlok.d.ts","sourceRoot":"","sources":["../../src/components/KlaarOmTePrintenBlok.tsx"],"names":[],"mappings":"AAmBA,2DAA2D;AAC3D,wBAAgB,oBAAoB,gCA6GnC"}
1
+ {"version":3,"file":"KlaarOmTePrintenBlok.d.ts","sourceRoot":"","sources":["../../src/components/KlaarOmTePrintenBlok.tsx"],"names":[],"mappings":"AAwBA,2DAA2D;AAC3D,wBAAgB,oBAAoB,gCAsLnC"}
@@ -6,27 +6,51 @@ import { supabase } from "../lib/supabaseClient.js";
6
6
  import { documentTypeLabel } from "../lib/documentTypes.js";
7
7
  import { routeringVoor } from "../lib/printRoutering.js";
8
8
  import { leesGeladenEtiket } from "../lib/etiketControle.js";
9
- import { KLAAR_SOORTEN, isEtiketSoort, layoutStatus } from "../lib/klaarOmTePrinten.js";
9
+ import { GEEN_STANDAARD_NODIG, KLAAR_SOORTEN, isEtiketSoort, layoutStatus } from "../lib/klaarOmTePrinten.js";
10
+ import { geenPrinterMelding, papierMelding, stickerRegel } from "../lib/installCheck.js";
11
+ import { a4VelVoor, leesA4StickervelWaarde, leesStickerInstellingenStrikt } from "../lib/stickerUitwijk.js";
10
12
  const NAAR_LAYOUTS = "/layouts-printers/documenten";
11
13
  const NAAR_PRINTEN = "/layouts-printers/printplekken";
12
14
  /** Alleen lezen: per documentsoort klaar om te printen? */
13
15
  export function KlaarOmTePrintenBlok() {
14
16
  const [regels, setRegels] = useState([]);
15
17
  const [laden, setLaden] = useState(true);
18
+ const [waarschuwingen, setWaarschuwingen] = useState([]);
19
+ const [functies, setFuncties] = useState([]);
16
20
  const load = useCallback(async () => {
17
21
  setLaden(true);
18
22
  try {
19
23
  const db = supabase;
24
+ // Eenmalige overname van de oude losse instelling (alleen beheer; anders stil overslaan).
25
+ await db.rpc("layouts_zorg_voor_a4_stickervel").then(() => undefined, () => undefined);
20
26
  const [{ data: l }, { data: p }, { data: pr }] = await Promise.all([
21
- db.from("document_layouts").select("id, naam, documenttype, bron, actief, is_standaard"),
22
- db.from("print_plekken").select("id, naam"),
23
- db.from("printers").select("id, geladen_etiket"),
27
+ db.from("document_layouts").select("id, naam, documenttype, bron, actief, is_standaard, breedte_mm, hoogte_mm, config"),
28
+ db.from("print_plekken").select("id, naam, a4_stickervel"),
29
+ db.from("printers").select("id, naam, weergavenaam, geladen_etiket, ondersteunde_formaten"),
24
30
  ]);
31
+ // Eén bron met de printroute en de vroege waarschuwing (maakt de standaard aan).
32
+ const { data: inst, error: instFout } = await db.rpc("layouts_sticker_verkleinen");
33
+ const instellingen = instFout ? null : leesStickerInstellingenStrikt(inst);
34
+ const { data: ic } = await db.rpc("layouts_install_check").then((r) => r, () => ({ data: null }));
35
+ setFuncties(Array.isArray(ic) ? ic : []);
36
+ const meldingen = [];
25
37
  const layouts = (Array.isArray(l) ? l : []);
26
38
  const plekken = (Array.isArray(p) ? p : []);
27
39
  const printers = new Map((Array.isArray(pr) ? pr : []).map((x) => [x.id, x]));
40
+ const papierGemeld = new Set();
41
+ const a4PerPlek = new Map();
42
+ for (const plek of plekken) {
43
+ try {
44
+ const r = await routeringVoor({ documenttype: "pakbon", printplekId: plek.id, layoutId: null });
45
+ const pp = r.printer_id ? printers.get(r.printer_id) : null;
46
+ a4PerPlek.set(plek.id, pp ? { naam: String(pp.weergavenaam || pp.naam || "A4-printer") } : null);
47
+ }
48
+ catch {
49
+ a4PerPlek.set(plek.id, null);
50
+ }
51
+ }
28
52
  const uit = [];
29
- for (const soort of KLAAR_SOORTEN) {
53
+ for (const soort of KLAAR_SOORTEN.filter((x) => !GEEN_STANDAARD_NODIG.has(x))) {
30
54
  const ls = layoutStatus(soort, layouts);
31
55
  const printerIds = new Set();
32
56
  for (const plek of plekken) {
@@ -34,6 +58,24 @@ export function KlaarOmTePrintenBlok() {
34
58
  const r = await routeringVoor({ documenttype: soort, printplekId: plek.id, layoutId: ls.ok ? ls.layoutId : null });
35
59
  if (r.printer_id)
36
60
  printerIds.add(r.printer_id);
61
+ const lay = ls.ok ? layouts.find((x) => x.id === ls.layoutId) : null;
62
+ const plekNaam = plek.naam ?? "";
63
+ if (!r.printer_id && soort === "controlelijst")
64
+ meldingen.push(geenPrinterMelding("Controlelijst karren", plekNaam));
65
+ if (isEtiketSoort(soort) && lay && Number(lay.breedte_mm) > 0 && Number(lay.hoogte_mm) > 0) {
66
+ const pp = r.printer_id ? printers.get(r.printer_id) : null;
67
+ const cfg = (lay.config ?? {});
68
+ const st = cfg.eigen_traysticker ? "eigen_traysticker" : cfg.eigen_sticker ? "eigen_sticker" : lay.bron === "floriday" ? (soort === "traysticker" ? "floriday_traysticker" : "floriday_sticker") : "klantsticker";
69
+ const regel = stickerRegel(documentTypeLabel(soort), { breedte_mm: Number(lay.breedte_mm), hoogte_mm: Number(lay.hoogte_mm) }, pp ? String(pp.weergavenaam || pp.naam || "printer") : null, pp?.geladen_etiket, a4PerPlek.get(plek.id) ?? null, a4VelVoor(leesA4StickervelWaarde(plek.a4_stickervel), { breedte_mm: Number(lay.breedte_mm), hoogte_mm: Number(lay.hoogte_mm) }), instellingen ? instellingen[st] : null, pp ? (pp.ondersteunde_formaten ?? null) : undefined);
70
+ if (pp && !papierGemeld.has(pp.id)) {
71
+ papierGemeld.add(pp.id);
72
+ const pm = papierMelding(String(pp.weergavenaam || pp.naam || "printer"), pp.geladen_etiket, pp.ondersteunde_formaten ?? null);
73
+ if (pm)
74
+ meldingen.push(`${plekNaam}: ${pm}`);
75
+ }
76
+ if (regel.niveau === "waarschuwing")
77
+ meldingen.push(`${plekNaam}: ${regel.tekst}`);
78
+ }
37
79
  }
38
80
  catch {
39
81
  /* telt als geen printer */
@@ -47,7 +89,7 @@ export function KlaarOmTePrintenBlok() {
47
89
  : { ok: false, tekst: ls.reden === "meerdere" ? "Meerdere actieve layouts, geen standaard" : "Geen layout" },
48
90
  printer: printerIds.size
49
91
  ? { ok: true, tekst: `${printerIds.size} printer${printerIds.size === 1 ? "" : "s"}` }
50
- : { ok: false, tekst: plekken.length ? "Geen printer ingesteld" : "Nog geen printplek" },
92
+ : { ok: false, tekst: soort === "controlelijst" ? geenPrinterMelding("Controlelijst karren", null) : plekken.length ? "Geen printer ingesteld" : "Nog geen printplek" },
51
93
  etiket: isEtiketSoort(soort)
52
94
  ? printerIds.size && metEtiket.length === printerIds.size
53
95
  ? { ok: true, tekst: "Geladen etiket ingesteld" }
@@ -56,6 +98,7 @@ export function KlaarOmTePrintenBlok() {
56
98
  });
57
99
  }
58
100
  setRegels(uit);
101
+ setWaarschuwingen(meldingen);
59
102
  }
60
103
  finally {
61
104
  setLaden(false);
@@ -65,5 +108,5 @@ export function KlaarOmTePrintenBlok() {
65
108
  void load();
66
109
  }, [load]);
67
110
  const Vak = ({ v, naar }) => !v ? (_jsx("span", { className: "text-muted-foreground", children: "\u2014" })) : (_jsxs("span", { className: "flex flex-wrap items-center gap-2", children: [v.ok ? _jsx(CheckCircle2, { className: "h-4 w-4 text-primary" }) : _jsx(XCircle, { className: "h-4 w-4 text-destructive" }), _jsx("span", { children: v.tekst }), !v.ok && (_jsx(Button, { asChild: true, size: "sm", variant: "outline", children: _jsx("a", { href: naar, children: "Instellen" }) }))] }));
68
- return (_jsxs(Card, { children: [_jsxs(CardHeader, { className: "flex flex-row items-start justify-between gap-2 pb-3", children: [_jsxs("div", { children: [_jsx(CardTitle, { className: "text-base", children: "Klaar om te printen" }), _jsx(CardDescription, { children: "Per documentsoort: is er een layout, een printer en (bij etiketten) het juiste etiket?" })] }), _jsx(Button, { size: "sm", variant: "ghost", onClick: () => void load(), disabled: laden, "aria-label": "Opnieuw controleren", children: _jsx(RefreshCw, { className: `h-4 w-4 ${laden ? "animate-spin" : ""}` }) })] }), _jsx(CardContent, { children: _jsx("div", { className: "overflow-x-auto", children: _jsxs("table", { className: "w-full text-sm", children: [_jsx("thead", { className: "text-left text-muted-foreground", children: _jsxs("tr", { children: [_jsx("th", { className: "py-2 pr-4 font-medium", children: "Document" }), _jsx("th", { className: "py-2 pr-4 font-medium", children: "Layout" }), _jsx("th", { className: "py-2 pr-4 font-medium", children: "Printer" }), _jsx("th", { className: "py-2 font-medium", children: "Etiketmaat" })] }) }), _jsxs("tbody", { children: [regels.map((r) => (_jsxs("tr", { className: "border-t", children: [_jsx("td", { className: "py-2 pr-4 font-medium", children: documentTypeLabel(r.soort) }), _jsx("td", { className: "py-2 pr-4", children: _jsx(Vak, { v: r.layout, naar: NAAR_LAYOUTS }) }), _jsx("td", { className: "py-2 pr-4", children: _jsx(Vak, { v: r.printer, naar: NAAR_PRINTEN }) }), _jsx("td", { className: "py-2", children: _jsx(Vak, { v: r.etiket, naar: NAAR_PRINTEN }) })] }, r.soort))), !regels.length && (_jsx("tr", { children: _jsx("td", { colSpan: 4, className: "py-3 text-muted-foreground", children: laden ? "Controleren…" : "Niets te tonen." }) }))] })] }) }) })] }));
111
+ return (_jsxs(Card, { children: [_jsxs(CardHeader, { className: "flex flex-row items-start justify-between gap-2 pb-3", children: [_jsxs("div", { children: [_jsx(CardTitle, { className: "text-base", children: "Klaar om te printen" }), _jsx(CardDescription, { children: "Per documentsoort: is er een layout, een printer en (bij etiketten) het juiste etiket?" })] }), _jsx(Button, { size: "sm", variant: "ghost", onClick: () => void load(), disabled: laden, "aria-label": "Opnieuw controleren", children: _jsx(RefreshCw, { className: `h-4 w-4 ${laden ? "animate-spin" : ""}` }) })] }), _jsxs(CardContent, { children: [_jsx("div", { className: "overflow-x-auto", children: _jsxs("table", { className: "w-full text-sm", children: [_jsx("thead", { className: "text-left text-muted-foreground", children: _jsxs("tr", { children: [_jsx("th", { className: "py-2 pr-4 font-medium", children: "Document" }), _jsx("th", { className: "py-2 pr-4 font-medium", children: "Layout" }), _jsx("th", { className: "py-2 pr-4 font-medium", children: "Printer" }), _jsx("th", { className: "py-2 font-medium", children: "Etiketmaat" })] }) }), _jsxs("tbody", { children: [regels.map((r) => (_jsxs("tr", { className: "border-t", children: [_jsx("td", { className: "py-2 pr-4 font-medium", children: documentTypeLabel(r.soort) }), _jsx("td", { className: "py-2 pr-4", children: _jsx(Vak, { v: r.layout, naar: NAAR_LAYOUTS }) }), _jsx("td", { className: "py-2 pr-4", children: _jsx(Vak, { v: r.printer, naar: NAAR_PRINTEN }) }), _jsx("td", { className: "py-2", children: _jsx(Vak, { v: r.etiket, naar: NAAR_PRINTEN }) })] }, r.soort))), !regels.length && (_jsx("tr", { children: _jsx("td", { colSpan: 4, className: "py-3 text-muted-foreground", children: laden ? "Controleren…" : "Niets te tonen." }) }))] })] }) }), functies.length > 0 && (_jsxs("details", { className: "mt-4 text-sm", children: [_jsxs("summary", { className: "cursor-pointer text-muted-foreground", children: ["Installatiecontrole databasefuncties (", functies.filter((f) => f.in_orde).length, " van ", functies.length, " in orde)"] }), _jsxs("table", { className: "mt-2 w-full text-xs", children: [_jsx("thead", { className: "text-left text-muted-foreground", children: _jsxs("tr", { children: [_jsx("th", { className: "py-1 pr-3 font-medium", children: "Functie" }), _jsx("th", { className: "py-1 pr-3 font-medium", children: "Aanwezig" }), _jsx("th", { className: "py-1 font-medium", children: "Interne controle" })] }) }), _jsx("tbody", { children: functies.map((f) => (_jsxs("tr", { className: "border-t", children: [_jsx("td", { className: "py-1 pr-3 font-mono", children: f.functie }), _jsx("td", { className: "py-1 pr-3", children: f.aanwezig ? "ja" : "nee" }), _jsx("td", { className: `py-1 ${f.in_orde ? "" : "text-destructive"}`, children: f.interne_controle })] }, f.functie))) })] })] })), waarschuwingen.length > 0 && (_jsxs("div", { className: "mt-4 rounded-md border border-destructive/40 bg-destructive/5 p-3 text-sm", role: "status", children: [_jsx("div", { className: "mb-1 font-medium", children: "Let op (waarschuwing, er wordt wel geprint)" }), _jsx("ul", { className: "list-disc space-y-1 pl-5", children: waarschuwingen.map((w) => _jsx("li", { children: w }, w)) })] }))] })] }));
69
112
  }
@@ -1 +1 @@
1
- {"version":3,"file":"PrintQueuePage.d.ts","sourceRoot":"","sources":["../../src/components/PrintQueuePage.tsx"],"names":[],"mappings":"AAyFA,wBAAgB,cAAc,gCAkb7B"}
1
+ {"version":3,"file":"PrintQueuePage.d.ts","sourceRoot":"","sources":["../../src/components/PrintQueuePage.tsx"],"names":[],"mappings":"AA0FA,wBAAgB,cAAc,gCAmb7B"}
@@ -1,4 +1,5 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { UitwijkRegel } from "./UitwijkRegel.js";
2
3
  import { aantalLabel } from "../lib/printnodeStatus.js";
3
4
  import { scanLabel } from "../lib/printnodeStatus.js";
4
5
  import { useEffect, useMemo, useRef, useState } from "react";
@@ -205,7 +206,7 @@ export function PrintQueuePage() {
205
206
  await reload(true);
206
207
  }
207
208
  }, children: [_jsx(XCircle, { className: "mr-2 h-4 w-4" }), annuleertAlles ? "Bezig…" : `Alles annuleren (${openJobs.length})`] })] })] }), _jsx(PrintStatusBanner, { fout: tickFout }), _jsx("div", { className: "grid gap-4 md:grid-cols-4", children: ["wachtend", "bezig", "voltooid", "mislukt"].map((s) => (_jsx(Card, { children: _jsxs(CardHeader, { className: "pb-2", children: [_jsx(CardDescription, { className: "capitalize", children: s }), _jsx(CardTitle, { className: "text-2xl", title: tellingFout ?? undefined, children: tellingFout && !tellingen ? "—" : tellingen ? (tellingen[s] ?? 0) : "laden…" }), tellingFout ? _jsx("p", { className: "text-destructive text-xs", children: tellingFout }) : null] }) }, s))) }), _jsxs(Card, { children: [_jsxs(CardHeader, { className: "pb-3", children: [_jsx(CardTitle, { className: "text-base", children: "Opdrachten" }), _jsx(CardDescription, { children: loading ? "Laden…" : `${gefilterd.length} opdrachten` })] }), _jsxs(CardContent, { className: "space-y-4", children: [_jsxs("div", { className: "grid gap-3 md:grid-cols-4", children: [_jsxs("div", { className: "relative md:col-span-2", children: [_jsx(Search, { className: "absolute left-3 top-1/2 h-4 w-4 -translate-y-1/2 text-muted-foreground" }), _jsx(Input, { className: "pl-9", placeholder: "Zoek op document of gebruiker", value: zoek, onChange: (e) => setZoek(e.target.value) })] }), _jsxs(Select, { value: status, onValueChange: setStatus, children: [_jsx(SelectTrigger, { children: _jsx(SelectValue, {}) }), _jsxs(SelectContent, { children: [_jsx(SelectItem, { value: "alle", children: "Alle statussen" }), ["wachtend", "bezig", "voltooid", "mislukt", "geannuleerd"].map((s) => (_jsx(SelectItem, { value: s, children: s }, s)))] })] }), _jsxs(Select, { value: plekFilter, onValueChange: setPlekFilter, children: [_jsx(SelectTrigger, { children: _jsx(SelectValue, {}) }), _jsxs(SelectContent, { children: [_jsx(SelectItem, { value: "alle", children: "Alle printplekken" }), plekOpties.map((p) => (_jsx(SelectItem, { value: p, children: p }, p))), _jsx(SelectItem, { value: "\u2014", children: "Zonder printplek" })] })] })] }), _jsxs(Table, { children: [_jsx(TableHeader, { children: _jsxs(TableRow, { children: [_jsx(TableHead, { children: "Document" }), _jsx(TableHead, { children: "Printplek" }), _jsx(TableHead, { children: "Ontwerp" }), _jsx(TableHead, { children: "Printer" }), _jsx(TableHead, { children: "Status" }), _jsx(TableHead, { children: "Tijdstip" }), _jsx(TableHead, { className: "text-right", children: "Acties" })] }) }), _jsxs(TableBody, { children: [gefilterd.length === 0 && (_jsx(TableRow, { children: _jsx(TableCell, { colSpan: 7, className: "py-10 text-center text-sm text-muted-foreground", children: "Geen printopdrachten." }) })), gefilterd.map((j) => (_jsxs(TableRow, { children: [_jsxs(TableCell, { children: [_jsx("span", { className: "font-medium", children: j.documentnaam ?? documentTypeLabel(j.documenttype) }), aantalLabel(j.documenttype, j.kopieen) && (_jsx("span", { className: "ml-2 text-sm text-muted-foreground", children: aantalLabel(j.documenttype, j.kopieen) })), j.is_herprint && (_jsx(Badge, { variant: "outline", className: "ml-2", children: "herprint" })), !heeftOrderKenmerk(j) && !isTestprintJob(j) && (_jsx(Badge, { variant: "outline", className: "ml-2 text-amber-600", children: "geen orderkenmerk" })), j.foutmelding && (_jsx("span", { className: "block text-xs text-destructive", title: `Details voor beheer: ${j.foutmelding}`, children: gebruikersTekst(j.foutmelding, documentTypeLabel) ??
208
- String(j.foutmelding).replace(/^[A-Z_]+:\s*/, "") }))] }), _jsx(TableCell, { className: "text-sm text-muted-foreground", children: plekPerJob.get(j.id) || "—" }), _jsx(TableCell, { className: "text-sm text-muted-foreground", children: _jsxs("span", { className: "block", title: "Gebruikt ontwerp", children: [_jsx("span", { children: j.gebruikte_layout_id
209
+ String(j.foutmelding).replace(/^[A-Z_]+:\s*/, "") })), _jsx(UitwijkRegel, { uitwijk: j.uitwijk })] }), _jsx(TableCell, { className: "text-sm text-muted-foreground", children: plekPerJob.get(j.id) || "—" }), _jsx(TableCell, { className: "text-sm text-muted-foreground", children: _jsxs("span", { className: "block", title: "Gebruikt ontwerp", children: [_jsx("span", { children: j.gebruikte_layout_id
209
210
  ? layoutNaam.get(j.gebruikte_layout_id) ?? "Onbekend ontwerp"
210
211
  : j.gebruikte_bron
211
212
  ? "geen eigen ontwerp"
@@ -1 +1 @@
1
- {"version":3,"file":"PrintplekDetailPage.d.ts","sourceRoot":"","sources":["../../src/components/PrintplekDetailPage.tsx"],"names":[],"mappings":"AAwEA,wBAAgB,mBAAmB,gCA4uBlC"}
1
+ {"version":3,"file":"PrintplekDetailPage.d.ts","sourceRoot":"","sources":["../../src/components/PrintplekDetailPage.tsx"],"names":[],"mappings":"AA0EA,wBAAgB,mBAAmB,gCA+uBlC"}
@@ -19,6 +19,8 @@ import { useComputers } from "./ComputersLijst.js";
19
19
  import { DOCUMENT_TYPES, documentTypeLabel, isEtiketSoort } from "../lib/documentTypes.js";
20
20
  import { drukTestpaginaAf } from "../lib/testpagina.js";
21
21
  import { TestprintDialog } from "./TestprintDialog.js";
22
+ import { A4StickervelKaart } from "./A4StickervelKaart.js";
23
+ import { StickerRouteTestKaart } from "./StickerRouteTestKaart.js";
22
24
  import { leesbareFout } from "../lib/foutTekst.js";
23
25
  import { supabase } from "../lib/supabaseClient.js";
24
26
  import { useRouteringOverzicht } from "../lib/printRoutering.js";
@@ -284,7 +286,7 @@ export function PrintplekDetailPage() {
284
286
  })) })] }), _jsx(ComputerVerwijderenDialog, { open: !!teVerwijderen, onOpenChange: (v) => !v && setTeVerwijderen(null), computerNaam: teVerwijderen, printplekId: plekId, printers: teVerwijderenPrinters, andereplekken: andereplekken, onKlaar: () => {
285
287
  void herlaadComputers(true);
286
288
  void vernieuw();
287
- } }), _jsxs(Card, { children: [_jsxs(CardHeader, { children: [_jsxs(CardTitle, { className: "flex items-center gap-2 text-base", children: [_jsx(Printer, { className: "h-4 w-4" }), " Printers op deze plek"] }), _jsx(CardDescription, { children: "Gegroepeerd per computer waaraan de printer volgens de live scan hangt." })] }), _jsxs(CardContent, { className: "space-y-4", children: [eigenPrinters.length === 0 ? (_jsxs("div", { className: "text-muted-foreground flex items-center gap-2 text-sm", children: [_jsx(AlertTriangle, { className: "text-destructive h-4 w-4" }), "Nog geen printers gekoppeld aan deze plek."] })) : null, printersPerComputer.map((g) => g.printers.length ? (_jsxs("div", { className: "space-y-2", children: [_jsxs("p", { className: "text-muted-foreground flex items-center gap-2 text-xs font-medium", children: [_jsx(Monitor, { className: "h-3.5 w-3.5" }), " ", g.naam] }), g.printers.map((p) => _jsx(PrinterRij, { p: p }, p.id))] }, g.naam)) : null), nietGevonden.length > 0 ? (_jsxs("div", { className: "space-y-2", children: [_jsxs("p", { className: "text-muted-foreground flex items-center gap-2 text-xs font-medium", children: [_jsx(AlertTriangle, { className: "h-3.5 w-3.5" }), " Niet gevonden op een computer van deze plek"] }), nietGevonden.map((p) => _jsx(PrinterRij, { p: p }, p.id))] })) : null, nietToegewezen.length > 0 ? (_jsxs("div", { className: "flex items-center gap-2", children: [_jsxs("select", { className: selectKlasse, value: toevoegen, onChange: (e) => setToevoegen(e.target.value), children: [_jsx("option", { value: "", children: "Printer toevoegen\u2026" }), nietToegewezen.map((p) => (_jsx("option", { value: p.id, children: p.naam }, p.id)))] }), _jsxs(Button, { size: "sm", disabled: !toevoegen, onClick: async () => {
289
+ } }), _jsx(A4StickervelKaart, { printplekId: plekId }), _jsx(StickerRouteTestKaart, { printplekId: plekId }), _jsxs(Card, { children: [_jsxs(CardHeader, { children: [_jsxs(CardTitle, { className: "flex items-center gap-2 text-base", children: [_jsx(Printer, { className: "h-4 w-4" }), " Printers op deze plek"] }), _jsx(CardDescription, { children: "Gegroepeerd per computer waaraan de printer volgens de live scan hangt." })] }), _jsxs(CardContent, { className: "space-y-4", children: [eigenPrinters.length === 0 ? (_jsxs("div", { className: "text-muted-foreground flex items-center gap-2 text-sm", children: [_jsx(AlertTriangle, { className: "text-destructive h-4 w-4" }), "Nog geen printers gekoppeld aan deze plek."] })) : null, printersPerComputer.map((g) => g.printers.length ? (_jsxs("div", { className: "space-y-2", children: [_jsxs("p", { className: "text-muted-foreground flex items-center gap-2 text-xs font-medium", children: [_jsx(Monitor, { className: "h-3.5 w-3.5" }), " ", g.naam] }), g.printers.map((p) => _jsx(PrinterRij, { p: p }, p.id))] }, g.naam)) : null), nietGevonden.length > 0 ? (_jsxs("div", { className: "space-y-2", children: [_jsxs("p", { className: "text-muted-foreground flex items-center gap-2 text-xs font-medium", children: [_jsx(AlertTriangle, { className: "h-3.5 w-3.5" }), " Niet gevonden op een computer van deze plek"] }), nietGevonden.map((p) => _jsx(PrinterRij, { p: p }, p.id))] })) : null, nietToegewezen.length > 0 ? (_jsxs("div", { className: "flex items-center gap-2", children: [_jsxs("select", { className: selectKlasse, value: toevoegen, onChange: (e) => setToevoegen(e.target.value), children: [_jsx("option", { value: "", children: "Printer toevoegen\u2026" }), nietToegewezen.map((p) => (_jsx("option", { value: p.id, children: p.naam }, p.id)))] }), _jsxs(Button, { size: "sm", disabled: !toevoegen, onClick: async () => {
288
290
  try {
289
291
  await wijsPrinterToeAanPrintplek(plekId, toevoegen);
290
292
  setToevoegen("");
@@ -1 +1 @@
1
- {"version":3,"file":"PrintplekkenPage.d.ts","sourceRoot":"","sources":["../../src/components/PrintplekkenPage.tsx"],"names":[],"mappings":"AAsDA,wBAAgB,gBAAgB,CAAC,EAAE,OAAe,EAAE,GAAE;IAAE,OAAO,CAAC,EAAE,OAAO,CAAA;CAAO,+BA+e/E"}
1
+ {"version":3,"file":"PrintplekkenPage.d.ts","sourceRoot":"","sources":["../../src/components/PrintplekkenPage.tsx"],"names":[],"mappings":"AAuDA,wBAAgB,gBAAgB,CAAC,EAAE,OAAe,EAAE,GAAE;IAAE,OAAO,CAAC,EAAE,OAAO,CAAA;CAAO,+BAkf/E"}
@@ -18,6 +18,7 @@ import { PrintplekWizard } from "./PrintplekWizard.js";
18
18
  import { PrintplekVerwijderenDialog } from "./PrintplekVerwijderenDialog.js";
19
19
  import { TestprintDialog } from "./TestprintDialog.js";
20
20
  import { PrintStatusBanner } from "./PrintStatusBanner.js";
21
+ import { KlaarOmTePrintenBlok } from "./KlaarOmTePrintenBlok.js";
21
22
  import { bijgewerktTekst, useAutoRefresh } from "../lib/useAutoRefresh.js";
22
23
  import { documentTypeLabel } from "../lib/documentTypes.js";
23
24
  export function PrintplekkenPage({ ingebed = false } = {}) {
@@ -99,7 +100,7 @@ export function PrintplekkenPage({ ingebed = false } = {}) {
99
100
  void reload();
100
101
  };
101
102
  const Wrapper = ingebed ? "div" : "main";
102
- return (_jsxs(Wrapper, { className: ingebed ? "space-y-6" : "space-y-6 p-6", children: [_jsxs("div", { className: "flex flex-wrap items-end justify-between gap-4", children: [!ingebed && (_jsxs("div", { children: [_jsx("h1", { className: "text-xl font-semibold", children: "Printplekken" }), _jsx("p", { className: "text-muted-foreground text-sm", children: "Een printplek is een fysieke plek in het bedrijf, bijvoorbeeld een pickstation. Alle computers en printers op die plek horen bij elkaar." })] })), _jsxs("div", { className: "ml-auto flex items-center gap-2", children: [_jsxs(Button, { variant: "outline", onClick: () => setComputerToevoegen(true), children: [_jsx(Plus, { className: "mr-2 h-4 w-4" }), " Computer aanmelden"] }), _jsxs(Button, { onClick: () => setWizardOpen(true), children: [_jsx(Wand2, { className: "mr-2 h-4 w-4" }), " Printplek instellen"] })] })] }), _jsx(PrintStatusBanner, { fout: computersFout, offlineWerkplekken: computers.filter((c) => !c.online).map((c) => c.naam), toonWerkplekLink: false }), fout ? (_jsx("div", { className: "border-destructive/40 bg-destructive/10 text-destructive rounded-xl border p-3 text-sm", children: fout })) : null, _jsxs("div", { className: "flex flex-wrap items-center gap-3 rounded-xl border p-3", children: [_jsxs("div", { className: "relative min-w-[220px] flex-1", children: [_jsx(Search, { className: "text-muted-foreground absolute top-2.5 left-3 h-4 w-4" }), _jsx(Input, { className: "pl-9", placeholder: "Zoek printplek of computer\u2026", value: zoekterm, onChange: (e) => setZoekterm(e.target.value) })] }), _jsxs("span", { className: "text-muted-foreground text-sm", children: [plekken.length, " plek", plekken.length === 1 ? "" : "ken", " \u00B7 ", computers.length, " computer", computers.length === 1 ? "" : "s", " (", computersOnline, " aan) \u00B7 ", totaalPrinters, " printer", totaalPrinters === 1 ? "" : "s"] }), _jsx("span", { className: "text-muted-foreground ml-auto text-xs", children: bijgewerktTekst(bijgewerkt) })] }), kaarten.length === 0 ? (_jsxs(Card, { children: [_jsxs(CardHeader, { children: [_jsx(CardTitle, { className: "text-base", children: plekken.length === 0 ? "Nog geen printplekken" : "Geen resultaten" }), _jsx(CardDescription, { children: plekken.length === 0
103
+ return (_jsxs(Wrapper, { className: ingebed ? "space-y-6" : "space-y-6 p-6", children: [_jsxs("div", { className: "flex flex-wrap items-end justify-between gap-4", children: [!ingebed && (_jsxs("div", { children: [_jsx("h1", { className: "text-xl font-semibold", children: "Printplekken" }), _jsx("p", { className: "text-muted-foreground text-sm", children: "Een printplek is een fysieke plek in het bedrijf, bijvoorbeeld een pickstation. Alle computers en printers op die plek horen bij elkaar." })] })), _jsxs("div", { className: "ml-auto flex items-center gap-2", children: [_jsxs(Button, { variant: "outline", onClick: () => setComputerToevoegen(true), children: [_jsx(Plus, { className: "mr-2 h-4 w-4" }), " Computer aanmelden"] }), _jsxs(Button, { onClick: () => setWizardOpen(true), children: [_jsx(Wand2, { className: "mr-2 h-4 w-4" }), " Printplek instellen"] })] })] }), _jsx(PrintStatusBanner, { fout: computersFout, offlineWerkplekken: computers.filter((c) => !c.online).map((c) => c.naam), toonWerkplekLink: false }), !ingebed && _jsx(KlaarOmTePrintenBlok, {}), fout ? (_jsx("div", { className: "border-destructive/40 bg-destructive/10 text-destructive rounded-xl border p-3 text-sm", children: fout })) : null, _jsxs("div", { className: "flex flex-wrap items-center gap-3 rounded-xl border p-3", children: [_jsxs("div", { className: "relative min-w-[220px] flex-1", children: [_jsx(Search, { className: "text-muted-foreground absolute top-2.5 left-3 h-4 w-4" }), _jsx(Input, { className: "pl-9", placeholder: "Zoek printplek of computer\u2026", value: zoekterm, onChange: (e) => setZoekterm(e.target.value) })] }), _jsxs("span", { className: "text-muted-foreground text-sm", children: [plekken.length, " plek", plekken.length === 1 ? "" : "ken", " \u00B7 ", computers.length, " computer", computers.length === 1 ? "" : "s", " (", computersOnline, " aan) \u00B7 ", totaalPrinters, " printer", totaalPrinters === 1 ? "" : "s"] }), _jsx("span", { className: "text-muted-foreground ml-auto text-xs", children: bijgewerktTekst(bijgewerkt) })] }), kaarten.length === 0 ? (_jsxs(Card, { children: [_jsxs(CardHeader, { children: [_jsx(CardTitle, { className: "text-base", children: plekken.length === 0 ? "Nog geen printplekken" : "Geen resultaten" }), _jsx(CardDescription, { children: plekken.length === 0
103
104
  ? 'Maak er één aan per plek waar geprint wordt, bijvoorbeeld "Pickstation 1".'
104
105
  : "Geen printplek of computer gevonden met deze zoekterm." })] }), _jsx(CardContent, { className: "flex flex-wrap gap-2", children: _jsxs(Button, { onClick: () => setWizardOpen(true), children: [_jsx(Wand2, { className: "mr-2 h-4 w-4" }), " Printplek instellen"] }) })] })) : (_jsx("div", { className: "grid gap-4 xl:grid-cols-2", children: kaarten.map((k) => (_jsxs("div", { className: "rounded-xl border p-4", children: [_jsxs("div", { className: "flex items-start justify-between gap-3", children: [_jsxs("div", { className: "min-w-0", children: [_jsxs("div", { className: "flex items-center gap-2", children: [_jsx(MapPin, { className: "text-muted-foreground h-4 w-4" }), _jsx("span", { className: "truncate font-medium", children: k.plek.naam }), _jsx("span", { className: `h-2.5 w-2.5 shrink-0 rounded-full ${k.klaar ? "bg-emerald-500" : "bg-destructive"}`, "aria-label": k.klaar ? "Klaar om te printen" : "Nog niet compleet" })] }), k.plek.omschrijving ? (_jsx("p", { className: "text-muted-foreground mt-1 text-xs", children: k.plek.omschrijving })) : null] }), _jsxs("div", { className: "flex shrink-0 items-center gap-3", children: [_jsxs("button", { type: "button", className: "text-primary flex items-center text-xs", onClick: () => setTestprint({ id: k.plek.id, naam: k.plek.naam }), children: [_jsx(Printer, { className: "mr-1 h-3.5 w-3.5" }), " Testprint"] }), _jsxs("button", { type: "button", className: "text-destructive flex items-center text-xs", onClick: () => setTeVerwijderen({ id: k.plek.id, naam: k.plek.naam }), children: [_jsx(Trash2, { className: "mr-1 h-3.5 w-3.5" }), " Verwijderen"] }), _jsxs(Link, { to: "/layouts-printers/printplekken/$printplekId", params: { printplekId: k.plek.id }, className: "text-primary flex items-center text-xs", children: ["Instellen ", _jsx(ChevronRight, { className: "ml-1 h-3.5 w-3.5" })] })] })] }), _jsx("div", { className: "mt-3 space-y-2", children: k.computerLijst.length === 0 ? (_jsxs("div", { className: "text-muted-foreground flex flex-wrap items-center gap-2 rounded-lg border border-dashed p-3 text-sm", children: ["Nog geen computer gekoppeld", nietGekoppeld.length > 0 ? (_jsxs(Select, { onValueChange: (naam) => void koppel(k.plek.id, naam), children: [_jsx(SelectTrigger, { className: "h-8 w-[190px]", children: _jsx(SelectValue, { placeholder: "Computer koppelen" }) }), _jsx(SelectContent, { children: nietGekoppeld.map((c) => (_jsx(SelectItem, { value: c.naam, children: c.naam }, c.id))) })] })) : (_jsx(Button, { variant: "ghost", size: "sm", onClick: () => setComputerToevoegen(true), children: "Computer aanmelden" }))] })) : (k.computerLijst.map((c) => (_jsxs("div", { className: "bg-muted/40 flex flex-wrap items-center gap-3 rounded-lg px-3 py-2 text-sm", children: [_jsx(Monitor, { className: "text-muted-foreground h-4 w-4 shrink-0" }), _jsx("span", { className: "min-w-0 flex-1 truncate font-medium", children: c.naam }), _jsx("span", { className: `rounded-full px-2 py-0.5 text-xs font-medium ${c.online ? "bg-primary/10 text-primary" : "bg-muted text-muted-foreground"}`, children: c.aangemeld
105
106
  ? c.online
@@ -0,0 +1,5 @@
1
+ /** Per voorbeeldmaat: welke route volgt op deze printplek, met tekening en testprint. */
2
+ export declare function StickerRouteTestKaart({ printplekId }: {
3
+ printplekId: string;
4
+ }): import("react").JSX.Element;
5
+ //# sourceMappingURL=StickerRouteTestKaart.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"StickerRouteTestKaart.d.ts","sourceRoot":"","sources":["../../src/components/StickerRouteTestKaart.tsx"],"names":[],"mappings":"AAmBA,yFAAyF;AACzF,wBAAgB,qBAAqB,CAAC,EAAE,WAAW,EAAE,EAAE;IAAE,WAAW,EAAE,MAAM,CAAA;CAAE,+BA2F7E"}
@@ -0,0 +1,75 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { useEffect, useState } from "react";
3
+ import { Button, Card, CardContent, CardDescription, CardHeader, CardTitle } from "@flowselections/core";
4
+ import { toast } from "sonner";
5
+ import { supabase } from "../lib/supabaseClient.js";
6
+ import { routeringVoor } from "../lib/printRoutering.js";
7
+ import { leesGeladenEtiket } from "../lib/etiketControle.js";
8
+ import { a4VelVoor, kiesUitwijkroute, leesA4StickervelWaarde, leesStickerInstellingenStrikt, } from "../lib/stickerUitwijk.js";
9
+ import { VOORBEELD_STICKERMATEN, verstuurStickerRouteTestprint } from "../lib/testprint.js";
10
+ import { UitwijkTekening } from "./UitwijkTekening.js";
11
+ /** Per voorbeeldmaat: welke route volgt op deze printplek, met tekening en testprint. */
12
+ export function StickerRouteTestKaart({ printplekId }) {
13
+ const [regels, setRegels] = useState(null);
14
+ const [bezig, setBezig] = useState(null);
15
+ useEffect(() => {
16
+ let weg = false;
17
+ void (async () => {
18
+ const db = supabase;
19
+ const [st, pk, { data: plek }, { data: inst }] = await Promise.all([
20
+ routeringVoor({ documenttype: "sticker", printplekId, layoutId: null }).catch(() => null),
21
+ routeringVoor({ documenttype: "pakbon", printplekId, layoutId: null }).catch(() => null),
22
+ db.from("print_plekken").select("a4_stickervel").eq("id", printplekId).maybeSingle(),
23
+ db.rpc("layouts_sticker_verkleinen").then((r) => ({ data: r.error ? null : r.data }), () => ({ data: null })),
24
+ ]);
25
+ const ids = [st?.printer_id, pk?.printer_id].filter(Boolean);
26
+ const { data: prs } = ids.length
27
+ ? await db.from("printers").select("id, naam, weergavenaam, geladen_etiket, ondersteunde_formaten").in("id", ids)
28
+ : { data: [] };
29
+ const lijst = (Array.isArray(prs) ? prs : []);
30
+ const lp = lijst.find((p) => p.id === st?.printer_id);
31
+ const a4 = lijst.find((p) => p.id === pk?.printer_id && p.id !== st?.printer_id);
32
+ const e = lp ? leesGeladenEtiket(lp.geladen_etiket) : null;
33
+ const papier = (f) => {
34
+ if (!f || typeof f !== "object")
35
+ return null;
36
+ const o = {};
37
+ for (const [k, v] of Object.entries(f))
38
+ if (Array.isArray(v) && v.length >= 2)
39
+ o[k] = v;
40
+ return Object.keys(o).length ? o : null;
41
+ };
42
+ const etiketten = lp && e
43
+ ? [{ printerNaam: String(lp.weergavenaam || lp.naam || "Labelprinter"), paper: e.standaard ? "" : e.naam, breedte_mm: e.breedte_mm, hoogte_mm: e.hoogte_mm, formaten: lp.ondersteunde_formaten ? papier(lp.ondersteunde_formaten) : undefined }]
44
+ : [];
45
+ const vel = leesA4StickervelWaarde(plek?.a4_stickervel);
46
+ const instelling = leesStickerInstellingenStrikt(inst)?.klantsticker ?? null;
47
+ const uit = VOORBEELD_STICKERMATEN.map((m) => ({
48
+ maat: m,
49
+ uitleg: m.uitleg,
50
+ u: kiesUitwijkroute({ sticker: m, etiketten, a4Printer: a4 ? { naam: String(a4.weergavenaam || a4.naam || "A4-printer") } : null, a4VelIngesteld: !!a4VelVoor(vel, m), a4VelIndeling: a4VelVoor(vel, m), instelling, heeftBarcode: false }),
51
+ }));
52
+ if (!weg)
53
+ setRegels(uit);
54
+ })();
55
+ return () => { weg = true; };
56
+ }, [printplekId]);
57
+ const print = async (r) => {
58
+ const sleutel = `${r.maat.breedte_mm}x${r.maat.hoogte_mm}`;
59
+ setBezig(sleutel);
60
+ try {
61
+ await verstuurStickerRouteTestprint(r.maat, { printplekId });
62
+ toast.success("Testprint staat in de printwachtrij. Daar zie je waar de sticker valt.");
63
+ }
64
+ catch (e) {
65
+ toast.error(e instanceof Error ? e.message : "Testprint is niet gelukt.");
66
+ }
67
+ finally {
68
+ setBezig(null);
69
+ }
70
+ };
71
+ return (_jsxs(Card, { children: [_jsxs(CardHeader, { children: [_jsx(CardTitle, { className: "text-base", children: "Testprint per stickermaat" }), _jsx(CardDescription, { children: "Zo komt elke voorbeeldsticker op deze printplek uit. Een sticker wordt altijd geprint, nooit uitgerekt." })] }), _jsxs(CardContent, { className: "space-y-3 text-sm", children: [!regels && _jsx("p", { className: "text-muted-foreground", children: "Controleren\u2026" }), regels?.map((r) => {
72
+ const sleutel = `${r.maat.breedte_mm}x${r.maat.hoogte_mm}`;
73
+ return (_jsxs("div", { className: "flex flex-wrap items-center gap-3 border-t pt-3", children: [r.u ? (_jsx(UitwijkTekening, { route: r.u.uitwijkroute, sticker: r.maat, pagina: { breedte_mm: r.u.pagina_breedte_mm, hoogte_mm: r.u.pagina_hoogte_mm }, schaal: r.u.schaal, rotate: r.u.rotate, breedtePx: 64 })) : null, _jsxs("div", { className: "min-w-0 flex-1", children: [_jsxs("div", { className: "font-medium", children: ["Voorbeeldsticker ", r.maat.breedte_mm, "\u00D7", r.maat.hoogte_mm, " mm"] }), _jsx("div", { className: "text-muted-foreground", children: r.u ? r.u.reden : "Geen labelprinter en geen A4-printer op deze printplek." })] }), _jsx(Button, { size: "sm", variant: "outline", disabled: !r.u || bezig === sleutel, onClick: () => void print(r), children: "Testprint" })] }, sleutel));
74
+ })] })] }));
75
+ }
@@ -0,0 +1,5 @@
1
+ /** Printstatus in gewone taal + tekening van waar de sticker op het etiket valt. */
2
+ export declare function UitwijkRegel({ uitwijk }: {
3
+ uitwijk: unknown;
4
+ }): import("react").JSX.Element | null;
5
+ //# sourceMappingURL=UitwijkRegel.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"UitwijkRegel.d.ts","sourceRoot":"","sources":["../../src/components/UitwijkRegel.tsx"],"names":[],"mappings":"AAEA,oFAAoF;AACpF,wBAAgB,YAAY,CAAC,EAAE,OAAO,EAAE,EAAE;IAAE,OAAO,EAAE,OAAO,CAAA;CAAE,sCAyB7D"}
@@ -0,0 +1,17 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { UitwijkTekening } from "./UitwijkTekening.js";
3
+ /** Printstatus in gewone taal + tekening van waar de sticker op het etiket valt. */
4
+ export function UitwijkRegel({ uitwijk }) {
5
+ if (!uitwijk || typeof uitwijk !== "object")
6
+ return null;
7
+ const u = uitwijk;
8
+ const reden = typeof u.reden === "string" ? u.reden : "";
9
+ if (!reden)
10
+ return null;
11
+ const sb = Number(u.sticker_breedte_mm);
12
+ const sh = Number(u.sticker_hoogte_mm);
13
+ const pb = Number(u.pagina_breedte_mm);
14
+ const ph = Number(u.pagina_hoogte_mm);
15
+ const tekenbaar = sb > 0 && sh > 0 && pb > 0 && ph > 0;
16
+ return (_jsxs("span", { className: "mt-1 flex items-center gap-2 text-xs text-muted-foreground", children: [tekenbaar && (_jsx(UitwijkTekening, { route: String(u.uitwijkroute ?? ""), sticker: { breedte_mm: sb, hoogte_mm: sh }, pagina: { breedte_mm: pb, hoogte_mm: ph }, schaal: Number(u.schaal) > 0 ? Number(u.schaal) : 1, rotate: Number(u.rotate) === 90 ? 90 : 0, breedtePx: 48 })), _jsxs("span", { children: [reden, typeof u.printerNaam === "string" && u.printerNaam ? ` (${u.printerNaam})` : ""] })] }));
17
+ }
@@ -0,0 +1,19 @@
1
+ /**
2
+ * Kleine tekening: de rand van het etiket (of A4) met daarop de sticker zoals
3
+ * hij valt. Puur weergave; dezelfde rekenregels als de PDF-plaatsing.
4
+ */
5
+ export declare function UitwijkTekening({ route, sticker, pagina, schaal, rotate, breedtePx, }: {
6
+ route: string;
7
+ sticker: {
8
+ breedte_mm: number;
9
+ hoogte_mm: number;
10
+ };
11
+ pagina: {
12
+ breedte_mm: number;
13
+ hoogte_mm: number;
14
+ };
15
+ schaal?: number;
16
+ rotate?: 0 | 90;
17
+ breedtePx?: number;
18
+ }): import("react").JSX.Element;
19
+ //# sourceMappingURL=UitwijkTekening.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"UitwijkTekening.d.ts","sourceRoot":"","sources":["../../src/components/UitwijkTekening.tsx"],"names":[],"mappings":"AAGA;;;GAGG;AACH,wBAAgB,eAAe,CAAC,EAC9B,KAAK,EACL,OAAO,EACP,MAAM,EACN,MAAU,EACV,MAAU,EACV,SAAe,GAChB,EAAE;IACD,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC;IACnD,MAAM,EAAE;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC;IAClD,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,+BA0BA"}
@@ -0,0 +1,21 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { centreer, velVakken } from "../lib/stickerPlaatsing.js";
3
+ import { velindelingVoor } from "../lib/stickerUitwijk.js";
4
+ /**
5
+ * Kleine tekening: de rand van het etiket (of A4) met daarop de sticker zoals
6
+ * hij valt. Puur weergave; dezelfde rekenregels als de PDF-plaatsing.
7
+ */
8
+ export function UitwijkTekening({ route, sticker, pagina, schaal = 1, rotate = 0, breedtePx = 120, }) {
9
+ const pb = pagina.breedte_mm;
10
+ const ph = pagina.hoogte_mm;
11
+ const a4 = route === "a4_vel" || route === "a4_snijlijnen";
12
+ const vakken = a4
13
+ ? velVakken(sticker.breedte_mm, sticker.hoogte_mm, route === "a4_vel" ? velindelingVoor(sticker.breedte_mm, sticker.hoogte_mm) : null).vakken
14
+ : [];
15
+ const pl = centreer(pb, ph, sticker.breedte_mm, sticker.hoogte_mm, schaal, rotate);
16
+ // SVG-y loopt omlaag; PDF-y omhoog.
17
+ const y = (mmOnder, h) => ph - mmOnder - h;
18
+ return (_jsxs("svg", { viewBox: `-2 -2 ${pb + 4} ${ph + 4}`, width: breedtePx, role: "img", "aria-label": `Etiket ${Math.round(pb)}×${Math.round(ph)} mm met sticker ${Math.round(sticker.breedte_mm)}×${Math.round(sticker.hoogte_mm)} mm`, className: "text-muted-foreground", children: [_jsx("rect", { x: 0, y: 0, width: pb, height: ph, rx: 1.5, fill: "none", stroke: "currentColor", strokeWidth: 0.8, strokeDasharray: "2 1.5" }), a4
19
+ ? vakken.map((v, i) => (_jsx("rect", { x: v.x_mm, y: y(v.y_mm, v.h_mm), width: v.b_mm, height: v.h_mm, className: "fill-primary/20 stroke-primary", strokeWidth: 0.4 }, i)))
20
+ : _jsx("rect", { x: pl.x_mm, y: y(pl.y_mm, pl.h_mm), width: pl.b_mm, height: pl.h_mm, className: "fill-primary/25 stroke-primary", strokeWidth: 0.6 })] }));
21
+ }
@@ -125,4 +125,16 @@ export type { LayoutStandaard } from './lib/layoutStandaarden.js';
125
125
  export { KlaarOmTePrintenBlok } from './components/KlaarOmTePrintenBlok.js';
126
126
  export { bedrijfMetTerugval, leesBedrijfsgegevens, BEDRIJFSGEGEVENS_SLEUTEL } from './lib/bedrijfsgegevens.js';
127
127
  export type { Bedrijfsgegevens } from './lib/bedrijfsgegevens.js';
128
+ export { kiesUitwijkroute, stickerMatenOverzicht, vroegeStickerWaarschuwing, uitwijkVoorPickschermen, standaardStickerInstellingen, leesStickerInstellingen, barcodeLeesbaar, velindelingVoor, A4_VELINDELINGEN, GANGBARE_ETIKETMATEN, STICKER_SOORTEN, STICKER_INSTELLING_SLEUTEL, A4_STICKERVEL_SLEUTEL, type StickerSoort, type Uitwijkroute, type UitwijkUitkomst, type VerkleinInstelling, } from "./lib/stickerUitwijk.js";
129
+ export { stickerRegel, matenPerPrintplek, geenPrinterMelding, papierMelding, type InstallMelding } from "./lib/installCheck.js";
130
+ export { papierOpMaat, papierWaarschuwingen, a4VelPast, a4VelVoor, leesA4StickervelWaarde, leesStickerInstellingenStrikt, EIGEN_VEL_VOORSTEL, PAPIER_TOLERANTIE_MM, type A4Stickervel, type Velindeling } from "./lib/stickerUitwijk.js";
131
+ export { centreer, velVakken, testvelPdf, SNIJ_MARGE_MM, type Plaatsing } from "./lib/stickerPlaatsing.js";
132
+ export { haalVroegeStickerWaarschuwing, type VroegeWaarschuwingRegel } from "./lib/vroegeWaarschuwing.js";
133
+ export { GEEN_STANDAARD_NODIG, opgevraagdZonderStandaard } from "./lib/klaarOmTePrinten.js";
134
+ export { laagDeel, lagenVanRegel, beladingTekst } from "./lib/belading.js";
135
+ export { VOORBEELD_STICKERMATEN, verstuurStickerRouteTestprint, voorbeeldStickerHtml } from "./lib/testprint.js";
136
+ export { A4StickervelKaart } from "./components/A4StickervelKaart.js";
137
+ export { StickerRouteTestKaart } from "./components/StickerRouteTestKaart.js";
138
+ export { UitwijkTekening } from "./components/UitwijkTekening.js";
139
+ export { UitwijkRegel } from "./components/UitwijkRegel.js";
128
140
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}