@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.
Files changed (150) hide show
  1. package/README.md +23 -29
  2. package/dist/assets/index-BGjv3-QV.js +388 -0
  3. package/dist/cell-status/current-status.js +4 -1
  4. package/dist/cell-status/estimated-cycle-times.js +2 -1
  5. package/dist/cell-status/inspections.js +1 -1
  6. package/dist/cell-status/loading.js +1 -1
  7. package/dist/cell-status/material-summary.js +4 -2
  8. package/dist/cell-status/names.js +1 -1
  9. package/dist/cell-status/rebookings.js +3 -1
  10. package/dist/cell-status/scheduled-jobs.js +1 -1
  11. package/dist/cell-status/sim-production.js +6 -2
  12. package/dist/cell-status/station-cycles.js +3 -1
  13. package/dist/cell-status/tool-replacements.js +21 -7
  14. package/dist/cell-status/tool-usage.js +7 -2
  15. package/dist/components/App.d.ts +2 -2
  16. package/dist/components/App.js +13 -5
  17. package/dist/components/AxisAndGrid.d.ts +6 -6
  18. package/dist/components/BarcodeScanning.d.ts +2 -2
  19. package/dist/components/BarcodeScanning.js +8 -2
  20. package/dist/components/ChartTooltip.d.ts +2 -2
  21. package/dist/components/ChooseMode.js +6 -1
  22. package/dist/components/ChooseOperator.d.ts +1 -1
  23. package/dist/components/ErrorsAndLoading.d.ts +3 -3
  24. package/dist/components/LoadingIcon.d.ts +1 -1
  25. package/dist/components/LoadingIcon.js +1 -1
  26. package/dist/components/LogEntry.d.ts +2 -2
  27. package/dist/components/LogEntry.js +10 -8
  28. package/dist/components/ManualSerialEntry.d.ts +2 -2
  29. package/dist/components/MonthSelect.d.ts +1 -1
  30. package/dist/components/MonthSelect.js +3 -1
  31. package/dist/components/Navigation.d.ts +2 -2
  32. package/dist/components/Navigation.js +1 -1
  33. package/dist/components/VerboseLogging.d.ts +1 -1
  34. package/dist/components/analysis/AnalysisSelectToolbar.d.ts +1 -1
  35. package/dist/components/analysis/BasketCycleCards.d.ts +1 -1
  36. package/dist/components/analysis/BasketCycleCards.js +1 -1
  37. package/dist/components/analysis/BufferChart.d.ts +1 -1
  38. package/dist/components/analysis/BufferChart.js +23 -4
  39. package/dist/components/analysis/CostPerPiece.d.ts +2 -2
  40. package/dist/components/analysis/CostPerPiece.js +2 -2
  41. package/dist/components/analysis/CycleChart.d.ts +1 -1
  42. package/dist/components/analysis/CycleChart.js +17 -4
  43. package/dist/components/analysis/DataTable.js +4 -2
  44. package/dist/components/analysis/EfficiencyPage.d.ts +2 -2
  45. package/dist/components/analysis/EfficiencyPage.js +1 -1
  46. package/dist/components/analysis/HeatChart.d.ts +1 -1
  47. package/dist/components/analysis/HeatChart.js +12 -3
  48. package/dist/components/analysis/InspectionDataTable.d.ts +1 -1
  49. package/dist/components/analysis/InspectionDataTable.js +6 -1
  50. package/dist/components/analysis/InspectionSankey.d.ts +1 -1
  51. package/dist/components/analysis/InspectionSankey.js +16 -6
  52. package/dist/components/analysis/PalletCycleCards.d.ts +1 -1
  53. package/dist/components/analysis/PalletCycleCards.js +5 -3
  54. package/dist/components/analysis/PartCycleCards.d.ts +2 -2
  55. package/dist/components/analysis/PartCycleCards.js +16 -6
  56. package/dist/components/analysis/QualityPage.d.ts +1 -1
  57. package/dist/components/analysis/ScheduleHistory.d.ts +1 -1
  58. package/dist/components/analysis/ScheduleHistory.js +1 -1
  59. package/dist/components/analysis/StationDataTable.d.ts +1 -1
  60. package/dist/components/analysis/ToolReplacements.d.ts +1 -1
  61. package/dist/components/analysis/ToolReplacements.js +7 -3
  62. package/dist/components/operations/AllMaterial.d.ts +1 -1
  63. package/dist/components/operations/ChartRangeEdit.d.ts +1 -1
  64. package/dist/components/operations/ChartRangeEdit.js +13 -4
  65. package/dist/components/operations/CloseoutReport.js +1 -1
  66. package/dist/components/operations/CompletedParts.js +2 -2
  67. package/dist/components/operations/CurrentWorkorders.js +2 -2
  68. package/dist/components/operations/Dashboard.d.ts +2 -2
  69. package/dist/components/operations/OEEChart.d.ts +4 -4
  70. package/dist/components/operations/OEEChart.js +7 -2
  71. package/dist/components/operations/Outliers.d.ts +1 -1
  72. package/dist/components/operations/Programs.js +9 -4
  73. package/dist/components/operations/Rebookings.d.ts +1 -1
  74. package/dist/components/operations/Rebookings.js +3 -1
  75. package/dist/components/operations/RecentCycleChart.d.ts +1 -1
  76. package/dist/components/operations/RecentCycleChart.js +2 -2
  77. package/dist/components/operations/RecentProduction.js +3 -3
  78. package/dist/components/operations/RecentSchedules.js +3 -1
  79. package/dist/components/operations/RecentStationCycles.d.ts +1 -1
  80. package/dist/components/operations/RecentStationCycles.js +1 -1
  81. package/dist/components/operations/ShiftSettings.d.ts +1 -1
  82. package/dist/components/operations/SimDayUsage.d.ts +1 -1
  83. package/dist/components/operations/ToolReport.js +17 -6
  84. package/dist/components/operations/WorkorderGantt.d.ts +1 -1
  85. package/dist/components/quality/QualityMaterial.d.ts +2 -2
  86. package/dist/components/quality/QualityMaterial.js +1 -1
  87. package/dist/components/quality/QualityPaths.d.ts +1 -1
  88. package/dist/components/quality/RecentFailedInspections.d.ts +1 -1
  89. package/dist/components/routes.d.ts +1 -1
  90. package/dist/components/routes.js +1 -1
  91. package/dist/components/station-monitor/BulkRawMaterial.d.ts +2 -2
  92. package/dist/components/station-monitor/BulkRawMaterial.js +11 -5
  93. package/dist/components/station-monitor/Closeout.js +6 -2
  94. package/dist/components/station-monitor/Inspection.js +3 -1
  95. package/dist/components/station-monitor/InvalidateCycle.d.ts +3 -3
  96. package/dist/components/station-monitor/InvalidateCycle.js +10 -3
  97. package/dist/components/station-monitor/JobDetails.js +4 -2
  98. package/dist/components/station-monitor/LoadStation.d.ts +1 -1
  99. package/dist/components/station-monitor/LoadStation.js +6 -3
  100. package/dist/components/station-monitor/Material.d.ts +10 -10
  101. package/dist/components/station-monitor/Material.js +28 -20
  102. package/dist/components/station-monitor/Material.test.js +1 -1
  103. package/dist/components/station-monitor/MoveMaterialArrows.d.ts +2 -2
  104. package/dist/components/station-monitor/PrintedLabel.d.ts +3 -3
  105. package/dist/components/station-monitor/PrintedLabel.js +9 -4
  106. package/dist/components/station-monitor/QuarantineButton.d.ts +1 -1
  107. package/dist/components/station-monitor/QuarantineButton.js +4 -2
  108. package/dist/components/station-monitor/Queues.d.ts +2 -2
  109. package/dist/components/station-monitor/Queues.js +6 -4
  110. package/dist/components/station-monitor/QueuesAddMaterial.d.ts +3 -3
  111. package/dist/components/station-monitor/QueuesAddMaterial.js +20 -7
  112. package/dist/components/station-monitor/SelectInspType.d.ts +2 -2
  113. package/dist/components/station-monitor/SelectWorkorder.d.ts +1 -1
  114. package/dist/components/station-monitor/StationToolbar.d.ts +1 -1
  115. package/dist/components/station-monitor/StationToolbar.js +13 -3
  116. package/dist/components/station-monitor/SystemOverview.d.ts +4 -4
  117. package/dist/components/station-monitor/SystemOverview.js +36 -16
  118. package/dist/components/station-monitor/Whiteboard.d.ts +1 -1
  119. package/dist/data/all-material-bins.js +2 -1
  120. package/dist/data/cost-per-piece.js +3 -1
  121. package/dist/data/move-arrows.js +3 -1
  122. package/dist/data/part-summary.js +1 -1
  123. package/dist/data/results.cycles.js +13 -4
  124. package/dist/data/tools-programs.js +3 -2
  125. package/dist/index.html +1 -1
  126. package/dist/network/api.d.ts +18 -0
  127. package/dist/network/api.js +502 -371
  128. package/dist/util/chart-colors.js +12 -1
  129. package/docs/client-efficiency.md +226 -263
  130. package/docs/client-engineering.md +27 -28
  131. package/docs/client-launch.md +32 -33
  132. package/docs/client-operations.md +50 -53
  133. package/docs/client-quality.md +39 -43
  134. package/docs/client-sales.md +36 -40
  135. package/docs/client-scanners.md +27 -27
  136. package/docs/client-station-monitor.md +86 -96
  137. package/docs/client-tools-programs.md +47 -44
  138. package/docs/improve-fms.md +73 -78
  139. package/docs/makino.md +21 -25
  140. package/docs/material-quarantine.md +50 -64
  141. package/docs/material-tracking.md +162 -195
  142. package/docs/mazak.md +78 -91
  143. package/docs/niigata.md +145 -168
  144. package/docs/operator-procedures.md +72 -76
  145. package/docs/part-instructions.md +36 -36
  146. package/docs/security.md +87 -81
  147. package/docs/server-config.md +36 -45
  148. package/docs/server-errors.md +21 -22
  149. package/package.json +25 -24
  150. 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]?.stops?.[m.lastCompletedMachiningRouteStopIndex];
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 && stop.stationNums.includes(mach.machineNum))) {
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 ? { group: mach.machineGroup, num: mach.machineNum } : null,
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 ? curSt.pallets[pallet]?.faceNames?.[faceNum - 1] : null;
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: { position: "relative", zIndex: open ? 10 : 0, width: "max-content", height: "max-content" }, 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: {
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 ? (m.action.loadOntoFace ?? 1) : (m.location.face ?? 1));
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 = remainingSecsInCurSt - (secondsSinceEpoch - Math.floor(currentStTime.getTime() / 1000));
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 = elapsedSecsInCurSt + (secondsSinceEpoch - Math.floor(currentStTime.getTime() / 1000));
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 = elapsedSecsInCurSt + (secondsSinceEpoch - Math.floor(currentStTime.getTime() / 1000));
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 ? "60px minmax(230px, max-content)" : gridTemplateColumns(maxNumFaces, true),
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 || overview.floatingBaskets.length > 0 || overview.storageBaskets ? (_jsxs(Box, { sx: {
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/jsx-runtime").JSX.Element>;
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 || info.role === api.QueueRole.InProcessTransfer)
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 ? (pct * (stationCostForPeriod.get(statGroup) ?? 0)) / 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
  })),
@@ -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 ? byKind.completedMaterial.left + 2 : container.right - 10,
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 && !operation && station && station !== FilterAnyMachineKey && station !== FilterAnyLoadKey;
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 || !e.material.some((m) => m.proc === partAndProc.proc))) {
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 += "<td>" + displayStationName(cycle.stationGroup, cycle.stationNumber, loadStationNames) + "</td>";
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 += "<th>Serial</th><th>Workorder</th><th>Result</th><th>Elapsed Min</th><th>Active Min</th>";
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 += "<td>" + (mach.currentUseMinutes ? mach.currentUseMinutes.toFixed(1) : "") + "</td>";
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-BwbaiELK.js"></script>
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>
@@ -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;