@seedtactics/insight-client 16.8.0 → 16.8.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +23 -29
- package/dist/assets/index-BDPKYaRT.js +388 -0
- package/dist/cell-status/current-status.js +4 -1
- package/dist/cell-status/estimated-cycle-times.js +2 -1
- package/dist/cell-status/inspections.js +1 -1
- package/dist/cell-status/loading.js +1 -1
- package/dist/cell-status/material-summary.js +4 -2
- package/dist/cell-status/names.js +1 -1
- package/dist/cell-status/rebookings.js +3 -1
- package/dist/cell-status/scheduled-jobs.js +1 -1
- package/dist/cell-status/sim-production.js +6 -2
- package/dist/cell-status/station-cycles.js +3 -1
- package/dist/cell-status/tool-replacements.js +21 -7
- package/dist/cell-status/tool-usage.js +7 -2
- package/dist/components/App.d.ts +2 -2
- package/dist/components/App.js +13 -5
- package/dist/components/AxisAndGrid.d.ts +6 -6
- package/dist/components/BarcodeScanning.d.ts +2 -2
- package/dist/components/BarcodeScanning.js +9 -3
- package/dist/components/ChartTooltip.d.ts +2 -2
- package/dist/components/ChooseMode.js +6 -1
- package/dist/components/ChooseOperator.d.ts +1 -1
- package/dist/components/ChooseOperator.js +1 -1
- package/dist/components/ErrorsAndLoading.d.ts +3 -3
- package/dist/components/ErrorsAndLoading.js +1 -1
- package/dist/components/LoadingIcon.d.ts +1 -1
- package/dist/components/LoadingIcon.js +2 -2
- package/dist/components/LogEntry.d.ts +2 -2
- package/dist/components/LogEntry.js +31 -29
- package/dist/components/ManualSerialEntry.d.ts +2 -2
- package/dist/components/ManualSerialEntry.js +1 -1
- package/dist/components/MonthSelect.d.ts +1 -1
- package/dist/components/MonthSelect.js +4 -2
- package/dist/components/Navigation.d.ts +2 -2
- package/dist/components/Navigation.js +2 -2
- package/dist/components/VerboseLogging.d.ts +1 -1
- package/dist/components/analysis/AnalysisSelectToolbar.d.ts +1 -1
- package/dist/components/analysis/BasketCycleCards.d.ts +1 -1
- package/dist/components/analysis/BasketCycleCards.js +2 -2
- package/dist/components/analysis/BufferChart.d.ts +1 -1
- package/dist/components/analysis/BufferChart.js +23 -4
- package/dist/components/analysis/CostPerPiece.d.ts +2 -2
- package/dist/components/analysis/CostPerPiece.js +3 -3
- package/dist/components/analysis/CycleChart.d.ts +1 -1
- package/dist/components/analysis/CycleChart.js +19 -6
- package/dist/components/analysis/DataTable.js +5 -3
- package/dist/components/analysis/EfficiencyPage.d.ts +2 -2
- package/dist/components/analysis/EfficiencyPage.js +1 -1
- package/dist/components/analysis/HeatChart.d.ts +1 -1
- package/dist/components/analysis/HeatChart.js +13 -4
- package/dist/components/analysis/InspectionDataTable.d.ts +1 -1
- package/dist/components/analysis/InspectionDataTable.js +6 -1
- package/dist/components/analysis/InspectionSankey.d.ts +1 -1
- package/dist/components/analysis/InspectionSankey.js +16 -6
- package/dist/components/analysis/PalletCycleCards.d.ts +1 -1
- package/dist/components/analysis/PalletCycleCards.js +5 -3
- package/dist/components/analysis/PartCycleCards.d.ts +2 -2
- package/dist/components/analysis/PartCycleCards.js +16 -6
- package/dist/components/analysis/QualityPage.d.ts +1 -1
- package/dist/components/analysis/ScheduleHistory.d.ts +1 -1
- package/dist/components/analysis/ScheduleHistory.js +2 -2
- package/dist/components/analysis/StationDataTable.d.ts +1 -1
- package/dist/components/analysis/ToolReplacements.d.ts +1 -1
- package/dist/components/analysis/ToolReplacements.js +8 -4
- package/dist/components/operations/AllMaterial.d.ts +1 -1
- package/dist/components/operations/AllMaterial.js +1 -1
- package/dist/components/operations/ChartRangeEdit.d.ts +1 -1
- package/dist/components/operations/ChartRangeEdit.js +14 -5
- package/dist/components/operations/CloseoutReport.js +2 -2
- package/dist/components/operations/CompletedParts.js +3 -3
- package/dist/components/operations/CurrentWorkorders.js +3 -3
- package/dist/components/operations/Dashboard.d.ts +2 -2
- package/dist/components/operations/Dashboard.js +1 -1
- package/dist/components/operations/OEEChart.d.ts +4 -4
- package/dist/components/operations/OEEChart.js +7 -2
- package/dist/components/operations/Outliers.d.ts +1 -1
- package/dist/components/operations/Outliers.js +1 -1
- package/dist/components/operations/Programs.js +10 -5
- package/dist/components/operations/Rebookings.d.ts +1 -1
- package/dist/components/operations/Rebookings.js +4 -2
- package/dist/components/operations/RecentCycleChart.d.ts +1 -1
- package/dist/components/operations/RecentCycleChart.js +3 -3
- package/dist/components/operations/RecentProduction.js +3 -3
- package/dist/components/operations/RecentSchedules.js +6 -4
- package/dist/components/operations/RecentStationCycles.d.ts +1 -1
- package/dist/components/operations/RecentStationCycles.js +2 -2
- package/dist/components/operations/ShiftSettings.d.ts +1 -1
- package/dist/components/operations/SimDayUsage.d.ts +1 -1
- package/dist/components/operations/SimDayUsage.js +1 -1
- package/dist/components/operations/ToolReport.js +21 -10
- package/dist/components/operations/WorkorderGantt.d.ts +1 -1
- package/dist/components/operations/WorkorderGantt.js +1 -1
- package/dist/components/quality/QualityMaterial.d.ts +2 -2
- package/dist/components/quality/QualityMaterial.js +2 -2
- package/dist/components/quality/QualityPaths.d.ts +1 -1
- package/dist/components/quality/RecentFailedInspections.d.ts +1 -1
- package/dist/components/quality/RecentFailedInspections.js +1 -1
- package/dist/components/routes.d.ts +1 -1
- package/dist/components/routes.js +1 -1
- package/dist/components/station-monitor/BulkRawMaterial.d.ts +2 -2
- package/dist/components/station-monitor/BulkRawMaterial.js +12 -6
- package/dist/components/station-monitor/Closeout.js +7 -3
- package/dist/components/station-monitor/CustomStationMonitorDialog.js +1 -1
- package/dist/components/station-monitor/Inspection.js +4 -2
- package/dist/components/station-monitor/InvalidateCycle.d.ts +3 -3
- package/dist/components/station-monitor/InvalidateCycle.js +11 -4
- package/dist/components/station-monitor/JobDetails.js +5 -3
- package/dist/components/station-monitor/LoadStation.d.ts +1 -1
- package/dist/components/station-monitor/LoadStation.js +11 -8
- package/dist/components/station-monitor/Material.d.ts +10 -10
- package/dist/components/station-monitor/Material.js +31 -23
- package/dist/components/station-monitor/Material.test.js +1 -1
- package/dist/components/station-monitor/MoveMaterialArrows.d.ts +2 -2
- package/dist/components/station-monitor/PrintedLabel.d.ts +3 -3
- package/dist/components/station-monitor/PrintedLabel.js +10 -5
- package/dist/components/station-monitor/QuarantineButton.d.ts +1 -1
- package/dist/components/station-monitor/QuarantineButton.js +5 -3
- package/dist/components/station-monitor/Queues.d.ts +2 -2
- package/dist/components/station-monitor/Queues.js +8 -6
- package/dist/components/station-monitor/QueuesAddMaterial.d.ts +3 -3
- package/dist/components/station-monitor/QueuesAddMaterial.js +22 -9
- package/dist/components/station-monitor/SelectInspType.d.ts +2 -2
- package/dist/components/station-monitor/SelectInspType.js +1 -1
- package/dist/components/station-monitor/SelectWorkorder.d.ts +1 -1
- package/dist/components/station-monitor/SelectWorkorder.js +1 -1
- package/dist/components/station-monitor/StationToolbar.d.ts +1 -1
- package/dist/components/station-monitor/StationToolbar.js +13 -3
- package/dist/components/station-monitor/SystemOverview.d.ts +4 -4
- package/dist/components/station-monitor/SystemOverview.js +45 -23
- package/dist/components/station-monitor/Whiteboard.d.ts +1 -1
- package/dist/data/all-material-bins.d.ts +1 -1
- package/dist/data/all-material-bins.js +7 -6
- package/dist/data/chart-times.d.ts +1 -1
- package/dist/data/cost-per-piece.js +3 -1
- package/dist/data/current-cycles.js +3 -3
- package/dist/data/move-arrows.js +3 -1
- package/dist/data/operators.d.ts +1 -1
- package/dist/data/part-summary.js +1 -1
- package/dist/data/results.cycles.js +13 -4
- package/dist/data/tools-programs.d.ts +2 -2
- package/dist/data/tools-programs.js +3 -2
- package/dist/index.html +1 -1
- package/dist/network/api.d.ts +75 -9
- package/dist/network/api.js +626 -379
- package/dist/util/chart-colors.js +12 -1
- package/docs/client-efficiency.md +226 -263
- package/docs/client-engineering.md +27 -28
- package/docs/client-launch.md +32 -33
- package/docs/client-operations.md +50 -53
- package/docs/client-quality.md +39 -43
- package/docs/client-sales.md +36 -40
- package/docs/client-scanners.md +27 -27
- package/docs/client-station-monitor.md +86 -96
- package/docs/client-tools-programs.md +47 -44
- package/docs/improve-fms.md +73 -78
- package/docs/makino.md +21 -25
- package/docs/material-quarantine.md +50 -64
- package/docs/material-tracking.md +162 -195
- package/docs/mazak.md +78 -91
- package/docs/niigata.md +145 -168
- package/docs/operator-procedures.md +72 -76
- package/docs/part-instructions.md +36 -36
- package/docs/security.md +87 -81
- package/docs/server-config.md +36 -45
- package/docs/server-errors.md +21 -22
- package/package.json +27 -26
- package/dist/assets/index-BwbaiELK.js +0 -364
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { Fragment as _Fragment, jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
2
|
/* Copyright (c) 2020, John Lenz
|
|
3
3
|
|
|
4
4
|
All rights reserved.
|
|
@@ -71,10 +71,10 @@ function logType(entry, fmsInfo) {
|
|
|
71
71
|
switch (entry.type) {
|
|
72
72
|
case api.LogType.LoadUnloadCycle:
|
|
73
73
|
if (entry.startofcycle) {
|
|
74
|
-
return "Start " + entry.result.charAt(0).toUpperCase() + entry.result.substring(1).toLowerCase();
|
|
74
|
+
return ("Start " + entry.result.charAt(0).toUpperCase() + entry.result.substring(1).toLowerCase());
|
|
75
75
|
}
|
|
76
76
|
else {
|
|
77
|
-
return "End " + entry.result.charAt(0).toUpperCase() + entry.result.substring(1).toLowerCase();
|
|
77
|
+
return ("End " + entry.result.charAt(0).toUpperCase() + entry.result.substring(1).toLowerCase());
|
|
78
78
|
}
|
|
79
79
|
case api.LogType.BasketLoadUnload:
|
|
80
80
|
if (entry.program === "LOAD") {
|
|
@@ -179,10 +179,10 @@ function display(props, fmsInfo) {
|
|
|
179
179
|
const entry = props.entry;
|
|
180
180
|
switch (entry.type) {
|
|
181
181
|
case api.LogType.LoadUnloadCycle:
|
|
182
|
-
return (_jsxs("span", { children: [displayMat(entry.material), " on ", _jsxs(ColoredSpan, {
|
|
182
|
+
return (_jsxs("span", { children: [displayMat(entry.material), " on", " ", _jsxs(ColoredSpan, { $type: "pallet", children: ["pallet ", entry.pal] }), " at", " ", _jsx(ColoredSpan, { $type: "loadStation", children: loadStationDisplayName(entry.locnum, fmsInfo.loadStationNames) })] }));
|
|
183
183
|
case api.LogType.BasketLoadUnload: {
|
|
184
184
|
const basketName = basketDisplayName(fmsInfo.basketName);
|
|
185
|
-
return (_jsxs("span", { children: [displayMat(entry.material), " ", entry.program === "LOAD" ? "loaded onto" : "unloaded from", " ", _jsxs(ColoredSpan, {
|
|
185
|
+
return (_jsxs("span", { children: [displayMat(entry.material), " ", entry.program === "LOAD" ? "loaded onto" : "unloaded from", " ", _jsxs(ColoredSpan, { $type: "pallet", children: [basketName, " ", entry.pal] }), " ", "at", " ", _jsx(ColoredSpan, { $type: "loadStation", children: loadStationDisplayName(entry.locnum, fmsInfo.loadStationNames) })] }));
|
|
186
186
|
}
|
|
187
187
|
case api.LogType.BasketCycle: {
|
|
188
188
|
const basketName = basketDisplayName(fmsInfo.basketName);
|
|
@@ -203,7 +203,7 @@ function display(props, fmsInfo) {
|
|
|
203
203
|
}
|
|
204
204
|
}
|
|
205
205
|
case api.LogType.MachineCycle:
|
|
206
|
-
return (_jsxs("span", { children: [displayMat(entry.material), " on ", _jsxs(ColoredSpan, {
|
|
206
|
+
return (_jsxs("span", { children: [displayMat(entry.material), " on", " ", _jsxs(ColoredSpan, { $type: "pallet", children: ["pallet ", entry.pal] }), " at", " ", _jsxs(ColoredSpan, { $type: "machine", children: [entry.loc, " ", entry.locnum.toString()] }), entry.program && entry.program !== "" ? (_jsxs("span", { children: [" with program ", entry.program] })) : undefined] }));
|
|
207
207
|
case api.LogType.PartMark:
|
|
208
208
|
return (_jsxs("span", { children: [displayMat(entry.material), " marked with ", entry.result] }));
|
|
209
209
|
case api.LogType.OrderAssignment:
|
|
@@ -219,71 +219,71 @@ function display(props, fmsInfo) {
|
|
|
219
219
|
const inspName = (entry.details || {}).InspectionType || "";
|
|
220
220
|
const inspected = entry.result.toLowerCase() === "true" || entry.result === "1";
|
|
221
221
|
if (inspected) {
|
|
222
|
-
return (_jsxs("span", { children: [displayMat(entry.material), " signaled for inspection", " ", _jsx(ColoredSpan, {
|
|
222
|
+
return (_jsxs("span", { children: [displayMat(entry.material), " signaled for inspection", " ", _jsx(ColoredSpan, { $type: "inspectionSignaled", children: inspName })] }));
|
|
223
223
|
}
|
|
224
224
|
else {
|
|
225
|
-
return (_jsxs("span", { children: [displayMat(entry.material), " skipped inspection", " ", _jsx(ColoredSpan, {
|
|
225
|
+
return (_jsxs("span", { children: [displayMat(entry.material), " skipped inspection", " ", _jsx(ColoredSpan, { $type: "inspectionNotSignaled", children: inspName })] }));
|
|
226
226
|
}
|
|
227
227
|
}
|
|
228
228
|
case api.LogType.InspectionForce: {
|
|
229
229
|
const forceInspName = entry.program;
|
|
230
230
|
const forced = entry.result.toLowerCase() === "true" || entry.result === "1";
|
|
231
231
|
if (forced) {
|
|
232
|
-
return (_jsxs("span", { children: [displayMat(entry.material), " declared for inspection", " ", _jsx(ColoredSpan, {
|
|
232
|
+
return (_jsxs("span", { children: [displayMat(entry.material), " declared for inspection", " ", _jsx(ColoredSpan, { $type: "inspectionSignaled", children: forceInspName })] }));
|
|
233
233
|
}
|
|
234
234
|
else {
|
|
235
|
-
return (_jsxs("span", { children: [displayMat(entry.material), " passed over for inspection", " ", _jsx(ColoredSpan, {
|
|
235
|
+
return (_jsxs("span", { children: [displayMat(entry.material), " passed over for inspection", " ", _jsx(ColoredSpan, { $type: "inspectionNotSignaled", children: forceInspName })] }));
|
|
236
236
|
}
|
|
237
237
|
}
|
|
238
238
|
case api.LogType.WorkorderComment:
|
|
239
239
|
return _jsxs("span", { children: ["Workorder ", entry.result, " Comment"] });
|
|
240
240
|
case api.LogType.InspectionResult:
|
|
241
241
|
if (entry.result.toLowerCase() === "false") {
|
|
242
|
-
return _jsxs(ColoredSpan, {
|
|
242
|
+
return _jsxs(ColoredSpan, { $type: "inspectionSignaled", children: [entry.program, " Failed"] });
|
|
243
243
|
}
|
|
244
244
|
else {
|
|
245
|
-
return _jsxs(ColoredSpan, {
|
|
245
|
+
return _jsxs(ColoredSpan, { $type: "inspectionSignaled", children: [entry.program, " Succeeded"] });
|
|
246
246
|
}
|
|
247
247
|
case api.LogType.CloseOut:
|
|
248
248
|
if (entry.result.toLowerCase() === "failed") {
|
|
249
|
-
return (_jsxs(ColoredSpan, {
|
|
249
|
+
return (_jsxs(ColoredSpan, { $type: "closeoutFailed", children: [entry.program && entry.program !== "" ? entry.program : "CloseOut", " Failed"] }));
|
|
250
250
|
}
|
|
251
251
|
else {
|
|
252
|
-
return _jsxs("span", { children: [entry.program && entry.program !== "" ? entry.program : "CloseOut", " Completed"] });
|
|
252
|
+
return (_jsxs("span", { children: [entry.program && entry.program !== "" ? entry.program : "CloseOut", " Completed"] }));
|
|
253
253
|
}
|
|
254
254
|
case api.LogType.AddToQueue:
|
|
255
255
|
switch (entry.program) {
|
|
256
256
|
case "Unloaded":
|
|
257
|
-
return (_jsxs("span", { children: [displayQueueMat(entry.material), " unloaded into queue", " ", _jsx(ColoredSpan, {
|
|
257
|
+
return (_jsxs("span", { children: [displayQueueMat(entry.material), " unloaded into queue", " ", _jsx(ColoredSpan, { $type: "queue", children: entry.loc })] }));
|
|
258
258
|
case "SetByOperator":
|
|
259
|
-
return (_jsxs("span", { children: [displayQueueMat(entry.material), " set manually into queue", " ", _jsx(ColoredSpan, {
|
|
259
|
+
return (_jsxs("span", { children: [displayQueueMat(entry.material), " set manually into queue", " ", _jsx(ColoredSpan, { $type: "queue", children: entry.loc })] }));
|
|
260
260
|
case "Quarantine":
|
|
261
|
-
return (_jsxs("span", { children: [displayQueueMat(entry.material), " quarantined into queue", " ", _jsx(ColoredSpan, {
|
|
261
|
+
return (_jsxs("span", { children: [displayQueueMat(entry.material), " quarantined into queue", " ", _jsx(ColoredSpan, { $type: "queue", children: entry.loc })] }));
|
|
262
262
|
case "SwapMaterial":
|
|
263
|
-
return (_jsxs("span", { children: [displayQueueMat(entry.material), " swapped off pallet into queue", " ", _jsx(ColoredSpan, {
|
|
263
|
+
return (_jsxs("span", { children: [displayQueueMat(entry.material), " swapped off pallet into queue", " ", _jsx(ColoredSpan, { $type: "queue", children: entry.loc })] }));
|
|
264
264
|
case "MaterialMissingOnPallet":
|
|
265
|
-
return (_jsxs("span", { children: [displayQueueMat(entry.material), " removed from cell controller, added to queue", " ", _jsx(ColoredSpan, {
|
|
265
|
+
return (_jsxs("span", { children: [displayQueueMat(entry.material), " removed from cell controller, added to queue", " ", _jsx(ColoredSpan, { $type: "queue", children: entry.loc })] }));
|
|
266
266
|
default:
|
|
267
|
-
return (_jsxs("span", { children: [displayQueueMat(entry.material), " added to queue", " ", _jsx(ColoredSpan, {
|
|
267
|
+
return (_jsxs("span", { children: [displayQueueMat(entry.material), " added to queue", " ", _jsx(ColoredSpan, { $type: "queue", children: entry.loc }), entry.program && entry.program !== "" ? " (" + entry.program + ")" : undefined] }));
|
|
268
268
|
}
|
|
269
269
|
case api.LogType.RemoveFromQueue:
|
|
270
|
-
return (_jsxs("span", { children: [displayQueueMat(entry.material), " removed from queue", " ", _jsx(ColoredSpan, {
|
|
270
|
+
return (_jsxs("span", { children: [displayQueueMat(entry.material), " removed from queue", " ", _jsx(ColoredSpan, { $type: "queue", children: entry.loc })] }));
|
|
271
271
|
case api.LogType.PalletInStocker:
|
|
272
272
|
if (entry.startofcycle) {
|
|
273
|
-
return (_jsxs("span", { children: [_jsxs(ColoredSpan, {
|
|
273
|
+
return (_jsxs("span", { children: [_jsxs(ColoredSpan, { $type: "pallet", children: ["Pallet ", entry.pal] }), " arrived at stocker", " ", entry.locnum] }));
|
|
274
274
|
}
|
|
275
275
|
else {
|
|
276
|
-
return (_jsxs("span", { children: [_jsxs(ColoredSpan, {
|
|
276
|
+
return (_jsxs("span", { children: [_jsxs(ColoredSpan, { $type: "pallet", children: ["Pallet ", entry.pal] }), " departed stocker", " ", entry.locnum] }));
|
|
277
277
|
}
|
|
278
278
|
case api.LogType.PalletOnRotaryInbound:
|
|
279
279
|
if (entry.startofcycle) {
|
|
280
|
-
return (_jsxs("span", { children: [_jsxs(ColoredSpan, {
|
|
280
|
+
return (_jsxs("span", { children: [_jsxs(ColoredSpan, { $type: "pallet", children: ["Pallet ", entry.pal] }), " arrived at", " ", _jsxs(ColoredSpan, { $type: "machine", children: [entry.loc, " ", entry.locnum.toString()] })] }));
|
|
281
281
|
}
|
|
282
282
|
else if (entry.result == "RotateIntoWorktable") {
|
|
283
|
-
return (_jsxs("span", { children: [_jsxs(ColoredSpan, {
|
|
283
|
+
return (_jsxs("span", { children: [_jsxs(ColoredSpan, { $type: "pallet", children: ["Pallet ", entry.pal] }), " rotated into", " ", _jsxs(ColoredSpan, { $type: "machine", children: [entry.loc, " ", entry.locnum.toString()] }), " ", "worktable"] }));
|
|
284
284
|
}
|
|
285
285
|
else {
|
|
286
|
-
return (_jsxs("span", { children: [_jsxs(ColoredSpan, {
|
|
286
|
+
return (_jsxs("span", { children: [_jsxs(ColoredSpan, { $type: "pallet", children: ["Pallet ", entry.pal] }), " left", " ", _jsxs(ColoredSpan, { $type: "machine", children: [entry.loc, " ", entry.locnum.toString()] })] }));
|
|
287
287
|
}
|
|
288
288
|
case api.LogType.SignalQuarantine:
|
|
289
289
|
return _jsxs("span", { children: [displayMat(entry.material), " signaled for quarantine after unload"] });
|
|
@@ -358,7 +358,9 @@ const logTypesToHighlight = [
|
|
|
358
358
|
api.LogType.BasketLoadUnload,
|
|
359
359
|
api.LogType.MachineCycle,
|
|
360
360
|
];
|
|
361
|
-
const LogEntryTableRow = styled(TableRow, {
|
|
361
|
+
const LogEntryTableRow = styled(TableRow, {
|
|
362
|
+
shouldForwardProp: (prop) => prop.toString()[0] !== "$",
|
|
363
|
+
})(({ $highlightProc, $invalidCycle }) => ({
|
|
362
364
|
...($highlightProc && { backgroundColor: "#eeeeee" }),
|
|
363
365
|
...($invalidCycle && { textDecoration: "line-through" }),
|
|
364
366
|
}));
|
|
@@ -366,9 +368,9 @@ export const LogEntry = memo(function LogEntry(props) {
|
|
|
366
368
|
const details = detailsForEntry(props.entry);
|
|
367
369
|
const highlight = props.highlightProcsGreaterOrEqualTo;
|
|
368
370
|
const fmsInfo = useAtomValue(fmsInformation);
|
|
369
|
-
return (_jsxs(_Fragment, { children: [_jsxs(LogEntryTableRow, {
|
|
371
|
+
return (_jsxs(_Fragment, { children: [_jsxs(LogEntryTableRow, { $highlightProc: highlight !== undefined &&
|
|
370
372
|
props.entry.material.findIndex((m) => m.proc >= highlight) >= 0 &&
|
|
371
|
-
logTypesToHighlight.indexOf(props.entry.type) >= 0,
|
|
373
|
+
logTypesToHighlight.indexOf(props.entry.type) >= 0, $invalidCycle: isLogEntryInvalidated(props.entry), children: [_jsx(TableCell, { size: "small", children: props.entry.endUTC.toLocaleDateString(undefined, {
|
|
372
374
|
month: "short",
|
|
373
375
|
day: "numeric",
|
|
374
376
|
year: "2-digit",
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
export declare const ManualSerialEntryButton: import("react").MemoExoticComponent<() => import("react
|
|
1
|
+
export declare const ManualSerialEntryButton: import("react").MemoExoticComponent<() => import("react").JSX.Element>;
|
|
2
2
|
export declare const enterSerialForNewMaterialDialog: import("jotai").PrimitiveAtom<string | null> & {
|
|
3
3
|
init: string | null;
|
|
4
4
|
};
|
|
5
|
-
export declare const AddBySerialDialog: import("react").MemoExoticComponent<() => import("react
|
|
5
|
+
export declare const AddBySerialDialog: import("react").MemoExoticComponent<() => import("react").JSX.Element>;
|
|
@@ -2,5 +2,5 @@ export interface MonthSelectProps {
|
|
|
2
2
|
curMonth: Date;
|
|
3
3
|
onSelectMonth: (d: Date) => void;
|
|
4
4
|
}
|
|
5
|
-
declare const _default: import("react").MemoExoticComponent<(props: MonthSelectProps) => import("react
|
|
5
|
+
declare const _default: import("react").MemoExoticComponent<(props: MonthSelectProps) => import("react").JSX.Element>;
|
|
6
6
|
export default _default;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { Fragment as _Fragment, jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
2
|
/* Copyright (c) 2019, John Lenz
|
|
3
3
|
|
|
4
4
|
All rights reserved.
|
|
@@ -59,7 +59,9 @@ export default memo(function MonthSelect(props) {
|
|
|
59
59
|
}, size: "large", children: _jsx(CalendarIcon, {}) }) }) }), _jsx(Dialog, { open: dialogOpen, onClose: () => {
|
|
60
60
|
setDialogOpen(false);
|
|
61
61
|
setTempDialogCurMonth(undefined);
|
|
62
|
-
}, children: _jsxs(DialogContent, { children: [_jsxs("div", { style: { display: "flex", alignItems: "center" }, children: [_jsx(IconButton, { "data-testid": "select-month-dialog-previous-year", onClick: () => setTempDialogCurMonth(addYears(tempDialogCurMonth || props.curMonth, -1)), size: "large", children: _jsx(LeftArrowIcon, {}) }), _jsx("div", { style: { flexGrow: 1 }, children: _jsx(Typography, { variant: "h5", align: "center", "data-testid": "select-month-dialog-current-year", children: (tempDialogCurMonth || props.curMonth).toLocaleDateString(undefined, {
|
|
62
|
+
}, children: _jsxs(DialogContent, { children: [_jsxs("div", { style: { display: "flex", alignItems: "center" }, children: [_jsx(IconButton, { "data-testid": "select-month-dialog-previous-year", onClick: () => setTempDialogCurMonth(addYears(tempDialogCurMonth || props.curMonth, -1)), size: "large", children: _jsx(LeftArrowIcon, {}) }), _jsx("div", { style: { flexGrow: 1 }, children: _jsx(Typography, { variant: "h5", align: "center", "data-testid": "select-month-dialog-current-year", children: (tempDialogCurMonth || props.curMonth).toLocaleDateString(undefined, {
|
|
63
|
+
year: "numeric",
|
|
64
|
+
}) }) }), _jsx(IconButton, { onClick: () => setTempDialogCurMonth(addYears(tempDialogCurMonth || props.curMonth, 1)), size: "large", children: _jsx(RightArrowIcon, {}) })] }), _jsx("div", { "data-testid": "select-month-dialog-choose-month", children: months.map((monthRow, monthRowIdx) => (_jsx("div", { style: monthRowIdx > 0 ? { marginTop: "1.2em" } : undefined, children: monthRow.map((month, monthIdx) => (_jsx(Button, { color: "primary", style: monthIdx > 0 ? { marginLeft: "1.2em" } : undefined, onClick: () => {
|
|
63
65
|
props.onSelectMonth(new Date((tempDialogCurMonth || props.curMonth).getFullYear(), month.getMonth(), 1));
|
|
64
66
|
setTempDialogCurMonth(undefined);
|
|
65
67
|
setDialogOpen(false);
|
|
@@ -17,7 +17,7 @@ export declare function Header({ showAlarms, showLogout, showSearch, showOperato
|
|
|
17
17
|
Nav1: ComponentType | undefined;
|
|
18
18
|
Nav2: ComponentType | undefined;
|
|
19
19
|
menuNavs?: ReadonlyArray<MenuNavItem>;
|
|
20
|
-
}): import("react
|
|
20
|
+
}): import("react").JSX.Element;
|
|
21
21
|
export declare function SideMenu({ menuItems }: {
|
|
22
22
|
menuItems?: ReadonlyArray<MenuNavItem>;
|
|
23
|
-
}): import("react
|
|
23
|
+
}): import("react").JSX.Element | null;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { Fragment as _Fragment, jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
2
|
/* Copyright (c) 2023, John Lenz
|
|
3
3
|
|
|
4
4
|
All rights reserved.
|
|
@@ -95,7 +95,7 @@ function MenuNavSelect({ menuNavs }) {
|
|
|
95
95
|
return;
|
|
96
96
|
setCurrentRoute(item.route);
|
|
97
97
|
}), renderValue: () => {
|
|
98
|
-
const item = menuNavs.find((i) =>
|
|
98
|
+
const item = menuNavs.find((i) => "separator" in i ? false : i.route.route === curRoute.route);
|
|
99
99
|
if (!item || "separator" in item)
|
|
100
100
|
return null;
|
|
101
101
|
return (_jsxs(Box, { sx: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare function VerboseLoggingPage(): import("react
|
|
1
|
+
export declare function VerboseLoggingPage(): import("react").JSX.Element;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare const AnalysisSelectToolbar: import("react").MemoExoticComponent<() => import("react
|
|
1
|
+
export declare const AnalysisSelectToolbar: import("react").MemoExoticComponent<() => import("react").JSX.Element>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare function BasketCycleChart(): import("react
|
|
1
|
+
export declare function BasketCycleChart(): import("react").JSX.Element;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
2
|
/* Copyright (c) 2026, John Lenz
|
|
3
3
|
|
|
4
4
|
All rights reserved.
|
|
@@ -134,7 +134,7 @@ export function BasketCycleChart() {
|
|
|
134
134
|
minHeight: "2.5em",
|
|
135
135
|
alignItems: "center",
|
|
136
136
|
maxWidth: "calc(100vw - 24px - 24px)",
|
|
137
|
-
}, children: [_jsxs(Typography, { variant: "subtitle1", children: [basketName, " Cycles"] }), _jsx(Box, { sx: { flexGrow: 1 } }), _jsx(FormControl, { size: "small", children: _jsxs(Select, { autoWidth: true, displayEmpty: true, value: selectedBasket ?? -1, onChange: (e) => setSelectedBasket(e.target.value === -1 ? undefined :
|
|
137
|
+
}, children: [_jsxs(Typography, { variant: "subtitle1", children: [basketName, " Cycles"] }), _jsx(Box, { sx: { flexGrow: 1 } }), _jsx(FormControl, { size: "small", children: _jsxs(Select, { autoWidth: true, displayEmpty: true, value: selectedBasket ?? -1, onChange: (e) => setSelectedBasket(e.target.value === -1 ? undefined : e.target.value), children: [_jsx(MenuItem, { value: -1, children: _jsxs("em", { children: ["Any ", basketName] }) }, 0), basketCycles
|
|
138
138
|
.keysToLazySeq()
|
|
139
139
|
.sortBy((x) => x)
|
|
140
140
|
.map((n) => (_jsx(MenuItem, { value: n, children: _jsx("div", { style: { display: "flex", alignItems: "center" }, children: _jsx("span", { style: { marginRight: "1em" }, children: n }) }) }, n)))] }) }), partNames.length > 0 ? (_jsx(FormControl, { size: "small", children: _jsxs(Select, { autoWidth: true, displayEmpty: true, value: selectedPart
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare function BufferOccupancyChart(): import("react
|
|
1
|
+
export declare function BufferOccupancyChart(): import("react").JSX.Element;
|
|
@@ -34,7 +34,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
|
34
34
|
import { memo, useState, useMemo, useRef, useCallback } from "react";
|
|
35
35
|
import { addDays, startOfToday, addMonths } from "date-fns";
|
|
36
36
|
import { curveCatmullRom, line } from "d3-shape";
|
|
37
|
-
import { buildBufferChart } from "../../data/results.bufferchart.js";
|
|
37
|
+
import { buildBufferChart, } from "../../data/results.bufferchart.js";
|
|
38
38
|
import { seriesColor } from "../../util/chart-colors.js";
|
|
39
39
|
import { rawMaterialQueues } from "../../cell-status/names.js";
|
|
40
40
|
import { selectedAnalysisPeriod } from "../../network/load-specific-month.js";
|
|
@@ -114,15 +114,34 @@ const BufferChart = memo(function BufferChart(props) {
|
|
|
114
114
|
const [disabledBuffers, setDisabledBuffers] = useState(HashSet.empty());
|
|
115
115
|
const defaultDateRangeStart = defaultDateRange[0];
|
|
116
116
|
const defaultDateRangeEnd = defaultDateRange[1];
|
|
117
|
-
const series = useMemo(() => buildBufferChart(defaultDateRangeStart, defaultDateRangeEnd, props.movingAverageDistanceInHours, rawMatQueues, entries.valuesToLazySeq()), [
|
|
117
|
+
const series = useMemo(() => buildBufferChart(defaultDateRangeStart, defaultDateRangeEnd, props.movingAverageDistanceInHours, rawMatQueues, entries.valuesToLazySeq()), [
|
|
118
|
+
defaultDateRangeStart,
|
|
119
|
+
defaultDateRangeEnd,
|
|
120
|
+
entries,
|
|
121
|
+
props.movingAverageDistanceInHours,
|
|
122
|
+
rawMatQueues,
|
|
123
|
+
]);
|
|
118
124
|
const { width, height, ref: chartRef, } = useResizeDetector({
|
|
119
125
|
refreshMode: "debounce",
|
|
120
126
|
refreshRate: 100,
|
|
121
127
|
});
|
|
122
128
|
return (_jsxs("div", { children: [_jsx(Box, { ref: chartRef, sx: {
|
|
123
|
-
height: {
|
|
129
|
+
height: {
|
|
130
|
+
xs: "calc(100vh - 350px)",
|
|
131
|
+
md: "calc(100vh - 285px)",
|
|
132
|
+
xl: "calc(100vh - 220px)",
|
|
133
|
+
},
|
|
124
134
|
overflow: "hidden",
|
|
125
|
-
}, children: width && height && width > 0 && height > 0 && (_jsx(BufferChartSVG, { width: width, height: height, series: series, disabled: disabledBuffers })) }), _jsx("div", { style: {
|
|
135
|
+
}, children: width && height && width > 0 && height > 0 && (_jsx(BufferChartSVG, { width: width, height: height, series: series, disabled: disabledBuffers })) }), _jsx("div", { style: {
|
|
136
|
+
marginTop: "1em",
|
|
137
|
+
display: "flex",
|
|
138
|
+
flexWrap: "wrap",
|
|
139
|
+
justifyContent: "space-around",
|
|
140
|
+
}, children: series.map((s, idx) => (_jsx(ToggleButton, { selected: !disabledBuffers.has(s.label), value: s.label, onChange: () => setDisabledBuffers((db) => (db.has(s.label) ? db.delete(s.label) : db.add(s.label))), children: _jsxs("div", { style: { display: "flex", alignItems: "center" }, children: [_jsx("div", { style: {
|
|
141
|
+
width: "14px",
|
|
142
|
+
height: "14px",
|
|
143
|
+
backgroundColor: seriesColor(idx, series.length),
|
|
144
|
+
} }), _jsx("div", { style: { marginLeft: "1em" }, children: s.label })] }) }, s.label))) })] }));
|
|
126
145
|
});
|
|
127
146
|
// https://github.com/mui-org/material-ui/issues/20191
|
|
128
147
|
// oxlint-disable-next-line typescript/no-explicit-any
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export declare function CostBreakdownPage(): import("react
|
|
2
|
-
export declare const CostPerPiecePage: import("react").MemoExoticComponent<() => import("react
|
|
1
|
+
export declare function CostBreakdownPage(): import("react").JSX.Element;
|
|
2
|
+
export declare const CostPerPiecePage: import("react").MemoExoticComponent<() => import("react").JSX.Element>;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { Fragment as _Fragment, jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
2
|
/* Copyright (c) 2021, John Lenz
|
|
3
3
|
|
|
4
4
|
All rights reserved.
|
|
@@ -48,8 +48,8 @@ import { Tooltip } from "@mui/material";
|
|
|
48
48
|
import { IconButton } from "@mui/material";
|
|
49
49
|
import { PartIdenticon } from "../station-monitor/Material.js";
|
|
50
50
|
import { Typography } from "@mui/material";
|
|
51
|
-
import { last30MaterialSummary, specificMonthMaterialSummary } from "../../cell-status/material-summary.js";
|
|
52
|
-
import { last30StationCycles, specificMonthStationCycles } from "../../cell-status/station-cycles.js";
|
|
51
|
+
import { last30MaterialSummary, specificMonthMaterialSummary, } from "../../cell-status/material-summary.js";
|
|
52
|
+
import { last30StationCycles, specificMonthStationCycles, } from "../../cell-status/station-cycles.js";
|
|
53
53
|
import { useSetTitle } from "../routes.js";
|
|
54
54
|
import { atom, useAtom, useAtomValue } from "jotai";
|
|
55
55
|
import { atomWithStorage } from "jotai/utils";
|
|
@@ -39,4 +39,4 @@ export interface YZoomRange {
|
|
|
39
39
|
readonly y_low: number;
|
|
40
40
|
readonly y_high: number;
|
|
41
41
|
}
|
|
42
|
-
export declare const CycleChart: import("react").MemoExoticComponent<(props: CycleChartProps) => import("react
|
|
42
|
+
export declare const CycleChart: import("react").MemoExoticComponent<(props: CycleChartProps) => import("react").JSX.Element>;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { Fragment as _Fragment, jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
2
|
/* Copyright (c) 2022, John Lenz
|
|
3
3
|
|
|
4
4
|
All rights reserved.
|
|
@@ -31,7 +31,7 @@ THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
|
|
31
31
|
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
|
32
32
|
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
33
33
|
*/
|
|
34
|
-
import { useMemo, memo, useState, useCallback } from "react";
|
|
34
|
+
import { useMemo, memo, useState, useCallback, } from "react";
|
|
35
35
|
import { Dialog, DialogContent, DialogActions, TextField, IconButton, Button, styled, ToggleButton, Stack, } from "@mui/material";
|
|
36
36
|
import { ZoomIn } from "@mui/icons-material";
|
|
37
37
|
import { seriesColor } from "../../util/chart-colors.js";
|
|
@@ -172,7 +172,12 @@ const AllPointsSeries = memo(function AllPointsSeries({ series, xScale, yScale,
|
|
|
172
172
|
.map((s) => (_jsx(SingleSeries, { points: s.points, seriesName: s.name, color: s.color, xScale: xScale, yScale: yScale, showTooltip: showTooltip }, s.name))) }));
|
|
173
173
|
});
|
|
174
174
|
const Legend = memo(function Legend({ series, disabledSeries, adjustDisabled, }) {
|
|
175
|
-
return (_jsx("div", { style: {
|
|
175
|
+
return (_jsx("div", { style: {
|
|
176
|
+
marginTop: "1em",
|
|
177
|
+
display: "flex",
|
|
178
|
+
flexWrap: "wrap",
|
|
179
|
+
justifyContent: "space-around",
|
|
180
|
+
}, children: series.map((s) => (_jsx(ToggleButton, { selected: !disabledSeries.has(s.name), value: s, onChange: () => adjustDisabled((b) => (b.has(s.name) ? b.delete(s.name) : b.add(s.name))), children: _jsxs("div", { style: { display: "flex", alignItems: "center" }, children: [_jsx("div", { style: { width: "14px", height: "14px", backgroundColor: s.color } }), _jsx("div", { style: { marginLeft: "1em" }, children: s.name })] }) }, s.name))) }));
|
|
176
181
|
});
|
|
177
182
|
const NoPointerEvents = styled("g", { shouldForwardProp: (prop) => prop.toString()[0] !== "$" })(({ $noPtrEvents }) => $noPtrEvents
|
|
178
183
|
? {
|
|
@@ -210,7 +215,9 @@ const ChartMouseEvents = memo(function ChartMouseEvents({ setYZoom, setXZoom, se
|
|
|
210
215
|
const y2 = yScale.invert(p.y - marginTop);
|
|
211
216
|
setYZoom(y1 < y2 ? { y_low: y1, y_high: y2 } : { y_low: y2, y_high: y1 });
|
|
212
217
|
setXZoom?.({
|
|
213
|
-
zoom: time1.getTime() < time2.getTime()
|
|
218
|
+
zoom: time1.getTime() < time2.getTime()
|
|
219
|
+
? { start: time1, end: time2 }
|
|
220
|
+
: { start: time2, end: time1 },
|
|
214
221
|
});
|
|
215
222
|
}
|
|
216
223
|
}
|
|
@@ -260,7 +267,7 @@ function CycleChartSvg(props) {
|
|
|
260
267
|
containerWidth: props.containerWidth,
|
|
261
268
|
containerHeight: props.containerHeight,
|
|
262
269
|
});
|
|
263
|
-
return (_jsx("svg", { width: width, height: height, children: _jsxs("g", { transform: `translate(${marginLeft}, ${marginTop})`, children: [_jsx(AxisAndGrid, { xScale: xScale, yScale: yScale }), _jsx(StatsSeries, { median: props.median, plannedMinutes: props.plannedTimeMinutes, xScale: xScale, yScale: yScale }), _jsx(ChartMouseEvents, { setYZoom: props.setYZoom, setXZoom: props.set_date_zoom_range, xScale: xScale, setTooltip: props.showTooltip, yScale: yScale, highlightStart: props.highlightStart, setHighlightStart: props.setHighlightStart }), _jsx(NoPointerEvents, {
|
|
270
|
+
return (_jsx("svg", { width: width, height: height, children: _jsxs("g", { transform: `translate(${marginLeft}, ${marginTop})`, children: [_jsx(AxisAndGrid, { xScale: xScale, yScale: yScale }), _jsx(StatsSeries, { median: props.median, plannedMinutes: props.plannedTimeMinutes, xScale: xScale, yScale: yScale }), _jsx(ChartMouseEvents, { setYZoom: props.setYZoom, setXZoom: props.set_date_zoom_range, xScale: xScale, setTooltip: props.showTooltip, yScale: yScale, highlightStart: props.highlightStart, setHighlightStart: props.setHighlightStart }), _jsx(NoPointerEvents, { $noPtrEvents: props.highlightStart !== null, children: _jsx(AllPointsSeries, { series: props.series, disabledSeries: props.disabledSeries, xScale: xScale, yScale: yScale, showTooltip: props.showTooltip }) })] }) }));
|
|
264
271
|
}
|
|
265
272
|
export const CycleChart = memo(function CycleChart(props) {
|
|
266
273
|
// the state of the chart
|
|
@@ -277,5 +284,11 @@ export const CycleChart = memo(function CycleChart(props) {
|
|
|
277
284
|
setTooltip(null);
|
|
278
285
|
setHighlightStart(null);
|
|
279
286
|
}, [setTooltip, setHighlightStart]);
|
|
280
|
-
return (_jsxs("div", { onPointerLeave: pointerLeave, children: [_jsx(ChartWithTooltip, { sx: {
|
|
287
|
+
return (_jsxs("div", { onPointerLeave: pointerLeave, children: [_jsx(ChartWithTooltip, { sx: {
|
|
288
|
+
height: {
|
|
289
|
+
xs: "calc(100vh - 320px)",
|
|
290
|
+
md: "calc(100vh - 280px)",
|
|
291
|
+
xl: "calc(100vh - 220px)",
|
|
292
|
+
},
|
|
293
|
+
}, tooltipAtom: tooltipAtom, TooltipContent: ({ tooltip }) => (_jsx(CycleChartTooltip, { tooltip: tooltip, seriesLabel: props.series_label, extraTooltip: props.extra_tooltip })), chart: ({ width, height }) => (_jsx(CycleChartSvg, { ...props, containerHeight: height, containerWidth: width, series: series, median: median, yZoom: props.yZoom, setYZoom: props.setYZoom, highlightStart: highlightStart, setHighlightStart: setHighlightStart, showTooltip: setTooltip, disabledSeries: disabledSeries })) }), _jsxs("div", { style: { display: "flex", flexWrap: "wrap" }, children: [_jsx("div", { style: { color: "#6b6b76" }, children: "Click on a point for details" }), _jsx("div", { style: { flexGrow: 1 } }), _jsx(ChartZoomButtons, { set_date_zoom_range: props.set_date_zoom_range, current_date_zoom: props.current_date_zoom, yZoom: props.yZoom, setYZoom: props.setYZoom, median: median })] }), _jsx(Legend, { series: series, disabledSeries: disabledSeries, adjustDisabled: setDisabled })] }));
|
|
281
294
|
});
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { Fragment as _Fragment, jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
2
|
/* Copyright (c) 2025, John Lenz
|
|
3
3
|
|
|
4
4
|
All rights reserved.
|
|
@@ -86,7 +86,9 @@ function SelectDateRange(props) {
|
|
|
86
86
|
const start = props.zoom.current_date_zoom
|
|
87
87
|
? props.zoom.current_date_zoom.start
|
|
88
88
|
: props.zoom.default_date_range[0];
|
|
89
|
-
const end = addDays(props.zoom.current_date_zoom
|
|
89
|
+
const end = addDays(props.zoom.current_date_zoom
|
|
90
|
+
? props.zoom.current_date_zoom.end
|
|
91
|
+
: props.zoom.default_date_range[1], -1);
|
|
90
92
|
function onChange(d) {
|
|
91
93
|
props.zoom.set_date_zoom_range({
|
|
92
94
|
start: d[0],
|
|
@@ -99,7 +101,7 @@ function SelectDateRange(props) {
|
|
|
99
101
|
onChange([value[0], value[1]]);
|
|
100
102
|
}
|
|
101
103
|
};
|
|
102
|
-
return (_jsxs(_Fragment, { children: [_jsxs("span", { children: [dateFormat.format(props.zoom.current_date_zoom?.start ?? props.zoom.default_date_range[0]), "
|
|
104
|
+
return (_jsxs(_Fragment, { children: [_jsxs("span", { children: [dateFormat.format(props.zoom.current_date_zoom?.start ?? props.zoom.default_date_range[0]), " ", "- ", dateFormat.format(props.zoom.current_date_zoom?.end ?? props.zoom.default_date_range[1])] }), _jsx(Tooltip, { title: "Zoom To Date Range", children: _jsx(IconButton, { onClick: () => setOpen(true), size: "large", children: _jsx(ZoomInIcon, {}) }) }), _jsx(Tooltip, { title: "Reset Date Range", children: _jsx(IconButton, { onClick: () => props.zoom.set_date_zoom_range(undefined), size: "large", children: _jsx(ZoomOutIcon, {}) }) }), _jsxs(Dialog, { open: open, onClose: () => setOpen(false), children: [_jsxs(DialogTitle, { children: ["Select Date Range ", monthFormat.format(props.zoom.default_date_range[0])] }), _jsx(DialogContent, { children: _jsx(StyledCalendar, { minDate: props.zoom.default_date_range[0], maxDate: props.zoom.default_date_range[1], calendarType: "gregory", selectRange: true, showNavigation: false, showNeighboringMonth: false, value: [start, end], onChange: matchingOnChange }) }), _jsx(DialogActions, { children: _jsx(Button, { onClick: () => setOpen(false), children: "Close" }) })] })] }));
|
|
103
105
|
}
|
|
104
106
|
export const DataTableActions = memo(function DataTableActions({ zoom, tpage, count, }) {
|
|
105
107
|
let zoomCtrl;
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export declare function StationOeeHeatmap(): import("react
|
|
2
|
-
export declare function CompletedCountHeatmap(): import("react
|
|
1
|
+
export declare function StationOeeHeatmap(): import("react").JSX.Element;
|
|
2
|
+
export declare function CompletedCountHeatmap(): import("react").JSX.Element;
|
|
@@ -37,7 +37,7 @@ import { selectedAnalysisPeriod } from "../../network/load-specific-month.js";
|
|
|
37
37
|
import { SelectableHeatChart } from "./HeatChart.js";
|
|
38
38
|
import { binSimStationUseByDayAndStat, copyOeeHeatmapToClipboard, binActiveCyclesByDayAndStat, binOccupiedCyclesByDayAndStat, binDowntimeToDayAndStat, } from "../../data/results.oee.js";
|
|
39
39
|
import { binCyclesByDayAndPart, binSimProductionByDayAndPart, copyCompletedPartsHeatmapToClipboard, } from "../../data/results.completed-parts.js";
|
|
40
|
-
import { last30SimStationUse, specificMonthSimStationUse } from "../../cell-status/sim-station-use.js";
|
|
40
|
+
import { last30SimStationUse, specificMonthSimStationUse, } from "../../cell-status/sim-station-use.js";
|
|
41
41
|
import { last30SimProduction, specificMonthSimProduction, } from "../../cell-status/sim-production.js";
|
|
42
42
|
import { last30MaterialSummary, specificMonthMaterialSummary, } from "../../cell-status/material-summary.js";
|
|
43
43
|
import { last30StationCycles, specificMonthStationCycles, } from "../../cell-status/station-cycles.js";
|
|
@@ -19,4 +19,4 @@ export interface SelectableHeatCardProps<T extends string> {
|
|
|
19
19
|
readonly options: ReadonlyArray<T>;
|
|
20
20
|
}
|
|
21
21
|
export type SelectableHeatChartProps<T extends string> = HeatChartProps & SelectableHeatCardProps<T>;
|
|
22
|
-
export declare function SelectableHeatChart<T extends string>(props: SelectableHeatChartProps<T>): import("react
|
|
22
|
+
export declare function SelectableHeatChart<T extends string>(props: SelectableHeatChartProps<T>): import("react").JSX.Element;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { Fragment as _Fragment, jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
2
|
/* Copyright (c) 2022, John Lenz
|
|
3
3
|
|
|
4
4
|
All rights reserved.
|
|
@@ -33,7 +33,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
|
33
33
|
*/
|
|
34
34
|
import { useMemo, memo, useRef, useCallback } from "react";
|
|
35
35
|
import { addDays } from "date-fns";
|
|
36
|
-
import { Select, MenuItem, Tooltip, IconButton, Stack, Box, Typography, FormControl } from "@mui/material";
|
|
36
|
+
import { Select, MenuItem, Tooltip, IconButton, Stack, Box, Typography, FormControl, } from "@mui/material";
|
|
37
37
|
import { ImportExport } from "@mui/icons-material";
|
|
38
38
|
import { scaleBand, scaleLinear } from "d3-scale";
|
|
39
39
|
import { LazySeq } from "@seedtactics/immutable-collections";
|
|
@@ -51,7 +51,9 @@ const marginRight = 2;
|
|
|
51
51
|
const color1 = "#E8F5E9";
|
|
52
52
|
const color2 = "#1B5E20";
|
|
53
53
|
function useScales({ yType, dateRange, containerWidth, points, }) {
|
|
54
|
-
const width = containerWidth === null || containerWidth === undefined || containerWidth === 0
|
|
54
|
+
const width = containerWidth === null || containerWidth === undefined || containerWidth === 0
|
|
55
|
+
? 400
|
|
56
|
+
: containerWidth;
|
|
55
57
|
const maxStatLen = useMemo(() => LazySeq.of(points)
|
|
56
58
|
.map((p) => p.y)
|
|
57
59
|
.distinct()
|
|
@@ -98,7 +100,14 @@ function useScales({ yType, dateRange, containerWidth, points, }) {
|
|
|
98
100
|
}
|
|
99
101
|
return { yScale: nextBandScale, height: nextChartHeight, colorScale: nextFillScale };
|
|
100
102
|
}, [points, yType]);
|
|
101
|
-
return {
|
|
103
|
+
return {
|
|
104
|
+
height: chartHeight,
|
|
105
|
+
width,
|
|
106
|
+
xScale,
|
|
107
|
+
yScale: bandScale,
|
|
108
|
+
colorScale: fillScale,
|
|
109
|
+
marginLeft,
|
|
110
|
+
};
|
|
102
111
|
}
|
|
103
112
|
const HeatAxis = memo(function HeatAxis({ xScale, yScale }) {
|
|
104
113
|
return (_jsxs(_Fragment, { children: [_jsx(AxisBottom, { scale: xScale, top: yScale.range()[1], tickFormat: (d) => d.toLocaleDateString(undefined, { month: "short", day: "numeric" }) }), _jsx(AxisLeft, { scale: yScale, left: xScale.range()[0] })] }));
|
|
@@ -6,5 +6,5 @@ export interface InspectionDataTableProps {
|
|
|
6
6
|
readonly extendDateRange?: (numDays: number) => void;
|
|
7
7
|
readonly hideOpenDetailColumn?: boolean;
|
|
8
8
|
}
|
|
9
|
-
declare const _default: import("react").MemoExoticComponent<(props: InspectionDataTableProps) => import("react
|
|
9
|
+
declare const _default: import("react").MemoExoticComponent<(props: InspectionDataTableProps) => import("react").JSX.Element>;
|
|
10
10
|
export default _default;
|
|
@@ -143,6 +143,11 @@ export default memo(function InspDataTable(props) {
|
|
|
143
143
|
serial: row.serial,
|
|
144
144
|
workorderId: row.workorder,
|
|
145
145
|
},
|
|
146
|
-
}) })] }), _jsx(DataTableActions, { tpage: {
|
|
146
|
+
}) })] }), _jsx(DataTableActions, { tpage: {
|
|
147
|
+
page,
|
|
148
|
+
rowsPerPage,
|
|
149
|
+
setPage: (p) => setPages(pages.set(path, p)),
|
|
150
|
+
setRowsPerPage,
|
|
151
|
+
}, count: points.material.length, zoom: tzoom.zoom })] }) })] }, path));
|
|
147
152
|
}) }));
|
|
148
153
|
});
|
|
@@ -9,4 +9,4 @@ export interface InspectionSankeyProps {
|
|
|
9
9
|
readonly extendDateRange?: (numDays: number) => void;
|
|
10
10
|
readonly hideOpenDetailColumn?: boolean;
|
|
11
11
|
}
|
|
12
|
-
export declare function InspectionSankey(props: InspectionSankeyProps): import("react
|
|
12
|
+
export declare function InspectionSankey(props: InspectionSankeyProps): import("react").JSX.Element;
|
|
@@ -68,7 +68,10 @@ function LinkDisplay({ link, path, strokeWidth, setTooltip, }) {
|
|
|
68
68
|
return (_jsx("path", { d: path, stroke: over ? green[600] : green[300], strokeWidth: strokeWidth, opacity: 0.2, fill: "none", onMouseMove: pointerOver, onMouseLeave: pointerOut }));
|
|
69
69
|
}
|
|
70
70
|
function NodeDisplay({ node }) {
|
|
71
|
-
if (node.x1 === undefined ||
|
|
71
|
+
if (node.x1 === undefined ||
|
|
72
|
+
node.x0 === undefined ||
|
|
73
|
+
node.y1 === undefined ||
|
|
74
|
+
node.y0 === undefined)
|
|
72
75
|
return null;
|
|
73
76
|
return (_jsxs("g", { transform: `translate(${node.x0}, ${node.y0})`, children: [_jsx("rect", { width: node.x1 - node.x0, height: node.y1 - node.y0, fill: green[800], opacity: 0.8, stroke: "none" }), _jsx("text", { x: 18, y: (node.y1 - node.y0) / 2, children: node.name })] }));
|
|
74
77
|
}
|
|
@@ -89,7 +92,9 @@ const SankeyDisplay = memo(function InspectionSankeyDiagram({ data, setTooltip,
|
|
|
89
92
|
const layout = generator({ nodes: sankeyData.nodes, links: sankeyData.links });
|
|
90
93
|
return {
|
|
91
94
|
nodes: layout.nodes,
|
|
92
|
-
links: layout.links.flatMap((link) => typeof link.source === "object" &&
|
|
95
|
+
links: layout.links.flatMap((link) => typeof link.source === "object" &&
|
|
96
|
+
typeof link.target === "object" &&
|
|
97
|
+
link.width !== undefined
|
|
93
98
|
? [{ ...link, source: link.source, target: link.target, width: link.width }]
|
|
94
99
|
: []),
|
|
95
100
|
};
|
|
@@ -106,11 +111,15 @@ const InspectionDiagram = memo(function InspectionDiagram({ data, }) {
|
|
|
106
111
|
const tooltipAtom = useMemo(() => atom(null), []);
|
|
107
112
|
const setTooltip = useSetAtom(tooltipAtom);
|
|
108
113
|
return (_jsx("div", { style: { position: "relative" }, children: _jsx(ChartWithTooltip, { sx: {
|
|
109
|
-
height: {
|
|
114
|
+
height: {
|
|
115
|
+
xs: "calc(100vh - 230px)",
|
|
116
|
+
md: "calc(100vh - 182px)",
|
|
117
|
+
xl: "calc(100vh - 130px)",
|
|
118
|
+
},
|
|
110
119
|
width: "100%",
|
|
111
120
|
}, chart: ({ height, width }) => (_jsx(SankeyDisplay, { data: data, setTooltip: setTooltip, parentHeight: height, parentWidth: width })), tooltipAtom: tooltipAtom, TooltipContent: LinkTooltip }) }));
|
|
112
121
|
});
|
|
113
|
-
const selectedPartAtom = atomWithDefault((get) =>
|
|
122
|
+
const selectedPartAtom = atomWithDefault((get) => get(isDemoAtom) ? "aaa" : undefined);
|
|
114
123
|
const selectedInspTypeAtom = atomWithDefault((get) => get(isDemoAtom) ? "CMM" : undefined);
|
|
115
124
|
const showTableAtom = atom(false);
|
|
116
125
|
export function InspectionSankey(props) {
|
|
@@ -121,8 +130,9 @@ export function InspectionSankey(props) {
|
|
|
121
130
|
const selectedPart = props.restrictToPart || curPart;
|
|
122
131
|
if (selectedPart && selectedInspectType) {
|
|
123
132
|
curData =
|
|
124
|
-
props.inspectionlogs
|
|
125
|
-
|
|
133
|
+
props.inspectionlogs
|
|
134
|
+
.get(new PartAndInspType(selectedPart, selectedInspectType))
|
|
135
|
+
?.valuesToLazySeq() ?? [];
|
|
126
136
|
}
|
|
127
137
|
const parts = props.inspectionlogs
|
|
128
138
|
.keysToLazySeq()
|