@burdenoff/microfe-movethewheels 2026.1017.12 → 2026.1017.13
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/MoveTheWheelsRoot.js +7 -0
- package/dist/MoveTheWheelsRoutes.js +39 -35
- package/dist/components/pallet-preview/PalletPreviewResults.js +189 -0
- package/dist/generated/pallet-preview-operations.d.ts +273 -0
- package/dist/hooks/usePalletPreview.js +86 -0
- package/dist/movethewheels/components/pallet-preview/PalletPreviewResults.d.ts +6 -0
- package/dist/movethewheels/hooks/usePalletPreview.d.ts +98 -0
- package/dist/movethewheels/pages/PalletPreviewPage.d.ts +1 -0
- package/dist/movethewheels/utils/graphqlClient.d.ts +4 -0
- package/dist/movethewheels/utils/palletPreviewInput.d.ts +54 -0
- package/dist/movethewheels/utils/palletPreviewResponse.d.ts +7 -0
- package/dist/pages/PalletPreviewPage.js +501 -0
- package/dist/pages/WarehousesPage.js +83 -78
- package/dist/src/generated/pallet-preview-operations.js +594 -0
- package/dist/utils/graphqlClient.js +27 -19
- package/dist/utils/palletPreviewInput.js +138 -0
- package/dist/utils/palletPreviewResponse.js +191 -0
- package/package.json +5 -4
- package/src/generated/pallet-preview-operations.ts +204 -0
- package/src/movethewheels/MoveTheWheelsRoot.tsx +7 -0
- package/src/movethewheels/MoveTheWheelsRoutes.tsx +2 -0
- package/src/movethewheels/components/pallet-preview/PalletPreviewResults.tsx +220 -0
- package/src/movethewheels/hooks/usePalletPreview.ts +114 -0
- package/src/movethewheels/pages/PalletPreviewPage.tsx +588 -0
- package/src/movethewheels/pages/WarehousesPage.tsx +9 -1
- package/src/movethewheels/utils/graphqlClient.ts +19 -2
- package/src/movethewheels/utils/palletPreviewInput.ts +199 -0
- package/src/movethewheels/utils/palletPreviewResponse.ts +256 -0
- package/src/operations/pallet-preview/preview.graphql +26 -0
|
@@ -0,0 +1,138 @@
|
|
|
1
|
+
//#region src/movethewheels/utils/palletPreviewInput.ts
|
|
2
|
+
var e = () => ({
|
|
3
|
+
reference: "",
|
|
4
|
+
version: ""
|
|
5
|
+
}), t = (t) => ({
|
|
6
|
+
key: t,
|
|
7
|
+
id: "",
|
|
8
|
+
quantity: "",
|
|
9
|
+
source: e(),
|
|
10
|
+
widthMm: "",
|
|
11
|
+
lengthMm: "",
|
|
12
|
+
heightMm: "",
|
|
13
|
+
grossMassG: "",
|
|
14
|
+
yaw: "UNKNOWN",
|
|
15
|
+
upright: "UNKNOWN"
|
|
16
|
+
});
|
|
17
|
+
function n() {
|
|
18
|
+
return {
|
|
19
|
+
packages: [t(1)],
|
|
20
|
+
pallet: {
|
|
21
|
+
source: e(),
|
|
22
|
+
widthMm: "",
|
|
23
|
+
lengthMm: "",
|
|
24
|
+
heightMm: "",
|
|
25
|
+
tareMassG: "",
|
|
26
|
+
maxPayloadMassG: ""
|
|
27
|
+
},
|
|
28
|
+
includeEnvelope: !1,
|
|
29
|
+
loadEnvelope: {
|
|
30
|
+
source: e(),
|
|
31
|
+
widthMm: "",
|
|
32
|
+
lengthMm: "",
|
|
33
|
+
maxHeightMm: "",
|
|
34
|
+
maxGrossMassG: ""
|
|
35
|
+
},
|
|
36
|
+
additionalPacking: {
|
|
37
|
+
source: e(),
|
|
38
|
+
massG: ""
|
|
39
|
+
},
|
|
40
|
+
clearance: {
|
|
41
|
+
source: e(),
|
|
42
|
+
perimeterMm: "",
|
|
43
|
+
betweenPackagesMm: "",
|
|
44
|
+
topMm: ""
|
|
45
|
+
}
|
|
46
|
+
};
|
|
47
|
+
}
|
|
48
|
+
var r = class extends Error {
|
|
49
|
+
field;
|
|
50
|
+
kind;
|
|
51
|
+
constructor(e, t) {
|
|
52
|
+
super("Review the supplied pallet preview facts."), this.field = e, this.kind = t;
|
|
53
|
+
}
|
|
54
|
+
};
|
|
55
|
+
function i(e, t, n, i, a = !1) {
|
|
56
|
+
if (e === "" && !a) return null;
|
|
57
|
+
if (e.trim() !== e || !/^(0|[1-9][0-9]*)$/.test(e) || e.length > 7) throw new r(t, "WHOLE");
|
|
58
|
+
let o = Number(e);
|
|
59
|
+
if (!Number.isSafeInteger(o) || o > n || o < +!i) throw new r(t, "WHOLE");
|
|
60
|
+
return o;
|
|
61
|
+
}
|
|
62
|
+
function a(e, t) {
|
|
63
|
+
if (e === "") return null;
|
|
64
|
+
if (e.trim() !== e || !/^(0|[1-9][0-9]*)$/.test(e) || e.length > 13 || e.length === 13 && e > "1000000000000") throw new r(t, "MASS");
|
|
65
|
+
return e;
|
|
66
|
+
}
|
|
67
|
+
function o(e, t) {
|
|
68
|
+
if (e.reference === "" && e.version === "") return null;
|
|
69
|
+
if (!e.reference.trim() || !e.version.trim() || e.reference.length > 255 || e.version.length > 120) throw new r(t, "SOURCE");
|
|
70
|
+
return {
|
|
71
|
+
reference: e.reference,
|
|
72
|
+
version: e.version
|
|
73
|
+
};
|
|
74
|
+
}
|
|
75
|
+
function s(e) {
|
|
76
|
+
if (!e.packages.length || e.packages.length > 100) throw new r("packages", "COUNT");
|
|
77
|
+
let t = /* @__PURE__ */ new Set(), n = 0, s = e.packages.map((e) => {
|
|
78
|
+
let s = `package-${e.key}`;
|
|
79
|
+
if (![
|
|
80
|
+
"UNKNOWN",
|
|
81
|
+
"NONE",
|
|
82
|
+
"0",
|
|
83
|
+
"90",
|
|
84
|
+
"BOTH"
|
|
85
|
+
].includes(e.yaw) || ![
|
|
86
|
+
"UNKNOWN",
|
|
87
|
+
"YES",
|
|
88
|
+
"NO"
|
|
89
|
+
].includes(e.upright)) throw new r(s, "WHOLE");
|
|
90
|
+
if (!e.id.trim() || e.id.trim() !== e.id || e.id.length > 255 || t.has(e.id)) throw new r(`${s}-id`, "IDENTITY");
|
|
91
|
+
t.add(e.id);
|
|
92
|
+
let c = i(e.quantity, `${s}-quantity`, 1e3, !1, !0);
|
|
93
|
+
if (c === null || (n += c, n > 1e3)) throw new r(`${s}-quantity`, "COUNT");
|
|
94
|
+
return {
|
|
95
|
+
id: e.id,
|
|
96
|
+
quantity: c,
|
|
97
|
+
source: o(e.source, `${s}-source`),
|
|
98
|
+
widthMm: i(e.widthMm, `${s}-widthMm`, 1e6, !1),
|
|
99
|
+
lengthMm: i(e.lengthMm, `${s}-lengthMm`, 1e6, !1),
|
|
100
|
+
heightMm: i(e.heightMm, `${s}-heightMm`, 1e6, !1),
|
|
101
|
+
grossMassG: a(e.grossMassG, `${s}-grossMassG`),
|
|
102
|
+
allowedYawDegrees: e.yaw === "UNKNOWN" ? null : e.yaw === "NONE" ? [] : e.yaw === "BOTH" ? [0, 90] : e.yaw === "0" ? [0] : [90],
|
|
103
|
+
upright: e.upright === "UNKNOWN" ? null : e.upright === "YES"
|
|
104
|
+
};
|
|
105
|
+
}), c = e.pallet, l = e.loadEnvelope, u = e.clearance;
|
|
106
|
+
return {
|
|
107
|
+
units: "MM_G",
|
|
108
|
+
mode: "UPRIGHT_SINGLE_LAYER",
|
|
109
|
+
packages: s,
|
|
110
|
+
pallet: {
|
|
111
|
+
source: o(c.source, "pallet-source"),
|
|
112
|
+
widthMm: i(c.widthMm, "pallet-widthMm", 1e6, !1),
|
|
113
|
+
lengthMm: i(c.lengthMm, "pallet-lengthMm", 1e6, !1),
|
|
114
|
+
heightMm: i(c.heightMm, "pallet-heightMm", 1e6, !1),
|
|
115
|
+
tareMassG: a(c.tareMassG, "pallet-tareMassG"),
|
|
116
|
+
maxPayloadMassG: a(c.maxPayloadMassG, "pallet-maxPayloadMassG")
|
|
117
|
+
},
|
|
118
|
+
loadEnvelope: e.includeEnvelope ? {
|
|
119
|
+
source: o(l.source, "envelope-source"),
|
|
120
|
+
widthMm: i(l.widthMm, "envelope-widthMm", 1e6, !1),
|
|
121
|
+
lengthMm: i(l.lengthMm, "envelope-lengthMm", 1e6, !1),
|
|
122
|
+
maxHeightMm: i(l.maxHeightMm, "envelope-maxHeightMm", 1e6, !1),
|
|
123
|
+
maxGrossMassG: a(l.maxGrossMassG, "envelope-maxGrossMassG")
|
|
124
|
+
} : null,
|
|
125
|
+
additionalPacking: {
|
|
126
|
+
source: o(e.additionalPacking.source, "packing-source"),
|
|
127
|
+
massG: a(e.additionalPacking.massG, "packing-massG")
|
|
128
|
+
},
|
|
129
|
+
clearance: {
|
|
130
|
+
source: o(u.source, "clearance-source"),
|
|
131
|
+
perimeterMm: i(u.perimeterMm, "clearance-perimeterMm", 1e6, !0),
|
|
132
|
+
betweenPackagesMm: i(u.betweenPackagesMm, "clearance-betweenPackagesMm", 1e6, !0),
|
|
133
|
+
topMm: i(u.topMm, "clearance-topMm", 1e6, !0)
|
|
134
|
+
}
|
|
135
|
+
};
|
|
136
|
+
}
|
|
137
|
+
//#endregion
|
|
138
|
+
export { r as PalletInputError, t as newPalletPackage, n as newPalletPreviewDraft, s as palletPreviewInput };
|
|
@@ -0,0 +1,191 @@
|
|
|
1
|
+
//#region src/movethewheels/utils/palletPreviewResponse.ts
|
|
2
|
+
var e = [
|
|
3
|
+
"placedContainment",
|
|
4
|
+
"placedNonOverlap",
|
|
5
|
+
"permittedUprightYaw",
|
|
6
|
+
"reportedSingleLayerHeight",
|
|
7
|
+
"palletPayloadMass",
|
|
8
|
+
"palletFootprintWithinLoadEnvelope",
|
|
9
|
+
"loadedPalletGrossMass"
|
|
10
|
+
], t = [
|
|
11
|
+
"additionalPackingGeometry",
|
|
12
|
+
"handling",
|
|
13
|
+
"securing",
|
|
14
|
+
"centreOfGravityAndStability",
|
|
15
|
+
"supportAndFloorContactLoads",
|
|
16
|
+
"loadingAndUnloadingPath",
|
|
17
|
+
"segregationAndCargoCompatibility"
|
|
18
|
+
];
|
|
19
|
+
function n() {
|
|
20
|
+
throw Error("The pallet preview response could not be verified.");
|
|
21
|
+
}
|
|
22
|
+
function r(e) {
|
|
23
|
+
return typeof e == "object" && !!e && !Array.isArray(e);
|
|
24
|
+
}
|
|
25
|
+
function i(e) {
|
|
26
|
+
return r(e) ? e : n();
|
|
27
|
+
}
|
|
28
|
+
function a(e, t) {
|
|
29
|
+
(t.some((t) => !Object.hasOwn(e, t)) || Object.keys(e).some((e) => e !== "__typename" && !t.includes(e))) && n();
|
|
30
|
+
}
|
|
31
|
+
function o(e, t) {
|
|
32
|
+
return typeof e != "string" || !e.trim() || e.length > t ? n() : e;
|
|
33
|
+
}
|
|
34
|
+
function s(e, t = 0, r = 1e6) {
|
|
35
|
+
return typeof e != "number" || !Number.isSafeInteger(e) || e < t || e > r ? n() : e;
|
|
36
|
+
}
|
|
37
|
+
function c(e) {
|
|
38
|
+
return e === null ? null : s(e);
|
|
39
|
+
}
|
|
40
|
+
function l(e, t) {
|
|
41
|
+
return e === null ? null : typeof e != "string" || e.trim() !== e || !/^(0|[1-9][0-9]*)$/.test(e) || e.length > t.length || e.length === t.length && e > t ? n() : e;
|
|
42
|
+
}
|
|
43
|
+
function u(e, t) {
|
|
44
|
+
if (t == null) return e !== null && n(), null;
|
|
45
|
+
let r = i(e);
|
|
46
|
+
a(r, ["reference", "version"]);
|
|
47
|
+
let s = o(r.reference, 255), c = o(r.version, 120);
|
|
48
|
+
return (s !== t.reference.trim() || c !== t.version.trim()) && n(), {
|
|
49
|
+
reference: s,
|
|
50
|
+
version: c
|
|
51
|
+
};
|
|
52
|
+
}
|
|
53
|
+
function d(e) {
|
|
54
|
+
let t = i(e);
|
|
55
|
+
return a(t, ["status", "reason"]), t.status !== "PASS" && t.status !== "FAIL" && t.status !== "UNKNOWN" ? n() : {
|
|
56
|
+
status: t.status,
|
|
57
|
+
reason: o(t.reason, 4096)
|
|
58
|
+
};
|
|
59
|
+
}
|
|
60
|
+
function f(e) {
|
|
61
|
+
return e !== "UNKNOWN" && n(), "UNKNOWN";
|
|
62
|
+
}
|
|
63
|
+
function p(e) {
|
|
64
|
+
let t = i(e);
|
|
65
|
+
"errors" in t && (!Array.isArray(t.errors) || t.errors.length !== 0) && n();
|
|
66
|
+
let r = i(t.data);
|
|
67
|
+
a(r, ["mtwPalletGeometryPreview"]), r.mtwPalletGeometryPreview ?? n();
|
|
68
|
+
}
|
|
69
|
+
function m(r, p) {
|
|
70
|
+
let m = i(r);
|
|
71
|
+
a(m, ["mtwPalletGeometryPreview"]);
|
|
72
|
+
let h = i(m.mtwPalletGeometryPreview);
|
|
73
|
+
a(h, [
|
|
74
|
+
"classification",
|
|
75
|
+
"method",
|
|
76
|
+
"units",
|
|
77
|
+
"layoutStatus",
|
|
78
|
+
"requestedQuantity",
|
|
79
|
+
"placedQuantity",
|
|
80
|
+
"requestedPayloadMassG",
|
|
81
|
+
"requestedGrossMassG",
|
|
82
|
+
"placements",
|
|
83
|
+
"unplaced",
|
|
84
|
+
"bounds",
|
|
85
|
+
"unsupported",
|
|
86
|
+
"sources"
|
|
87
|
+
]), (h.classification !== "GEOMETRIC_PROPOSAL_ONLY" || h.method !== "DETERMINISTIC_SINGLE_LAYER_SHELF_V1" || h.units !== "MM_G") && n();
|
|
88
|
+
let g = h.layoutStatus;
|
|
89
|
+
if (g !== "PLACED_BY_METHOD" && g !== "UNKNOWN" && g !== "NO_LAYOUT_FOUND_BY_METHOD") return n();
|
|
90
|
+
let _ = s(h.requestedQuantity, 1, 1e3), v = s(h.placedQuantity, 0, 1e3);
|
|
91
|
+
(_ !== p.packages.reduce((e, t) => e + t.quantity, 0) || v > _ || !Array.isArray(h.placements) || h.placements.length !== v || !Array.isArray(h.unplaced) || h.unplaced.length > p.packages.length) && n();
|
|
92
|
+
let y = /* @__PURE__ */ new Set(), b = /* @__PURE__ */ new Map(), x = h.placements.map((e) => {
|
|
93
|
+
let t = i(e);
|
|
94
|
+
a(t, [
|
|
95
|
+
"packageId",
|
|
96
|
+
"unit",
|
|
97
|
+
"yawDegrees",
|
|
98
|
+
"xMm",
|
|
99
|
+
"yMm",
|
|
100
|
+
"zMm",
|
|
101
|
+
"widthMm",
|
|
102
|
+
"lengthMm",
|
|
103
|
+
"heightMm"
|
|
104
|
+
]);
|
|
105
|
+
let r = o(t.packageId, 255), l = p.packages.find((e) => e.id === r);
|
|
106
|
+
if (!l) return n();
|
|
107
|
+
let u = s(t.unit, 1, l.quantity), d = s(t.yawDegrees, 0, 90);
|
|
108
|
+
(d !== 0 && d !== 90 || !l.allowedYawDegrees?.includes(d) || l.upright !== !0 || y.has(`${r}:${u}`)) && n(), y.add(`${r}:${u}`), b.set(r, (b.get(r) ?? 0) + 1);
|
|
109
|
+
let f = s(t.xMm), m = s(t.yMm), h = s(t.widthMm, 1), g = s(t.lengthMm, 1), _ = c(t.zMm), v = c(t.heightMm);
|
|
110
|
+
return (h !== (d === 0 ? l.widthMm : l.lengthMm) || g !== (d === 0 ? l.lengthMm : l.widthMm) || v !== (l.heightMm ?? null) || _ !== (p.pallet.heightMm ?? null) || p.pallet.widthMm == null || p.pallet.lengthMm == null || f + h > p.pallet.widthMm || m + g > p.pallet.lengthMm) && n(), {
|
|
111
|
+
packageId: r,
|
|
112
|
+
unit: u,
|
|
113
|
+
yawDegrees: d,
|
|
114
|
+
xMm: f,
|
|
115
|
+
yMm: m,
|
|
116
|
+
zMm: _,
|
|
117
|
+
widthMm: h,
|
|
118
|
+
lengthMm: g,
|
|
119
|
+
heightMm: v
|
|
120
|
+
};
|
|
121
|
+
}), S = /* @__PURE__ */ new Map(), C = h.unplaced.map((e) => {
|
|
122
|
+
let t = i(e);
|
|
123
|
+
a(t, ["packageId", "quantity"]);
|
|
124
|
+
let r = o(t.packageId, 255), c = s(t.quantity, 1, 1e3);
|
|
125
|
+
return (!p.packages.some((e) => e.id === r) || S.has(r)) && n(), S.set(r, c), {
|
|
126
|
+
packageId: r,
|
|
127
|
+
quantity: c
|
|
128
|
+
};
|
|
129
|
+
});
|
|
130
|
+
(p.packages.some((e) => (b.get(e.id) ?? 0) + (S.get(e.id) ?? 0) !== e.quantity) || g === "PLACED_BY_METHOD" && v !== _) && n();
|
|
131
|
+
let w = i(h.bounds);
|
|
132
|
+
a(w, e);
|
|
133
|
+
let T = i(h.unsupported);
|
|
134
|
+
a(T, t);
|
|
135
|
+
let E = i(h.sources);
|
|
136
|
+
a(E, [
|
|
137
|
+
"packages",
|
|
138
|
+
"pallet",
|
|
139
|
+
"loadEnvelope",
|
|
140
|
+
"additionalPacking",
|
|
141
|
+
"clearance"
|
|
142
|
+
]), (!Array.isArray(E.packages) || E.packages.length !== p.packages.length) && n();
|
|
143
|
+
let D = E.packages.map((e, t) => {
|
|
144
|
+
let r = i(e);
|
|
145
|
+
a(r, ["packageId", "source"]);
|
|
146
|
+
let o = p.packages[t];
|
|
147
|
+
return r.packageId !== o.id && n(), {
|
|
148
|
+
packageId: o.id,
|
|
149
|
+
source: u(r.source, o.source)
|
|
150
|
+
};
|
|
151
|
+
});
|
|
152
|
+
return {
|
|
153
|
+
classification: "GEOMETRIC_PROPOSAL_ONLY",
|
|
154
|
+
method: "DETERMINISTIC_SINGLE_LAYER_SHELF_V1",
|
|
155
|
+
units: "MM_G",
|
|
156
|
+
layoutStatus: g,
|
|
157
|
+
requestedQuantity: _,
|
|
158
|
+
placedQuantity: v,
|
|
159
|
+
requestedPayloadMassG: l(h.requestedPayloadMassG, "1001000000000000"),
|
|
160
|
+
requestedGrossMassG: l(h.requestedGrossMassG, "1002000000000000"),
|
|
161
|
+
placements: x,
|
|
162
|
+
unplaced: C,
|
|
163
|
+
bounds: {
|
|
164
|
+
placedContainment: d(w.placedContainment),
|
|
165
|
+
placedNonOverlap: d(w.placedNonOverlap),
|
|
166
|
+
permittedUprightYaw: d(w.permittedUprightYaw),
|
|
167
|
+
reportedSingleLayerHeight: d(w.reportedSingleLayerHeight),
|
|
168
|
+
palletPayloadMass: d(w.palletPayloadMass),
|
|
169
|
+
palletFootprintWithinLoadEnvelope: d(w.palletFootprintWithinLoadEnvelope),
|
|
170
|
+
loadedPalletGrossMass: d(w.loadedPalletGrossMass)
|
|
171
|
+
},
|
|
172
|
+
unsupported: {
|
|
173
|
+
additionalPackingGeometry: f(T.additionalPackingGeometry),
|
|
174
|
+
handling: f(T.handling),
|
|
175
|
+
securing: f(T.securing),
|
|
176
|
+
centreOfGravityAndStability: f(T.centreOfGravityAndStability),
|
|
177
|
+
supportAndFloorContactLoads: f(T.supportAndFloorContactLoads),
|
|
178
|
+
loadingAndUnloadingPath: f(T.loadingAndUnloadingPath),
|
|
179
|
+
segregationAndCargoCompatibility: f(T.segregationAndCargoCompatibility)
|
|
180
|
+
},
|
|
181
|
+
sources: {
|
|
182
|
+
packages: D,
|
|
183
|
+
pallet: u(E.pallet, p.pallet.source),
|
|
184
|
+
loadEnvelope: u(E.loadEnvelope, p.loadEnvelope?.source),
|
|
185
|
+
additionalPacking: u(E.additionalPacking, p.additionalPacking.source),
|
|
186
|
+
clearance: u(E.clearance, p.clearance.source)
|
|
187
|
+
}
|
|
188
|
+
};
|
|
189
|
+
}
|
|
190
|
+
//#endregion
|
|
191
|
+
export { e as PALLET_BOUND_KEYS, t as PALLET_UNKNOWN_KEYS, m as parsePalletPreview, p as validatePalletPreviewEnvelope };
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@burdenoff/microfe-movethewheels",
|
|
3
|
-
"version": "2026.1017.
|
|
3
|
+
"version": "2026.1017.13",
|
|
4
4
|
"description": "Burdenoff MoveTheWheels Microfrontend - Logistics & Supply Chain Management Platform",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"files": [
|
|
@@ -37,7 +37,7 @@
|
|
|
37
37
|
"format": "prettier --write \"src/**/*.{ts,tsx}\"",
|
|
38
38
|
"type:check": "bash scripts/build-limits.sh tsc --noEmit",
|
|
39
39
|
"validate:schema-drift": "graphql-schema-drift",
|
|
40
|
-
"sanity": "bash scripts/build-limits.sh --gate bash -c 'bun run codegen && bun run validate:schema-drift && bun run lint:sanity && bun run format && bun run type:check && bun run verify:live-logistics-contract && bun run verify:empty-reuse-retry && bun run verify:empty-reuse-recovery && bun run verify:trip-utilization-input && bun run verify:trip-draft-context && bun run verify:stock-binding-input && bun run verify:stock-observation-input && bun run verify:pending-pick-input && bun run verify:pick-review-ack && bun run verify:driver-license-expiry && bun run verify:freight-input && bun run verify:freight-recovery && bun run verify:freight-commercial && bun run verify:freight-invoice && bun run verify:procedure-input && bun run verify:consolidation && bun run verify:multimodal-single-attempt && bun run verify:workspace-predispatch && bun run verify:tracking-quality-outcomes && bun run verify:shipment-status-authority && bun run verify:free-time-permissions && bun run verify:core-codegen && bun run verify:order-vehicle-hold && bun run build && bun run build-storybook'",
|
|
40
|
+
"sanity": "bash scripts/build-limits.sh --gate bash -c 'bun run codegen && bun run validate:schema-drift && bun run lint:sanity && bun run format && bun run type:check && bun run verify:live-logistics-contract && bun run verify:empty-reuse-retry && bun run verify:empty-reuse-recovery && bun run verify:trip-utilization-input && bun run verify:trip-draft-context && bun run verify:stock-binding-input && bun run verify:stock-observation-input && bun run verify:pending-pick-input && bun run verify:pick-review-ack && bun run verify:driver-license-expiry && bun run verify:freight-input && bun run verify:freight-recovery && bun run verify:freight-commercial && bun run verify:freight-invoice && bun run verify:procedure-input && bun run verify:consolidation && bun run verify:multimodal-single-attempt && bun run verify:workspace-predispatch && bun run verify:tracking-quality-outcomes && bun run verify:shipment-status-authority && bun run verify:free-time-permissions && bun run verify:core-codegen && bun run verify:order-vehicle-hold && bun run verify:pallet-preview && bun run build && bun run build-storybook'",
|
|
41
41
|
"storybook": "storybook dev -p 6006",
|
|
42
42
|
"build-storybook": "storybook build",
|
|
43
43
|
"test:storybook": "vitest run --project=storybook",
|
|
@@ -45,7 +45,7 @@
|
|
|
45
45
|
"schema:pull:introspect": "bash scripts/schema-pull.sh --mode introspect",
|
|
46
46
|
"schema:check": "bash scripts/schema-pull.sh --check",
|
|
47
47
|
"verify:stock-binding-input": "bun scripts/verify-stock-binding-input.mjs",
|
|
48
|
-
"codegen": "bun scripts/codegen.ts --project wspace && bun scripts/codegen.ts --project container-foundation && bun scripts/codegen.ts --project container-condition && bun scripts/codegen.ts --project free-time && bun scripts/codegen.ts --project empty-reuse && bun scripts/codegen.ts --project trip-utilization && bun scripts/codegen.ts --project stock-binding && bun scripts/codegen.ts --project stock-observation && bun scripts/codegen.ts --project pending-pick && bun scripts/codegen.ts --project freight-cost && bun scripts/codegen.ts --project freight-invoice && bun scripts/codegen.ts --project logistics-procedure && bun scripts/codegen.ts --project consolidation && bun scripts/codegen.ts --project tracking-quality && bun scripts/codegen.ts --project shipment-status-authority",
|
|
48
|
+
"codegen": "bun scripts/codegen.ts --project wspace && bun scripts/codegen.ts --project container-foundation && bun scripts/codegen.ts --project container-condition && bun scripts/codegen.ts --project free-time && bun scripts/codegen.ts --project empty-reuse && bun scripts/codegen.ts --project trip-utilization && bun scripts/codegen.ts --project stock-binding && bun scripts/codegen.ts --project stock-observation && bun scripts/codegen.ts --project pending-pick && bun scripts/codegen.ts --project freight-cost && bun scripts/codegen.ts --project freight-invoice && bun scripts/codegen.ts --project logistics-procedure && bun scripts/codegen.ts --project consolidation && bun scripts/codegen.ts --project tracking-quality && bun scripts/codegen.ts --project shipment-status-authority && bun scripts/codegen.ts --project pallet-preview",
|
|
49
49
|
"codegen:all": "bun run schema:pull && bun run codegen",
|
|
50
50
|
"switch:status": "bun scripts/deps-mode.ts status",
|
|
51
51
|
"switch:remote": "bun scripts/deps-mode.ts remote",
|
|
@@ -70,7 +70,8 @@
|
|
|
70
70
|
"verify:freight-commercial": "bun scripts/verify-freight-commercial.mjs && bun scripts/verify-freight-commercial-recovery.mjs && bun scripts/verify-freight-commercial-mounted.mjs",
|
|
71
71
|
"verify:freight-invoice": "bun test scripts/verify-invoice-comparison.test.ts && bun scripts/verify-invoice-recovery-hook.mjs",
|
|
72
72
|
"verify:driver-license-expiry": "bun test scripts/check-driver-license-expiry.test.ts",
|
|
73
|
-
"verify:core-codegen": "bun test scripts/codegen.test.ts && node --test scripts/check-package-types.test.mjs"
|
|
73
|
+
"verify:core-codegen": "bun test scripts/codegen.test.ts && node --test scripts/check-package-types.test.mjs",
|
|
74
|
+
"verify:pallet-preview": "bun test scripts/check-pallet-preview.test.ts && bun scripts/verify-pallet-preview-hook.mjs"
|
|
74
75
|
},
|
|
75
76
|
"dependencies": {
|
|
76
77
|
"@apollo/client": "^4.0.11",
|
|
@@ -0,0 +1,204 @@
|
|
|
1
|
+
/** Internal type. DO NOT USE DIRECTLY. */
|
|
2
|
+
type Exact<T extends { [key: string]: unknown }> = { [K in keyof T]: T[K] };
|
|
3
|
+
/** Internal type. DO NOT USE DIRECTLY. */
|
|
4
|
+
export type Incremental<T> = T | { [P in keyof T]?: P extends ' $fragmentName' | '__typename' ? T[P] : never };
|
|
5
|
+
import type * as Types from './pallet-preview-operations';
|
|
6
|
+
|
|
7
|
+
import type { TypedDocumentNode as DocumentNode } from '@graphql-typed-document-node/core';
|
|
8
|
+
export type Maybe<T> = T | null;
|
|
9
|
+
export type InputMaybe<T> = Maybe<T>;
|
|
10
|
+
/** All built-in and custom scalars, mapped to their actual values */
|
|
11
|
+
export type Scalars = {
|
|
12
|
+
ID: { input: string; output: string; }
|
|
13
|
+
String: { input: string; output: string; }
|
|
14
|
+
Boolean: { input: boolean; output: boolean; }
|
|
15
|
+
Int: { input: number; output: number; }
|
|
16
|
+
Float: { input: number; output: number; }
|
|
17
|
+
};
|
|
18
|
+
|
|
19
|
+
export type MtwPalletAdditionalPackingInput = {
|
|
20
|
+
massG?: InputMaybe<Scalars['String']['input']>;
|
|
21
|
+
source?: InputMaybe<MtwPalletMeasurementSourceInput>;
|
|
22
|
+
};
|
|
23
|
+
|
|
24
|
+
export type MtwPalletBaseInput = {
|
|
25
|
+
heightMm?: InputMaybe<Scalars['Int']['input']>;
|
|
26
|
+
lengthMm?: InputMaybe<Scalars['Int']['input']>;
|
|
27
|
+
maxPayloadMassG?: InputMaybe<Scalars['String']['input']>;
|
|
28
|
+
source?: InputMaybe<MtwPalletMeasurementSourceInput>;
|
|
29
|
+
tareMassG?: InputMaybe<Scalars['String']['input']>;
|
|
30
|
+
widthMm?: InputMaybe<Scalars['Int']['input']>;
|
|
31
|
+
};
|
|
32
|
+
|
|
33
|
+
export type MtwPalletBound = {
|
|
34
|
+
__typename?: 'MtwPalletBound';
|
|
35
|
+
reason: Scalars['String']['output'];
|
|
36
|
+
status: MtwPalletBoundStatus;
|
|
37
|
+
};
|
|
38
|
+
|
|
39
|
+
export type MtwPalletBoundStatus =
|
|
40
|
+
| 'FAIL'
|
|
41
|
+
| 'PASS'
|
|
42
|
+
| 'UNKNOWN';
|
|
43
|
+
|
|
44
|
+
export type MtwPalletBounds = {
|
|
45
|
+
__typename?: 'MtwPalletBounds';
|
|
46
|
+
loadedPalletGrossMass: MtwPalletBound;
|
|
47
|
+
palletFootprintWithinLoadEnvelope: MtwPalletBound;
|
|
48
|
+
palletPayloadMass: MtwPalletBound;
|
|
49
|
+
permittedUprightYaw: MtwPalletBound;
|
|
50
|
+
placedContainment: MtwPalletBound;
|
|
51
|
+
placedNonOverlap: MtwPalletBound;
|
|
52
|
+
reportedSingleLayerHeight: MtwPalletBound;
|
|
53
|
+
};
|
|
54
|
+
|
|
55
|
+
export type MtwPalletClassification =
|
|
56
|
+
| 'GEOMETRIC_PROPOSAL_ONLY';
|
|
57
|
+
|
|
58
|
+
export type MtwPalletClearanceInput = {
|
|
59
|
+
betweenPackagesMm?: InputMaybe<Scalars['Int']['input']>;
|
|
60
|
+
perimeterMm?: InputMaybe<Scalars['Int']['input']>;
|
|
61
|
+
source?: InputMaybe<MtwPalletMeasurementSourceInput>;
|
|
62
|
+
topMm?: InputMaybe<Scalars['Int']['input']>;
|
|
63
|
+
};
|
|
64
|
+
|
|
65
|
+
/** Read-only supplied-measurement geometry; no persistence, stock change or release authority. */
|
|
66
|
+
export type MtwPalletGeometryPreview = {
|
|
67
|
+
__typename?: 'MtwPalletGeometryPreview';
|
|
68
|
+
bounds: MtwPalletBounds;
|
|
69
|
+
classification: MtwPalletClassification;
|
|
70
|
+
layoutStatus: MtwPalletLayoutStatus;
|
|
71
|
+
method: MtwPalletMethod;
|
|
72
|
+
placedQuantity: Scalars['Int']['output'];
|
|
73
|
+
placements: Array<MtwPalletPlacement>;
|
|
74
|
+
requestedGrossMassG?: Maybe<Scalars['String']['output']>;
|
|
75
|
+
requestedPayloadMassG?: Maybe<Scalars['String']['output']>;
|
|
76
|
+
requestedQuantity: Scalars['Int']['output'];
|
|
77
|
+
sources: MtwPalletSources;
|
|
78
|
+
units: MtwPalletUnits;
|
|
79
|
+
unplaced: Array<MtwPalletUnplaced>;
|
|
80
|
+
unsupported: MtwPalletUnsupported;
|
|
81
|
+
};
|
|
82
|
+
|
|
83
|
+
export type MtwPalletGeometryPreviewInput = {
|
|
84
|
+
additionalPacking: MtwPalletAdditionalPackingInput;
|
|
85
|
+
clearance: MtwPalletClearanceInput;
|
|
86
|
+
loadEnvelope?: InputMaybe<MtwPalletLoadEnvelopeInput>;
|
|
87
|
+
mode: MtwPalletMode;
|
|
88
|
+
packages: Array<MtwPalletPackageInput>;
|
|
89
|
+
pallet: MtwPalletBaseInput;
|
|
90
|
+
units: MtwPalletUnits;
|
|
91
|
+
};
|
|
92
|
+
|
|
93
|
+
export type MtwPalletLayoutStatus =
|
|
94
|
+
| 'NO_LAYOUT_FOUND_BY_METHOD'
|
|
95
|
+
| 'PLACED_BY_METHOD'
|
|
96
|
+
| 'UNKNOWN';
|
|
97
|
+
|
|
98
|
+
export type MtwPalletLoadEnvelopeInput = {
|
|
99
|
+
lengthMm?: InputMaybe<Scalars['Int']['input']>;
|
|
100
|
+
maxGrossMassG?: InputMaybe<Scalars['String']['input']>;
|
|
101
|
+
maxHeightMm?: InputMaybe<Scalars['Int']['input']>;
|
|
102
|
+
source?: InputMaybe<MtwPalletMeasurementSourceInput>;
|
|
103
|
+
widthMm?: InputMaybe<Scalars['Int']['input']>;
|
|
104
|
+
};
|
|
105
|
+
|
|
106
|
+
export type MtwPalletMeasurementSource = {
|
|
107
|
+
__typename?: 'MtwPalletMeasurementSource';
|
|
108
|
+
reference: Scalars['String']['output'];
|
|
109
|
+
version: Scalars['String']['output'];
|
|
110
|
+
};
|
|
111
|
+
|
|
112
|
+
export type MtwPalletMeasurementSourceInput = {
|
|
113
|
+
reference: Scalars['String']['input'];
|
|
114
|
+
version: Scalars['String']['input'];
|
|
115
|
+
};
|
|
116
|
+
|
|
117
|
+
export type MtwPalletMethod =
|
|
118
|
+
| 'DETERMINISTIC_SINGLE_LAYER_SHELF_V1';
|
|
119
|
+
|
|
120
|
+
export type MtwPalletMode =
|
|
121
|
+
| 'UPRIGHT_SINGLE_LAYER';
|
|
122
|
+
|
|
123
|
+
export type MtwPalletPackageInput = {
|
|
124
|
+
allowedYawDegrees?: InputMaybe<Array<Scalars['Int']['input']>>;
|
|
125
|
+
grossMassG?: InputMaybe<Scalars['String']['input']>;
|
|
126
|
+
heightMm?: InputMaybe<Scalars['Int']['input']>;
|
|
127
|
+
id: Scalars['ID']['input'];
|
|
128
|
+
lengthMm?: InputMaybe<Scalars['Int']['input']>;
|
|
129
|
+
quantity: Scalars['Int']['input'];
|
|
130
|
+
source?: InputMaybe<MtwPalletMeasurementSourceInput>;
|
|
131
|
+
upright?: InputMaybe<Scalars['Boolean']['input']>;
|
|
132
|
+
widthMm?: InputMaybe<Scalars['Int']['input']>;
|
|
133
|
+
};
|
|
134
|
+
|
|
135
|
+
export type MtwPalletPackageSource = {
|
|
136
|
+
__typename?: 'MtwPalletPackageSource';
|
|
137
|
+
packageId: Scalars['ID']['output'];
|
|
138
|
+
source?: Maybe<MtwPalletMeasurementSource>;
|
|
139
|
+
};
|
|
140
|
+
|
|
141
|
+
export type MtwPalletPlacement = {
|
|
142
|
+
__typename?: 'MtwPalletPlacement';
|
|
143
|
+
heightMm?: Maybe<Scalars['Int']['output']>;
|
|
144
|
+
lengthMm: Scalars['Int']['output'];
|
|
145
|
+
packageId: Scalars['ID']['output'];
|
|
146
|
+
unit: Scalars['Int']['output'];
|
|
147
|
+
widthMm: Scalars['Int']['output'];
|
|
148
|
+
xMm: Scalars['Int']['output'];
|
|
149
|
+
yMm: Scalars['Int']['output'];
|
|
150
|
+
yawDegrees: Scalars['Int']['output'];
|
|
151
|
+
zMm?: Maybe<Scalars['Int']['output']>;
|
|
152
|
+
};
|
|
153
|
+
|
|
154
|
+
export type MtwPalletSources = {
|
|
155
|
+
__typename?: 'MtwPalletSources';
|
|
156
|
+
additionalPacking?: Maybe<MtwPalletMeasurementSource>;
|
|
157
|
+
clearance?: Maybe<MtwPalletMeasurementSource>;
|
|
158
|
+
loadEnvelope?: Maybe<MtwPalletMeasurementSource>;
|
|
159
|
+
packages: Array<MtwPalletPackageSource>;
|
|
160
|
+
pallet?: Maybe<MtwPalletMeasurementSource>;
|
|
161
|
+
};
|
|
162
|
+
|
|
163
|
+
export type MtwPalletUnits =
|
|
164
|
+
| 'MM_G';
|
|
165
|
+
|
|
166
|
+
export type MtwPalletUnplaced = {
|
|
167
|
+
__typename?: 'MtwPalletUnplaced';
|
|
168
|
+
packageId: Scalars['ID']['output'];
|
|
169
|
+
quantity: Scalars['Int']['output'];
|
|
170
|
+
};
|
|
171
|
+
|
|
172
|
+
export type MtwPalletUnsupported = {
|
|
173
|
+
__typename?: 'MtwPalletUnsupported';
|
|
174
|
+
additionalPackingGeometry: MtwPalletUnsupportedStatus;
|
|
175
|
+
centreOfGravityAndStability: MtwPalletUnsupportedStatus;
|
|
176
|
+
handling: MtwPalletUnsupportedStatus;
|
|
177
|
+
loadingAndUnloadingPath: MtwPalletUnsupportedStatus;
|
|
178
|
+
securing: MtwPalletUnsupportedStatus;
|
|
179
|
+
segregationAndCargoCompatibility: MtwPalletUnsupportedStatus;
|
|
180
|
+
supportAndFloorContactLoads: MtwPalletUnsupportedStatus;
|
|
181
|
+
};
|
|
182
|
+
|
|
183
|
+
export type MtwPalletUnsupportedStatus =
|
|
184
|
+
| 'UNKNOWN';
|
|
185
|
+
|
|
186
|
+
export type Query = {
|
|
187
|
+
__typename?: 'Query';
|
|
188
|
+
mtwPalletGeometryPreview: MtwPalletGeometryPreview;
|
|
189
|
+
};
|
|
190
|
+
|
|
191
|
+
|
|
192
|
+
export type QueryMtwPalletGeometryPreviewArgs = {
|
|
193
|
+
input: MtwPalletGeometryPreviewInput;
|
|
194
|
+
};
|
|
195
|
+
|
|
196
|
+
export type MtwPalletGeometryPreviewQueryVariables = Exact<{
|
|
197
|
+
input: Types.MtwPalletGeometryPreviewInput;
|
|
198
|
+
}>;
|
|
199
|
+
|
|
200
|
+
|
|
201
|
+
export type MtwPalletGeometryPreviewQuery = { mtwPalletGeometryPreview: { classification: Types.MtwPalletClassification, method: Types.MtwPalletMethod, units: Types.MtwPalletUnits, layoutStatus: Types.MtwPalletLayoutStatus, requestedQuantity: number, placedQuantity: number, requestedPayloadMassG: string | null, requestedGrossMassG: string | null, placements: Array<{ packageId: string, unit: number, yawDegrees: number, xMm: number, yMm: number, zMm: number | null, widthMm: number, lengthMm: number, heightMm: number | null }>, unplaced: Array<{ packageId: string, quantity: number }>, bounds: { placedContainment: { status: Types.MtwPalletBoundStatus, reason: string }, placedNonOverlap: { status: Types.MtwPalletBoundStatus, reason: string }, permittedUprightYaw: { status: Types.MtwPalletBoundStatus, reason: string }, reportedSingleLayerHeight: { status: Types.MtwPalletBoundStatus, reason: string }, palletPayloadMass: { status: Types.MtwPalletBoundStatus, reason: string }, palletFootprintWithinLoadEnvelope: { status: Types.MtwPalletBoundStatus, reason: string }, loadedPalletGrossMass: { status: Types.MtwPalletBoundStatus, reason: string } }, unsupported: { additionalPackingGeometry: Types.MtwPalletUnsupportedStatus, handling: Types.MtwPalletUnsupportedStatus, securing: Types.MtwPalletUnsupportedStatus, centreOfGravityAndStability: Types.MtwPalletUnsupportedStatus, supportAndFloorContactLoads: Types.MtwPalletUnsupportedStatus, loadingAndUnloadingPath: Types.MtwPalletUnsupportedStatus, segregationAndCargoCompatibility: Types.MtwPalletUnsupportedStatus }, sources: { packages: Array<{ packageId: string, source: { reference: string, version: string } | null }>, pallet: { reference: string, version: string } | null, loadEnvelope: { reference: string, version: string } | null, additionalPacking: { reference: string, version: string } | null, clearance: { reference: string, version: string } | null } } };
|
|
202
|
+
|
|
203
|
+
|
|
204
|
+
export const MtwPalletGeometryPreviewDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"query","name":{"kind":"Name","value":"MtwPalletGeometryPreview"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"input"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"MtwPalletGeometryPreviewInput"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"mtwPalletGeometryPreview"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"input"},"value":{"kind":"Variable","name":{"kind":"Name","value":"input"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"classification"}},{"kind":"Field","name":{"kind":"Name","value":"method"}},{"kind":"Field","name":{"kind":"Name","value":"units"}},{"kind":"Field","name":{"kind":"Name","value":"layoutStatus"}},{"kind":"Field","name":{"kind":"Name","value":"requestedQuantity"}},{"kind":"Field","name":{"kind":"Name","value":"placedQuantity"}},{"kind":"Field","name":{"kind":"Name","value":"requestedPayloadMassG"}},{"kind":"Field","name":{"kind":"Name","value":"requestedGrossMassG"}},{"kind":"Field","name":{"kind":"Name","value":"placements"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"packageId"}},{"kind":"Field","name":{"kind":"Name","value":"unit"}},{"kind":"Field","name":{"kind":"Name","value":"yawDegrees"}},{"kind":"Field","name":{"kind":"Name","value":"xMm"}},{"kind":"Field","name":{"kind":"Name","value":"yMm"}},{"kind":"Field","name":{"kind":"Name","value":"zMm"}},{"kind":"Field","name":{"kind":"Name","value":"widthMm"}},{"kind":"Field","name":{"kind":"Name","value":"lengthMm"}},{"kind":"Field","name":{"kind":"Name","value":"heightMm"}}]}},{"kind":"Field","name":{"kind":"Name","value":"unplaced"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"packageId"}},{"kind":"Field","name":{"kind":"Name","value":"quantity"}}]}},{"kind":"Field","name":{"kind":"Name","value":"bounds"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"placedContainment"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"status"}},{"kind":"Field","name":{"kind":"Name","value":"reason"}}]}},{"kind":"Field","name":{"kind":"Name","value":"placedNonOverlap"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"status"}},{"kind":"Field","name":{"kind":"Name","value":"reason"}}]}},{"kind":"Field","name":{"kind":"Name","value":"permittedUprightYaw"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"status"}},{"kind":"Field","name":{"kind":"Name","value":"reason"}}]}},{"kind":"Field","name":{"kind":"Name","value":"reportedSingleLayerHeight"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"status"}},{"kind":"Field","name":{"kind":"Name","value":"reason"}}]}},{"kind":"Field","name":{"kind":"Name","value":"palletPayloadMass"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"status"}},{"kind":"Field","name":{"kind":"Name","value":"reason"}}]}},{"kind":"Field","name":{"kind":"Name","value":"palletFootprintWithinLoadEnvelope"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"status"}},{"kind":"Field","name":{"kind":"Name","value":"reason"}}]}},{"kind":"Field","name":{"kind":"Name","value":"loadedPalletGrossMass"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"status"}},{"kind":"Field","name":{"kind":"Name","value":"reason"}}]}}]}},{"kind":"Field","name":{"kind":"Name","value":"unsupported"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"additionalPackingGeometry"}},{"kind":"Field","name":{"kind":"Name","value":"handling"}},{"kind":"Field","name":{"kind":"Name","value":"securing"}},{"kind":"Field","name":{"kind":"Name","value":"centreOfGravityAndStability"}},{"kind":"Field","name":{"kind":"Name","value":"supportAndFloorContactLoads"}},{"kind":"Field","name":{"kind":"Name","value":"loadingAndUnloadingPath"}},{"kind":"Field","name":{"kind":"Name","value":"segregationAndCargoCompatibility"}}]}},{"kind":"Field","name":{"kind":"Name","value":"sources"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"packages"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"packageId"}},{"kind":"Field","name":{"kind":"Name","value":"source"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"reference"}},{"kind":"Field","name":{"kind":"Name","value":"version"}}]}}]}},{"kind":"Field","name":{"kind":"Name","value":"pallet"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"reference"}},{"kind":"Field","name":{"kind":"Name","value":"version"}}]}},{"kind":"Field","name":{"kind":"Name","value":"loadEnvelope"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"reference"}},{"kind":"Field","name":{"kind":"Name","value":"version"}}]}},{"kind":"Field","name":{"kind":"Name","value":"additionalPacking"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"reference"}},{"kind":"Field","name":{"kind":"Name","value":"version"}}]}},{"kind":"Field","name":{"kind":"Name","value":"clearance"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"reference"}},{"kind":"Field","name":{"kind":"Name","value":"version"}}]}}]}}]}}]}}]} as unknown as DocumentNode<MtwPalletGeometryPreviewQuery, MtwPalletGeometryPreviewQueryVariables>;
|
|
@@ -220,6 +220,13 @@ const NavRegistrar: FC<Pick<MoveTheWheelsRootProps, 'registerNavItems' | 'basePa
|
|
|
220
220
|
icon: <ClipboardList size={14} />,
|
|
221
221
|
order: 3,
|
|
222
222
|
},
|
|
223
|
+
{
|
|
224
|
+
id: 'mtw-pallet-preview',
|
|
225
|
+
label: tr('movethewheels.root.nav.palletPreview', 'Pallet preview'),
|
|
226
|
+
path: joinPath(basePath, 'inventory/warehouses/pallet-preview'),
|
|
227
|
+
icon: <Boxes size={14} />,
|
|
228
|
+
order: 6,
|
|
229
|
+
},
|
|
223
230
|
{
|
|
224
231
|
id: 'mtw-warehouses',
|
|
225
232
|
label: tr('movethewheels.root.nav.warehouses', 'Warehouses'),
|
|
@@ -66,6 +66,7 @@ const DriverDetailsPage = lazy(() => import('./pages/DriverDetailsPage'));
|
|
|
66
66
|
const InventoryPage = lazy(() => import('./pages/InventoryPage'));
|
|
67
67
|
const ProductsPage = lazy(() => import('./pages/ProductsPage'));
|
|
68
68
|
const ProductDetailsPage = lazy(() => import('./pages/ProductDetailsPage'));
|
|
69
|
+
const PalletPreviewPage = lazy(() => import('./pages/PalletPreviewPage'));
|
|
69
70
|
const WarehousesPage = lazy(() => import('./pages/WarehousesPage'));
|
|
70
71
|
const WarehouseDetailsPage = lazy(() => import('./pages/WarehouseDetailsPage'));
|
|
71
72
|
const CustomersPage = lazy(() => import('./pages/CustomersPage'));
|
|
@@ -148,6 +149,7 @@ export function MoveTheWheelsRoutes() {
|
|
|
148
149
|
<Route path="inventory/products/:productId" element={<ProductDetailsPage />} />
|
|
149
150
|
<Route path="inventory/products/:productId/edit" element={<ProductDetailsPage />} />
|
|
150
151
|
<Route path="inventory/warehouses" element={<WarehousesPage />} />
|
|
152
|
+
<Route path="inventory/warehouses/pallet-preview" element={<PalletPreviewPage />} />
|
|
151
153
|
<Route path="inventory/warehouses/new" element={<WarehouseDetailsPage />} />
|
|
152
154
|
<Route path="inventory/warehouses/:warehouseId" element={<WarehouseDetailsPage />} />
|
|
153
155
|
<Route path="inventory/warehouses/:warehouseId/edit" element={<WarehouseDetailsPage />} />
|