@flowselections/layout-maker 1.38.4 → 1.45.8
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/README.md +139 -139
- package/dist-lib/components/AfdrukKnop.d.ts +19 -19
- package/dist-lib/components/AfleverbriefBuilderPage.d.ts +10 -0
- package/dist-lib/components/AfleverbriefBuilderPage.d.ts.map +1 -0
- package/dist-lib/components/AfleverbriefBuilderPage.js +101 -0
- package/dist-lib/components/BlokOntwerperPage.d.ts.map +1 -1
- package/dist-lib/components/BlokOntwerperPage.js +8 -3
- package/dist-lib/components/ComputersLijst.d.ts.map +1 -1
- package/dist-lib/components/ComputersLijst.js +1 -1
- package/dist-lib/components/FustKolomVolgorde.d.ts +11 -0
- package/dist-lib/components/FustKolomVolgorde.d.ts.map +1 -0
- package/dist-lib/components/FustKolomVolgorde.js +52 -0
- package/dist-lib/components/LayoutsPage.d.ts.map +1 -1
- package/dist-lib/components/LayoutsPage.js +10 -9
- package/dist-lib/components/NetwerkPrintersDialog.d.ts +7 -7
- package/dist-lib/components/PakbonBuilderPage.d.ts.map +1 -1
- package/dist-lib/components/PakbonBuilderPage.js +32 -14
- package/dist-lib/components/PakbonPreview.d.ts.map +1 -1
- package/dist-lib/components/PakbonPreview.js +21 -14
- package/dist-lib/components/PakbonSectiesPanel.d.ts +4 -2
- package/dist-lib/components/PakbonSectiesPanel.d.ts.map +1 -1
- package/dist-lib/components/PakbonSectiesPanel.js +5 -3
- package/dist-lib/components/PdfMapToestemmingBanner.d.ts +2 -1
- package/dist-lib/components/PdfMapToestemmingBanner.d.ts.map +1 -1
- package/dist-lib/components/PdfMapToestemmingBanner.js +73 -14
- package/dist-lib/components/PdfVoorbeeld.d.ts +20 -0
- package/dist-lib/components/PdfVoorbeeld.d.ts.map +1 -0
- package/dist-lib/components/PdfVoorbeeld.js +95 -0
- package/dist-lib/components/PrintProgrammaUitleg.d.ts.map +1 -1
- package/dist-lib/components/PrintProgrammaUitleg.js +1 -1
- package/dist-lib/components/PrintQueuePage.d.ts.map +1 -1
- package/dist-lib/components/PrintQueuePage.js +81 -43
- package/dist-lib/components/PrinterSetupWizard.js +3 -3
- package/dist-lib/components/PrintersRedirectPage.d.ts +1 -1
- package/dist-lib/components/PrintersRedirectPage.js +14 -14
- package/dist-lib/components/PrintplekDetailPage.d.ts.map +1 -1
- package/dist-lib/components/PrintplekDetailPage.js +2 -2
- package/dist-lib/components/PrintplekWizard.d.ts.map +1 -1
- package/dist-lib/components/PrintplekWizard.js +6 -2
- package/dist-lib/components/ProductiebonBuilderPage.d.ts.map +1 -1
- package/dist-lib/components/ProductiebonBuilderPage.js +13 -7
- package/dist-lib/index.d.ts +13 -5
- package/dist-lib/index.d.ts.map +1 -1
- package/dist-lib/index.js +10 -5
- package/dist-lib/integrations/supabase/auth-middleware.d.ts +2008 -118
- package/dist-lib/integrations/supabase/auth-middleware.d.ts.map +1 -1
- package/dist-lib/integrations/supabase/client.server.d.ts +2008 -118
- package/dist-lib/integrations/supabase/client.server.d.ts.map +1 -1
- package/dist-lib/integrations/supabase/client.server.js +1 -1
- package/dist-lib/integrations/supabase/moduleClient.d.ts +2008 -118
- package/dist-lib/integrations/supabase/moduleClient.d.ts.map +1 -1
- package/dist-lib/integrations/supabase/types.d.ts +2031 -99
- package/dist-lib/integrations/supabase/types.d.ts.map +1 -1
- package/dist-lib/integrations/supabase/types.js +1 -0
- package/dist-lib/lib/aiLayout.functions.d.ts +2008 -118
- package/dist-lib/lib/aiLayout.functions.d.ts.map +1 -1
- package/dist-lib/lib/aiLayout.server.js +9 -9
- package/dist-lib/lib/browserPrint.js +1 -1
- package/dist-lib/lib/documentVoorbeeld.functions.d.ts +23 -0
- package/dist-lib/lib/documentVoorbeeld.functions.d.ts.map +1 -0
- package/dist-lib/lib/documentVoorbeeld.functions.js +37 -0
- package/dist-lib/lib/fontMetrics.d.ts +15 -0
- package/dist-lib/lib/fontMetrics.d.ts.map +1 -0
- package/dist-lib/lib/fontMetrics.js +118 -0
- package/dist-lib/lib/htmlNaarPdf.server.d.ts +2 -2
- package/dist-lib/lib/htmlNaarPdf.server.d.ts.map +1 -1
- package/dist-lib/lib/htmlNaarPdf.server.js +2 -1
- package/dist-lib/lib/htmlPdf.server.d.ts +11 -0
- package/dist-lib/lib/htmlPdf.server.d.ts.map +1 -1
- package/dist-lib/lib/htmlPdf.server.js +118 -15
- package/dist-lib/lib/layoutPreview.js +7 -7
- package/dist-lib/lib/orderData.server.d.ts.map +1 -1
- package/dist-lib/lib/orderData.server.js +43 -16
- package/dist-lib/lib/pakbonBarcodeVerzoek.d.ts +39 -0
- package/dist-lib/lib/pakbonBarcodeVerzoek.d.ts.map +1 -0
- package/dist-lib/lib/pakbonBarcodeVerzoek.js +80 -0
- package/dist-lib/lib/pakbonBuilder.d.ts +62 -3
- package/dist-lib/lib/pakbonBuilder.d.ts.map +1 -1
- package/dist-lib/lib/pakbonBuilder.js +386 -50
- package/dist-lib/lib/pakbonContent.d.ts +41 -0
- package/dist-lib/lib/pakbonContent.d.ts.map +1 -0
- package/dist-lib/lib/pakbonContent.js +668 -0
- package/dist-lib/lib/pakbonDocument.d.ts +199 -0
- package/dist-lib/lib/pakbonDocument.d.ts.map +1 -0
- package/dist-lib/lib/pakbonDocument.js +735 -0
- package/dist-lib/lib/pakbonHtml.d.ts +7 -0
- package/dist-lib/lib/pakbonHtml.d.ts.map +1 -1
- package/dist-lib/lib/pakbonHtml.js +142 -126
- package/dist-lib/lib/pakbonPresentation.d.ts +8 -0
- package/dist-lib/lib/pakbonPresentation.d.ts.map +1 -0
- package/dist-lib/lib/pakbonPresentation.js +31 -0
- package/dist-lib/lib/pakbonScan.d.ts.map +1 -1
- package/dist-lib/lib/pakbonScan.js +20 -38
- package/dist-lib/lib/pdfJobSaver.d.ts +10 -6
- package/dist-lib/lib/pdfJobSaver.d.ts.map +1 -1
- package/dist-lib/lib/pdfJobSaver.js +302 -99
- package/dist-lib/lib/pdfMap.d.ts +37 -2
- package/dist-lib/lib/pdfMap.d.ts.map +1 -1
- package/dist-lib/lib/pdfMap.js +120 -7
- package/dist-lib/lib/pdfOpslagStatus.d.ts +23 -0
- package/dist-lib/lib/pdfOpslagStatus.d.ts.map +1 -0
- package/dist-lib/lib/pdfOpslagStatus.js +74 -0
- package/dist-lib/lib/printApi.d.ts +31 -0
- package/dist-lib/lib/printApi.d.ts.map +1 -1
- package/dist-lib/lib/printApi.js +62 -1
- package/dist-lib/lib/printQueue.server.d.ts +6 -0
- package/dist-lib/lib/printQueue.server.d.ts.map +1 -1
- package/dist-lib/lib/printQueue.server.js +450 -94
- package/dist-lib/lib/printService.functions.d.ts +7916 -356
- package/dist-lib/lib/printService.functions.d.ts.map +1 -1
- package/dist-lib/lib/productiebonHtml.js +15 -15
- package/dist-lib/lib/profielHtml.d.ts.map +1 -1
- package/dist-lib/lib/profielHtml.js +26 -19
- package/dist-lib/lib/supabaseAdmin.server.d.ts +5 -5
- package/dist-lib/lib/supabaseAdmin.server.js +43 -43
- package/dist-lib/lib/testpagina.js +3 -3
- package/dist-lib/lib/testprint.js +4 -4
- package/dist-lib/lib/useDocumentData.d.ts +8 -0
- package/dist-lib/lib/useDocumentData.d.ts.map +1 -1
- package/dist-lib/lib/useDocumentData.js +1 -1
- package/dist-lib/lib/voorbeeldPrint.d.ts +3 -0
- package/dist-lib/lib/voorbeeldPrint.d.ts.map +1 -1
- package/dist-lib/lib/voorbeeldPrint.js +65 -17
- package/package.json +158 -151
|
@@ -147,20 +147,20 @@ export function renderProductiebonDocument(config, gegevens, opties = {}) {
|
|
|
147
147
|
return inhoud ? `<div class="blok">${inhoud}</div>` : "";
|
|
148
148
|
})
|
|
149
149
|
.join("");
|
|
150
|
-
return `<!doctype html><html lang="nl"><head><meta charset="utf-8" />
|
|
151
|
-
<title>${esc(opties.titel ?? "Productiebon")}</title>
|
|
152
|
-
<style>
|
|
153
|
-
@page { size: ${b}mm ${h}mm; margin: ${marge}mm; }
|
|
154
|
-
* { box-sizing: border-box; }
|
|
155
|
-
html, body { margin: 0; padding: 0; }
|
|
156
|
-
body { font-family: Arial, Helvetica, sans-serif; font-size: 9pt; color: #111827; line-height: 1.35; }
|
|
157
|
-
.blok { margin-bottom: 2.5mm; }
|
|
158
|
-
.sectitel { font-size: 90%; font-weight: 600; text-transform: uppercase; color: #6b7280; margin-bottom: 0.6mm; }
|
|
159
|
-
.vet { font-weight: 600; }
|
|
160
|
-
.kv { display: flex; justify-content: space-between; gap: 3mm; }
|
|
161
|
-
.kv .k { color: #6b7280; }
|
|
162
|
-
.tabel { width: 100%; border-collapse: collapse; table-layout: fixed; }
|
|
163
|
-
.tabel th { text-align: left; font-weight: 600; }
|
|
164
|
-
.regel { padding: 0.4mm 0; }
|
|
150
|
+
return `<!doctype html><html lang="nl"><head><meta charset="utf-8" />
|
|
151
|
+
<title>${esc(opties.titel ?? "Productiebon")}</title>
|
|
152
|
+
<style>
|
|
153
|
+
@page { size: ${b}mm ${h}mm; margin: ${marge}mm; }
|
|
154
|
+
* { box-sizing: border-box; }
|
|
155
|
+
html, body { margin: 0; padding: 0; }
|
|
156
|
+
body { font-family: Arial, Helvetica, sans-serif; font-size: 9pt; color: #111827; line-height: 1.35; }
|
|
157
|
+
.blok { margin-bottom: 2.5mm; }
|
|
158
|
+
.sectitel { font-size: 90%; font-weight: 600; text-transform: uppercase; color: #6b7280; margin-bottom: 0.6mm; }
|
|
159
|
+
.vet { font-weight: 600; }
|
|
160
|
+
.kv { display: flex; justify-content: space-between; gap: 3mm; }
|
|
161
|
+
.kv .k { color: #6b7280; }
|
|
162
|
+
.tabel { width: 100%; border-collapse: collapse; table-layout: fixed; }
|
|
163
|
+
.tabel th { text-align: left; font-weight: 600; }
|
|
164
|
+
.regel { padding: 0.4mm 0; }
|
|
165
165
|
</style></head><body>${body}</body></html>`;
|
|
166
166
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"profielHtml.d.ts","sourceRoot":"","sources":["../../src/lib/profielHtml.ts"],"names":[],"mappings":"AAuBA,MAAM,WAAW,mBAAmB;IAClC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,qDAAqD;IACrD,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACzB;
|
|
1
|
+
{"version":3,"file":"profielHtml.d.ts","sourceRoot":"","sources":["../../src/lib/profielHtml.ts"],"names":[],"mappings":"AAuBA,MAAM,WAAW,mBAAmB;IAClC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,qDAAqD;IACrD,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACzB;AAuND,kEAAkE;AAClE,wBAAgB,kBAAkB,CAAC,YAAY,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,GAAG,OAAO,CAWjF;AAED,oEAAoE;AACpE,wBAAgB,qBAAqB,CACnC,YAAY,EAAE,MAAM,EACpB,MAAM,EAAE,OAAO,EACf,QAAQ,EAAE,OAAO,EACjB,MAAM,GAAE,mBAAwB,GAC/B,MAAM,CAwCR"}
|
|
@@ -90,7 +90,14 @@ function waardeVoor(velden, inst) {
|
|
|
90
90
|
const staart = Object.entries(velden).find(([k, v]) => k.toLowerCase().endsWith(`.${inst.key}`) && String(v).trim() !== "");
|
|
91
91
|
return staart ? String(staart[1]) : "";
|
|
92
92
|
}
|
|
93
|
-
|
|
93
|
+
/**
|
|
94
|
+
* Eén regel "label — waarde". Een veld zonder waarde levert géén regel op:
|
|
95
|
+
* anders komt er een vel met alleen veldnamen uit de printer, terwijl het
|
|
96
|
+
* ontwerp op het scherm wel gevuld lijkt.
|
|
97
|
+
*/
|
|
98
|
+
const kv = (label, waarde) => String(waarde).trim() === ""
|
|
99
|
+
? ""
|
|
100
|
+
: `<div class="kv"><span class="k">${esc(label)}</span><span class="v">${esc(waarde)}</span></div>`;
|
|
94
101
|
/** Zoekt de regels van het document (orderregels, producten, materialen, ...). */
|
|
95
102
|
function zoekRegels(data) {
|
|
96
103
|
for (const sleutel of ["regels", "orderregels", "items", "producten", "lines", "onderdelen"]) {
|
|
@@ -110,8 +117,8 @@ function regeltabel(regels) {
|
|
|
110
117
|
const eenheid = r["eenheid"] ?? "";
|
|
111
118
|
return `<tr><td>${esc(code)}</td><td>${esc(omschrijving)}</td><td style="text-align:right">${esc(aantal)}</td><td>${esc(eenheid)}</td></tr>`;
|
|
112
119
|
};
|
|
113
|
-
return `<table class="tabel"><colgroup><col style="width:20%" /><col style="width:52%" /><col style="width:16%" /><col style="width:12%" /></colgroup>
|
|
114
|
-
<thead><tr class="onder"><th>Code</th><th>Omschrijving</th><th style="text-align:right">Aantal</th><th>Eenheid</th></tr></thead>
|
|
120
|
+
return `<table class="tabel"><colgroup><col style="width:20%" /><col style="width:52%" /><col style="width:16%" /><col style="width:12%" /></colgroup>
|
|
121
|
+
<thead><tr class="onder"><th>Code</th><th>Omschrijving</th><th style="text-align:right">Aantal</th><th>Eenheid</th></tr></thead>
|
|
115
122
|
<tbody>${regels.map(rij).join("")}</tbody></table>`;
|
|
116
123
|
}
|
|
117
124
|
function totalenBlok(regels, velden) {
|
|
@@ -236,21 +243,21 @@ export function renderProfielDocument(documenttype, config, gegevens, opties = {
|
|
|
236
243
|
.map((groep) => groepHtml(groep, cfg, velden, data, opties))
|
|
237
244
|
.filter(Boolean)
|
|
238
245
|
.join("");
|
|
239
|
-
return `<!doctype html><html lang="nl"><head><meta charset="utf-8" />
|
|
240
|
-
<title>${esc(opties.titel ?? profiel.label)}</title>
|
|
241
|
-
<style>
|
|
242
|
-
@page { size: ${b}mm ${h}mm; margin: ${marge}mm; }
|
|
243
|
-
* { box-sizing: border-box; }
|
|
244
|
-
html, body { margin: 0; padding: 0; }
|
|
245
|
-
body { font-family: Arial, Helvetica, sans-serif; font-size: 9pt; color: #111827; line-height: 1.35; }
|
|
246
|
-
.blok { margin-bottom: 2.5mm; }
|
|
247
|
-
.kop { border-bottom: 0.3mm solid #d1d5db; padding-bottom: 1mm; }
|
|
248
|
-
.sectitel { font-size: 90%; font-weight: 600; text-transform: uppercase; color: #6b7280; margin-bottom: 0.6mm; }
|
|
249
|
-
.vet { font-weight: 600; }
|
|
250
|
-
.klein { font-size: 85%; color: #6b7280; }
|
|
251
|
-
.kv { display: flex; justify-content: space-between; gap: 3mm; }
|
|
252
|
-
.kv .k { color: #6b7280; }
|
|
253
|
-
.tabel { width: 100%; border-collapse: collapse; table-layout: fixed; }
|
|
254
|
-
.tabel th { text-align: left; font-weight: 600; }
|
|
246
|
+
return `<!doctype html><html lang="nl"><head><meta charset="utf-8" />
|
|
247
|
+
<title>${esc(opties.titel ?? profiel.label)}</title>
|
|
248
|
+
<style>
|
|
249
|
+
@page { size: ${b}mm ${h}mm; margin: ${marge}mm; }
|
|
250
|
+
* { box-sizing: border-box; }
|
|
251
|
+
html, body { margin: 0; padding: 0; }
|
|
252
|
+
body { font-family: Arial, Helvetica, sans-serif; font-size: 9pt; color: #111827; line-height: 1.35; }
|
|
253
|
+
.blok { margin-bottom: 2.5mm; }
|
|
254
|
+
.kop { border-bottom: 0.3mm solid #d1d5db; padding-bottom: 1mm; }
|
|
255
|
+
.sectitel { font-size: 90%; font-weight: 600; text-transform: uppercase; color: #6b7280; margin-bottom: 0.6mm; }
|
|
256
|
+
.vet { font-weight: 600; }
|
|
257
|
+
.klein { font-size: 85%; color: #6b7280; }
|
|
258
|
+
.kv { display: flex; justify-content: space-between; gap: 3mm; }
|
|
259
|
+
.kv .k { color: #6b7280; }
|
|
260
|
+
.tabel { width: 100%; border-collapse: collapse; table-layout: fixed; }
|
|
261
|
+
.tabel th { text-align: left; font-weight: 600; }
|
|
255
262
|
</style></head><body>${kop}${body}</body></html>`;
|
|
256
263
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { type SupabaseClient } from "@supabase/supabase-js";
|
|
2
|
-
/** Uitleg voor de gebruiker als de serverinstellingen ontbreken. */
|
|
3
|
-
export declare function adminConfiguratieFout(): string | null;
|
|
4
|
-
/** Lazy adminclient: pas bij het eerste gebruik worden de instellingen gelezen. */
|
|
5
|
-
export declare const adminDb: SupabaseClient<any, any, any, any, any>;
|
|
1
|
+
import { type SupabaseClient } from "@supabase/supabase-js";
|
|
2
|
+
/** Uitleg voor de gebruiker als de serverinstellingen ontbreken. */
|
|
3
|
+
export declare function adminConfiguratieFout(): string | null;
|
|
4
|
+
/** Lazy adminclient: pas bij het eerste gebruik worden de instellingen gelezen. */
|
|
5
|
+
export declare const adminDb: SupabaseClient<any, any, any, any, any>;
|
|
6
6
|
//# sourceMappingURL=supabaseAdmin.server.d.ts.map
|
|
@@ -1,43 +1,43 @@
|
|
|
1
|
-
// ============================================================================
|
|
2
|
-
// src/lib/supabaseAdmin.server.ts — adminclient die in elke shell werkt.
|
|
3
|
-
// Leest de service-role sleutel uit meerdere mogelijke namen, zodat de module
|
|
4
|
-
// niet afhankelijk is van hoe een shell zijn omgeving heeft ingericht.
|
|
5
|
-
// ============================================================================
|
|
6
|
-
import { createClient } from "@supabase/supabase-js";
|
|
7
|
-
function lees(...namen) {
|
|
8
|
-
for (const naam of namen) {
|
|
9
|
-
const waarde = process.env[naam];
|
|
10
|
-
if (waarde && waarde.trim().length > 0)
|
|
11
|
-
return waarde.trim();
|
|
12
|
-
}
|
|
13
|
-
return undefined;
|
|
14
|
-
}
|
|
15
|
-
/** Uitleg voor de gebruiker als de serverinstellingen ontbreken. */
|
|
16
|
-
export function adminConfiguratieFout() {
|
|
17
|
-
const url = lees("SUPABASE_URL", "VITE_SUPABASE_URL");
|
|
18
|
-
const key = lees("SERVICE_ROLE_KEY", "SUPABASE_SERVICE_ROLE_KEY");
|
|
19
|
-
if (url && key)
|
|
20
|
-
return null;
|
|
21
|
-
const mist = [!url ? "SUPABASE_URL" : null, !key ? "SERVICE_ROLE_KEY" : null]
|
|
22
|
-
.filter(Boolean)
|
|
23
|
-
.join(" en ");
|
|
24
|
-
return `Achtergrondprinten is niet ingesteld: ${mist} ontbreekt in deze omgeving.`;
|
|
25
|
-
}
|
|
26
|
-
function maakClient() {
|
|
27
|
-
const url = lees("SUPABASE_URL", "VITE_SUPABASE_URL");
|
|
28
|
-
const key = lees("SERVICE_ROLE_KEY", "SUPABASE_SERVICE_ROLE_KEY");
|
|
29
|
-
if (!url || !key)
|
|
30
|
-
throw new Error(adminConfiguratieFout() ?? "Serverinstellingen ontbreken.");
|
|
31
|
-
return createClient(url, key, {
|
|
32
|
-
auth: { storage: undefined, persistSession: false, autoRefreshToken: false },
|
|
33
|
-
});
|
|
34
|
-
}
|
|
35
|
-
let _client;
|
|
36
|
-
/** Lazy adminclient: pas bij het eerste gebruik worden de instellingen gelezen. */
|
|
37
|
-
export const adminDb = new Proxy({}, {
|
|
38
|
-
get(_t, prop, receiver) {
|
|
39
|
-
if (!_client)
|
|
40
|
-
_client = maakClient();
|
|
41
|
-
return Reflect.get(_client, prop, receiver);
|
|
42
|
-
},
|
|
43
|
-
});
|
|
1
|
+
// ============================================================================
|
|
2
|
+
// src/lib/supabaseAdmin.server.ts — adminclient die in elke shell werkt.
|
|
3
|
+
// Leest de service-role sleutel uit meerdere mogelijke namen, zodat de module
|
|
4
|
+
// niet afhankelijk is van hoe een shell zijn omgeving heeft ingericht.
|
|
5
|
+
// ============================================================================
|
|
6
|
+
import { createClient } from "@supabase/supabase-js";
|
|
7
|
+
function lees(...namen) {
|
|
8
|
+
for (const naam of namen) {
|
|
9
|
+
const waarde = process.env[naam];
|
|
10
|
+
if (waarde && waarde.trim().length > 0)
|
|
11
|
+
return waarde.trim();
|
|
12
|
+
}
|
|
13
|
+
return undefined;
|
|
14
|
+
}
|
|
15
|
+
/** Uitleg voor de gebruiker als de serverinstellingen ontbreken. */
|
|
16
|
+
export function adminConfiguratieFout() {
|
|
17
|
+
const url = lees("SUPABASE_URL", "VITE_SUPABASE_URL");
|
|
18
|
+
const key = lees("SERVICE_ROLE_KEY", "SUPABASE_SERVICE_ROLE_KEY");
|
|
19
|
+
if (url && key)
|
|
20
|
+
return null;
|
|
21
|
+
const mist = [!url ? "SUPABASE_URL" : null, !key ? "SERVICE_ROLE_KEY" : null]
|
|
22
|
+
.filter(Boolean)
|
|
23
|
+
.join(" en ");
|
|
24
|
+
return `Achtergrondprinten is niet ingesteld: ${mist} ontbreekt in deze omgeving.`;
|
|
25
|
+
}
|
|
26
|
+
function maakClient() {
|
|
27
|
+
const url = lees("SUPABASE_URL", "VITE_SUPABASE_URL");
|
|
28
|
+
const key = lees("SERVICE_ROLE_KEY", "SUPABASE_SERVICE_ROLE_KEY");
|
|
29
|
+
if (!url || !key)
|
|
30
|
+
throw new Error(adminConfiguratieFout() ?? "Serverinstellingen ontbreken.");
|
|
31
|
+
return createClient(url, key, {
|
|
32
|
+
auth: { storage: undefined, persistSession: false, autoRefreshToken: false },
|
|
33
|
+
});
|
|
34
|
+
}
|
|
35
|
+
let _client;
|
|
36
|
+
/** Lazy adminclient: pas bij het eerste gebruik worden de instellingen gelezen. */
|
|
37
|
+
export const adminDb = new Proxy({}, {
|
|
38
|
+
get(_t, prop, receiver) {
|
|
39
|
+
if (!_client)
|
|
40
|
+
_client = maakClient();
|
|
41
|
+
return Reflect.get(_client, prop, receiver);
|
|
42
|
+
},
|
|
43
|
+
});
|
|
@@ -6,9 +6,9 @@
|
|
|
6
6
|
import { toast } from "@flowselections/core";
|
|
7
7
|
import { printHtml, volgJobStatus } from "./printApi.js";
|
|
8
8
|
export async function drukTestpaginaAf(printerId, naam) {
|
|
9
|
-
const html = `<div style="padding:15mm;font-family:Arial,Helvetica,sans-serif;font-size:12pt">
|
|
10
|
-
<h1 style="font-size:20pt;margin:0 0 6mm">Testpagina</h1>
|
|
11
|
-
<p style="margin:0 0 3mm">Deze pagina hoort uit: <strong>${naam}</strong></p>
|
|
9
|
+
const html = `<div style="padding:15mm;font-family:Arial,Helvetica,sans-serif;font-size:12pt">
|
|
10
|
+
<h1 style="font-size:20pt;margin:0 0 6mm">Testpagina</h1>
|
|
11
|
+
<p style="margin:0 0 3mm">Deze pagina hoort uit: <strong>${naam}</strong></p>
|
|
12
12
|
<p style="margin:0">${new Date().toLocaleString("nl-NL")}</p></div>`;
|
|
13
13
|
try {
|
|
14
14
|
const { jobId } = await printHtml({
|
|
@@ -42,10 +42,10 @@ function testHtml(velden) {
|
|
|
42
42
|
const rijen = Object.entries(velden)
|
|
43
43
|
.map(([k, v]) => `<tr><td style="padding:2mm 6mm 2mm 0;color:#555">${k}</td><td style="padding:2mm 0;font-weight:600">${v}</td></tr>`)
|
|
44
44
|
.join("");
|
|
45
|
-
return `<div style="padding:15mm;font-family:Arial,Helvetica,sans-serif;font-size:12pt">
|
|
46
|
-
<h1 style="font-size:20pt;margin:0 0 6mm">Testprint</h1>
|
|
47
|
-
<p style="margin:0 0 6mm">Komt dit vel uit de bedoelde printer op de bedoelde plek? Dan zijn de instellingen goed.</p>
|
|
48
|
-
<table style="border-collapse:collapse;font-size:12pt">${rijen}</table>
|
|
45
|
+
return `<div style="padding:15mm;font-family:Arial,Helvetica,sans-serif;font-size:12pt">
|
|
46
|
+
<h1 style="font-size:20pt;margin:0 0 6mm">Testprint</h1>
|
|
47
|
+
<p style="margin:0 0 6mm">Komt dit vel uit de bedoelde printer op de bedoelde plek? Dan zijn de instellingen goed.</p>
|
|
48
|
+
<table style="border-collapse:collapse;font-size:12pt">${rijen}</table>
|
|
49
49
|
</div>`;
|
|
50
50
|
}
|
|
51
51
|
/**
|
|
@@ -34,9 +34,15 @@ export interface PrintJobModel {
|
|
|
34
34
|
payload?: Record<string, unknown> | null;
|
|
35
35
|
/** Bij de virtuele PDF-printer: de opgemaakte PDF om te downloaden. */
|
|
36
36
|
resultaat_pdf_base64?: string | null;
|
|
37
|
+
artefact_pad?: string | null;
|
|
38
|
+
artefact_sha256?: string | null;
|
|
39
|
+
artefact_bytes?: number | null;
|
|
40
|
+
verwerkingsfase?: string | null;
|
|
41
|
+
foutcode?: string | null;
|
|
37
42
|
lokale_pdf_status?: string | null;
|
|
38
43
|
lokaal_opgeslagen_op?: string | null;
|
|
39
44
|
lokale_pdf_fout?: string | null;
|
|
45
|
+
lokale_pdf_print_plek_id?: string | null;
|
|
40
46
|
}
|
|
41
47
|
export declare function zorgVoorFloridayLayouts(): Promise<boolean>;
|
|
42
48
|
export declare function zorgVoorStandaardLayouts(): Promise<boolean>;
|
|
@@ -113,5 +119,7 @@ export declare function maakPrintJob(input: {
|
|
|
113
119
|
documentnaam: string;
|
|
114
120
|
kopieen?: number;
|
|
115
121
|
is_herprint?: boolean;
|
|
122
|
+
bron_job_id?: string | null;
|
|
123
|
+
payload?: Record<string, unknown>;
|
|
116
124
|
}): Promise<void>;
|
|
117
125
|
//# sourceMappingURL=useDocumentData.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useDocumentData.d.ts","sourceRoot":"","sources":["../../src/lib/useDocumentData.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,kBAAkB,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAGrF,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAI9C,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,+EAA+E;IAC/E,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,MAAM,EAAE,OAAO,CAAC;IAChB,MAAM,EAAE,OAAO,CAAC;IAChB,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;CAC9B;AAED,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,WAAW,EAAE,OAAO,CAAC;IACrB,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,iEAAiE;IACjE,mBAAmB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACpC,iFAAiF;IACjF,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,yEAAyE;IACzE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;IACzC,uEAAuE;IACvE,oBAAoB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACrC,iBAAiB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAClC,oBAAoB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACrC,eAAe,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"useDocumentData.d.ts","sourceRoot":"","sources":["../../src/lib/useDocumentData.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,kBAAkB,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAGrF,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAI9C,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,+EAA+E;IAC/E,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,MAAM,EAAE,OAAO,CAAC;IAChB,MAAM,EAAE,OAAO,CAAC;IAChB,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;CAC9B;AAED,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,WAAW,EAAE,OAAO,CAAC;IACrB,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,iEAAiE;IACjE,mBAAmB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACpC,iFAAiF;IACjF,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,yEAAyE;IACzE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;IACzC,uEAAuE;IACvE,oBAAoB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACrC,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,eAAe,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,eAAe,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,iBAAiB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAClC,oBAAoB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACrC,eAAe,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,wBAAwB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC1C;AASD,wBAAsB,uBAAuB,IAAI,OAAO,CAAC,OAAO,CAAC,CA8BhE;AAmBD,wBAAsB,wBAAwB,IAAI,OAAO,CAAC,OAAO,CAAC,CA+DjE;AAED,wBAAgB,UAAU;;;;EAyBzB;AAED,wBAAsB,UAAU,CAAC,KAAK,EAAE;IACtC,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,UAAU,GAAG,WAAW,CAAC;IACrC,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAClC,mBAQA;AAED,wBAAsB,eAAe,CAAC,EAAE,EAAE,MAAM,mBA2B/C;AAED,wBAAsB,eAAe,CAAC,EAAE,EAAE,MAAM,iBAG/C;AAED,wBAAsB,YAAY,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,iBAM5E;AAwBD,wBAAgB,eAAe,CAAC,QAAQ,EAAE,MAAM;;;;;;;EAkD/C;AAED,wBAAsB,eAAe,CACnC,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,kBAAkB,EAAE,EAC/B,YAAY,CAAC,EAAE,YAAY,iBA+C5B;AAED,wBAAsB,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,kBAAkB,EAAE,EAAE,UAAU,EAAE,MAAM,mBAmBvG;AAED,wBAAgB,UAAU,CAAC,QAAQ,EAAE,MAAM;;YAEjC,MAAM;sBAAgB,MAAM;oBAAc,MAAM,GAAG,IAAI;oBAAc,MAAM;kBAAY,OAAO;;;EAcvG;AAID,wBAAgB,WAAW;;;mBAEmC,MAAM;oBAAc,MAAM;;;;EAmBvF;AAED,wBAAsB,aAAa,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,EAAE,CAAC,EAAE,MAAM,iBAS9E;AAED,wBAAsB,gBAAgB,CAAC,EAAE,EAAE,MAAM,iBAGhD;AAED;;;GAGG;AACH,wBAAsB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI,iBAWhF;AAED,wBAAsB,eAAe,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,iBAMtF;AAID,wBAAgB,YAAY;;;;EAsB3B;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,IAAI,SAAS,CAyB7C;AAED,wBAAsB,eAAe,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,iBAS/D;AAED,wBAAsB,YAAY,CAAC,KAAK,EAAE;IACxC,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACnC,iBAkBA"}
|
|
@@ -407,7 +407,7 @@ export function usePrintJobs() {
|
|
|
407
407
|
setLoading(true);
|
|
408
408
|
const { data } = await supabase
|
|
409
409
|
.from("print_jobs")
|
|
410
|
-
.select("
|
|
410
|
+
.select("id, layout_id, printer_id, documenttype, documentnaam, status, paginas, kopieen, foutmelding, is_herprint, gebruiker_naam, created_at, voltooid_op, extern_job_id, gebruikte_layout_id, gebruikte_bron, payload, lokale_pdf_status, lokaal_opgeslagen_op, lokale_pdf_fout, lokale_pdf_print_plek_id, artefact_pad, artefact_sha256, artefact_bytes, verwerkingsfase, foutcode")
|
|
411
411
|
.order("created_at", { ascending: false })
|
|
412
412
|
.limit(200);
|
|
413
413
|
setJobs(arr(data));
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { type PrintHtmlInput } from "./printApi.js";
|
|
1
2
|
export interface VoorbeeldLayout {
|
|
2
3
|
id?: string | null;
|
|
3
4
|
naam?: string | null;
|
|
@@ -8,6 +9,8 @@ export interface VoorbeeldLayout {
|
|
|
8
9
|
orientatie?: string | null;
|
|
9
10
|
marge_boven?: number | null;
|
|
10
11
|
}
|
|
12
|
+
/** Pure opbouw van de opdracht, zodat printplekdoorgifte regressiegetest kan worden. */
|
|
13
|
+
export declare function bouwVoorbeeldPrintInvoer(layout: VoorbeeldLayout, html: string, printerId: string, printplekId?: string): PrintHtmlInput;
|
|
11
14
|
/**
|
|
12
15
|
* Stuurt meegestuurde opmaak als voorbeeldafdruk naar de printer die bij deze
|
|
13
16
|
* layout hoort en volgt de status in de wachtrij.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"voorbeeldPrint.d.ts","sourceRoot":"","sources":["../../src/lib/voorbeeldPrint.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"voorbeeldPrint.d.ts","sourceRoot":"","sources":["../../src/lib/voorbeeldPrint.ts"],"names":[],"mappings":"AAQA,OAAO,EAKL,KAAK,cAAc,EACpB,MAAM,YAAY,CAAC;AAKpB,MAAM,WAAW,eAAe;IAC9B,EAAE,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACnB,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC7B;AAED,wFAAwF;AACxF,wBAAgB,wBAAwB,CACtC,MAAM,EAAE,eAAe,EACvB,IAAI,EAAE,MAAM,EACZ,SAAS,EAAE,MAAM,EACjB,WAAW,CAAC,EAAE,MAAM,GACnB,cAAc,CAwBhB;AAED;;;GAGG;AACH,wBAAsB,cAAc,CAAC,MAAM,EAAE,eAAe,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAqEzF"}
|
|
@@ -5,24 +5,20 @@
|
|
|
5
5
|
// zodat de wachtrij niets opnieuw opmaakt.
|
|
6
6
|
// ============================================================================
|
|
7
7
|
import { toast } from "@flowselections/core";
|
|
8
|
-
import { printHtml, printerVoorLayout, volgJobStatus } from "./printApi.js";
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
*/
|
|
13
|
-
export
|
|
8
|
+
import { printHtml, printerAfdrukmethode, printerVoorLayout, volgJobStatus, } from "./printApi.js";
|
|
9
|
+
import { lokalePdfPrintplek, pdfMapToestemming } from "./pdfMap.js";
|
|
10
|
+
import { printerVoorPrintplek } from "./printplekken.js";
|
|
11
|
+
import { isOpslagFout, PDF_OPSLAG_MELDING } from "./pdfOpslagStatus.js";
|
|
12
|
+
/** Pure opbouw van de opdracht, zodat printplekdoorgifte regressiegetest kan worden. */
|
|
13
|
+
export function bouwVoorbeeldPrintInvoer(layout, html, printerId, printplekId) {
|
|
14
14
|
const documenttype = String(layout.documenttype ?? "pakbon");
|
|
15
15
|
const naam = layout.naam ?? documenttype;
|
|
16
|
-
|
|
17
|
-
if (!printerId) {
|
|
18
|
-
toast.error(`Nog geen printer gekoppeld aan ${naam} — stel dit in bij Printen > Standaardregels.`);
|
|
19
|
-
return;
|
|
20
|
-
}
|
|
21
|
-
const { jobId } = await printHtml({
|
|
16
|
+
return {
|
|
22
17
|
documenttype,
|
|
23
18
|
documentnaam: `Voorbeeld ${naam}`,
|
|
24
19
|
html,
|
|
25
20
|
printerId,
|
|
21
|
+
...(printplekId ? { printplekId } : {}),
|
|
26
22
|
// Bewust geen layout_id: de meegestuurde opmaak is leidend. Het formaat van
|
|
27
23
|
// de bewerkte layout gaat wel mee, zodat het voorbeeld op hetzelfde papier
|
|
28
24
|
// uitkomt als de echte afdruk (bijvoorbeeld A5 in plaats van A4).
|
|
@@ -37,17 +33,69 @@ export async function voorbeeldPrint(layout, html) {
|
|
|
37
33
|
},
|
|
38
34
|
},
|
|
39
35
|
isHerprint: true,
|
|
40
|
-
}
|
|
41
|
-
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Stuurt meegestuurde opmaak als voorbeeldafdruk naar de printer die bij deze
|
|
40
|
+
* layout hoort en volgt de status in de wachtrij.
|
|
41
|
+
*/
|
|
42
|
+
export async function voorbeeldPrint(layout, html) {
|
|
43
|
+
const documenttype = String(layout.documenttype ?? "pakbon");
|
|
44
|
+
const naam = layout.naam ?? documenttype;
|
|
45
|
+
const printerId = await printerVoorLayout(layout);
|
|
46
|
+
if (!printerId) {
|
|
47
|
+
toast.error(`Nog geen printer gekoppeld aan ${naam} — stel dit in bij Printen > Standaardregels.`);
|
|
48
|
+
return;
|
|
49
|
+
}
|
|
50
|
+
const isPdf = (await printerAfdrukmethode(printerId)) === "pdf";
|
|
51
|
+
let printplekId;
|
|
52
|
+
if (isPdf) {
|
|
53
|
+
const lokalePrintplek = await lokalePdfPrintplek();
|
|
54
|
+
if (!lokalePrintplek) {
|
|
55
|
+
throw new Error("Deze Mac heeft nog geen PDF-map met printplek. Kies de map opnieuw bij de bedoelde printplek.");
|
|
56
|
+
}
|
|
57
|
+
const printerOpPlek = await printerVoorPrintplek(lokalePrintplek, documenttype);
|
|
58
|
+
if (printerOpPlek !== printerId) {
|
|
59
|
+
throw new Error("De PDF-map van deze Mac hoort niet bij de printplek van dit document. Controleer de printer bij deze printplek.");
|
|
60
|
+
}
|
|
61
|
+
const toestemming = await pdfMapToestemming(printerId);
|
|
62
|
+
if (toestemming === "ontbreekt")
|
|
63
|
+
throw new Error(PDF_OPSLAG_MELDING.map_ontbreekt);
|
|
64
|
+
if (toestemming !== "granted")
|
|
65
|
+
throw new Error(PDF_OPSLAG_MELDING.geen_rechten);
|
|
66
|
+
printplekId = lokalePrintplek;
|
|
67
|
+
}
|
|
68
|
+
const { jobId } = await printHtml(bouwVoorbeeldPrintInvoer(layout, html, printerId, printplekId));
|
|
69
|
+
toast.success(isPdf ? "Voorbeeld wordt in de PDF-map opgeslagen" : "Voorbeeld naar de printer verstuurd");
|
|
70
|
+
let afgerond = false;
|
|
42
71
|
const stop = volgJobStatus(jobId, (s) => {
|
|
43
|
-
if (s.
|
|
72
|
+
if (isPdf && s.lokale_pdf_status === "opgeslagen" && s.lokaal_opgeslagen_op) {
|
|
73
|
+
afgerond = true;
|
|
74
|
+
toast.success("Voorbeeld opgeslagen in de PDF-map");
|
|
75
|
+
stop();
|
|
76
|
+
}
|
|
77
|
+
else if (isPdf && isOpslagFout(s.lokale_pdf_status)) {
|
|
78
|
+
afgerond = true;
|
|
79
|
+
toast.error(s.lokale_pdf_fout ??
|
|
80
|
+
PDF_OPSLAG_MELDING[s.lokale_pdf_status ?? ""] ??
|
|
81
|
+
"Voorbeeld kon niet in de PDF-map worden opgeslagen.");
|
|
82
|
+
stop();
|
|
83
|
+
}
|
|
84
|
+
else if (!isPdf && (s.status === "klaar" || s.status === "voltooid")) {
|
|
85
|
+
afgerond = true;
|
|
44
86
|
toast.success("Voorbeeld afgedrukt");
|
|
45
87
|
stop();
|
|
46
88
|
}
|
|
47
89
|
else if (s.status === "mislukt") {
|
|
48
|
-
|
|
90
|
+
afgerond = true;
|
|
91
|
+
toast.error(s.lokale_pdf_fout ?? s.foutmelding ?? "Voorbeeld printen mislukt");
|
|
49
92
|
stop();
|
|
50
93
|
}
|
|
51
94
|
});
|
|
52
|
-
window.setTimeout(() =>
|
|
95
|
+
window.setTimeout(() => {
|
|
96
|
+
stop();
|
|
97
|
+
if (isPdf && !afgerond) {
|
|
98
|
+
toast.error("Het voorbeeld is nog niet opgeslagen. Controleer de opdracht in de printwachtrij.");
|
|
99
|
+
}
|
|
100
|
+
}, 5 * 60000);
|
|
53
101
|
}
|