@flowselections/layout-maker 1.46.1 → 1.51.3
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.
- package/dist-lib/components/ComputerVerwijderenDialog.d.ts +16 -0
- package/dist-lib/components/ComputerVerwijderenDialog.d.ts.map +1 -0
- package/dist-lib/components/ComputerVerwijderenDialog.js +38 -0
- package/dist-lib/components/ComputersLijst.d.ts.map +1 -1
- package/dist-lib/components/ComputersLijst.js +5 -2
- package/dist-lib/components/LayoutPrinterSelect.d.ts +3 -5
- package/dist-lib/components/LayoutPrinterSelect.d.ts.map +1 -1
- package/dist-lib/components/LayoutPrinterSelect.js +40 -17
- package/dist-lib/components/LayoutsPage.d.ts.map +1 -1
- package/dist-lib/components/LayoutsPage.js +28 -18
- package/dist-lib/components/PrinterSetupWizard.d.ts +3 -1
- package/dist-lib/components/PrinterSetupWizard.d.ts.map +1 -1
- package/dist-lib/components/PrinterSetupWizard.js +13 -4
- package/dist-lib/components/PrinterVervangenDialog.d.ts +14 -0
- package/dist-lib/components/PrinterVervangenDialog.d.ts.map +1 -0
- package/dist-lib/components/PrinterVervangenDialog.js +44 -0
- package/dist-lib/components/PrintersPage.d.ts.map +1 -1
- package/dist-lib/components/PrintersPage.js +2 -2
- package/dist-lib/components/PrintplekDetailPage.d.ts.map +1 -1
- package/dist-lib/components/PrintplekDetailPage.js +175 -48
- package/dist-lib/components/PrintplekVerwijderenDialog.d.ts +9 -0
- package/dist-lib/components/PrintplekVerwijderenDialog.d.ts.map +1 -0
- package/dist-lib/components/PrintplekVerwijderenDialog.js +34 -0
- package/dist-lib/components/PrintplekkenPage.d.ts.map +1 -1
- package/dist-lib/components/PrintplekkenPage.js +28 -6
- package/dist-lib/components/WerkplekConfiguratiePage.d.ts.map +1 -1
- package/dist-lib/components/WerkplekConfiguratiePage.js +67 -25
- package/dist-lib/index.d.ts +9 -4
- package/dist-lib/index.d.ts.map +1 -1
- package/dist-lib/index.js +7 -3
- package/dist-lib/integrations/supabase/auth-middleware.d.ts +4 -31183
- package/dist-lib/integrations/supabase/auth-middleware.d.ts.map +1 -1
- package/dist-lib/integrations/supabase/auth-middleware.js +1 -1
- package/dist-lib/integrations/supabase/client.server.d.ts +2 -31183
- package/dist-lib/integrations/supabase/client.server.d.ts.map +1 -1
- package/dist-lib/integrations/supabase/moduleClient.d.ts +511 -6
- package/dist-lib/integrations/supabase/moduleClient.d.ts.map +1 -1
- package/dist-lib/integrations/supabase/types.d.ts +527 -6
- package/dist-lib/integrations/supabase/types.d.ts.map +1 -1
- package/dist-lib/lib/aiLayout.functions.d.ts +1 -31183
- package/dist-lib/lib/aiLayout.functions.d.ts.map +1 -1
- package/dist-lib/lib/documentRoutering.d.ts +2 -1
- package/dist-lib/lib/documentRoutering.d.ts.map +1 -1
- package/dist-lib/lib/documentRoutering.js +5 -8
- package/dist-lib/lib/foutTekst.d.ts +3 -0
- package/dist-lib/lib/foutTekst.d.ts.map +1 -0
- package/dist-lib/lib/foutTekst.js +25 -0
- package/dist-lib/lib/printApi.d.ts.map +1 -1
- package/dist-lib/lib/printApi.js +13 -39
- package/dist-lib/lib/printQueue.server.d.ts.map +1 -1
- package/dist-lib/lib/printQueue.server.js +19 -66
- package/dist-lib/lib/printRoutering.d.ts +34 -0
- package/dist-lib/lib/printRoutering.d.ts.map +1 -0
- package/dist-lib/lib/printRoutering.js +69 -0
- package/dist-lib/lib/printService.functions.d.ts +5 -155915
- package/dist-lib/lib/printService.functions.d.ts.map +1 -1
- package/dist-lib/lib/printplekken.d.ts +67 -2
- package/dist-lib/lib/printplekken.d.ts.map +1 -1
- package/dist-lib/lib/printplekken.js +141 -10
- package/dist-lib/lib/useDocumentData.d.ts +15 -10
- package/dist-lib/lib/useDocumentData.d.ts.map +1 -1
- package/dist-lib/lib/useDocumentData.js +43 -34
- package/package.json +2 -2
|
@@ -582,88 +582,41 @@ async function zoekPrinter(db, job, layout) {
|
|
|
582
582
|
const explicietePlek = leesPrintPlekId(job);
|
|
583
583
|
// Een Engine-printplek is een harde keuze. Nooit terugvallen op computer,
|
|
584
584
|
// layout of bedrijfsregels wanneer de Engine een print_plek_id meegaf.
|
|
585
|
+
// Alleen een printer die nog echt aan de plek gekoppeld én actief is telt.
|
|
586
|
+
const plekPrinter = async (plek) => {
|
|
587
|
+
const { data } = await db.rpc("printplek_printer", { _plek: plek, _documenttype: type });
|
|
588
|
+
return typeof data === "string" ? data : null;
|
|
589
|
+
};
|
|
585
590
|
if (explicietePlek) {
|
|
586
|
-
|
|
587
|
-
.from("document_printplek_printers")
|
|
588
|
-
.select("printer_id")
|
|
589
|
-
.eq("print_plek_id", explicietePlek)
|
|
590
|
-
.eq("documenttype", type)
|
|
591
|
-
.maybeSingle();
|
|
592
|
-
printer = await pak(pp?.printer_id);
|
|
591
|
+
printer = await pak(await plekPrinter(explicietePlek));
|
|
593
592
|
if (printer)
|
|
594
593
|
return { printer, reden: "" };
|
|
595
594
|
const { data: plek } = await db.from("print_plekken").select("naam").eq("id", explicietePlek).maybeSingle();
|
|
596
595
|
return {
|
|
597
596
|
printer: null,
|
|
598
|
-
reden: `
|
|
597
|
+
reden: `GEEN_PRINTER: printplek '${String(plek?.naam ?? explicietePlek)}' heeft geen gekoppelde printer voor documenttype '${type}'.`,
|
|
599
598
|
};
|
|
600
599
|
}
|
|
601
|
-
// 2.
|
|
600
|
+
// 2-5. Gedeelde routering (printplek → werkplek → layout → standaard),
|
|
601
|
+
// dezelfde databasefunctie die het overzicht en layout_print_document
|
|
602
|
+
// gebruiken.
|
|
602
603
|
const plekId = await zoekPrintPlekId(db, job);
|
|
603
|
-
if (plekId) {
|
|
604
|
-
const { data: pp } = await db
|
|
605
|
-
.from("document_printplek_printers")
|
|
606
|
-
.select("printer_id")
|
|
607
|
-
.eq("print_plek_id", plekId)
|
|
608
|
-
.eq("documenttype", type)
|
|
609
|
-
.maybeSingle();
|
|
610
|
-
printer = await pak(pp?.printer_id);
|
|
611
|
-
if (printer)
|
|
612
|
-
return { printer, reden: "" };
|
|
613
|
-
}
|
|
614
|
-
else if (pickstation) {
|
|
604
|
+
if (!plekId && pickstation) {
|
|
615
605
|
return {
|
|
616
606
|
printer: null,
|
|
617
607
|
reden: `Pickstation '${pickstation}' heeft geen printplek. Koppel dit station aan een printplek.`,
|
|
618
608
|
};
|
|
619
609
|
}
|
|
620
|
-
|
|
621
|
-
|
|
622
|
-
|
|
623
|
-
|
|
624
|
-
|
|
625
|
-
|
|
626
|
-
|
|
627
|
-
|
|
628
|
-
printer = await pak(wp?.printer_id);
|
|
629
|
-
if (printer)
|
|
630
|
-
return { printer, reden: "" };
|
|
631
|
-
}
|
|
632
|
-
if (layout?.id) {
|
|
633
|
-
const { data } = await db
|
|
634
|
-
.from("printer_mappings")
|
|
635
|
-
.select("printer_id")
|
|
636
|
-
.eq("layout_id", layout.id)
|
|
637
|
-
.order("prioriteit", { ascending: true })
|
|
638
|
-
.limit(1);
|
|
639
|
-
printer = await pak(arr(data)[0]?.printer_id);
|
|
640
|
-
if (printer)
|
|
641
|
-
return { printer, reden: "" };
|
|
642
|
-
}
|
|
643
|
-
// 4. Bedrijfsbrede standaardregel: eerst op documenttype + papierformaat,
|
|
644
|
-
// daarna op documenttype alleen. Geen "pak de enige printer"-noodgreep
|
|
645
|
-
// meer: dan zou er stil op de verkeerde printer geprint kunnen worden.
|
|
646
|
-
const formaat = layout?.papierformaat ?? "A4";
|
|
647
|
-
const { data: fm } = await db
|
|
648
|
-
.from("document_formaat_printers")
|
|
649
|
-
.select("printer_id")
|
|
650
|
-
.eq("documenttype", type)
|
|
651
|
-
.eq("formaat_code", formaat)
|
|
652
|
-
.maybeSingle();
|
|
653
|
-
printer = await pak(fm?.printer_id);
|
|
610
|
+
const { data: route } = await db.rpc("printer_routering", {
|
|
611
|
+
_documenttype: type,
|
|
612
|
+
_print_plek_id: plekId || null,
|
|
613
|
+
_werkplek: werkplek || null,
|
|
614
|
+
_layout_id: layout?.id ?? null,
|
|
615
|
+
_papierformaat: layout?.papierformaat ?? null,
|
|
616
|
+
});
|
|
617
|
+
printer = await pak(route?.printer_id);
|
|
654
618
|
if (printer)
|
|
655
619
|
return { printer, reden: "" };
|
|
656
|
-
const { data: alle } = await db
|
|
657
|
-
.from("document_formaat_printers")
|
|
658
|
-
.select("printer_id")
|
|
659
|
-
.eq("documenttype", type)
|
|
660
|
-
.not("printer_id", "is", null)
|
|
661
|
-
.limit(5);
|
|
662
|
-
for (const regel of arr(alle)) {
|
|
663
|
-
printer = await pak(regel.printer_id);
|
|
664
|
-
if (printer)
|
|
665
|
-
return { printer, reden: "" };
|
|
666
|
-
}
|
|
667
620
|
if (plekId) {
|
|
668
621
|
const naam = (await printplekNaamVoorJob(db, job)) ?? "onbekend";
|
|
669
622
|
return {
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import type { SupabaseClient } from "@supabase/supabase-js";
|
|
2
|
+
export type RouteringBron = "printplek" | "werkplek" | "layout" | "standaard" | "geen";
|
|
3
|
+
export interface OvergeslagenRegel {
|
|
4
|
+
bron: Exclude<RouteringBron, "geen">;
|
|
5
|
+
regel_id: string;
|
|
6
|
+
printer_id: string | null;
|
|
7
|
+
reden: "ontbreekt" | "inactief" | "niet_bruikbaar";
|
|
8
|
+
}
|
|
9
|
+
export interface RouteringUitkomst {
|
|
10
|
+
bron: RouteringBron;
|
|
11
|
+
printer_id: string | null;
|
|
12
|
+
regel_id: string | null;
|
|
13
|
+
print_plek_id: string | null;
|
|
14
|
+
werkplek: string | null;
|
|
15
|
+
layout_id: string | null;
|
|
16
|
+
papierformaat: string | null;
|
|
17
|
+
overgeslagen: OvergeslagenRegel[];
|
|
18
|
+
}
|
|
19
|
+
export interface RouteringInvoer {
|
|
20
|
+
documenttype: string;
|
|
21
|
+
printplekId?: string | null;
|
|
22
|
+
werkplek?: string | null;
|
|
23
|
+
layoutId?: string | null;
|
|
24
|
+
papierformaat?: string | null;
|
|
25
|
+
}
|
|
26
|
+
/** Roept de gedeelde routering aan; `db` mag de server-client van de shell zijn. */
|
|
27
|
+
export declare function routeringVoor(invoer: RouteringInvoer, db?: SupabaseClient<any, any, any>): Promise<RouteringUitkomst>;
|
|
28
|
+
/** Uitkomst per documentsoort × computer van een printplek (null = zonder computer). */
|
|
29
|
+
export declare function useRouteringOverzicht(printplekId: string, documenttypes: string[], computers: string[]): {
|
|
30
|
+
uitkomsten: Record<string, RouteringUitkomst>;
|
|
31
|
+
laden: boolean;
|
|
32
|
+
reload: () => Promise<void>;
|
|
33
|
+
};
|
|
34
|
+
//# sourceMappingURL=printRoutering.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"printRoutering.d.ts","sourceRoot":"","sources":["../../src/lib/printRoutering.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAG5D,MAAM,MAAM,aAAa,GAAG,WAAW,GAAG,UAAU,GAAG,QAAQ,GAAG,WAAW,GAAG,MAAM,CAAC;AAEvF,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,OAAO,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC;IACrC,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,KAAK,EAAE,WAAW,GAAG,UAAU,GAAG,gBAAgB,CAAC;CACpD;AAED,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,aAAa,CAAC;IACpB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,YAAY,EAAE,iBAAiB,EAAE,CAAC;CACnC;AAED,MAAM,WAAW,eAAe;IAC9B,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC/B;AAuBD,oFAAoF;AACpF,wBAAsB,aAAa,CACjC,MAAM,EAAE,eAAe,EACvB,EAAE,GAAE,cAAc,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAwD,GACvF,OAAO,CAAC,iBAAiB,CAAC,CAU5B;AAED,wFAAwF;AACxF,wBAAgB,qBAAqB,CACnC,WAAW,EAAE,MAAM,EACnB,aAAa,EAAE,MAAM,EAAE,EACvB,SAAS,EAAE,MAAM,EAAE;;;;EA+BpB"}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
// ============================================================================
|
|
2
|
+
// src/lib/printRoutering.ts — dunne laag over de gedeelde databasefunctie
|
|
3
|
+
// `printer_routering`. Dezelfde functie bepaalt de printer bij het echte
|
|
4
|
+
// printen (wachtrij, module-API en layout_print_document), dus wat het
|
|
5
|
+
// overzicht toont is precies wat er gebeurt.
|
|
6
|
+
// ============================================================================
|
|
7
|
+
import { useCallback, useEffect, useState } from "react";
|
|
8
|
+
import { supabase } from "./supabaseClient.js";
|
|
9
|
+
const LEEG = {
|
|
10
|
+
bron: "geen",
|
|
11
|
+
printer_id: null,
|
|
12
|
+
regel_id: null,
|
|
13
|
+
print_plek_id: null,
|
|
14
|
+
werkplek: null,
|
|
15
|
+
layout_id: null,
|
|
16
|
+
papierformaat: null,
|
|
17
|
+
overgeslagen: [],
|
|
18
|
+
};
|
|
19
|
+
function normaliseer(data) {
|
|
20
|
+
if (!data || typeof data !== "object")
|
|
21
|
+
return LEEG;
|
|
22
|
+
const d = data;
|
|
23
|
+
return {
|
|
24
|
+
...LEEG,
|
|
25
|
+
...d,
|
|
26
|
+
overgeslagen: Array.isArray(d.overgeslagen) ? d.overgeslagen : [],
|
|
27
|
+
};
|
|
28
|
+
}
|
|
29
|
+
/** Roept de gedeelde routering aan; `db` mag de server-client van de shell zijn. */
|
|
30
|
+
export async function routeringVoor(invoer, db = supabase) {
|
|
31
|
+
const { data, error } = await db.rpc("printer_routering", {
|
|
32
|
+
_documenttype: invoer.documenttype,
|
|
33
|
+
_print_plek_id: invoer.printplekId || null,
|
|
34
|
+
_werkplek: invoer.werkplek?.trim() || null,
|
|
35
|
+
_layout_id: invoer.layoutId || null,
|
|
36
|
+
_papierformaat: invoer.papierformaat || null,
|
|
37
|
+
});
|
|
38
|
+
if (error)
|
|
39
|
+
throw error;
|
|
40
|
+
return normaliseer(data);
|
|
41
|
+
}
|
|
42
|
+
/** Uitkomst per documentsoort × computer van een printplek (null = zonder computer). */
|
|
43
|
+
export function useRouteringOverzicht(printplekId, documenttypes, computers) {
|
|
44
|
+
const [uitkomsten, setUitkomsten] = useState({});
|
|
45
|
+
const [laden, setLaden] = useState(true);
|
|
46
|
+
const sleutelTypes = documenttypes.join("|");
|
|
47
|
+
const sleutelPcs = computers.join("|");
|
|
48
|
+
const load = useCallback(async () => {
|
|
49
|
+
if (!printplekId)
|
|
50
|
+
return;
|
|
51
|
+
const pcs = computers.length ? computers : [null];
|
|
52
|
+
const taken = [];
|
|
53
|
+
for (const t of documenttypes) {
|
|
54
|
+
for (const pc of pcs) {
|
|
55
|
+
taken.push(routeringVoor({ documenttype: t, printplekId, werkplek: pc })
|
|
56
|
+
.catch(() => LEEG)
|
|
57
|
+
.then((u) => [`${t}::${pc ?? ""}`, u]));
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
const res = await Promise.all(taken);
|
|
61
|
+
setUitkomsten(Object.fromEntries(res));
|
|
62
|
+
setLaden(false);
|
|
63
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
64
|
+
}, [printplekId, sleutelTypes, sleutelPcs]);
|
|
65
|
+
useEffect(() => {
|
|
66
|
+
void load();
|
|
67
|
+
}, [load]);
|
|
68
|
+
return { uitkomsten, laden, reload: load };
|
|
69
|
+
}
|