@flowselections/layout-maker 1.46.1 → 1.51.2
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 +511 -6
- package/dist-lib/integrations/supabase/auth-middleware.d.ts.map +1 -1
- package/dist-lib/integrations/supabase/client.server.d.ts +511 -6
- 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 +511 -6
- 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 +2555 -30
- 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
|
@@ -15,6 +15,7 @@ export interface PrintplekDocumentPrinter {
|
|
|
15
15
|
documenttype: string;
|
|
16
16
|
printer_id: string | null;
|
|
17
17
|
papierformaat: string | null;
|
|
18
|
+
printer_ontbreekt_sinds?: string | null;
|
|
18
19
|
}
|
|
19
20
|
export interface PrintplekKoppeling {
|
|
20
21
|
id: string;
|
|
@@ -30,6 +31,7 @@ export declare function usePrintplekken(): {
|
|
|
30
31
|
computers: PrintplekComputer[];
|
|
31
32
|
regels: PrintplekDocumentPrinter[];
|
|
32
33
|
koppelingen: PrintplekKoppeling[];
|
|
34
|
+
toegewezen: PrintplekPrinter[];
|
|
33
35
|
laden: boolean;
|
|
34
36
|
fout: string | null;
|
|
35
37
|
reload: (stil?: boolean) => Promise<void>;
|
|
@@ -52,7 +54,19 @@ export declare function bewerkPrintplek(id: string, velden: {
|
|
|
52
54
|
omschrijving?: string | null;
|
|
53
55
|
actief?: boolean;
|
|
54
56
|
}): Promise<void>;
|
|
55
|
-
export
|
|
57
|
+
export interface PrintplekImpact {
|
|
58
|
+
computers: string[];
|
|
59
|
+
regels: number;
|
|
60
|
+
printers: number;
|
|
61
|
+
koppelingen: string[];
|
|
62
|
+
}
|
|
63
|
+
/** Wat er verdwijnt als deze printplek wordt verwijderd. */
|
|
64
|
+
export declare function printplekVerwijderImpact(id: string): Promise<PrintplekImpact>;
|
|
65
|
+
/**
|
|
66
|
+
* Verwijdert een printplek in één databasebewerking: computers en printers
|
|
67
|
+
* worden losgekoppeld (blijven bestaan), plek-eigen regels verdwijnen.
|
|
68
|
+
*/
|
|
69
|
+
export declare function verwijderPrintplek(id: string): Promise<PrintplekImpact>;
|
|
56
70
|
/** Zet een computer (werkplek) bij een printplek. Een computer hoort bij één plek. */
|
|
57
71
|
export declare function koppelComputerAanPrintplek(printPlekId: string, computerNaam: string): Promise<void>;
|
|
58
72
|
export declare function ontkoppelComputer(computerNaam: string): Promise<void>;
|
|
@@ -66,8 +80,59 @@ export declare function koppelBronAanPrintplek(printPlekId: string, bron: string
|
|
|
66
80
|
export declare function ontkoppelBron(bron: string, bronId: string): Promise<void>;
|
|
67
81
|
/** De printplek die bij een externe eenheid hoort, of `null`. */
|
|
68
82
|
export declare function printplekVoorBron(bron: string, bronId: string): Promise<string | null>;
|
|
69
|
-
/**
|
|
83
|
+
/**
|
|
84
|
+
* De printer die op deze printplek voor deze documentsoort is ingesteld via een
|
|
85
|
+
* printplek-eigen regel. Berekend met de gedeelde routering (`printer_routering`),
|
|
86
|
+
* dus exact wat er bij het printen gebeurt.
|
|
87
|
+
*/
|
|
70
88
|
export declare function printerVoorPrintplek(printPlekId: string, documenttype: string): Promise<string | null>;
|
|
89
|
+
export interface GenegeerdeComputer {
|
|
90
|
+
id: string;
|
|
91
|
+
computer_naam: string;
|
|
92
|
+
genegeerd_op: string;
|
|
93
|
+
}
|
|
94
|
+
export declare function genegeerdeComputersLijst(): Promise<GenegeerdeComputer[]>;
|
|
95
|
+
export declare function useGenegeerdeComputers(): {
|
|
96
|
+
genegeerd: GenegeerdeComputer[];
|
|
97
|
+
reload: () => Promise<void>;
|
|
98
|
+
};
|
|
99
|
+
/**
|
|
100
|
+
* Verwijdert een computer: haalt hem van zijn printplek en zet hem op de
|
|
101
|
+
* negeerlijst. `printers` bepaalt wat er met zijn printers gebeurt:
|
|
102
|
+
* "verwijderen" koppelt ze los van de plek, of een printplek-id om ze te verplaatsen.
|
|
103
|
+
*/
|
|
104
|
+
export declare function negeerComputer(computerNaam: string, printers: {
|
|
105
|
+
printerIds: string[];
|
|
106
|
+
vanPlek: string | null;
|
|
107
|
+
actie: "verwijderen" | {
|
|
108
|
+
naarPlek: string;
|
|
109
|
+
};
|
|
110
|
+
} | null): Promise<void>;
|
|
111
|
+
export declare function zetComputerTerug(computerNaam: string): Promise<void>;
|
|
112
|
+
/**
|
|
113
|
+
* Verplaatst een printer naar een andere printplek, inclusief de
|
|
114
|
+
* printplek-eigen regels die naar hem wezen.
|
|
115
|
+
*/
|
|
116
|
+
export declare function verplaatsPrinterNaarPrintplek(printerId: string, vanPlek: string, naarPlek: string): Promise<void>;
|
|
117
|
+
export interface PrintplekPrinter {
|
|
118
|
+
id: string;
|
|
119
|
+
print_plek_id: string;
|
|
120
|
+
printer_id: string;
|
|
121
|
+
toegevoegd_op: string;
|
|
122
|
+
}
|
|
123
|
+
export declare function wijsPrinterToeAanPrintplek(printPlekId: string, printerId: string): Promise<void>;
|
|
124
|
+
/** Koppelt los; regels die ernaar wezen worden zichtbaar leeggemaakt. */
|
|
125
|
+
export declare function koppelPrinterLosVanPrintplek(printPlekId: string, printerId: string): Promise<void>;
|
|
126
|
+
export interface PrinterGebruik {
|
|
127
|
+
printplek_regels: number;
|
|
128
|
+
werkplek_regels: number;
|
|
129
|
+
layout_koppelingen: number;
|
|
130
|
+
standaardregels: number;
|
|
131
|
+
printplekken: number;
|
|
132
|
+
}
|
|
133
|
+
export declare function printerGebruik(printerId: string): Promise<PrinterGebruik>;
|
|
134
|
+
/** Zet alle verwijzingen in één keer over naar `nieuw` (of `null` = geen printer). */
|
|
135
|
+
export declare function vervangPrinterOveral(oud: string, nieuw: string | null): Promise<Record<string, number>>;
|
|
71
136
|
/** De printplek waar een computer/werkplek bij hoort, of `null`. */
|
|
72
137
|
export declare function printplekVoorComputer(computerNaam: string): Promise<string | null>;
|
|
73
138
|
/** Naam van een printplek, voor nette foutmeldingen. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"printplekken.d.ts","sourceRoot":"","sources":["../../src/lib/printplekken.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"printplekken.d.ts","sourceRoot":"","sources":["../../src/lib/printplekken.ts"],"names":[],"mappings":"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"}
|
|
@@ -6,6 +6,7 @@
|
|
|
6
6
|
// ============================================================================
|
|
7
7
|
import { useCallback, useEffect, useState } from "react";
|
|
8
8
|
import { supabase } from "./supabaseClient.js";
|
|
9
|
+
import { routeringVoor } from "./printRoutering.js";
|
|
9
10
|
const arr = (v) => (Array.isArray(v) ? v : []);
|
|
10
11
|
// ---------------------------------------------------------------------------
|
|
11
12
|
// Lezen
|
|
@@ -16,18 +17,20 @@ export function usePrintplekken() {
|
|
|
16
17
|
const [computers, setComputers] = useState([]);
|
|
17
18
|
const [regels, setRegels] = useState([]);
|
|
18
19
|
const [koppelingen, setKoppelingen] = useState([]);
|
|
20
|
+
const [toegewezen, setToegewezen] = useState([]);
|
|
19
21
|
const [laden, setLaden] = useState(true);
|
|
20
22
|
const [fout, setFout] = useState(null);
|
|
21
23
|
const load = useCallback(async (stil = false) => {
|
|
22
24
|
if (!stil)
|
|
23
25
|
setLaden(true);
|
|
24
|
-
const [p, c, r, k] = await Promise.all([
|
|
26
|
+
const [p, c, r, k, t] = await Promise.all([
|
|
25
27
|
supabase.from("print_plekken").select("*").order("naam"),
|
|
26
28
|
supabase.from("print_plek_computers").select("*"),
|
|
27
29
|
supabase.from("document_printplek_printers").select("*"),
|
|
28
30
|
supabase.from("print_plek_koppelingen").select("*"),
|
|
31
|
+
supabase.from("print_plek_printers").select("*"),
|
|
29
32
|
]);
|
|
30
|
-
const eersteFout = p.error ?? c.error ?? r.error ?? k.error;
|
|
33
|
+
const eersteFout = p.error ?? c.error ?? r.error ?? k.error ?? t.error;
|
|
31
34
|
setFout(eersteFout
|
|
32
35
|
? "Printplekken konden niet worden geladen. Voer sql/print-schema.sql uit in deze shell."
|
|
33
36
|
: null);
|
|
@@ -35,12 +38,13 @@ export function usePrintplekken() {
|
|
|
35
38
|
setComputers(arr(c.data));
|
|
36
39
|
setRegels(arr(r.data));
|
|
37
40
|
setKoppelingen(arr(k.data));
|
|
41
|
+
setToegewezen(arr(t.data));
|
|
38
42
|
setLaden(false);
|
|
39
43
|
}, []);
|
|
40
44
|
useEffect(() => {
|
|
41
45
|
void load();
|
|
42
46
|
}, [load]);
|
|
43
|
-
return { plekken, computers, regels, koppelingen, laden, fout, reload: load };
|
|
47
|
+
return { plekken, computers, regels, koppelingen, toegewezen, laden, fout, reload: load };
|
|
44
48
|
}
|
|
45
49
|
/**
|
|
46
50
|
* Eenvoudige lijst van actieve printplekken. Bedoeld voor andere modules die
|
|
@@ -86,10 +90,31 @@ export async function bewerkPrintplek(id, velden) {
|
|
|
86
90
|
if (error)
|
|
87
91
|
throw error;
|
|
88
92
|
}
|
|
93
|
+
function naarImpact(data) {
|
|
94
|
+
const d = (data ?? {});
|
|
95
|
+
return {
|
|
96
|
+
computers: Array.isArray(d.computers) ? d.computers : [],
|
|
97
|
+
regels: Number(d.regels ?? 0),
|
|
98
|
+
printers: Number(d.printers ?? 0),
|
|
99
|
+
koppelingen: Array.isArray(d.koppelingen) ? d.koppelingen : [],
|
|
100
|
+
};
|
|
101
|
+
}
|
|
102
|
+
/** Wat er verdwijnt als deze printplek wordt verwijderd. */
|
|
103
|
+
export async function printplekVerwijderImpact(id) {
|
|
104
|
+
const { data, error } = await supabase.rpc("printplek_verwijder_impact", { _id: id });
|
|
105
|
+
if (error)
|
|
106
|
+
throw error;
|
|
107
|
+
return naarImpact(data);
|
|
108
|
+
}
|
|
109
|
+
/**
|
|
110
|
+
* Verwijdert een printplek in één databasebewerking: computers en printers
|
|
111
|
+
* worden losgekoppeld (blijven bestaan), plek-eigen regels verdwijnen.
|
|
112
|
+
*/
|
|
89
113
|
export async function verwijderPrintplek(id) {
|
|
90
|
-
const { error } = await supabase.
|
|
114
|
+
const { data, error } = await supabase.rpc("verwijder_printplek", { _id: id });
|
|
91
115
|
if (error)
|
|
92
116
|
throw error;
|
|
117
|
+
return naarImpact(data);
|
|
93
118
|
}
|
|
94
119
|
/** Zet een computer (werkplek) bij een printplek. Een computer hoort bij één plek. */
|
|
95
120
|
export async function koppelComputerAanPrintplek(printPlekId, computerNaam) {
|
|
@@ -117,6 +142,8 @@ export async function zetPrintplekPrinter(printPlekId, documenttype, printerId,
|
|
|
117
142
|
throw error;
|
|
118
143
|
return;
|
|
119
144
|
}
|
|
145
|
+
// Een printer kiezen voor deze plek is ook een expliciete toewijzing.
|
|
146
|
+
await wijsPrinterToeAanPrintplek(printPlekId, printerId);
|
|
120
147
|
const { error } = await supabase.from("document_printplek_printers").upsert({
|
|
121
148
|
print_plek_id: printPlekId,
|
|
122
149
|
documenttype,
|
|
@@ -162,18 +189,122 @@ export async function printplekVoorBron(bron, bronId) {
|
|
|
162
189
|
// ---------------------------------------------------------------------------
|
|
163
190
|
// Printerkeuze
|
|
164
191
|
// ---------------------------------------------------------------------------
|
|
165
|
-
/**
|
|
192
|
+
/**
|
|
193
|
+
* De printer die op deze printplek voor deze documentsoort is ingesteld via een
|
|
194
|
+
* printplek-eigen regel. Berekend met de gedeelde routering (`printer_routering`),
|
|
195
|
+
* dus exact wat er bij het printen gebeurt.
|
|
196
|
+
*/
|
|
166
197
|
export async function printerVoorPrintplek(printPlekId, documenttype) {
|
|
167
198
|
const id = (printPlekId ?? "").trim();
|
|
168
199
|
if (!id)
|
|
169
200
|
return null;
|
|
201
|
+
const u = await routeringVoor({ documenttype, printplekId: id });
|
|
202
|
+
return u.bron === "printplek" ? u.printer_id : null;
|
|
203
|
+
}
|
|
204
|
+
export async function genegeerdeComputersLijst() {
|
|
205
|
+
const { data } = await supabase
|
|
206
|
+
.from("print_genegeerde_computers")
|
|
207
|
+
.select("*")
|
|
208
|
+
.order("genegeerd_op", { ascending: false });
|
|
209
|
+
return arr(data);
|
|
210
|
+
}
|
|
211
|
+
export function useGenegeerdeComputers() {
|
|
212
|
+
const [genegeerd, setGenegeerd] = useState([]);
|
|
213
|
+
const load = useCallback(async () => setGenegeerd(await genegeerdeComputersLijst()), []);
|
|
214
|
+
useEffect(() => {
|
|
215
|
+
void load();
|
|
216
|
+
}, [load]);
|
|
217
|
+
return { genegeerd, reload: load };
|
|
218
|
+
}
|
|
219
|
+
/**
|
|
220
|
+
* Verwijdert een computer: haalt hem van zijn printplek en zet hem op de
|
|
221
|
+
* negeerlijst. `printers` bepaalt wat er met zijn printers gebeurt:
|
|
222
|
+
* "verwijderen" koppelt ze los van de plek, of een printplek-id om ze te verplaatsen.
|
|
223
|
+
*/
|
|
224
|
+
export async function negeerComputer(computerNaam, printers) {
|
|
225
|
+
const naam = computerNaam.trim();
|
|
226
|
+
if (printers && printers.vanPlek) {
|
|
227
|
+
for (const pid of printers.printerIds) {
|
|
228
|
+
if (printers.actie === "verwijderen")
|
|
229
|
+
await koppelPrinterLosVanPrintplek(printers.vanPlek, pid);
|
|
230
|
+
else
|
|
231
|
+
await verplaatsPrinterNaarPrintplek(pid, printers.vanPlek, printers.actie.naarPlek);
|
|
232
|
+
}
|
|
233
|
+
}
|
|
234
|
+
await ontkoppelComputer(naam);
|
|
235
|
+
const { error } = await supabase
|
|
236
|
+
.from("print_genegeerde_computers")
|
|
237
|
+
.upsert({ computer_naam: naam }, { onConflict: "computer_naam" });
|
|
238
|
+
if (error)
|
|
239
|
+
throw error;
|
|
240
|
+
}
|
|
241
|
+
export async function zetComputerTerug(computerNaam) {
|
|
242
|
+
const { error } = await supabase
|
|
243
|
+
.from("print_genegeerde_computers")
|
|
244
|
+
.delete()
|
|
245
|
+
.eq("computer_naam", computerNaam.trim());
|
|
246
|
+
if (error)
|
|
247
|
+
throw error;
|
|
248
|
+
}
|
|
249
|
+
/**
|
|
250
|
+
* Verplaatst een printer naar een andere printplek, inclusief de
|
|
251
|
+
* printplek-eigen regels die naar hem wezen.
|
|
252
|
+
*/
|
|
253
|
+
export async function verplaatsPrinterNaarPrintplek(printerId, vanPlek, naarPlek) {
|
|
254
|
+
if (vanPlek === naarPlek)
|
|
255
|
+
return;
|
|
256
|
+
await wijsPrinterToeAanPrintplek(naarPlek, printerId);
|
|
170
257
|
const { data } = await supabase
|
|
171
258
|
.from("document_printplek_printers")
|
|
172
|
-
.select("
|
|
173
|
-
.eq("print_plek_id",
|
|
174
|
-
.eq("
|
|
175
|
-
|
|
176
|
-
|
|
259
|
+
.select("documenttype, papierformaat")
|
|
260
|
+
.eq("print_plek_id", vanPlek)
|
|
261
|
+
.eq("printer_id", printerId);
|
|
262
|
+
for (const r of arr(data)) {
|
|
263
|
+
await zetPrintplekPrinter(naarPlek, r.documenttype, printerId, r.papierformaat);
|
|
264
|
+
}
|
|
265
|
+
await koppelPrinterLosVanPrintplek(vanPlek, printerId);
|
|
266
|
+
}
|
|
267
|
+
export async function wijsPrinterToeAanPrintplek(printPlekId, printerId) {
|
|
268
|
+
const { error } = await supabase
|
|
269
|
+
.from("print_plek_printers")
|
|
270
|
+
.upsert({ print_plek_id: printPlekId, printer_id: printerId }, {
|
|
271
|
+
onConflict: "print_plek_id,printer_id",
|
|
272
|
+
});
|
|
273
|
+
if (error)
|
|
274
|
+
throw error;
|
|
275
|
+
}
|
|
276
|
+
/** Koppelt los; regels die ernaar wezen worden zichtbaar leeggemaakt. */
|
|
277
|
+
export async function koppelPrinterLosVanPrintplek(printPlekId, printerId) {
|
|
278
|
+
const { error } = await supabase
|
|
279
|
+
.from("print_plek_printers")
|
|
280
|
+
.delete()
|
|
281
|
+
.eq("print_plek_id", printPlekId)
|
|
282
|
+
.eq("printer_id", printerId);
|
|
283
|
+
if (error)
|
|
284
|
+
throw error;
|
|
285
|
+
}
|
|
286
|
+
export async function printerGebruik(printerId) {
|
|
287
|
+
const { data, error } = await supabase.rpc("printer_gebruik", { _printer: printerId });
|
|
288
|
+
if (error)
|
|
289
|
+
throw error;
|
|
290
|
+
const d = (data ?? {});
|
|
291
|
+
return {
|
|
292
|
+
printplek_regels: Number(d.printplek_regels ?? 0),
|
|
293
|
+
werkplek_regels: Number(d.werkplek_regels ?? 0),
|
|
294
|
+
layout_koppelingen: Number(d.layout_koppelingen ?? 0),
|
|
295
|
+
standaardregels: Number(d.standaardregels ?? 0),
|
|
296
|
+
printplekken: Number(d.printplekken ?? 0),
|
|
297
|
+
};
|
|
298
|
+
}
|
|
299
|
+
/** Zet alle verwijzingen in één keer over naar `nieuw` (of `null` = geen printer). */
|
|
300
|
+
export async function vervangPrinterOveral(oud, nieuw) {
|
|
301
|
+
const { data, error } = await supabase.rpc("vervang_printer", {
|
|
302
|
+
_oud: oud,
|
|
303
|
+
_nieuw: nieuw,
|
|
304
|
+
});
|
|
305
|
+
if (error)
|
|
306
|
+
throw error;
|
|
307
|
+
return (data ?? {});
|
|
177
308
|
}
|
|
178
309
|
/** De printplek waar een computer/werkplek bij hoort, of `null`. */
|
|
179
310
|
export async function printplekVoorComputer(computerNaam) {
|
|
@@ -62,6 +62,21 @@ export declare function maakLayout(input: {
|
|
|
62
62
|
config?: Record<string, unknown>;
|
|
63
63
|
}): Promise<string>;
|
|
64
64
|
export declare function dupliceerLayout(id: string): Promise<string>;
|
|
65
|
+
/**
|
|
66
|
+
* Maakt deze layout de standaard voor zijn documentsoort + bron. De database
|
|
67
|
+
* zet de standaard bij de andere layouts van dezelfde soort en bron vanzelf
|
|
68
|
+
* uit (net als `wisStandaard` bij logo's) en staat er nooit twee toe.
|
|
69
|
+
*/
|
|
70
|
+
export declare function maakStandaardLayout(id: string): Promise<void>;
|
|
71
|
+
export interface LayoutConflict {
|
|
72
|
+
documenttype: string;
|
|
73
|
+
bron: string;
|
|
74
|
+
actief: LayoutModel[];
|
|
75
|
+
winnaar: LayoutModel;
|
|
76
|
+
heeftStandaard: boolean;
|
|
77
|
+
}
|
|
78
|
+
/** Documentsoorten met meer dan één actieve layout binnen dezelfde bron. */
|
|
79
|
+
export declare function layoutConflicten(layouts: LayoutModel[]): LayoutConflict[];
|
|
65
80
|
export declare function verwijderLayout(id: string): Promise<void>;
|
|
66
81
|
export declare function updateLayout(id: string, patch: Record<string, unknown>): Promise<void>;
|
|
67
82
|
export declare function useLayoutDetail(layoutId: string): {
|
|
@@ -86,21 +101,11 @@ export declare function useVersies(layoutId: string): {
|
|
|
86
101
|
};
|
|
87
102
|
export declare function usePrinters(): {
|
|
88
103
|
printers: PrinterModel[];
|
|
89
|
-
koppelingen: {
|
|
90
|
-
layout_id: string;
|
|
91
|
-
printer_id: string;
|
|
92
|
-
}[];
|
|
93
104
|
loading: boolean;
|
|
94
105
|
reload: (stil?: boolean) => Promise<void>;
|
|
95
106
|
};
|
|
96
107
|
export declare function bewaarPrinter(input: Record<string, unknown>, id?: string): Promise<void>;
|
|
97
108
|
export declare function verwijderPrinter(id: string): Promise<void>;
|
|
98
|
-
/**
|
|
99
|
-
* Eén printer aan een layout hangen (of loskoppelen met null). Vervangt de
|
|
100
|
-
* bestaande koppeling(en), zodat de printerkeuze bij een document eenduidig is.
|
|
101
|
-
*/
|
|
102
|
-
export declare function zetLayoutPrinter(layoutId: string, printerId: string | null): Promise<void>;
|
|
103
|
-
export declare function toggleKoppeling(layoutId: string, printerId: string, aan: boolean): Promise<void>;
|
|
104
109
|
export declare function usePrintJobs(): {
|
|
105
110
|
jobs: PrintJobModel[];
|
|
106
111
|
loading: boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useDocumentData.d.ts","sourceRoot":"","sources":["../../src/lib/useDocumentData.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"useDocumentData.d.ts","sourceRoot":"","sources":["../../src/lib/useDocumentData.ts"],"names":[],"mappings":"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"}
|
|
@@ -196,6 +196,47 @@ export async function dupliceerLayout(id) {
|
|
|
196
196
|
await supabase.from("document_layout_elements").insert(kopie);
|
|
197
197
|
return nieuwId;
|
|
198
198
|
}
|
|
199
|
+
/**
|
|
200
|
+
* Maakt deze layout de standaard voor zijn documentsoort + bron. De database
|
|
201
|
+
* zet de standaard bij de andere layouts van dezelfde soort en bron vanzelf
|
|
202
|
+
* uit (net als `wisStandaard` bij logo's) en staat er nooit twee toe.
|
|
203
|
+
*/
|
|
204
|
+
export async function maakStandaardLayout(id) {
|
|
205
|
+
const { error } = await supabase
|
|
206
|
+
.from("document_layouts")
|
|
207
|
+
.update({ is_standaard: true, actief: true })
|
|
208
|
+
.eq("id", id);
|
|
209
|
+
if (error)
|
|
210
|
+
throw error;
|
|
211
|
+
}
|
|
212
|
+
/** Documentsoorten met meer dan één actieve layout binnen dezelfde bron. */
|
|
213
|
+
export function layoutConflicten(layouts) {
|
|
214
|
+
const groepen = new Map();
|
|
215
|
+
for (const l of Array.isArray(layouts) ? layouts : []) {
|
|
216
|
+
if (!l.actief)
|
|
217
|
+
continue;
|
|
218
|
+
const bron = String(l.bron ?? "eigen");
|
|
219
|
+
const k = `${l.documenttype}::${bron}`;
|
|
220
|
+
groepen.set(k, [...(groepen.get(k) ?? []), l]);
|
|
221
|
+
}
|
|
222
|
+
const uit = [];
|
|
223
|
+
for (const [k, lijst] of groepen) {
|
|
224
|
+
if (lijst.length < 2)
|
|
225
|
+
continue;
|
|
226
|
+
const [documenttype, bron] = k.split("::");
|
|
227
|
+
// Zelfde volgorde als het printen: standaard eerst, dan laatst bewerkt.
|
|
228
|
+
const gesorteerd = [...lijst].sort((a, b) => Number(b.is_standaard) - Number(a.is_standaard) ||
|
|
229
|
+
String(b.updated_at ?? "").localeCompare(String(a.updated_at ?? "")));
|
|
230
|
+
uit.push({
|
|
231
|
+
documenttype,
|
|
232
|
+
bron,
|
|
233
|
+
actief: gesorteerd,
|
|
234
|
+
winnaar: gesorteerd[0],
|
|
235
|
+
heeftStandaard: gesorteerd[0].is_standaard,
|
|
236
|
+
});
|
|
237
|
+
}
|
|
238
|
+
return uit;
|
|
239
|
+
}
|
|
199
240
|
export async function verwijderLayout(id) {
|
|
200
241
|
const { error } = await supabase.from("document_layouts").delete().eq("id", id);
|
|
201
242
|
if (error)
|
|
@@ -337,23 +378,18 @@ export function useVersies(layoutId) {
|
|
|
337
378
|
// --- Printers --------------------------------------------------------------
|
|
338
379
|
export function usePrinters() {
|
|
339
380
|
const [printers, setPrinters] = useState([]);
|
|
340
|
-
const [koppelingen, setKoppelingen] = useState([]);
|
|
341
381
|
const [loading, setLoading] = useState(true);
|
|
342
382
|
const load = useCallback(async (stil = false) => {
|
|
343
383
|
if (!stil)
|
|
344
384
|
setLoading(true);
|
|
345
|
-
const
|
|
346
|
-
supabase.from("printers").select("*").order("naam"),
|
|
347
|
-
supabase.from("printer_mappings").select("layout_id, printer_id"),
|
|
348
|
-
]);
|
|
385
|
+
const { data: p } = await supabase.from("printers").select("*").order("naam");
|
|
349
386
|
setPrinters(arr(p));
|
|
350
|
-
setKoppelingen(arr(m));
|
|
351
387
|
setLoading(false);
|
|
352
388
|
}, []);
|
|
353
389
|
useEffect(() => {
|
|
354
390
|
void load();
|
|
355
391
|
}, [load]);
|
|
356
|
-
return { printers,
|
|
392
|
+
return { printers, loading, reload: load };
|
|
357
393
|
}
|
|
358
394
|
export async function bewaarPrinter(input, id) {
|
|
359
395
|
const q = id
|
|
@@ -371,33 +407,6 @@ export async function verwijderPrinter(id) {
|
|
|
371
407
|
if (error)
|
|
372
408
|
throw error;
|
|
373
409
|
}
|
|
374
|
-
/**
|
|
375
|
-
* Eén printer aan een layout hangen (of loskoppelen met null). Vervangt de
|
|
376
|
-
* bestaande koppeling(en), zodat de printerkeuze bij een document eenduidig is.
|
|
377
|
-
*/
|
|
378
|
-
export async function zetLayoutPrinter(layoutId, printerId) {
|
|
379
|
-
const { error: delError } = await supabase
|
|
380
|
-
.from("printer_mappings")
|
|
381
|
-
.delete()
|
|
382
|
-
.eq("layout_id", layoutId);
|
|
383
|
-
if (delError)
|
|
384
|
-
throw delError;
|
|
385
|
-
if (!printerId)
|
|
386
|
-
return;
|
|
387
|
-
const { error } = await supabase
|
|
388
|
-
.from("printer_mappings")
|
|
389
|
-
.insert({ layout_id: layoutId, printer_id: printerId });
|
|
390
|
-
if (error)
|
|
391
|
-
throw error;
|
|
392
|
-
}
|
|
393
|
-
export async function toggleKoppeling(layoutId, printerId, aan) {
|
|
394
|
-
if (aan) {
|
|
395
|
-
await supabase.from("printer_mappings").insert({ layout_id: layoutId, printer_id: printerId });
|
|
396
|
-
}
|
|
397
|
-
else {
|
|
398
|
-
await supabase.from("printer_mappings").delete().eq("layout_id", layoutId).eq("printer_id", printerId);
|
|
399
|
-
}
|
|
400
|
-
}
|
|
401
410
|
// --- Printwachtrij ---------------------------------------------------------
|
|
402
411
|
export function usePrintJobs() {
|
|
403
412
|
const [jobs, setJobs] = useState([]);
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@flowselections/layout-maker",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.51.2",
|
|
4
4
|
"flowselections": {
|
|
5
5
|
"moduleId": "layout-maker",
|
|
6
6
|
"pages": [
|
|
@@ -126,7 +126,7 @@
|
|
|
126
126
|
"devDependencies": {
|
|
127
127
|
"@cloudflare/vite-plugin": "^1.25.5",
|
|
128
128
|
"@eslint/js": "^9.32.0",
|
|
129
|
-
"@flowselections/core": "1.0.
|
|
129
|
+
"@flowselections/core": "1.0.28",
|
|
130
130
|
"@lovable.dev/vite-tanstack-config": "2.23.1",
|
|
131
131
|
"@rsbuild/core": "^1.0.0",
|
|
132
132
|
"@tailwindcss/vite": "^4.2.1",
|