@seedtactics/insight-client 16.7.2 → 16.8.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/README.md +23 -29
- package/dist/assets/index-BGjv3-QV.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 +8 -2
- 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/ErrorsAndLoading.d.ts +3 -3
- package/dist/components/LoadingIcon.d.ts +1 -1
- package/dist/components/LoadingIcon.js +1 -1
- package/dist/components/LogEntry.d.ts +2 -2
- package/dist/components/LogEntry.js +10 -8
- package/dist/components/ManualSerialEntry.d.ts +2 -2
- package/dist/components/MonthSelect.d.ts +1 -1
- package/dist/components/MonthSelect.js +3 -1
- package/dist/components/Navigation.d.ts +2 -2
- package/dist/components/Navigation.js +1 -1
- 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 +1 -1
- 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 +2 -2
- package/dist/components/analysis/CycleChart.d.ts +1 -1
- package/dist/components/analysis/CycleChart.js +17 -4
- package/dist/components/analysis/DataTable.js +4 -2
- 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 +12 -3
- 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 +1 -1
- package/dist/components/analysis/StationDataTable.d.ts +1 -1
- package/dist/components/analysis/ToolReplacements.d.ts +1 -1
- package/dist/components/analysis/ToolReplacements.js +7 -3
- package/dist/components/operations/AllMaterial.d.ts +1 -1
- package/dist/components/operations/ChartRangeEdit.d.ts +1 -1
- package/dist/components/operations/ChartRangeEdit.js +13 -4
- package/dist/components/operations/CloseoutReport.js +1 -1
- package/dist/components/operations/CompletedParts.js +2 -2
- package/dist/components/operations/CurrentWorkorders.js +2 -2
- package/dist/components/operations/Dashboard.d.ts +2 -2
- 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/Programs.js +9 -4
- package/dist/components/operations/Rebookings.d.ts +1 -1
- package/dist/components/operations/Rebookings.js +3 -1
- package/dist/components/operations/RecentCycleChart.d.ts +1 -1
- package/dist/components/operations/RecentCycleChart.js +2 -2
- package/dist/components/operations/RecentProduction.js +3 -3
- package/dist/components/operations/RecentSchedules.js +3 -1
- package/dist/components/operations/RecentStationCycles.d.ts +1 -1
- package/dist/components/operations/RecentStationCycles.js +1 -1
- package/dist/components/operations/ShiftSettings.d.ts +1 -1
- package/dist/components/operations/SimDayUsage.d.ts +1 -1
- package/dist/components/operations/ToolReport.js +17 -6
- package/dist/components/operations/WorkorderGantt.d.ts +1 -1
- package/dist/components/quality/QualityMaterial.d.ts +2 -2
- package/dist/components/quality/QualityMaterial.js +1 -1
- package/dist/components/quality/QualityPaths.d.ts +1 -1
- package/dist/components/quality/RecentFailedInspections.d.ts +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 +11 -5
- package/dist/components/station-monitor/Closeout.js +6 -2
- package/dist/components/station-monitor/Inspection.js +3 -1
- package/dist/components/station-monitor/InvalidateCycle.d.ts +3 -3
- package/dist/components/station-monitor/InvalidateCycle.js +10 -3
- package/dist/components/station-monitor/JobDetails.js +4 -2
- package/dist/components/station-monitor/LoadStation.d.ts +1 -1
- package/dist/components/station-monitor/LoadStation.js +6 -3
- package/dist/components/station-monitor/Material.d.ts +10 -10
- package/dist/components/station-monitor/Material.js +28 -20
- 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 +9 -4
- package/dist/components/station-monitor/QuarantineButton.d.ts +1 -1
- package/dist/components/station-monitor/QuarantineButton.js +4 -2
- package/dist/components/station-monitor/Queues.d.ts +2 -2
- package/dist/components/station-monitor/Queues.js +6 -4
- package/dist/components/station-monitor/QueuesAddMaterial.d.ts +3 -3
- package/dist/components/station-monitor/QueuesAddMaterial.js +20 -7
- package/dist/components/station-monitor/SelectInspType.d.ts +2 -2
- package/dist/components/station-monitor/SelectWorkorder.d.ts +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 +36 -16
- package/dist/components/station-monitor/Whiteboard.d.ts +1 -1
- package/dist/data/all-material-bins.js +2 -1
- package/dist/data/cost-per-piece.js +3 -1
- package/dist/data/move-arrows.js +3 -1
- package/dist/data/part-summary.js +1 -1
- package/dist/data/results.cycles.js +13 -4
- package/dist/data/tools-programs.js +3 -2
- package/dist/index.html +1 -1
- package/dist/network/api.d.ts +18 -0
- package/dist/network/api.js +502 -371
- 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 +25 -24
- package/dist/assets/index-BwbaiELK.js +0 -364
|
@@ -212,9 +212,11 @@ function useCellOverview() {
|
|
|
212
212
|
return "Loading";
|
|
213
213
|
if (m.lastCompletedMachiningRouteStopIndex !== null &&
|
|
214
214
|
m.lastCompletedMachiningRouteStopIndex !== undefined) {
|
|
215
|
-
const stop = currentSt.jobs[m.jobUnique]?.procsAndPaths?.[m.process - 1]?.paths?.[m.path - 1]
|
|
215
|
+
const stop = currentSt.jobs[m.jobUnique]?.procsAndPaths?.[m.process - 1]?.paths?.[m.path - 1]
|
|
216
|
+
?.stops?.[m.lastCompletedMachiningRouteStopIndex];
|
|
216
217
|
if (!stop ||
|
|
217
|
-
(stop.stationGroup === mach.machineGroup &&
|
|
218
|
+
(stop.stationGroup === mach.machineGroup &&
|
|
219
|
+
stop.stationNums.includes(mach.machineNum))) {
|
|
218
220
|
return "Loading";
|
|
219
221
|
}
|
|
220
222
|
}
|
|
@@ -223,7 +225,9 @@ function useCellOverview() {
|
|
|
223
225
|
const newStatus = {
|
|
224
226
|
lulNum,
|
|
225
227
|
machineMoving: mach.moving,
|
|
226
|
-
machineCurrentlyAtLoad: lulNum === mach.currentLoadStation
|
|
228
|
+
machineCurrentlyAtLoad: lulNum === mach.currentLoadStation
|
|
229
|
+
? { group: mach.machineGroup, num: mach.machineNum }
|
|
230
|
+
: null,
|
|
227
231
|
readyMats: allMats.get("Ready") ?? [],
|
|
228
232
|
machiningMats: allMats.get("Machining") ?? [],
|
|
229
233
|
loadingMats: allMats.get("Loading") ?? [],
|
|
@@ -379,10 +383,17 @@ function MaterialIcon({ mats }) {
|
|
|
379
383
|
function faceName(pallet, faceNum) {
|
|
380
384
|
if (faceNum === null || faceNum === undefined)
|
|
381
385
|
return null;
|
|
382
|
-
const name = pallet != null && pallet != undefined
|
|
386
|
+
const name = pallet != null && pallet != undefined
|
|
387
|
+
? curSt.pallets[pallet]?.faceNames?.[faceNum - 1]
|
|
388
|
+
: null;
|
|
383
389
|
return name ?? "Face: " + faceNum.toString();
|
|
384
390
|
}
|
|
385
|
-
return (_jsxs(Box, { sx: { width: CollapsedIconSize, height: CollapsedIconSize, overflow: "visible" }, children: [_jsx(Paper, { elevation: 4, onPointerEnter: enter, onPointerLeave: leave, sx: {
|
|
391
|
+
return (_jsxs(Box, { sx: { width: CollapsedIconSize, height: CollapsedIconSize, overflow: "visible" }, children: [_jsx(Paper, { elevation: 4, onPointerEnter: enter, onPointerLeave: leave, sx: {
|
|
392
|
+
position: "relative",
|
|
393
|
+
zIndex: open ? 10 : 0,
|
|
394
|
+
width: "max-content",
|
|
395
|
+
height: "max-content",
|
|
396
|
+
}, children: _jsx(Badge, { badgeContent: mats.length > 1 ? mats.length : 0, color: "secondary", children: _jsx(ButtonBase, { focusRipple: true, onClick: click, ref: btnRef, children: _jsx(Collapse, { orientation: "horizontal", in: open, collapsedSize: CollapsedIconSize, children: _jsxs(Box, { sx: {
|
|
386
397
|
display: "flex",
|
|
387
398
|
}, children: [_jsx(PartIdenticon, { part: mats[0].partName, size: CollapsedIconSize }), _jsx(Box, { sx: {
|
|
388
399
|
marginLeft: "10px",
|
|
@@ -412,7 +423,9 @@ function PalletFaces({ maxNumFaces, mats: allMats, loadingOntoPallet, noFilter,
|
|
|
412
423
|
.orderedGroupBy((m) => m.action.loadOntoFace ?? 1)
|
|
413
424
|
: LazySeq.of(allMats)
|
|
414
425
|
.filter((m) => noFilter || m.location.type === LocType.OnPallet)
|
|
415
|
-
.orderedGroupBy((m) => m.action.type === ActionType.Loading
|
|
426
|
+
.orderedGroupBy((m) => m.action.type === ActionType.Loading
|
|
427
|
+
? (m.action.loadOntoFace ?? 1)
|
|
428
|
+
: (m.location.face ?? 1));
|
|
416
429
|
return (_jsx(Box, { sx: {
|
|
417
430
|
display: "grid",
|
|
418
431
|
gridTemplateRows: `${CollapsedIconSize}px`,
|
|
@@ -487,12 +500,14 @@ function useRemainingMachineTime(material) {
|
|
|
487
500
|
let remainingSecs = null;
|
|
488
501
|
if (remainingDurationFromCurSt) {
|
|
489
502
|
const remainingSecsInCurSt = durationToSeconds(remainingDurationFromCurSt);
|
|
490
|
-
remainingSecs =
|
|
503
|
+
remainingSecs =
|
|
504
|
+
remainingSecsInCurSt - (secondsSinceEpoch - Math.floor(currentStTime.getTime() / 1000));
|
|
491
505
|
}
|
|
492
506
|
let elapsedSecs = null;
|
|
493
507
|
if (elapsedDurationFromCurSt) {
|
|
494
508
|
const elapsedSecsInCurSt = durationToSeconds(elapsedDurationFromCurSt);
|
|
495
|
-
elapsedSecs =
|
|
509
|
+
elapsedSecs =
|
|
510
|
+
elapsedSecsInCurSt + (secondsSinceEpoch - Math.floor(currentStTime.getTime() / 1000));
|
|
496
511
|
}
|
|
497
512
|
if (remainingSecs !== null && elapsedSecs !== null) {
|
|
498
513
|
return [
|
|
@@ -539,7 +554,7 @@ function Machine({ maxNumFaces, machine }) {
|
|
|
539
554
|
}, children: machine.inbound.pallet.palletNum })) : undefined] }) }), _jsx(Box, { sx: {
|
|
540
555
|
gridArea: "inboundmat",
|
|
541
556
|
borderBottom: "1px solid black",
|
|
542
|
-
}, children: machine.inbound ? _jsx(PalletFaces, { mats: machine.inbound.mats, maxNumFaces: maxNumFaces }) : undefined }), _jsx(Box, { sx: {
|
|
557
|
+
}, children: machine.inbound ? (_jsx(PalletFaces, { mats: machine.inbound.mats, maxNumFaces: maxNumFaces })) : undefined }), _jsx(Box, { sx: {
|
|
543
558
|
gridArea: "worktablepal",
|
|
544
559
|
borderRight: "1px solid black",
|
|
545
560
|
borderBottom: "1px solid black",
|
|
@@ -573,7 +588,8 @@ function useElapsedLoadTime(material) {
|
|
|
573
588
|
let elapsedSecs = null;
|
|
574
589
|
if (elapsedDurationFromCurSt) {
|
|
575
590
|
const elapsedSecsInCurSt = durationToSeconds(elapsedDurationFromCurSt);
|
|
576
|
-
elapsedSecs =
|
|
591
|
+
elapsedSecs =
|
|
592
|
+
elapsedSecsInCurSt + (secondsSinceEpoch - Math.floor(currentStTime.getTime() / 1000));
|
|
577
593
|
}
|
|
578
594
|
if (elapsedSecs !== null) {
|
|
579
595
|
return formatSeconds(elapsedSecs);
|
|
@@ -676,15 +692,17 @@ function LoadStation({ maxNumFaces, maxNumStagingRows, maxNumSourceRows, load, }
|
|
|
676
692
|
function MachineAtLoadLabel({ status }) {
|
|
677
693
|
const lulStatus = useElapsedLoadTime(status.loadingMats);
|
|
678
694
|
const [machining, mcStatus, mcElapsed] = useRemainingMachineTime(status.machiningMats);
|
|
679
|
-
return (_jsxs("div", { children: [_jsxs(Typography, { variant: "h5", children: ["Station ", status.lulNum] }), status.machineCurrentlyAtLoad ? (_jsxs(_Fragment, { children: [_jsxs(Typography, { variant: "h5", children: [status.machineCurrentlyAtLoad.group, " ", status.machineCurrentlyAtLoad.num] }), _jsx(Typography, { variant: "subtitle1", children: mcStatus === "Idle" ? lulStatus : mcStatus }), machining ? (mcElapsed === null ? (_jsx(LinearProgress, {})) : mcElapsed < 0 ? (_jsx(LinearProgress, { color: "error" })) : (_jsx(LinearProgress, { variant: "determinate", value: mcElapsed }))) : undefined] })) : (_jsxs(_Fragment, { children: [status.machineMoving ? _jsx(Typography, { variant: "subtitle2", children: "Machine Moving" }) : undefined, _jsxs(Typography, { variant: "subtitle1", children: ["Loading ", lulStatus] })] }))] }));
|
|
695
|
+
return (_jsxs("div", { children: [_jsxs(Typography, { variant: "h5", children: ["Station ", status.lulNum] }), status.machineCurrentlyAtLoad ? (_jsxs(_Fragment, { children: [_jsxs(Typography, { variant: "h5", children: [status.machineCurrentlyAtLoad.group, " ", status.machineCurrentlyAtLoad.num] }), _jsx(Typography, { variant: "subtitle1", children: mcStatus === "Idle" ? lulStatus : mcStatus }), machining ? (mcElapsed === null ? (_jsx(LinearProgress, {})) : mcElapsed < 0 ? (_jsx(LinearProgress, { color: "error" })) : (_jsx(LinearProgress, { variant: "determinate", value: mcElapsed }))) : undefined] })) : (_jsxs(_Fragment, { children: [status.machineMoving ? (_jsx(Typography, { variant: "subtitle2", children: "Machine Moving" })) : undefined, _jsxs(Typography, { variant: "subtitle1", children: ["Loading ", lulStatus] })] }))] }));
|
|
680
696
|
}
|
|
681
|
-
function MachineAtLoad({ maxNumFaces, status }) {
|
|
697
|
+
function MachineAtLoad({ maxNumFaces, status, }) {
|
|
682
698
|
return (_jsxs(Box, { sx: {
|
|
683
699
|
display: "grid",
|
|
684
700
|
border: "1px solid black",
|
|
685
701
|
margin: "5px",
|
|
686
702
|
gridTemplateRows: `minmax(104px, max-content) repeat(3, ${maxNumFaces > 1 ? rowSize.toString() + "px" : "minmax(110px, max-content)"})`,
|
|
687
|
-
gridTemplateColumns: maxNumFaces === 1
|
|
703
|
+
gridTemplateColumns: maxNumFaces === 1
|
|
704
|
+
? "60px minmax(230px, max-content)"
|
|
705
|
+
: gridTemplateColumns(maxNumFaces, true),
|
|
688
706
|
gridTemplateAreas: `"name name" "ready readymat" "machining machiningmat" "loadstation loadstationmat"`,
|
|
689
707
|
}, children: [_jsx(Box, { sx: {
|
|
690
708
|
gridArea: "name",
|
|
@@ -731,7 +749,7 @@ function MachineAtLoad({ maxNumFaces, status }) {
|
|
|
731
749
|
justifyContent: "center",
|
|
732
750
|
}, children: _jsx(PalletFaces, { mats: status.loadingMats, maxNumFaces: maxNumFaces, showExpanded: true, noFilter: true }) })] }));
|
|
733
751
|
}
|
|
734
|
-
function StockerPallet({ maxNumFaces, pallet }) {
|
|
752
|
+
function StockerPallet({ maxNumFaces, pallet, }) {
|
|
735
753
|
return (_jsxs(Box, { sx: {
|
|
736
754
|
display: "grid",
|
|
737
755
|
border: "1px solid black",
|
|
@@ -773,7 +791,7 @@ function BasketStorageSummary({ empty, filled }) {
|
|
|
773
791
|
minWidth: "170px",
|
|
774
792
|
}, children: [_jsxs(Typography, { variant: "h5", children: [basketName, " Storage"] }), _jsxs(Typography, { variant: "body1", children: ["Empty: ", empty] }), _jsxs(Typography, { variant: "body1", children: ["Filled: ", filled] })] }));
|
|
775
793
|
}
|
|
776
|
-
export const SystemOverview = memo(function SystemOverview({ overview }) {
|
|
794
|
+
export const SystemOverview = memo(function SystemOverview({ overview, }) {
|
|
777
795
|
return (_jsxs("div", { children: [overview.machines.toAscLazySeq().map(([group, machines]) => (_jsx(Box, { sx: {
|
|
778
796
|
display: "flex",
|
|
779
797
|
flexWrap: "wrap",
|
|
@@ -786,7 +804,9 @@ export const SystemOverview = memo(function SystemOverview({ overview }) {
|
|
|
786
804
|
display: "flex",
|
|
787
805
|
flexWrap: "wrap",
|
|
788
806
|
justifyContent: "space-evenly",
|
|
789
|
-
}, children: overview.machineAtLoad.map((status) => (_jsx(MachineAtLoad, { status: status, maxNumFaces: overview.maxNumFacesOnPallet }, status.lulNum))) })) : undefined, overview.stockerPals.length > 0 ||
|
|
807
|
+
}, children: overview.machineAtLoad.map((status) => (_jsx(MachineAtLoad, { status: status, maxNumFaces: overview.maxNumFacesOnPallet }, status.lulNum))) })) : undefined, overview.stockerPals.length > 0 ||
|
|
808
|
+
overview.floatingBaskets.length > 0 ||
|
|
809
|
+
overview.storageBaskets ? (_jsxs(Box, { sx: {
|
|
790
810
|
display: "flex",
|
|
791
811
|
flexWrap: "wrap",
|
|
792
812
|
justifyContent: "space-evenly",
|
|
@@ -7,4 +7,4 @@ export interface SortableRegionProps {
|
|
|
7
7
|
readonly renderDragOverlay: (mat: Readonly<IInProcessMaterial>) => ReactNode;
|
|
8
8
|
readonly children?: ReactNode;
|
|
9
9
|
}
|
|
10
|
-
export declare const SortableRegion: import("react").MemoExoticComponent<(props: SortableRegionProps) => import("react
|
|
10
|
+
export declare const SortableRegion: import("react").MemoExoticComponent<(props: SortableRegionProps) => import("react").JSX.Element>;
|
|
@@ -150,7 +150,8 @@ export function selectAllMaterialIntoBins(curSt, curBinOrder) {
|
|
|
150
150
|
return q;
|
|
151
151
|
})
|
|
152
152
|
.concat(LazySeq.ofObject(curSt.queues)
|
|
153
|
-
.filter(([, info]) => info.role === api.QueueRole.RawMaterial ||
|
|
153
|
+
.filter(([, info]) => info.role === api.QueueRole.RawMaterial ||
|
|
154
|
+
info.role === api.QueueRole.InProcessTransfer)
|
|
154
155
|
.map(([qname, _]) => qname))
|
|
155
156
|
.toRSet((x) => x);
|
|
156
157
|
const quarantineQueues = LazySeq.ofObject(curSt.queues)
|
|
@@ -116,7 +116,9 @@ export function convert_cost_percent_to_cost_per_piece(costs, machineCostPerYear
|
|
|
116
116
|
parts: costs.parts.map((p) => ({
|
|
117
117
|
part: p.part,
|
|
118
118
|
parts_completed: p.parts_completed,
|
|
119
|
-
machine: p.machine.mapValues((pct, statGroup) => p.parts_completed > 0
|
|
119
|
+
machine: p.machine.mapValues((pct, statGroup) => p.parts_completed > 0
|
|
120
|
+
? (pct * (stationCostForPeriod.get(statGroup) ?? 0)) / p.parts_completed
|
|
121
|
+
: 0),
|
|
120
122
|
labor: p.parts_completed > 0 ? (p.labor * totalLaborCostForPeriod) / p.parts_completed : 0,
|
|
121
123
|
automation: p.parts_completed > 0 ? (p.automation * automationCostForPeriod) / p.parts_completed : 0,
|
|
122
124
|
})),
|
package/dist/data/move-arrows.js
CHANGED
|
@@ -145,7 +145,9 @@ export function computeArrows(container, allNodes) {
|
|
|
145
145
|
fromX: rect.right,
|
|
146
146
|
fromY: rect.top + rect.height / 2,
|
|
147
147
|
toY: rect.top + rect.height / 2,
|
|
148
|
-
toX: byKind.completedMaterial
|
|
148
|
+
toX: byKind.completedMaterial
|
|
149
|
+
? byKind.completedMaterial.left + 2
|
|
150
|
+
: container.right - 10,
|
|
149
151
|
curveDirection: 1,
|
|
150
152
|
});
|
|
151
153
|
}
|
|
@@ -31,7 +31,7 @@ THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
|
|
31
31
|
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
32
32
|
*/
|
|
33
33
|
import { LazySeq, OrderedMap, OrderedSet } from "@seedtactics/immutable-collections";
|
|
34
|
-
import { last30MaterialSummary } from "../cell-status/material-summary";
|
|
34
|
+
import { last30MaterialSummary, } from "../cell-status/material-summary";
|
|
35
35
|
import { atom } from "jotai";
|
|
36
36
|
import { isLaborCycle, last30StationCycles } from "../cell-status/station-cycles";
|
|
37
37
|
import { chartRangeAtom } from "./chart-times";
|
|
@@ -91,7 +91,11 @@ export function emptyStationCycles(allCycles) {
|
|
|
91
91
|
}
|
|
92
92
|
export function filterStationCycles(allCycles, { zoom, partAndProc, pallet, station, operation, carrierKind }) {
|
|
93
93
|
const groupByPal = partAndProc && station && station !== FilterAnyMachineKey && station !== FilterAnyLoadKey;
|
|
94
|
-
const groupByPart = pallet &&
|
|
94
|
+
const groupByPart = pallet &&
|
|
95
|
+
!operation &&
|
|
96
|
+
station &&
|
|
97
|
+
station !== FilterAnyMachineKey &&
|
|
98
|
+
station !== FilterAnyLoadKey;
|
|
95
99
|
return {
|
|
96
100
|
...extractFilterOptions(allCycles, partAndProc),
|
|
97
101
|
seriesLabel: groupByPal ? "Carrier" : groupByPart ? "Part" : "Station",
|
|
@@ -182,7 +186,8 @@ export function loadOccupancyCycles(allCycles, { zoom, partAndProc, pallet, stat
|
|
|
182
186
|
return false;
|
|
183
187
|
}
|
|
184
188
|
if (partAndProc &&
|
|
185
|
-
(e.part !== partAndProc.part ||
|
|
189
|
+
(e.part !== partAndProc.part ||
|
|
190
|
+
!e.material.some((m) => m.proc === partAndProc.proc))) {
|
|
186
191
|
return false;
|
|
187
192
|
}
|
|
188
193
|
if (pallet && palletForCycle(e) !== pallet) {
|
|
@@ -324,7 +329,10 @@ export function buildCycleTable(cycles, matsById, startD, endD, hideMedian, load
|
|
|
324
329
|
.toRArray()
|
|
325
330
|
.join(":") +
|
|
326
331
|
"</td>";
|
|
327
|
-
table +=
|
|
332
|
+
table +=
|
|
333
|
+
"<td>" +
|
|
334
|
+
displayStationName(cycle.stationGroup, cycle.stationNumber, loadStationNames) +
|
|
335
|
+
"</td>";
|
|
328
336
|
table += "<td>" + carrierLabel(cycle, basketDisplayName(basketName)) + "</td>";
|
|
329
337
|
table +=
|
|
330
338
|
"<td>" +
|
|
@@ -438,7 +446,8 @@ function result(e) {
|
|
|
438
446
|
export function buildLogEntriesTable(cycles) {
|
|
439
447
|
let table = "<table>\n<thead><tr>";
|
|
440
448
|
table += "<th>Date</th><th>Part</th><th>Station</th><th>Pallet</th>";
|
|
441
|
-
table +=
|
|
449
|
+
table +=
|
|
450
|
+
"<th>Serial</th><th>Workorder</th><th>Result</th><th>Elapsed Min</th><th>Active Min</th>";
|
|
442
451
|
table += "</tr></thead>\n<tbody>\n";
|
|
443
452
|
for (const cycle of cycles) {
|
|
444
453
|
if (cycle.startofcycle) {
|
|
@@ -35,7 +35,7 @@ import { durationToMinutes } from "../util/parseISODuration.js";
|
|
|
35
35
|
import { MachineBackend } from "../network/backend.js";
|
|
36
36
|
import { currentStatus } from "../cell-status/current-status.js";
|
|
37
37
|
import copy from "copy-to-clipboard";
|
|
38
|
-
import { last30ToolUse } from "../cell-status/tool-usage.js";
|
|
38
|
+
import { last30ToolUse, } from "../cell-status/tool-usage.js";
|
|
39
39
|
import { last30EstimatedCycleTimes, PartAndStationOperation, } from "../cell-status/estimated-cycle-times.js";
|
|
40
40
|
import { stat_name_and_num } from "../cell-status/station-cycles.js";
|
|
41
41
|
import { LazySeq, HashMap, hashValues, OrderedSet } from "@seedtactics/immutable-collections";
|
|
@@ -258,7 +258,8 @@ function buildToolReportHTML(tools) {
|
|
|
258
258
|
if (showTime) {
|
|
259
259
|
const schUse = LazySeq.of(tool.parts).sumBy((p) => p.scheduledUseMinutes * p.quantity);
|
|
260
260
|
table += "<td>" + schUse.toFixed(1) + "</td>";
|
|
261
|
-
table +=
|
|
261
|
+
table +=
|
|
262
|
+
"<td>" + (mach.currentUseMinutes ? mach.currentUseMinutes.toFixed(1) : "") + "</td>";
|
|
262
263
|
table += "<td>" + (mach.lifetimeMinutes ? mach.lifetimeMinutes.toFixed(1) : "") + "</td>";
|
|
263
264
|
table += "<td>" + (mach.remainingMinutes ? mach.remainingMinutes.toFixed(1) : "") + "</td>";
|
|
264
265
|
}
|
package/dist/index.html
CHANGED
|
@@ -44,7 +44,7 @@
|
|
|
44
44
|
}
|
|
45
45
|
}
|
|
46
46
|
</style>
|
|
47
|
-
<script type="module" crossorigin src="/assets/index-
|
|
47
|
+
<script type="module" crossorigin src="/assets/index-BGjv3-QV.js"></script>
|
|
48
48
|
<link rel="stylesheet" crossorigin href="/assets/index-CbqW4-gR.css">
|
|
49
49
|
</head>
|
|
50
50
|
<body>
|
package/dist/network/api.d.ts
CHANGED
|
@@ -409,6 +409,7 @@ export declare class Job implements IJob {
|
|
|
409
409
|
allocationAlgorithm?: string | undefined;
|
|
410
410
|
bookings?: string[] | undefined;
|
|
411
411
|
provisionalWorkorderId?: string | undefined;
|
|
412
|
+
artifactRunDate?: Date | undefined;
|
|
412
413
|
manuallyCreated?: boolean;
|
|
413
414
|
holdEntireJob?: HoldPattern | undefined;
|
|
414
415
|
cycles: number;
|
|
@@ -428,6 +429,7 @@ export interface IJob {
|
|
|
428
429
|
allocationAlgorithm?: string | undefined;
|
|
429
430
|
bookings?: string[] | undefined;
|
|
430
431
|
provisionalWorkorderId?: string | undefined;
|
|
432
|
+
artifactRunDate?: Date | undefined;
|
|
431
433
|
manuallyCreated?: boolean;
|
|
432
434
|
holdEntireJob?: HoldPattern | undefined;
|
|
433
435
|
cycles: number;
|
|
@@ -1204,6 +1206,7 @@ export declare class MostRecentSchedule implements IMostRecentSchedule {
|
|
|
1204
1206
|
extraParts: {
|
|
1205
1207
|
[key: string]: number;
|
|
1206
1208
|
};
|
|
1209
|
+
recentArtifactRuns?: ScheduledArtifactRun[] | undefined;
|
|
1207
1210
|
unscheduledRebookings?: Rebooking[] | undefined;
|
|
1208
1211
|
constructor(data?: IMostRecentSchedule);
|
|
1209
1212
|
init(_data?: any): void;
|
|
@@ -1216,8 +1219,23 @@ export interface IMostRecentSchedule {
|
|
|
1216
1219
|
extraParts: {
|
|
1217
1220
|
[key: string]: number;
|
|
1218
1221
|
};
|
|
1222
|
+
recentArtifactRuns?: ScheduledArtifactRun[] | undefined;
|
|
1219
1223
|
unscheduledRebookings?: Rebooking[] | undefined;
|
|
1220
1224
|
}
|
|
1225
|
+
export declare class ScheduledArtifactRun implements IScheduledArtifactRun {
|
|
1226
|
+
jobUnique: string;
|
|
1227
|
+
partName: string;
|
|
1228
|
+
artifactRunDate: Date;
|
|
1229
|
+
constructor(data?: IScheduledArtifactRun);
|
|
1230
|
+
init(_data?: any): void;
|
|
1231
|
+
static fromJS(data: any): ScheduledArtifactRun;
|
|
1232
|
+
toJSON(data?: any): any;
|
|
1233
|
+
}
|
|
1234
|
+
export interface IScheduledArtifactRun {
|
|
1235
|
+
jobUnique: string;
|
|
1236
|
+
partName: string;
|
|
1237
|
+
artifactRunDate: Date;
|
|
1238
|
+
}
|
|
1221
1239
|
export declare class Rebooking implements IRebooking {
|
|
1222
1240
|
bookingId: string;
|
|
1223
1241
|
partName: string;
|