@burdenoff/microfe-movethewheels 2026.920.3 → 2026.921.1
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/components/CarbonFootprintPanel.js +1 -1
- package/dist/components/CustomerPicker.js +76 -65
- package/dist/components/DataTable.js +140 -139
- package/dist/components/DocumentsCard.js +14 -8
- package/dist/generated/wspace-types.d.ts +1043 -5
- package/dist/hooks/useAnalytics.js +21 -1
- package/dist/hooks/useCustomers.js +94 -78
- package/dist/hooks/useDebouncedValue.js +11 -0
- package/dist/hooks/useEntityDocuments.js +28 -18
- package/dist/hooks/useEpod.js +24 -17
- package/dist/hooks/useFleet.js +146 -125
- package/dist/hooks/useInventory.js +255 -186
- package/dist/hooks/useMultiModalShipments.js +35 -27
- package/dist/hooks/useOrders.js +73 -73
- package/dist/hooks/useRoutes.js +97 -75
- package/dist/hooks/useTracking.js +100 -88
- package/dist/movethewheels/components/CustomerPicker.d.ts +3 -1
- package/dist/movethewheels/components/DataTable.d.ts +5 -1
- package/dist/movethewheels/hooks/useCustomers.d.ts +0 -1
- package/dist/movethewheels/hooks/useDebouncedValue.d.ts +1 -0
- package/dist/movethewheels/hooks/useEntityDocuments.d.ts +2 -0
- package/dist/movethewheels/hooks/useEpod.d.ts +6 -1
- package/dist/movethewheels/hooks/useFleet.d.ts +49 -5
- package/dist/movethewheels/hooks/useInventory.d.ts +24 -17
- package/dist/movethewheels/hooks/useMultiModalShipments.d.ts +6 -1
- package/dist/movethewheels/hooks/useOrders.d.ts +33 -5
- package/dist/movethewheels/hooks/useRoutes.d.ts +2 -1
- package/dist/movethewheels/hooks/useTracking.d.ts +12 -11
- package/dist/movethewheels/types/index.d.ts +7 -5
- package/dist/pages/CreateOrderPage.js +207 -201
- package/dist/pages/CustomersPage.js +61 -54
- package/dist/pages/DeliveryCapturePage.js +131 -109
- package/dist/pages/DriversPage.js +100 -92
- package/dist/pages/InventoryPage.js +239 -236
- package/dist/pages/MultiModalShipmentPage.js +163 -130
- package/dist/pages/OrderDetailsPage.js +224 -208
- package/dist/pages/OrdersListPage.js +66 -60
- package/dist/pages/ProductDetailsPage.js +241 -200
- package/dist/pages/ProductsPage.js +59 -52
- package/dist/pages/RouteDetailsPage.js +343 -321
- package/dist/pages/RoutesPage.js +55 -48
- package/dist/pages/VehiclesPage.js +63 -56
- package/dist/pages/WarehousesPage.js +60 -53
- package/package.json +1 -1
- package/src/generated/wspace-types.ts +1188 -5
- package/src/movethewheels/components/CarbonFootprintPanel.tsx +0 -1
- package/src/movethewheels/components/CustomerPicker.tsx +14 -0
- package/src/movethewheels/components/DataTable.tsx +34 -18
- package/src/movethewheels/components/DocumentsCard.tsx +6 -1
- package/src/movethewheels/components/maps/leaflet-setup.ts +1 -8
- package/src/movethewheels/hooks/useAnalytics.ts +27 -0
- package/src/movethewheels/hooks/useCustomers.ts +64 -24
- package/src/movethewheels/hooks/useDebouncedValue.ts +12 -0
- package/src/movethewheels/hooks/useEntityDocuments.ts +43 -25
- package/src/movethewheels/hooks/useEpod.ts +14 -7
- package/src/movethewheels/hooks/useFleet.ts +58 -37
- package/src/movethewheels/hooks/useFleetIntelligence.ts +1 -4
- package/src/movethewheels/hooks/useInventory.ts +211 -90
- package/src/movethewheels/hooks/useMultiModalShipments.ts +15 -11
- package/src/movethewheels/hooks/useOrders.ts +13 -14
- package/src/movethewheels/hooks/useRoutes.ts +80 -23
- package/src/movethewheels/hooks/useTracking.ts +130 -98
- package/src/movethewheels/pages/CreateOrderPage.tsx +9 -1
- package/src/movethewheels/pages/CustomersPage.tsx +11 -1
- package/src/movethewheels/pages/DeliveryCapturePage.tsx +31 -1
- package/src/movethewheels/pages/DriversPage.tsx +24 -12
- package/src/movethewheels/pages/InventoryPage.tsx +57 -32
- package/src/movethewheels/pages/MultiModalShipmentPage.tsx +52 -3
- package/src/movethewheels/pages/OrderDetailsPage.tsx +17 -1
- package/src/movethewheels/pages/OrdersListPage.tsx +20 -3
- package/src/movethewheels/pages/ProductDetailsPage.tsx +52 -3
- package/src/movethewheels/pages/ProductsPage.tsx +11 -1
- package/src/movethewheels/pages/RouteDetailsPage.tsx +35 -5
- package/src/movethewheels/pages/RoutesPage.tsx +11 -1
- package/src/movethewheels/pages/VehiclesPage.tsx +19 -2
- package/src/movethewheels/pages/WarehousesPage.tsx +11 -1
- package/src/movethewheels/types/index.ts +7 -5
|
@@ -2,11 +2,12 @@ import { useMoveTheWheels as e } from "../providers/MoveTheWheelsProvider.js";
|
|
|
2
2
|
import { executeGraphQL as t } from "../utils/graphqlClient.js";
|
|
3
3
|
import { useCallback as n, useEffect as r, useMemo as i, useState as a } from "react";
|
|
4
4
|
//#region src/movethewheels/hooks/useMultiModalShipments.ts
|
|
5
|
-
var o = "\n id\n shipmentNumber\n status\n primaryMode\n isMultiModal\n totalFreightCost\n freightCurrency\n origin\n destination\n createdAt\n legs {\n \n id\n legNumber\n mode\n status\n origin\n destination\n distanceKm\n weightKg\n lengthCm\n widthCm\n heightCm\n volumeCbm\n containerType\n containerCount\n carrierName\n chargeableWeightKg\n calculatedCost\n currency\n\n }\n", s = `
|
|
5
|
+
var o = "\n id\n shipmentNumber\n status\n primaryMode\n isMultiModal\n totalFreightCost\n freightCurrency\n origin\n destination\n createdAt\n legs(pagination: { limit: 20, offset: 0 }) {\n \n id\n legNumber\n mode\n status\n origin\n destination\n distanceKm\n weightKg\n lengthCm\n widthCm\n heightCm\n volumeCbm\n containerType\n containerCount\n carrierName\n chargeableWeightKg\n calculatedCost\n currency\n\n }\n", s = `
|
|
6
6
|
query ListMultiModalShipments($pagination: PaginationInput) {
|
|
7
7
|
shipments(filter: { isMultiModal: true }, pagination: $pagination) {
|
|
8
8
|
${o}
|
|
9
9
|
}
|
|
10
|
+
shipmentsCount(filter: { isMultiModal: true })
|
|
10
11
|
}
|
|
11
12
|
`, c = "\n query CalculateFreightRate($input: FreightRateInput!) {\n calculateFreightRate(input: $input) {\n mode\n chargeableWeightKg\n ratePerUnit\n calculatedCost\n currency\n breakdown {\n label\n amount\n }\n }\n }\n", l = `
|
|
12
13
|
mutation PlanMultiModalShipment($input: PlanMultiModalShipmentInput!) {
|
|
@@ -99,38 +100,45 @@ function m() {
|
|
|
99
100
|
s?.id
|
|
100
101
|
]);
|
|
101
102
|
}
|
|
102
|
-
function h() {
|
|
103
|
-
let e = m(), [
|
|
104
|
-
|
|
103
|
+
function h(e = {}) {
|
|
104
|
+
let { limit: i = 10, offset: o = 0 } = e, f = m(), [h, g] = a([]), [_, v] = a(0), [y, b] = a(!1), [x, S] = a(!1), [C, w] = a(null), T = n(async () => {
|
|
105
|
+
S(!0), w(null);
|
|
105
106
|
try {
|
|
106
|
-
|
|
107
|
-
limit:
|
|
108
|
-
offset:
|
|
109
|
-
} })
|
|
107
|
+
let e = await t(f, s, { pagination: {
|
|
108
|
+
limit: i,
|
|
109
|
+
offset: o
|
|
110
|
+
} });
|
|
111
|
+
g(e.shipments.map(p)), v(e.shipmentsCount), b(o + e.shipments.length < e.shipmentsCount);
|
|
110
112
|
} catch (e) {
|
|
111
|
-
|
|
113
|
+
w(e instanceof Error ? e : /* @__PURE__ */ Error("Failed to load multi-modal shipments"));
|
|
112
114
|
} finally {
|
|
113
|
-
|
|
115
|
+
S(!1);
|
|
114
116
|
}
|
|
115
|
-
}, [
|
|
117
|
+
}, [
|
|
118
|
+
f,
|
|
119
|
+
i,
|
|
120
|
+
o
|
|
121
|
+
]);
|
|
116
122
|
return r(() => {
|
|
117
|
-
|
|
118
|
-
}, [
|
|
119
|
-
shipments:
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
123
|
+
T();
|
|
124
|
+
}, [T]), {
|
|
125
|
+
shipments: h,
|
|
126
|
+
totalShipments: _,
|
|
127
|
+
hasMore: y,
|
|
128
|
+
isLoading: x,
|
|
129
|
+
error: C,
|
|
130
|
+
refetch: () => void T(),
|
|
131
|
+
calculateFreightRate: n(async (e) => (await t(f, c, { input: d(e) })).calculateFreightRate, [f]),
|
|
132
|
+
planMultiModalShipment: n(async (e) => {
|
|
133
|
+
let n = p((await t(f, l, { input: {
|
|
134
|
+
shipmentNumber: e.shipmentNumber,
|
|
135
|
+
customerId: e.customerId,
|
|
136
|
+
origin: e.origin,
|
|
137
|
+
destination: e.destination,
|
|
138
|
+
legs: e.legs.map(u)
|
|
131
139
|
} })).planMultiModalShipment);
|
|
132
|
-
return
|
|
133
|
-
}, [
|
|
140
|
+
return g((e) => [n, ...e]), v((e) => e + 1), n;
|
|
141
|
+
}, [f])
|
|
134
142
|
};
|
|
135
143
|
}
|
|
136
144
|
//#endregion
|
package/dist/hooks/useOrders.js
CHANGED
|
@@ -7,6 +7,7 @@ var o = "\n id\n deliveryJobNumber\n customerId\n status\n priority\n pick
|
|
|
7
7
|
deliveryJobs(filter: $filter, pagination: $pagination) {
|
|
8
8
|
${o}
|
|
9
9
|
}
|
|
10
|
+
deliveryJobsCount(filter: $filter)
|
|
10
11
|
}
|
|
11
12
|
`, c = `
|
|
12
13
|
query GetDeliveryJob($id: ID!) {
|
|
@@ -137,8 +138,9 @@ function b(o = {}) {
|
|
|
137
138
|
c?.priority,
|
|
138
139
|
c?.customerId,
|
|
139
140
|
c?.driverId,
|
|
141
|
+
c?.search,
|
|
140
142
|
c?.unassigned
|
|
141
|
-
]), { apiGatewayUrl: v, authToken: b, workspaceToken: x, workspaceId: S, tenantId: C, currentUser: w } = e(), [T, E] = a([]), [D, O] = a(
|
|
143
|
+
]), { apiGatewayUrl: v, authToken: b, workspaceToken: x, workspaceId: S, tenantId: C, currentUser: w } = e(), [T, E] = a([]), [D, O] = a(0), [k, A] = a(!1), [j, M] = a(!1), [N, P] = a(null), F = i(() => ({
|
|
142
144
|
apiGatewayUrl: v,
|
|
143
145
|
authToken: b,
|
|
144
146
|
workspaceToken: x,
|
|
@@ -152,96 +154,94 @@ function b(o = {}) {
|
|
|
152
154
|
S,
|
|
153
155
|
C,
|
|
154
156
|
w?.id
|
|
155
|
-
]),
|
|
156
|
-
|
|
157
|
+
]), I = n(async () => {
|
|
158
|
+
M(!0), P(null);
|
|
157
159
|
try {
|
|
158
|
-
let e =
|
|
160
|
+
let e = await t(F, s, {
|
|
159
161
|
filter: {
|
|
160
162
|
status: h?.status ? g(h.status) : void 0,
|
|
161
163
|
priority: h?.priority ? _(h.priority) : void 0,
|
|
162
164
|
customerId: h?.customerId,
|
|
163
|
-
driverId: h?.driverId
|
|
165
|
+
driverId: h?.driverId,
|
|
166
|
+
unassigned: h?.unassigned,
|
|
167
|
+
search: h?.search
|
|
164
168
|
},
|
|
165
169
|
pagination: {
|
|
166
170
|
limit: l,
|
|
167
171
|
offset: m
|
|
168
172
|
}
|
|
169
|
-
})
|
|
170
|
-
O(e.length
|
|
171
|
-
let n = e.map(y);
|
|
172
|
-
h?.unassigned && (n = n.filter((e) => !e.driverId)), E(n);
|
|
173
|
+
}), n = e.deliveryJobs;
|
|
174
|
+
O(e.deliveryJobsCount), A(m + n.length < e.deliveryJobsCount), E(n.map(y));
|
|
173
175
|
} catch (e) {
|
|
174
|
-
|
|
176
|
+
P(e instanceof Error ? e : /* @__PURE__ */ Error("Failed to load orders"));
|
|
175
177
|
} finally {
|
|
176
|
-
|
|
178
|
+
M(!1);
|
|
177
179
|
}
|
|
178
180
|
}, [
|
|
179
181
|
h,
|
|
180
|
-
|
|
182
|
+
F,
|
|
181
183
|
l,
|
|
182
184
|
m
|
|
183
185
|
]);
|
|
184
|
-
r(() => {
|
|
185
|
-
|
|
186
|
-
}, [
|
|
187
|
-
let F = n(() => {
|
|
188
|
-
P();
|
|
189
|
-
}, [P]), I = n(async (e) => {
|
|
190
|
-
let n = y((await t(N, u, { input: {
|
|
191
|
-
deliveryJobNumber: e.orderNumber ?? `ORD-${(/* @__PURE__ */ new Date()).getFullYear()}-${Date.now().toString().slice(-6)}`,
|
|
192
|
-
status: g(e.status ?? "pending"),
|
|
193
|
-
priority: _(e.priority),
|
|
194
|
-
customerId: e.customerId,
|
|
195
|
-
pickupAddress: e.pickupAddress ?? {},
|
|
196
|
-
deliveryAddress: e.deliveryAddress ?? {},
|
|
197
|
-
cargoItems: e.items ?? [],
|
|
198
|
-
pricing: e.pricing ?? null,
|
|
199
|
-
specialInstructions: e.specialInstructions,
|
|
200
|
-
trackingNumber: e.trackingNumber,
|
|
201
|
-
scheduledDelivery: e.scheduledDelivery?.toISOString(),
|
|
202
|
-
vehicleId: e.vehicleId,
|
|
203
|
-
driverId: e.driverId
|
|
204
|
-
} })).createDeliveryJob);
|
|
205
|
-
return E((e) => [n, ...e]), n;
|
|
206
|
-
}, [N]), L = n(async (e, n) => {
|
|
207
|
-
let r = y((await t(N, d, {
|
|
208
|
-
id: e,
|
|
209
|
-
input: {
|
|
210
|
-
status: n.status ? g(n.status) : void 0,
|
|
211
|
-
priority: n.priority ? _(n.priority) : void 0,
|
|
212
|
-
customerId: n.customerId,
|
|
213
|
-
pickupAddress: n.pickupAddress,
|
|
214
|
-
deliveryAddress: n.deliveryAddress,
|
|
215
|
-
cargoItems: n.items,
|
|
216
|
-
pricing: n.pricing,
|
|
217
|
-
specialInstructions: n.specialInstructions,
|
|
218
|
-
trackingNumber: n.trackingNumber,
|
|
219
|
-
scheduledDelivery: n.scheduledDelivery === null ? null : n.scheduledDelivery?.toISOString(),
|
|
220
|
-
vehicleId: n.vehicleId,
|
|
221
|
-
driverId: n.driverId
|
|
222
|
-
}
|
|
223
|
-
})).updateDeliveryJob);
|
|
224
|
-
return E((t) => t.map((t) => t.id === e ? r : t)), r;
|
|
225
|
-
}, [N]), R = n(async (e) => {
|
|
226
|
-
await t(N, p, { id: e }), E((t) => t.filter((t) => t.id !== e));
|
|
227
|
-
}, [N]), z = n(async (e, n) => {
|
|
228
|
-
let r = y((await t(N, f, {
|
|
229
|
-
id: e,
|
|
230
|
-
input: { status: g(n) }
|
|
231
|
-
})).updateDeliveryJobStatus);
|
|
232
|
-
return E((t) => t.map((t) => t.id === e ? r : t)), r;
|
|
233
|
-
}, [N]);
|
|
234
|
-
return {
|
|
186
|
+
return r(() => {
|
|
187
|
+
I();
|
|
188
|
+
}, [I]), {
|
|
235
189
|
orders: T,
|
|
236
|
-
totalOrders:
|
|
237
|
-
hasMore:
|
|
238
|
-
isLoading:
|
|
239
|
-
error:
|
|
240
|
-
refetch:
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
190
|
+
totalOrders: D,
|
|
191
|
+
hasMore: k,
|
|
192
|
+
isLoading: j,
|
|
193
|
+
error: N,
|
|
194
|
+
refetch: n(() => {
|
|
195
|
+
I();
|
|
196
|
+
}, [I]),
|
|
197
|
+
createOrder: n(async (e) => {
|
|
198
|
+
let n = y((await t(F, u, { input: {
|
|
199
|
+
deliveryJobNumber: e.orderNumber ?? `ORD-${(/* @__PURE__ */ new Date()).getFullYear()}-${Date.now().toString().slice(-6)}`,
|
|
200
|
+
status: g(e.status ?? "pending"),
|
|
201
|
+
priority: _(e.priority),
|
|
202
|
+
customerId: e.customerId,
|
|
203
|
+
pickupAddress: e.pickupAddress ?? {},
|
|
204
|
+
deliveryAddress: e.deliveryAddress ?? {},
|
|
205
|
+
cargoItems: e.items ?? [],
|
|
206
|
+
pricing: e.pricing ?? null,
|
|
207
|
+
specialInstructions: e.specialInstructions,
|
|
208
|
+
trackingNumber: e.trackingNumber,
|
|
209
|
+
scheduledDelivery: e.scheduledDelivery?.toISOString(),
|
|
210
|
+
vehicleId: e.vehicleId,
|
|
211
|
+
driverId: e.driverId
|
|
212
|
+
} })).createDeliveryJob);
|
|
213
|
+
return E((e) => [n, ...e]), n;
|
|
214
|
+
}, [F]),
|
|
215
|
+
updateOrder: n(async (e, n) => {
|
|
216
|
+
let r = y((await t(F, d, {
|
|
217
|
+
id: e,
|
|
218
|
+
input: {
|
|
219
|
+
status: n.status ? g(n.status) : void 0,
|
|
220
|
+
priority: n.priority ? _(n.priority) : void 0,
|
|
221
|
+
customerId: n.customerId,
|
|
222
|
+
pickupAddress: n.pickupAddress,
|
|
223
|
+
deliveryAddress: n.deliveryAddress,
|
|
224
|
+
cargoItems: n.items,
|
|
225
|
+
pricing: n.pricing,
|
|
226
|
+
specialInstructions: n.specialInstructions,
|
|
227
|
+
trackingNumber: n.trackingNumber,
|
|
228
|
+
scheduledDelivery: n.scheduledDelivery === null ? null : n.scheduledDelivery?.toISOString(),
|
|
229
|
+
vehicleId: n.vehicleId,
|
|
230
|
+
driverId: n.driverId
|
|
231
|
+
}
|
|
232
|
+
})).updateDeliveryJob);
|
|
233
|
+
return E((t) => t.map((t) => t.id === e ? r : t)), r;
|
|
234
|
+
}, [F]),
|
|
235
|
+
deleteOrder: n(async (e) => {
|
|
236
|
+
await t(F, p, { id: e }), E((t) => t.filter((t) => t.id !== e));
|
|
237
|
+
}, [F]),
|
|
238
|
+
updateOrderStatus: n(async (e, n) => {
|
|
239
|
+
let r = y((await t(F, f, {
|
|
240
|
+
id: e,
|
|
241
|
+
input: { status: g(n) }
|
|
242
|
+
})).updateDeliveryJobStatus);
|
|
243
|
+
return E((t) => t.map((t) => t.id === e ? r : t)), r;
|
|
244
|
+
}, [F])
|
|
245
245
|
};
|
|
246
246
|
}
|
|
247
247
|
function x(o) {
|
|
@@ -352,4 +352,4 @@ function S() {
|
|
|
352
352
|
};
|
|
353
353
|
}
|
|
354
354
|
//#endregion
|
|
355
|
-
export { h as mapOrderPriority, m as mapOrderStatus, x as useOrder, S as useOrderStats, b as useOrders };
|
|
355
|
+
export { y as mapOrder, h as mapOrderPriority, m as mapOrderStatus, x as useOrder, S as useOrderStats, b as useOrders };
|
package/dist/hooks/useRoutes.js
CHANGED
|
@@ -2,7 +2,7 @@ import { useMoveTheWheels as e } from "../providers/MoveTheWheelsProvider.js";
|
|
|
2
2
|
import { executeGraphQL as t } from "../utils/graphqlClient.js";
|
|
3
3
|
import { useCallback as n, useEffect as r, useMemo as i, useState as a } from "react";
|
|
4
4
|
//#region src/movethewheels/hooks/useRoutes.ts
|
|
5
|
-
var o = "\n query ListRoutes($filter: RouteFilterInput, $pagination: PaginationInput) {\n routes(filter: $filter, pagination: $pagination) {\n id\n name\n status\n shipmentId\n vehicleId\n driverId\n waypoints\n estimatedDistance\n estimatedDuration\n fuelCost\n actualDistance\n actualDuration\n createdAt\n }\n }\n", s = "\n query GetRoute($id: ID!) {\n route(id: $id) {\n id\n name\n status\n shipmentId\n vehicleId\n driverId\n waypoints\n estimatedDistance\n estimatedDuration\n fuelCost\n actualDistance\n actualDuration\n createdAt\n }\n }\n", c = "\n mutation CreateRoute($input: CreateRouteInput!) {\n createRoute(input: $input) {\n id\n name\n status\n shipmentId\n vehicleId\n driverId\n waypoints\n estimatedDistance\n estimatedDuration\n fuelCost\n actualDistance\n actualDuration\n createdAt\n }\n }\n", l = "\n mutation UpdateRoute($id: ID!, $input: UpdateRouteInput!) {\n updateRoute(id: $id, input: $input) {\n id\n name\n status\n shipmentId\n vehicleId\n driverId\n waypoints\n estimatedDistance\n estimatedDuration\n fuelCost\n actualDistance\n actualDuration\n createdAt\n }\n }\n", u = "\n mutation DeleteRoute($id: ID!) {\n deleteRoute(id: $id)\n }\n", d = "\n mutation OptimizeRoute($id: ID!) {\n optimizeRoute(id: $id) {\n id\n name\n status\n shipmentId\n vehicleId\n driverId\n waypoints\n estimatedDistance\n estimatedDuration\n fuelCost\n actualDistance\n actualDuration\n createdAt\n }\n }\n";
|
|
5
|
+
var o = "\n query ListRoutes($filter: RouteFilterInput, $pagination: PaginationInput) {\n routes(filter: $filter, pagination: $pagination) {\n id\n name\n status\n shipmentId\n vehicleId\n driverId\n waypoints\n estimatedDistance\n estimatedDuration\n fuelCost\n actualDistance\n actualDuration\n createdAt\n }\n routesCount(filter: $filter)\n }\n", s = "\n query GetRoute($id: ID!) {\n route(id: $id) {\n id\n name\n status\n shipmentId\n vehicleId\n driverId\n waypoints\n estimatedDistance\n estimatedDuration\n fuelCost\n actualDistance\n actualDuration\n createdAt\n }\n }\n", c = "\n mutation CreateRoute($input: CreateRouteInput!) {\n createRoute(input: $input) {\n id\n name\n status\n shipmentId\n vehicleId\n driverId\n waypoints\n estimatedDistance\n estimatedDuration\n fuelCost\n actualDistance\n actualDuration\n createdAt\n }\n }\n", l = "\n mutation UpdateRoute($id: ID!, $input: UpdateRouteInput!) {\n updateRoute(id: $id, input: $input) {\n id\n name\n status\n shipmentId\n vehicleId\n driverId\n waypoints\n estimatedDistance\n estimatedDuration\n fuelCost\n actualDistance\n actualDuration\n createdAt\n }\n }\n", u = "\n mutation DeleteRoute($id: ID!) {\n deleteRoute(id: $id)\n }\n", d = "\n mutation OptimizeRoute($id: ID!) {\n optimizeRoute(id: $id) {\n id\n name\n status\n shipmentId\n vehicleId\n driverId\n waypoints\n estimatedDistance\n estimatedDuration\n fuelCost\n actualDistance\n actualDuration\n createdAt\n }\n }\n";
|
|
6
6
|
function f(e) {
|
|
7
7
|
switch (e) {
|
|
8
8
|
case "IN_PROGRESS": return "in_progress";
|
|
@@ -82,41 +82,43 @@ function g() {
|
|
|
82
82
|
]);
|
|
83
83
|
}
|
|
84
84
|
function _(e = {}) {
|
|
85
|
-
let { driverId: i, vehicleId: s, status: f,
|
|
86
|
-
|
|
85
|
+
let { driverId: i, vehicleId: s, status: f, search: m, limit: _ = 20, offset: v = 0 } = e, y = g(), [b, x] = a([]), [S, C] = a(0), [w, T] = a(!1), [E, D] = a(!1), [O, k] = a(null), A = n(async () => {
|
|
86
|
+
D(!0), k(null);
|
|
87
87
|
try {
|
|
88
|
-
let e = await t(
|
|
88
|
+
let e = await t(y, o, {
|
|
89
89
|
filter: {
|
|
90
90
|
driverId: i,
|
|
91
91
|
vehicleId: s,
|
|
92
|
-
status: f ? p(f) : void 0
|
|
92
|
+
status: f ? p(f) : void 0,
|
|
93
|
+
search: m || void 0
|
|
93
94
|
},
|
|
94
95
|
pagination: {
|
|
95
|
-
limit:
|
|
96
|
-
offset:
|
|
96
|
+
limit: _,
|
|
97
|
+
offset: v
|
|
97
98
|
}
|
|
98
99
|
});
|
|
99
|
-
|
|
100
|
+
C(e.routesCount), T(v + e.routes.length < e.routesCount), x(e.routes.map(h));
|
|
100
101
|
} catch (e) {
|
|
101
|
-
|
|
102
|
+
k(e instanceof Error ? e : /* @__PURE__ */ Error("Failed to load routes"));
|
|
102
103
|
} finally {
|
|
103
|
-
|
|
104
|
+
D(!1);
|
|
104
105
|
}
|
|
105
106
|
}, [
|
|
106
107
|
i,
|
|
107
|
-
|
|
108
|
+
y,
|
|
109
|
+
m,
|
|
108
110
|
f,
|
|
109
111
|
s,
|
|
110
|
-
|
|
111
|
-
|
|
112
|
+
_,
|
|
113
|
+
v
|
|
112
114
|
]);
|
|
113
115
|
r(() => {
|
|
114
|
-
|
|
115
|
-
}, [
|
|
116
|
-
let
|
|
117
|
-
|
|
118
|
-
}, [
|
|
119
|
-
let n = h((await t(
|
|
116
|
+
A();
|
|
117
|
+
}, [A]);
|
|
118
|
+
let j = n(() => {
|
|
119
|
+
A();
|
|
120
|
+
}, [A]), M = n(async (e) => {
|
|
121
|
+
let n = h((await t(y, c, { input: {
|
|
120
122
|
name: e.name ?? `Route ${(/* @__PURE__ */ new Date()).toLocaleDateString()}`,
|
|
121
123
|
status: p(e.status),
|
|
122
124
|
shipmentId: void 0,
|
|
@@ -129,9 +131,9 @@ function _(e = {}) {
|
|
|
129
131
|
actualDistance: e.distance,
|
|
130
132
|
actualDuration: e.actualDuration
|
|
131
133
|
} })).createRoute);
|
|
132
|
-
return
|
|
133
|
-
}, [
|
|
134
|
-
let r = h((await t(
|
|
134
|
+
return x((e) => [n, ...e]), n;
|
|
135
|
+
}, [y]), N = n(async (e, n) => {
|
|
136
|
+
let r = h((await t(y, l, {
|
|
135
137
|
id: e,
|
|
136
138
|
input: {
|
|
137
139
|
name: n.name,
|
|
@@ -147,40 +149,40 @@ function _(e = {}) {
|
|
|
147
149
|
actualDuration: n.actualDuration
|
|
148
150
|
}
|
|
149
151
|
})).updateRoute);
|
|
150
|
-
return
|
|
151
|
-
}, [
|
|
152
|
-
await t(v, u, { id: e }), b((t) => t.filter((t) => t.id !== e));
|
|
153
|
-
}, [v]), M = n(async (e) => {
|
|
154
|
-
let n = {
|
|
155
|
-
...h((await t(v, d, { id: e })).optimizeRoute),
|
|
156
|
-
optimized: !0
|
|
157
|
-
};
|
|
158
|
-
return b((t) => t.map((t) => t.id === e ? n : t)), n;
|
|
159
|
-
}, [v]), N = n(async (e, t, n) => {
|
|
160
|
-
let r = y.find((t) => t.id === e);
|
|
161
|
-
if (!r) throw Error("Route not found");
|
|
162
|
-
let i = r.stops.map((e) => e.id === t ? {
|
|
163
|
-
...e,
|
|
164
|
-
status: n,
|
|
165
|
-
actualTime: n === "completed" ? /* @__PURE__ */ new Date() : e.actualTime
|
|
166
|
-
} : e);
|
|
167
|
-
return A(e, {
|
|
168
|
-
stops: i,
|
|
169
|
-
status: i.every((e) => e.status === "completed") ? "completed" : r.status
|
|
170
|
-
});
|
|
171
|
-
}, [y, A]);
|
|
152
|
+
return x((t) => t.map((t) => t.id === e ? r : t)), r;
|
|
153
|
+
}, [y]);
|
|
172
154
|
return {
|
|
173
|
-
routes:
|
|
174
|
-
totalRoutes:
|
|
175
|
-
hasMore:
|
|
176
|
-
isLoading:
|
|
177
|
-
error:
|
|
178
|
-
refetch:
|
|
179
|
-
createRoute:
|
|
180
|
-
updateRoute:
|
|
181
|
-
deleteRoute:
|
|
182
|
-
|
|
183
|
-
|
|
155
|
+
routes: b,
|
|
156
|
+
totalRoutes: S,
|
|
157
|
+
hasMore: w,
|
|
158
|
+
isLoading: E,
|
|
159
|
+
error: O,
|
|
160
|
+
refetch: j,
|
|
161
|
+
createRoute: M,
|
|
162
|
+
updateRoute: N,
|
|
163
|
+
deleteRoute: n(async (e) => {
|
|
164
|
+
await t(y, u, { id: e }), x((t) => t.filter((t) => t.id !== e));
|
|
165
|
+
}, [y]),
|
|
166
|
+
optimizeRoute: n(async (e) => {
|
|
167
|
+
let n = {
|
|
168
|
+
...h((await t(y, d, { id: e })).optimizeRoute),
|
|
169
|
+
optimized: !0
|
|
170
|
+
};
|
|
171
|
+
return x((t) => t.map((t) => t.id === e ? n : t)), n;
|
|
172
|
+
}, [y]),
|
|
173
|
+
updateStopStatus: n(async (e, t, n) => {
|
|
174
|
+
let r = b.find((t) => t.id === e);
|
|
175
|
+
if (!r) throw Error("Route not found");
|
|
176
|
+
let i = r.stops.map((e) => e.id === t ? {
|
|
177
|
+
...e,
|
|
178
|
+
status: n,
|
|
179
|
+
actualTime: n === "completed" ? /* @__PURE__ */ new Date() : e.actualTime
|
|
180
|
+
} : e);
|
|
181
|
+
return N(e, {
|
|
182
|
+
stops: i,
|
|
183
|
+
status: i.every((e) => e.status === "completed") ? "completed" : r.status
|
|
184
|
+
});
|
|
185
|
+
}, [b, N])
|
|
184
186
|
};
|
|
185
187
|
}
|
|
186
188
|
function v(e) {
|
|
@@ -208,26 +210,46 @@ function v(e) {
|
|
|
208
210
|
refetch: () => void p()
|
|
209
211
|
};
|
|
210
212
|
}
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
213
|
+
var y = "\n query RouteStats {\n routeStats {\n total\n totalDistance\n totalDuration\n completed\n inProgress\n planned\n optimized\n }\n }\n";
|
|
214
|
+
function b() {
|
|
215
|
+
let e = g(), [n, i] = a({
|
|
216
|
+
totalRoutes: 0,
|
|
217
|
+
totalDistance: 0,
|
|
218
|
+
totalDuration: 0,
|
|
219
|
+
avgDistance: 0,
|
|
220
|
+
avgDuration: 0,
|
|
221
|
+
completedRoutes: 0,
|
|
222
|
+
inProgressRoutes: 0,
|
|
223
|
+
plannedRoutes: 0,
|
|
224
|
+
optimizedRoutes: 0
|
|
225
|
+
}), [o, s] = a(!1), [c, l] = a(null);
|
|
226
|
+
return r(() => {
|
|
227
|
+
(async () => {
|
|
228
|
+
s(!0), l(null);
|
|
229
|
+
try {
|
|
230
|
+
let n = (await t(e, y)).routeStats;
|
|
231
|
+
i({
|
|
232
|
+
totalRoutes: n.total,
|
|
233
|
+
totalDistance: n.totalDistance,
|
|
234
|
+
totalDuration: n.totalDuration,
|
|
235
|
+
avgDistance: n.total > 0 ? n.totalDistance / n.total : 0,
|
|
236
|
+
avgDuration: n.total > 0 ? n.totalDuration / n.total : 0,
|
|
237
|
+
completedRoutes: n.completed,
|
|
238
|
+
inProgressRoutes: n.inProgress,
|
|
239
|
+
plannedRoutes: n.planned,
|
|
240
|
+
optimizedRoutes: n.optimized
|
|
241
|
+
});
|
|
242
|
+
} catch (e) {
|
|
243
|
+
l(e instanceof Error ? e : /* @__PURE__ */ Error("Failed to load route stats"));
|
|
244
|
+
} finally {
|
|
245
|
+
s(!1);
|
|
246
|
+
}
|
|
247
|
+
})();
|
|
248
|
+
}, [e]), {
|
|
249
|
+
stats: n,
|
|
250
|
+
isLoading: o,
|
|
251
|
+
error: c
|
|
230
252
|
};
|
|
231
253
|
}
|
|
232
254
|
//#endregion
|
|
233
|
-
export { v as useRoute,
|
|
255
|
+
export { v as useRoute, b as useRouteStats, _ as useRoutes };
|