@flowselections/pick-schermen-kwekers 1.0.34 → 1.0.39
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 +0 -1
- package/dist-lib/components/pick/PickScherm.d.ts.map +1 -1
- package/dist-lib/components/pick/PickScherm.js +9 -3
- package/dist-lib/components/pick/QueueTable.d.ts.map +1 -1
- package/dist-lib/components/pick/QueueTable.js +14 -1
- package/dist-lib/components/pick/StickerState.d.ts +11 -0
- package/dist-lib/components/pick/StickerState.d.ts.map +1 -0
- package/dist-lib/components/pick/StickerState.js +45 -0
- package/dist-lib/index.d.ts +2 -0
- package/dist-lib/index.d.ts.map +1 -1
- package/dist-lib/index.js +2 -0
- package/dist-lib/integrations/supabase/types.d.ts +941 -0
- package/dist-lib/integrations/supabase/types.d.ts.map +1 -1
- package/dist-lib/lib/__tests__/pickSentElsewhere.test.d.ts +2 -0
- package/dist-lib/lib/__tests__/pickSentElsewhere.test.d.ts.map +1 -0
- package/dist-lib/lib/__tests__/pickSentElsewhere.test.js +30 -0
- package/dist-lib/lib/__tests__/pickStickers.test.d.ts +2 -0
- package/dist-lib/lib/__tests__/pickStickers.test.d.ts.map +1 -0
- package/dist-lib/lib/__tests__/pickStickers.test.js +25 -0
- package/dist-lib/lib/__tests__/pickStickers138.test.d.ts +2 -0
- package/dist-lib/lib/__tests__/pickStickers138.test.d.ts.map +1 -0
- package/dist-lib/lib/__tests__/pickStickers138.test.js +32 -0
- package/dist-lib/lib/pickApi.d.ts +12 -0
- package/dist-lib/lib/pickApi.d.ts.map +1 -1
- package/dist-lib/lib/pickApi.js +16 -0
- package/dist-lib/lib/pickCartResults.d.ts +6 -1
- package/dist-lib/lib/pickCartResults.d.ts.map +1 -1
- package/dist-lib/lib/pickCartResults.js +24 -0
- package/dist-lib/lib/pickRowState.d.ts +1 -1
- package/dist-lib/lib/pickRowState.d.ts.map +1 -1
- package/dist-lib/lib/pickRowState.js +1 -1
- package/dist-lib/lib/pickStickers.d.ts +41 -0
- package/dist-lib/lib/pickStickers.d.ts.map +1 -0
- package/dist-lib/lib/pickStickers.js +111 -0
- package/dist-lib/lib/pickTypes.js +2 -2
- package/package.json +2 -2
package/README.md
CHANGED
|
@@ -6,7 +6,6 @@ This project was built with [Lovable](https://lovable.dev).
|
|
|
6
6
|
|
|
7
7
|
## Build with Lovable
|
|
8
8
|
|
|
9
|
-
Continue developing this project in the [Lovable editor](https://lovable.dev/projects/f7462658-1d60-42f1-8e22-dbefe36f44ef).
|
|
10
9
|
|
|
11
10
|
- **Ship faster**: describe what you want to build and Lovable handles the code.
|
|
12
11
|
- **Stay in sync**: every change made in Lovable is committed straight to this repository.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PickScherm.d.ts","sourceRoot":"","sources":["../../../src/components/pick/PickScherm.tsx"],"names":[],"mappings":"AAqCA,OAAO,EAWL,KAAK,WAAW,EACjB,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"PickScherm.d.ts","sourceRoot":"","sources":["../../../src/components/pick/PickScherm.tsx"],"names":[],"mappings":"AAqCA,OAAO,EAWL,KAAK,WAAW,EACjB,MAAM,qBAAqB,CAAC;AAuD7B,UAAU,KAAK;IACb,OAAO,EAAE,WAAW,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;CACrB;AAwBD;;;GAGG;AACH,wBAAgB,UAAU,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,KAAK,+BAm9DpD"}
|
|
@@ -22,6 +22,7 @@ import { usePrintBatch, usePrintJob } from "../../hooks/usePrintJob";
|
|
|
22
22
|
import { useShippingNoteStatus } from "../../hooks/useShippingNoteStatus";
|
|
23
23
|
import { firstVisibleTarget, isJobFinished, isRowGoneError, NO_ROW_IN_FILTER_MESSAGE, RELEASE_PENDING_MESSAGE, ROW_GONE_MESSAGE, stuckMessage, stuckMinutesOf, } from "../../lib/pickRowState";
|
|
24
24
|
import { CartItemRows, PlanWarnings } from "./CartItemRows";
|
|
25
|
+
import { CartStickerState, OrderStickerMeldingen } from "./StickerState";
|
|
25
26
|
import { isWaitingShippingNote, shippingNoteMessage, shippingNoteSourceLabel, } from "../../lib/shippingNoteStatus";
|
|
26
27
|
const LANG_STORAGE_KEY = "pick.language";
|
|
27
28
|
/** Melding als de planning voor deze order geen karren heeft vastgelegd. */
|
|
@@ -1204,11 +1205,16 @@ export function PickScherm({ station, onBack }) {
|
|
|
1204
1205
|
setCartPlan(null);
|
|
1205
1206
|
setActiveCartId(null);
|
|
1206
1207
|
refresh();
|
|
1207
|
-
}, children: "Wachtrij verversen" })] })), lastCartResults.
|
|
1208
|
+
}, children: "Wachtrij verversen" })] })), lastCartResults.some((r) => r.sentElsewhere) && lastPrinted && (_jsx("div", { className: "rounded-md border border-primary/40 bg-primary/5 p-3 text-sm", "aria-label": "Pakbon al verstuurd", children: _jsx("ul", { className: "space-y-2", children: lastCartResults.filter((r) => r.sentElsewhere).map((r) => (_jsxs("li", { className: "flex flex-wrap items-center justify-between gap-2", children: [_jsx("span", { className: "text-foreground", children: cartResultLine(r) }), _jsx(Button, { size: "sm", variant: "outline", disabled: busyId !== null, onClick: () => {
|
|
1209
|
+
const plannedCart = (Array.isArray(cartPlan?.carts) ? cartPlan.carts : []).find((c) => c.cartId === r.cartId);
|
|
1210
|
+
const cart = plannedCart ?? { cartId: r.cartId, cartLabel: r.cartLabel ?? r.cartId };
|
|
1211
|
+
setLastCartResults((prev) => prev.filter((x) => x.cartId !== r.cartId));
|
|
1212
|
+
void reprintCart(lastPrinted, cart);
|
|
1213
|
+
}, children: "Opnieuw printen" })] }, r.cartId))) }) })), lastCartResults.length > 1 && (_jsxs("div", { className: "rounded-md border p-3 text-sm", "aria-label": "Resultaat per kar", children: [_jsx("p", { className: "mb-1 font-semibold text-foreground", children: "Resultaat per kar" }), _jsx("ul", { className: "space-y-0.5 text-muted-foreground", children: lastCartResults.map((r) => (_jsx("li", { className: r.outcome === "created" ? "text-foreground" : r.outcome === "error" ? "text-destructive" : "", children: cartResultLine(r) }, r.cartId))) })] })), _jsx(ShippingNoteScan, { stationId: station.id }), !pending && emptyNotice && (_jsx("p", { className: "text-sm text-muted-foreground", children: emptyNotice })), pending && (_jsxs(Card, { className: "border-2 border-primary", children: [_jsxs(CardContent, { className: "flex flex-col gap-4 p-4 sm:flex-row sm:flex-wrap sm:items-center sm:justify-between sm:p-5", children: [_jsxs("div", { className: "min-w-0", children: [_jsx("p", { className: "text-sm font-medium text-muted-foreground", children: t("confirmPrintTitle") }), _jsx("p", { className: "truncate text-xl font-bold text-foreground sm:text-2xl", children: pending.document_number ?? t("document") }), _jsx("p", { className: "truncate text-sm text-muted-foreground", children: [pending.order_number, pending.customer_name].filter(Boolean).join(" · ") })] }), _jsxs("div", { className: "flex flex-col gap-2 sm:flex-row", children: [_jsx(Button, { variant: "outline", size: "lg", className: "h-12 w-full sm:w-auto", onClick: cancelPending, disabled: (busyId !== null || actionBusy), children: t("cancel") }), _jsxs(Button, { size: "lg", className: "h-14 w-full px-8 text-lg sm:w-auto", onClick: confirmPending, disabled: (busyId !== null || actionBusy) || fetchingData, variant: readiness.ready ? "default" : "secondary", children: [busyId === "confirm" || fetchingData ? (_jsx(Loader2, { className: "mr-2 h-5 w-5 animate-spin" })) : readiness.ready ? (_jsx(Printer, { className: "mr-2 h-5 w-5" })) : (_jsx(RefreshCw, { className: "mr-2 h-5 w-5" })), readiness.ready ? t("print") : "Pakbon ophalen"] })] })] }), !readiness.ready && (_jsx(CardContent, { className: "border-t p-4 sm:p-5", children: _jsxs("div", { className: "flex items-start gap-2 rounded-md border bg-muted/30 p-3 text-sm text-muted-foreground", children: [_jsx(AlertTriangle, { className: "mt-0.5 h-4 w-4 shrink-0" }), _jsx("span", { children: fetchingData
|
|
1208
1214
|
? "De pakbon wordt bij de bron opgevraagd. Zodra alles compleet is, verschijnt de printknop weer."
|
|
1209
1215
|
: planReason
|
|
1210
1216
|
? `${planReason} Klik op "Pakbon ophalen" om hem bij de bron op te vragen.`
|
|
1211
|
-
: NOT_READY_NOTICE })] }) })), cartPlan && (_jsxs(CardContent, { className: "border-t p-4 sm:p-5", children: [_jsx("div", { className: "mb-3 empty:hidden", children: _jsx(PlanWarnings, { warnings: cartPlan.warnings }) }), _jsxs("div", { className: "grid gap-3 lg:grid-cols-[minmax(0,0.8fr)_minmax(0,1.2fr)]", children: [_jsxs("div", { className: "space-y-2", children: [_jsx("p", { className: "text-sm font-semibold text-foreground", children: "Karren van deze order" }), _jsx("div", { className: "max-h-72 space-y-2 overflow-y-auto rounded-md border p-2", children: cartPlan.carts.map((cart) => {
|
|
1217
|
+
: NOT_READY_NOTICE })] }) })), cartPlan && (_jsxs(CardContent, { className: "border-t p-4 sm:p-5", children: [_jsx(OrderStickerMeldingen, { orderId: cartPlan.orderId, slug: station.slug ?? null }), _jsx("div", { className: "mb-3 empty:hidden", children: _jsx(PlanWarnings, { warnings: cartPlan.warnings }) }), _jsxs("div", { className: "grid gap-3 lg:grid-cols-[minmax(0,0.8fr)_minmax(0,1.2fr)]", children: [_jsxs("div", { className: "space-y-2", children: [_jsx("p", { className: "text-sm font-semibold text-foreground", children: "Karren van deze order" }), _jsx("div", { className: "max-h-72 space-y-2 overflow-y-auto rounded-md border p-2", children: cartPlan.carts.map((cart) => {
|
|
1212
1218
|
const done = printedCartIdsOf(pending).includes(cart.cartId);
|
|
1213
1219
|
const active = cart.cartId === activeCartId;
|
|
1214
1220
|
return (_jsxs("div", { role: "button", tabIndex: 0, onClick: () => setActiveCartId(cart.cartId), onKeyDown: (event) => {
|
|
@@ -1226,7 +1232,7 @@ export function PickScherm({ station, onBack }) {
|
|
|
1226
1232
|
const activeCart = cartPlan.carts.find((cart) => cart.cartId === activeCartId);
|
|
1227
1233
|
if (!activeCart)
|
|
1228
1234
|
return null;
|
|
1229
|
-
return (_jsxs("div", { className: "rounded-md border bg-muted/20 p-4", children: [_jsxs("div", { className: "flex flex-wrap items-center justify-between gap-2", children: [_jsxs("div", { children: [_jsx("p", { className: "text-lg font-bold text-foreground", children: activeCart.cartLabel }), _jsxs("p", { className: "text-sm text-muted-foreground", children: [activeCart.isFullCart ? "Volle kar" : "Halve kar (deel van de order)", activeCart.isShared ? " · gedeeld" : ""] })] }), activeCart.barcode && _jsx(Badge, { variant: "outline", children: activeCart.barcode })] }), _jsx("div", { className: "mt-4 divide-y rounded-md border bg-background", children: _jsx(CartItemRows, { items: activeCart.items, cartId: activeCart.cartId }) })] }));
|
|
1235
|
+
return (_jsxs("div", { className: "rounded-md border bg-muted/20 p-4", children: [_jsxs("div", { className: "flex flex-wrap items-center justify-between gap-2", children: [_jsxs("div", { children: [_jsx("p", { className: "text-lg font-bold text-foreground", children: activeCart.cartLabel }), _jsxs("p", { className: "text-sm text-muted-foreground", children: [activeCart.isFullCart ? "Volle kar" : "Halve kar (deel van de order)", activeCart.isShared ? " · gedeeld" : ""] })] }), activeCart.barcode && _jsx(Badge, { variant: "outline", children: activeCart.barcode })] }), _jsx("div", { className: "mt-4 divide-y rounded-md border bg-background", children: _jsx(CartItemRows, { items: activeCart.items, cartId: activeCart.cartId }) }), _jsx(CartStickerState, { cartId: activeCart.cartId, slug: station.slug ?? null })] }));
|
|
1230
1236
|
})()] })] }))] })), batch && (_jsx(Card, { className: batchFailed > 0 ? "border-2 border-destructive" : "border-2 border-primary/40", children: _jsxs(CardContent, { className: "flex items-center gap-3 p-4", children: [batchCompleted + batchFailed === batch.jobs.length ? (batchFailed > 0 ? _jsx(AlertTriangle, { className: "h-6 w-6 shrink-0 text-destructive" }) : _jsx(CheckCircle2, { className: "h-6 w-6 shrink-0 text-primary" })) : (_jsx(Loader2, { className: "h-6 w-6 shrink-0 animate-spin text-muted-foreground" })), _jsxs("div", { className: "min-w-0", children: [_jsxs("p", { className: "truncate text-sm text-muted-foreground", children: [jobTexts.jobTitle, batch.documentNumber ? ` · ${batch.documentNumber}` : ""] }), _jsxs("p", { className: "font-semibold text-foreground", children: [batchCompleted, " van ", batch.jobs.length, " pakbonnen voltooid", batchFailed > 0 ? ` · ${batchFailed} mislukt` : ""] }), batch.jobs.map((entry) => {
|
|
1231
1237
|
const minutes = stuckMinutesOf(entry.job, sentAtRef.current.get(entry.jobId) ?? null, nowTick);
|
|
1232
1238
|
if (minutes === null)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"QueueTable.d.ts","sourceRoot":"","sources":["../../../src/components/pick/QueueTable.tsx"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,gBAAgB,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAIvF,OAAO,EAAqB,KAAK,cAAc,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"QueueTable.d.ts","sourceRoot":"","sources":["../../../src/components/pick/QueueTable.tsx"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,gBAAgB,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAIvF,OAAO,EAAqB,KAAK,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAe5E,UAAU,KAAK;IACb,KAAK,EAAE,aAAa,EAAE,CAAC;IACvB,SAAS,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IACvB,QAAQ,EAAE,UAAU,EAAE,CAAC;IACvB,aAAa,EAAE,gBAAgB,EAAE,CAAC;IAClC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE;QAAE,QAAQ,EAAE,OAAO,CAAC;QAAC,KAAK,EAAE,OAAO,CAAC;QAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,QAAQ,CAAC,EAAE,OAAO,CAAA;KAAE,CAAC,CAAC;IAChH,4DAA4D;IAC5D,UAAU,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IACzB,MAAM,EAAE,CAAC,IAAI,EAAE,aAAa,KAAK,IAAI,CAAC;IACtC,SAAS,CAAC,EAAE,CAAC,IAAI,EAAE,aAAa,KAAK,IAAI,CAAC;IAC1C,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE,aAAa,KAAK,IAAI,CAAC;IAC3C,eAAe,CAAC,EAAE,CAAC,IAAI,EAAE,aAAa,KAAK,IAAI,CAAC;IAChD,aAAa,CAAC,EAAE,CAAC,IAAI,EAAE,aAAa,KAAK,IAAI,CAAC;IAC9C,SAAS,CAAC,EAAE,CAAC,IAAI,EAAE,aAAa,KAAK,IAAI,CAAC;IAC1C,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,CAAC,CAAC,EAAE,cAAc,CAAC;CACpB;AAqBD,wBAAgB,UAAU,CAAC,EACzB,KAAK,EACL,SAAS,EACT,QAAQ,EACR,aAAa,EACb,MAAM,EACN,aAAa,EACb,UAAU,EACV,MAAM,EACN,SAAS,EACT,UAAU,EACV,eAAe,EACf,aAAa,EACb,SAAS,EAGT,QAAQ,EACR,CAAC,EAAE,UAAU,GACd,EAAE,KAAK,+BA6cP"}
|
|
@@ -4,6 +4,19 @@ import { AlertTriangle, Check, Eye, Loader2, Lock, Printer, RefreshCw, RotateCcw
|
|
|
4
4
|
import { bufferOrdersOf, cartColumnInfo, comparePickQueue, dedupeByUnit, displayCartCount, displayPageCount, sinceLabel, unitTitleOf } from "../../lib/pickTypes";
|
|
5
5
|
import { duplicateNameTag } from "../../lib/pickRowState";
|
|
6
6
|
import { getPickTranslator } from "../../lib/pickI18n";
|
|
7
|
+
import { parseSentElsewhere } from "../../lib/pickApi";
|
|
8
|
+
import { sentElsewhereMessage } from "../../lib/pickCartResults";
|
|
9
|
+
/** Meldingen voor karren waarvan de pakbon al elders is verstuurd (match op kar-id). */
|
|
10
|
+
function sentElsewhereLines(item) {
|
|
11
|
+
const p = item.payload && typeof item.payload === "object" ? item.payload : {};
|
|
12
|
+
const map = p["sentElsewhere"];
|
|
13
|
+
if (!map || typeof map !== "object" || Array.isArray(map))
|
|
14
|
+
return [];
|
|
15
|
+
return Object.values(map).flatMap((v) => {
|
|
16
|
+
const e = parseSentElsewhere(v);
|
|
17
|
+
return e ? [sentElsewhereMessage(e)] : [];
|
|
18
|
+
});
|
|
19
|
+
}
|
|
7
20
|
/**
|
|
8
21
|
* Uit hoeveel pakbonnen een order bestaat, is pas bekend nadat er geprint is.
|
|
9
22
|
* Vóór het printen blijft de kolom leeg in plaats van een aantal te beloven
|
|
@@ -57,7 +70,7 @@ export function QueueTable({ items, lockedIds, statuses, documentTypes, busyId,
|
|
|
57
70
|
event.preventDefault();
|
|
58
71
|
onSelectPrinted?.(item);
|
|
59
72
|
}
|
|
60
|
-
}, children: [_jsxs(TableCell, { className: "font-medium", children: [_jsxs("div", { className: "flex items-center gap-2", children: [unitTitleOf(item), dupTag && _jsxs("span", { className: "text-xs font-normal text-muted-foreground", children: ["(", dupTag, ")"] }), replaced && (_jsx("span", { className: "rounded bg-destructive/10 px-1.5 py-0.5 text-xs font-semibold text-destructive", title: readiness?.reason ?? undefined, children: "Vervangen" })), replaced && readiness?.reason && (_jsx("span", { className: "text-xs font-normal text-destructive", children: readiness.reason })), waiting && (_jsx("span", { className: "rounded bg-muted px-1.5 py-0.5 text-xs font-semibold text-muted-foreground", children: "Wacht op printer" })), warnings.length > 0 && (_jsx(AlertTriangle, { className: "h-4 w-4 text-destructive", "aria-label": t("warning") }))] }), _jsx("div", { className: "text-xs text-muted-foreground", children: doc?.name ?? "-" })] }), _jsx(TableCell, { children: bufferOrdersOf(item).length > 0 ? "" : item.order_number }), _jsx(TableCell, { children: item.customer_name }), _jsx(TableCell, { className: "text-right", children: item.line_count }), _jsx(TableCell, { className: "text-right", children: (() => {
|
|
73
|
+
}, children: [_jsxs(TableCell, { className: "font-medium", children: [_jsxs("div", { className: "flex items-center gap-2", children: [unitTitleOf(item), dupTag && _jsxs("span", { className: "text-xs font-normal text-muted-foreground", children: ["(", dupTag, ")"] }), replaced && (_jsx("span", { className: "rounded bg-destructive/10 px-1.5 py-0.5 text-xs font-semibold text-destructive", title: readiness?.reason ?? undefined, children: "Vervangen" })), replaced && readiness?.reason && (_jsx("span", { className: "text-xs font-normal text-destructive", children: readiness.reason })), waiting && (_jsx("span", { className: "rounded bg-muted px-1.5 py-0.5 text-xs font-semibold text-muted-foreground", children: "Wacht op printer" })), sentElsewhereLines(item).map((line) => (_jsx("span", { className: "text-xs font-normal text-muted-foreground", children: line }, line))), warnings.length > 0 && (_jsx(AlertTriangle, { className: "h-4 w-4 text-destructive", "aria-label": t("warning") }))] }), _jsx("div", { className: "text-xs text-muted-foreground", children: doc?.name ?? "-" })] }), _jsx(TableCell, { children: bufferOrdersOf(item).length > 0 ? "" : item.order_number }), _jsx(TableCell, { children: item.customer_name }), _jsx(TableCell, { className: "text-right", children: item.line_count }), _jsx(TableCell, { className: "text-right", children: (() => {
|
|
61
74
|
const info = cartColumnInfo(item);
|
|
62
75
|
return (_jsxs("div", { className: "flex flex-col items-end", children: [_jsx("span", { children: info.carts }), info.cartLabel && (_jsx("span", { className: "text-xs text-muted-foreground", children: info.cartLabel })), info.reason && (_jsx("span", { className: "text-xs text-muted-foreground", children: info.reason }))] }));
|
|
63
76
|
})() }), _jsx(TableCell, { className: "text-right", children: printedSlipCount(item) ?? "—" }), _jsx(TableCell, { className: "text-right", children: displayPageCount(item.line_count) }), _jsxs(TableCell, { children: [_jsx(Badge, { variant: printed ? "secondary" : "default", children: printed ? t("statusPrinted") : t("statusToPrint") }), printed && (_jsx("div", { className: "mt-1 text-xs text-muted-foreground", children: new Date(item.printed_at).toLocaleTimeString([], {
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/** Actuele stickermeldingen van de Engine, letterlijk, bovenaan de order. */
|
|
2
|
+
export declare function OrderStickerMeldingen({ orderId, slug }: {
|
|
3
|
+
orderId: string | null;
|
|
4
|
+
slug: string | null;
|
|
5
|
+
}): import("react").JSX.Element | null;
|
|
6
|
+
/** Stand van de stickers van één kar; alleen tonen, nooit printen. */
|
|
7
|
+
export declare function CartStickerState({ cartId, slug }: {
|
|
8
|
+
cartId: string;
|
|
9
|
+
slug: string | null;
|
|
10
|
+
}): import("react").JSX.Element | null;
|
|
11
|
+
//# sourceMappingURL=StickerState.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"StickerState.d.ts","sourceRoot":"","sources":["../../../src/components/pick/StickerState.tsx"],"names":[],"mappings":"AAWA,6EAA6E;AAC7E,wBAAgB,qBAAqB,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE;IAAE,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,sCAoBvG;AAED,sEAAsE;AACtE,wBAAgB,gBAAgB,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,sCAqCzF"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { jsxs as _jsxs, jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { useQuery } from "@tanstack/react-query";
|
|
3
|
+
import { fetchCartStickerState, fetchOrderStickerMeldingen, STICKER_UNKNOWN, stickerStatusLabel, stickerSummary, } from "../../lib/pickStickers";
|
|
4
|
+
const POLL = 15000;
|
|
5
|
+
/** Actuele stickermeldingen van de Engine, letterlijk, bovenaan de order. */
|
|
6
|
+
export function OrderStickerMeldingen({ orderId, slug }) {
|
|
7
|
+
const q = useQuery({
|
|
8
|
+
queryKey: ["pick", "sticker-meldingen", orderId, slug],
|
|
9
|
+
queryFn: () => fetchOrderStickerMeldingen(orderId, slug),
|
|
10
|
+
enabled: !!orderId,
|
|
11
|
+
refetchInterval: POLL,
|
|
12
|
+
placeholderData: (prev) => prev,
|
|
13
|
+
retry: 1,
|
|
14
|
+
});
|
|
15
|
+
if (!orderId || q.isLoading)
|
|
16
|
+
return null;
|
|
17
|
+
if (q.isError || q.data == null) {
|
|
18
|
+
return _jsxs("p", { className: "mb-3 text-xs text-muted-foreground", children: ["Stickermeldingen: ", STICKER_UNKNOWN] });
|
|
19
|
+
}
|
|
20
|
+
const list = Array.isArray(q.data) ? q.data : [];
|
|
21
|
+
if (list.length === 0)
|
|
22
|
+
return null;
|
|
23
|
+
return (_jsx("div", { role: "status", className: "mb-3 space-y-1 rounded-md border-2 border-primary/40 bg-primary/5 p-3 text-sm text-foreground", children: list.map((m, i) => _jsx("p", { children: m.tekst }, m.id ?? `${i}-${m.tekst}`)) }));
|
|
24
|
+
}
|
|
25
|
+
/** Stand van de stickers van één kar; alleen tonen, nooit printen. */
|
|
26
|
+
export function CartStickerState({ cartId, slug }) {
|
|
27
|
+
const q = useQuery({
|
|
28
|
+
queryKey: ["pick", "sticker-state", cartId, slug],
|
|
29
|
+
queryFn: () => fetchCartStickerState(cartId, slug),
|
|
30
|
+
refetchInterval: POLL,
|
|
31
|
+
placeholderData: (prev) => prev,
|
|
32
|
+
retry: 1,
|
|
33
|
+
});
|
|
34
|
+
if (q.isLoading)
|
|
35
|
+
return null;
|
|
36
|
+
if (q.isError || !q.data) {
|
|
37
|
+
return _jsx("p", { className: "mt-3 text-xs text-muted-foreground", children: STICKER_UNKNOWN });
|
|
38
|
+
}
|
|
39
|
+
const s = q.data;
|
|
40
|
+
const regels = Array.isArray(s.regels) ? s.regels : [];
|
|
41
|
+
const summary = stickerSummary(s);
|
|
42
|
+
if (s.totaal === 0)
|
|
43
|
+
return _jsx("p", { className: "mt-3 text-xs text-muted-foreground", children: summary });
|
|
44
|
+
return (_jsxs("details", { className: "mt-3 rounded-md border bg-background p-3 text-sm", children: [_jsxs("summary", { className: "cursor-pointer font-medium text-foreground", children: ["Stickers: ", s.totaal ?? regels.length, " \u00B7 in de printwachtrij ", s.inPrintwachtrij ?? "—", " \u00B7 wachtend ", s.wachtend ?? "—", " \u00B7 geblokkeerd ", s.geblokkeerd ?? "—"] }), _jsx("p", { className: "mt-1 text-xs text-muted-foreground", children: "In de printwachtrij betekent nog niet fysiek geprint." }), _jsx("ul", { className: "mt-2 divide-y", children: regels.map((r, i) => (_jsxs("li", { className: "flex flex-wrap justify-between gap-2 py-1.5 text-xs", children: [_jsxs("span", { className: "text-foreground", children: [r.soort ?? "sticker", " \u00B7 ", r.kopieen ?? "—", "x", r.breedteMm && r.hoogteMm ? ` · ${r.breedteMm}x${r.hoogteMm} mm` : ""] }), _jsxs("span", { className: "text-muted-foreground", children: [stickerStatusLabel(r.status), r.reden ? ` — ${r.reden}` : ""] })] }, r.stickerId ?? i))) })] }));
|
|
45
|
+
}
|
package/dist-lib/index.d.ts
CHANGED
|
@@ -25,4 +25,6 @@ export { usePickReferenceData, PICK_REFERENCE_QUERY_KEY } from './hooks/usePickR
|
|
|
25
25
|
export { ReferentiedataPickdocumentenCard } from './components/settings/ReferentiedataPickdocumentenCard';
|
|
26
26
|
export { ReferentiedataBanner } from './components/pick/ReferentiedataBanner';
|
|
27
27
|
export declare const pickSchermenModule: FlowModule;
|
|
28
|
+
export * from './lib/pickStickers';
|
|
29
|
+
export { CartStickerState, OrderStickerMeldingen } from './components/pick/StickerState';
|
|
28
30
|
//# sourceMappingURL=index.d.ts.map
|
package/dist-lib/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAiBA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAGvD,cAAc,kBAAkB,CAAC;AACjC,cAAc,2BAA2B,CAAC;AAC1C,OAAO,EAAE,kBAAkB,EAAE,MAAM,iCAAiC,CAAC;AAErE,cAAc,iBAAiB,CAAC;AAChC,cAAc,eAAe,CAAC;AAC9B,cAAc,sBAAsB,CAAC;AACrC,cAAc,oBAAoB,CAAC;AACnC,cAAc,uBAAuB,CAAC;AACtC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,sBAAsB,CAAC;AACrC,OAAO,EAAE,aAAa,EAAE,MAAM,iCAAiC,CAAC;AAChE,cAAc,gBAAgB,CAAC;AAC/B,OAAO,EAAE,UAAU,EAAE,MAAM,8BAA8B,CAAC;AAC1D,OAAO,EAAE,gBAAgB,EAAE,MAAM,oCAAoC,CAAC;AACtE,cAAc,oBAAoB,CAAC;AACnC,cAAc,0BAA0B,CAAC;AACzC,OAAO,EAAE,UAAU,EAAE,MAAM,8BAA8B,CAAC;AAC1D,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AACjE,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAC7D,OAAO,EAAE,eAAe,EAAE,MAAM,mCAAmC,CAAC;AACpE,OAAO,EACL,gBAAgB,EAChB,mBAAmB,EACnB,qBAAqB,EACrB,uBAAuB,GACxB,MAAM,wBAAwB,CAAC;AAChC,YAAY,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAClE,OAAO,EAAE,oBAAoB,EAAE,wBAAwB,EAAE,MAAM,8BAA8B,CAAC;AAC9F,OAAO,EAAE,gCAAgC,EAAE,MAAM,wDAAwD,CAAC;AAC1G,OAAO,EAAE,oBAAoB,EAAE,MAAM,wCAAwC,CAAC;AAE9E,eAAO,MAAM,kBAAkB,EAAE,UAYhC,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAiBA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAGvD,cAAc,kBAAkB,CAAC;AACjC,cAAc,2BAA2B,CAAC;AAC1C,OAAO,EAAE,kBAAkB,EAAE,MAAM,iCAAiC,CAAC;AAErE,cAAc,iBAAiB,CAAC;AAChC,cAAc,eAAe,CAAC;AAC9B,cAAc,sBAAsB,CAAC;AACrC,cAAc,oBAAoB,CAAC;AACnC,cAAc,uBAAuB,CAAC;AACtC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,sBAAsB,CAAC;AACrC,OAAO,EAAE,aAAa,EAAE,MAAM,iCAAiC,CAAC;AAChE,cAAc,gBAAgB,CAAC;AAC/B,OAAO,EAAE,UAAU,EAAE,MAAM,8BAA8B,CAAC;AAC1D,OAAO,EAAE,gBAAgB,EAAE,MAAM,oCAAoC,CAAC;AACtE,cAAc,oBAAoB,CAAC;AACnC,cAAc,0BAA0B,CAAC;AACzC,OAAO,EAAE,UAAU,EAAE,MAAM,8BAA8B,CAAC;AAC1D,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AACjE,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAC7D,OAAO,EAAE,eAAe,EAAE,MAAM,mCAAmC,CAAC;AACpE,OAAO,EACL,gBAAgB,EAChB,mBAAmB,EACnB,qBAAqB,EACrB,uBAAuB,GACxB,MAAM,wBAAwB,CAAC;AAChC,YAAY,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAClE,OAAO,EAAE,oBAAoB,EAAE,wBAAwB,EAAE,MAAM,8BAA8B,CAAC;AAC9F,OAAO,EAAE,gCAAgC,EAAE,MAAM,wDAAwD,CAAC;AAC1G,OAAO,EAAE,oBAAoB,EAAE,MAAM,wCAAwC,CAAC;AAE9E,eAAO,MAAM,kBAAkB,EAAE,UAYhC,CAAC;AAEF,cAAc,oBAAoB,CAAC;AACnC,OAAO,EAAE,gBAAgB,EAAE,qBAAqB,EAAE,MAAM,gCAAgC,CAAC"}
|
package/dist-lib/index.js
CHANGED