@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
@@ -80,7 +80,12 @@ function BarChart({ width, height, points, setTooltip, }) {
80
80
  }, onMouseLeave: () => setTooltip(null) })] }, i)))] }) }));
81
81
  }
82
82
  function OEELegend({ station }) {
83
- return (_jsxs("div", { style: { marginTop: "1em", display: "flex", flexWrap: "wrap", justifyContent: "space-evenly" }, children: [_jsxs("div", { style: { display: "flex", alignItems: "center" }, children: [_jsx("div", { style: { width: "14px", height: "14px", backgroundColor: actualOeeColor } }), _jsxs("div", { style: { marginLeft: "1em" }, children: [station, " Actual"] })] }), _jsxs("div", { style: { display: "flex", alignItems: "center" }, children: [_jsx("div", { style: { width: "14px", height: "14px", backgroundColor: plannedOeeColor } }), _jsxs("div", { style: { marginLeft: "1em" }, children: [station, " Planned"] })] })] }));
83
+ return (_jsxs("div", { style: {
84
+ marginTop: "1em",
85
+ display: "flex",
86
+ flexWrap: "wrap",
87
+ justifyContent: "space-evenly",
88
+ }, children: [_jsxs("div", { style: { display: "flex", alignItems: "center" }, children: [_jsx("div", { style: { width: "14px", height: "14px", backgroundColor: actualOeeColor } }), _jsxs("div", { style: { marginLeft: "1em" }, children: [station, " Actual"] })] }), _jsxs("div", { style: { display: "flex", alignItems: "center" }, children: [_jsx("div", { style: { width: "14px", height: "14px", backgroundColor: plannedOeeColor } }), _jsxs("div", { style: { marginLeft: "1em" }, children: [station, " Planned"] })] })] }));
84
89
  }
85
90
  function OEETooltip({ tooltip }) {
86
91
  return (_jsxs("div", { children: [_jsx("div", { children: tooltip.datum.x }), _jsxs("div", { children: ["Actual Hours: ", tooltip.datum.y?.toFixed(1)] }), _jsxs("div", { children: ["Planned Hours: ", tooltip.datum?.plannedHours?.toFixed(1)] })] }));
@@ -150,7 +155,7 @@ function dataForTable(series, sortOn) {
150
155
  .flatMap((e) => e.points)
151
156
  .toSortedArray(sortOn);
152
157
  }
153
- export const OEETable = memo(function OEETableF({ points }) {
158
+ export const OEETable = memo(function OEETableF({ points, }) {
154
159
  const sort = useColSort(ColumnId.Date, columns);
155
160
  return (_jsxs(Table, { children: [_jsx(DataTableHead, { columns: columns, sort: sort, showDetailsCol: false }), _jsx(DataTableBody, { columns: columns, pageData: dataForTable(points, sort.sortOn) })] }));
156
161
  });
@@ -1,4 +1,4 @@
1
1
  export type OutlierType = "labor" | "machine";
2
2
  export declare function OutlierCycles({ outlierTy }: {
3
3
  outlierTy: OutlierType;
4
- }): import("react/jsx-runtime").JSX.Element;
4
+ }): import("react").JSX.Element;
@@ -92,7 +92,8 @@ function ProgramRow(props) {
92
92
  const toolsHaveCnt = props.program.toolUse !== null &&
93
93
  props.program.toolUse.tools.length > 0 &&
94
94
  LazySeq.of(props.program.toolUse.tools).some((t) => t.cycleUsageCnt > 0);
95
- return (_jsxs(_Fragment, { children: [_jsxs(ProgramTableRow, { children: [_jsx(TableCell, { children: props.program.toolUse === null || props.program.toolUse.tools.length === 0 ? undefined : (_jsx(IconButton, { size: "small", onClick: () => setOpen(!open), children: open ? _jsx(KeyboardArrowUpIcon, {}) : _jsx(KeyboardArrowDownIcon, {}) })) }), _jsx(TableCell, { children: programFilename(props.program.programName) }), props.showCellCtrlCol ? _jsx(TableCell, { children: props.program.cellControllerProgramName }) : undefined, _jsx(TableCell, { children: props.program.partName !== null ? (_jsxs(Box, { sx: {
95
+ return (_jsxs(_Fragment, { children: [_jsxs(ProgramTableRow, { children: [_jsx(TableCell, { children: props.program.toolUse === null ||
96
+ props.program.toolUse.tools.length === 0 ? undefined : (_jsx(IconButton, { size: "small", onClick: () => setOpen(!open), children: open ? _jsx(KeyboardArrowUpIcon, {}) : _jsx(KeyboardArrowDownIcon, {}) })) }), _jsx(TableCell, { children: programFilename(props.program.programName) }), props.showCellCtrlCol ? (_jsx(TableCell, { children: props.program.cellControllerProgramName })) : undefined, _jsx(TableCell, { children: props.program.partName !== null ? (_jsxs(Box, { sx: {
96
97
  display: "flex",
97
98
  alignItems: "center",
98
99
  }, children: [_jsx(PartIdenticon, { part: props.program.partName, size: 20 }), _jsx("span", { children: props.program.partName })] })) : undefined }), _jsx(TableCell, { children: props.program.comment ?? "" }), props.showRevCol ? (_jsx(TableCell, { children: props.program.revision === null ? "" : props.program.revision.toFixed() })) : undefined, _jsx(TableCell, { align: "right", children: props.program.statisticalCycleTime === null
@@ -101,11 +102,12 @@ function ProgramRow(props) {
101
102
  ? ""
102
103
  : props.program.statisticalCycleTime.MAD_aboveMinutes.toFixed(2) }), _jsx(TableCell, { align: "right", children: props.program.statisticalCycleTime === null
103
104
  ? ""
104
- : props.program.statisticalCycleTime.MAD_belowMinutes.toFixed(2) }), _jsx(TableCell, { align: "right", children: props.program.plannedMins === null ? "" : numFormat.format(props.program.plannedMins) }), _jsxs(TableCell, { children: [_jsx(Tooltip, { title: "Load Program Content", children: _jsx(IconButton, { size: "small", onClick: () => setProgramToShowContent(props.program), children: _jsx(CodeIcon, {}) }) }), props.program.revision !== null ? (_jsx(Tooltip, { title: "Revision History", children: _jsx(IconButton, { size: "small", onClick: () => setProgramToShowHistory(props.program), children: _jsx(HistoryIcon, {}) }) })) : undefined] })] }), _jsx(TableRow, { children: _jsx(TableCell, { sx: { pb: "0", pt: "0" }, colSpan: numCols, children: _jsx(Collapse, { in: open, timeout: "auto", unmountOnExit: true, children: _jsx(Box, { sx: { mr: "1em", ml: "3em" }, children: props.program.toolUse === null || props.program.toolUse.tools.length === 0 ? undefined : (_jsxs(Table, { size: "small", sx: {
105
+ : props.program.statisticalCycleTime.MAD_belowMinutes.toFixed(2) }), _jsx(TableCell, { align: "right", children: props.program.plannedMins === null ? "" : numFormat.format(props.program.plannedMins) }), _jsxs(TableCell, { children: [_jsx(Tooltip, { title: "Load Program Content", children: _jsx(IconButton, { size: "small", onClick: () => setProgramToShowContent(props.program), children: _jsx(CodeIcon, {}) }) }), props.program.revision !== null ? (_jsx(Tooltip, { title: "Revision History", children: _jsx(IconButton, { size: "small", onClick: () => setProgramToShowHistory(props.program), children: _jsx(HistoryIcon, {}) }) })) : undefined] })] }), _jsx(TableRow, { children: _jsx(TableCell, { sx: { pb: "0", pt: "0" }, colSpan: numCols, children: _jsx(Collapse, { in: open, timeout: "auto", unmountOnExit: true, children: _jsx(Box, { sx: { mr: "1em", ml: "3em" }, children: props.program.toolUse === null ||
106
+ props.program.toolUse.tools.length === 0 ? undefined : (_jsxs(Table, { size: "small", sx: {
105
107
  width: "auto",
106
108
  ml: "10em",
107
109
  mr: "1em",
108
- }, children: [_jsx(TableHead, { children: _jsxs(TableRow, { children: [_jsx(TableCell, { children: "Tool" }), toolsHaveTime ? _jsx(TableCell, { align: "right", children: "Estimated Usage (min)" }) : undefined, toolsHaveCnt ? (_jsx(TableCell, { align: "right", children: "Estimated Usage (count)" })) : undefined] }) }), _jsx(TableBody, { children: LazySeq.of(props.program.toolUse.tools).map((t, idx) => (_jsxs(TableRow, { children: [_jsx(TableCell, { children: t.toolName }), toolsHaveTime ? (_jsx(TableCell, { align: "right", children: t.cycleUsageMinutes === 0 ? "" : t.cycleUsageMinutes.toFixed(1) })) : undefined, toolsHaveCnt ? (_jsx(TableCell, { align: "right", children: t.cycleUsageCnt === 0 ? "" : t.cycleUsageCnt.toFixed(1) })) : undefined] }, idx))) })] })) }) }) }) })] }));
110
+ }, children: [_jsx(TableHead, { children: _jsxs(TableRow, { children: [_jsx(TableCell, { children: "Tool" }), toolsHaveTime ? (_jsx(TableCell, { align: "right", children: "Estimated Usage (min)" })) : undefined, toolsHaveCnt ? (_jsx(TableCell, { align: "right", children: "Estimated Usage (count)" })) : undefined] }) }), _jsx(TableBody, { children: LazySeq.of(props.program.toolUse.tools).map((t, idx) => (_jsxs(TableRow, { children: [_jsx(TableCell, { children: t.toolName }), toolsHaveTime ? (_jsx(TableCell, { align: "right", children: t.cycleUsageMinutes === 0 ? "" : t.cycleUsageMinutes.toFixed(1) })) : undefined, toolsHaveCnt ? (_jsx(TableCell, { align: "right", children: t.cycleUsageCnt === 0 ? "" : t.cycleUsageCnt.toFixed(1) })) : undefined] }, idx))) })] })) }) }) }) })] }));
109
111
  }
110
112
  export function ProgramSummaryTable() {
111
113
  const report = useAtomValue(currentProgramReport);
@@ -317,7 +319,10 @@ export function ProgramHistoryDialog() {
317
319
  if (page < lastLoadedPage.page) {
318
320
  setPage(page + 1);
319
321
  }
320
- else if (lastLoadedPage.hasMore && program !== null && revisions !== null && revisions.length > 0) {
322
+ else if (lastLoadedPage.hasMore &&
323
+ program !== null &&
324
+ revisions !== null &&
325
+ revisions.length > 0) {
321
326
  setLoading(true);
322
327
  setError(null);
323
328
  const rev = revisions[revisions.length - 1];
@@ -1 +1 @@
1
- export declare function RebookingsPage(): import("react/jsx-runtime").JSX.Element;
1
+ export declare function RebookingsPage(): import("react").JSX.Element;
@@ -200,7 +200,9 @@ const NewRebookingDialog = memo(function NewRebookingDialog() {
200
200
  alignItems: "center",
201
201
  }, children: [_jsx(PartIdenticon, { part: option, size: 25 }), option] }) })), filterOptions: (options, params) => {
202
202
  const filtered = options.filter((o) => o.toLowerCase().includes(params.inputValue.toLowerCase()));
203
- return filtered.length === 0 && params.inputValue !== "" ? [params.inputValue] : filtered;
203
+ return filtered.length === 0 && params.inputValue !== ""
204
+ ? [params.inputValue]
205
+ : filtered;
204
206
  } }), _jsx(TextField, { label: "Quantity", type: "number", value: rebooking.qty && !isNaN(rebooking.qty) ? rebooking.qty : "", onChange: (e) => setRebooking((r) => ({ ...r, qty: parseInt(e.target.value) })) }), _jsx(TextField, { label: "Priority (optional)", type: "number", value: rebooking.priority && !isNaN(rebooking.priority) ? rebooking.priority : "", onChange: (e) => setRebooking((r) => ({ ...r, priority: parseInt(e.target.value) })) }), _jsx(TextField, { label: "Workorder (optional)", value: rebooking.workorder ?? "", onChange: (e) => setRebooking((r) => ({ ...r, workorder: e.target.value })) }), _jsx(TextField, { label: "Notes (optional)", multiline: true, minRows: 2, value: rebooking.notes ?? "", onChange: (e) => setRebooking((r) => ({ ...r, notes: e.target.value })) })] }) }), _jsxs(DialogActions, { children: [_jsxs(Button, { color: "secondary", onClick: create, disabled: !allowCreate || creating, children: [creating ? _jsx(CircularProgress, { size: 24 }) : undefined, "Create"] }), _jsx(Button, { onClick: close, children: "Cancel" })] })] }), _jsx(Tooltip, { title: "Add Rebooking", children: _jsx(Fab, { onClick: () => setOpen(true), sx: { position: "fixed", bottom: "24px", right: "24px" }, color: "primary", children: _jsx(Add, {}) }) })] }));
205
207
  });
206
208
  const FilterDialog = memo(function UnschFilterDialog() {
@@ -1,4 +1,4 @@
1
1
  export declare function RecentCycleChart({ height, width }: {
2
2
  height: number;
3
3
  width: number;
4
- }): import("react/jsx-runtime").JSX.Element | null;
4
+ }): import("react").JSX.Element | null;
@@ -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, useCallback, useState, useRef, useEffect } from "react";
34
+ import { useMemo, useCallback, useState, useRef, useEffect, } from "react";
35
35
  import { last30StationCycles } from "../../cell-status/station-cycles.js";
36
36
  import { last30EstimatedCycleTimes } from "../../cell-status/estimated-cycle-times.js";
37
37
  import { recentCycles } from "../../data/results.cycles.js";
@@ -205,7 +205,7 @@ function SimSeries({ sim, xScale, yScale, actualPlannedScale, hideTooltipRef, })
205
205
  function RecentTooltip({ tooltip }) {
206
206
  return (_jsx(Stack, { children: tooltip.data.kind === "actual" ? (_jsxs(_Fragment, { children: [tooltip.data.cycle.outlier ? (_jsxs("div", { children: ["Outlier Cycle for ", tooltip.data.cycle.station] })) : (_jsx("div", { children: tooltip.data.cycle.station })), _jsxs("div", { children: ["Start: ", tooltip.data.cycle.startTime.toLocaleString()] }), _jsxs("div", { children: ["End: ", tooltip.data.cycle.endOccupied.toLocaleString()] }), tooltip.data.cycle.endActive !== undefined ? (_jsxs("div", { children: ["Active Minutes:", " ", differenceInMinutes(tooltip.data.cycle.endActive, tooltip.data.cycle.startTime)] })) : undefined, _jsxs("div", { children: ["Occupied Minutes:", " ", differenceInMinutes(tooltip.data.cycle.endOccupied, tooltip.data.cycle.startTime)] }), tooltip.data.cycle.parts.map((p, idx) => (_jsxs("div", { children: ["Part: ", p.part, " ", p.oper] }, idx)))] })) : tooltip.data.kind === "sim" ? (_jsxs(_Fragment, { children: [_jsxs("div", { children: ["Simulation of ", tooltip.data.cycle.station] }), tooltip.data.cycle.parts.map((p, idx) => (_jsxs("div", { children: ["Part: ", p] }, idx))), _jsxs("div", { children: ["Predicted Start: ", tooltip.data.cycle.start.toLocaleString()] }), _jsxs("div", { children: ["Predicted End: ", tooltip.data.cycle.end.toLocaleString()] }), tooltip.data.cycle.plannedDown ? _jsx("div", { children: "Planned Downtime" }) : undefined] })) : (_jsxs(_Fragment, { children: [tooltip.data.cycle.isOutlier ? (_jsxs("div", { children: ["Current Outlier Cycle for ", tooltip.data.cycle.station] })) : (_jsxs("div", { children: ["Current ", tooltip.data.cycle.station] })), _jsxs("div", { children: ["Start: ", tooltip.data.cycle.start.toLocaleString()] }), _jsxs("div", { children: ["Expected End: ", tooltip.data.cycle.expectedEnd.toLocaleString()] }), tooltip.data.cycle.expectedEnd < tooltip.data.now ? (_jsxs("div", { children: ["Cycle Exceeding Expected By", " ", differenceInMinutes(tooltip.data.now, tooltip.data.cycle.expectedEnd), " Minutes"] })) : (_jsxs("div", { children: ["Expected Remaining Minutes:", " ", differenceInMinutes(tooltip.data.cycle.expectedEnd, tooltip.data.now)] })), _jsxs("div", { children: ["Occupied Minutes: ", differenceInMinutes(tooltip.data.now, tooltip.data.cycle.start)] }), tooltip.data.cycle.parts.map((p, idx) => (_jsxs("div", { children: ["Part: ", p.part, " ", p.oper] }, idx)))] })) }));
207
207
  }
208
- function NowLine({ now, xScale, yScale }) {
208
+ function NowLine({ now, xScale, yScale, }) {
209
209
  const x = xScale(now);
210
210
  const fontSize = 11;
211
211
  return (_jsxs("g", { children: [_jsx("line", { x1: x, x2: x, y1: yScale.range()[0], y2: yScale.range()[1] + 8, stroke: "black" }), _jsx("text", { x: x, y: yScale.range()[1] + 8 + fontSize, textAnchor: "middle", fontSize: fontSize, children: "Now" })] }));
@@ -36,10 +36,10 @@ import { addDays, startOfToday } from "date-fns";
36
36
  import { useMemo, memo, useState } from "react";
37
37
  import { copyTableToClipboard, DataTableBody, DataTableHead, useColSort, } from "../analysis/DataTable.js";
38
38
  import { ShiftStart, useShifts } from "./ShiftSettings.js";
39
- import { SkipPrevious as SkipPrevIcon, SkipNext as SkipNextIcon, ImportExport } from "@mui/icons-material";
39
+ import { SkipPrevious as SkipPrevIcon, SkipNext as SkipNextIcon, ImportExport, } from "@mui/icons-material";
40
40
  import { LazySeq, OrderedMap } from "@seedtactics/immutable-collections";
41
41
  import { last30SimProduction } from "../../cell-status/sim-production.js";
42
- import { isLaborCycle, last30StationCycles } from "../../cell-status/station-cycles.js";
42
+ import { isLaborCycle, last30StationCycles, } from "../../cell-status/station-cycles.js";
43
43
  import { PartIdenticon } from "../station-monitor/Material.js";
44
44
  import { useSetTitle } from "../routes.js";
45
45
  import { useAtomValue } from "jotai";
@@ -91,7 +91,7 @@ function useRows(day) {
91
91
  .mapValues((p) => ({
92
92
  planned: p,
93
93
  }))
94
- .adjust(completedByDay, (plan, comp) => (plan ? { ...plan, completed: comp } : { completed: comp }))
94
+ .adjust(completedByDay, (plan, comp) => plan ? { ...plan, completed: comp } : { completed: comp })
95
95
  .toAscLazySeq()
96
96
  .map(([partName, { planned: plannedCounts, completed: completedCounts }]) => ({
97
97
  part: partName,
@@ -128,7 +128,9 @@ function sortJobs(jobs, sortBy, order, showArchived) {
128
128
  sortCol = (j) => j.remainingQty;
129
129
  break;
130
130
  }
131
- const toShow = showArchived ? LazySeq.of(jobs) : LazySeq.of(jobs).filter((j) => j.inProcJob !== null);
131
+ const toShow = showArchived
132
+ ? LazySeq.of(jobs)
133
+ : LazySeq.of(jobs).filter((j) => j.inProcJob !== null);
132
134
  return toShow.toSortedArray(order === "asc" ? { asc: sortCol } : { desc: sortCol });
133
135
  }
134
136
  function SortColHeader(props) {
@@ -1,4 +1,4 @@
1
1
  export type CycleType = "labor" | "machine";
2
2
  export declare function RecentStationCycleChart({ ty }: {
3
3
  ty: CycleType;
4
- }): import("react/jsx-runtime").JSX.Element;
4
+ }): import("react").JSX.Element;
@@ -52,7 +52,7 @@ import { useSetTitle } from "../routes.js";
52
52
  import { atom, useAtom, useAtomValue, useSetAtom } from "jotai";
53
53
  import { fmsInformation } from "../../network/server-settings.js";
54
54
  function hasLoadCycleOperations(point) {
55
- return "operations" in point && (point.operations === undefined || Array.isArray(point.operations));
55
+ return ("operations" in point && (point.operations === undefined || Array.isArray(point.operations)));
56
56
  }
57
57
  const lulShowGraphAtom = atom(true);
58
58
  const machineShowGraphAtom = atom(true);
@@ -3,4 +3,4 @@ export type ShiftStartAndEnd = {
3
3
  readonly end: Date;
4
4
  };
5
5
  export declare function useShifts(day: Date): ReadonlyArray<ShiftStartAndEnd>;
6
- export declare function ShiftStart(): import("react/jsx-runtime").JSX.Element;
6
+ export declare function ShiftStart(): import("react").JSX.Element;
@@ -1 +1 @@
1
- export declare function SimDayUsagePage(): import("react/jsx-runtime").JSX.Element;
1
+ export declare function SimDayUsagePage(): import("react").JSX.Element;
@@ -72,7 +72,9 @@ const ToolTableRow = styled(TableRow, { shouldForwardProp: (prop) => prop.toStri
72
72
  },
73
73
  backgroundColor: $highlightedRow ? "#BDBDBD" : $noticeRow ? "#E0E0E0" : undefined,
74
74
  }));
75
- const MachineDetailTableRow = styled(TableRow, { shouldForwardProp: (prop) => prop.toString()[0] !== "$" })(({ $borderBottom }) => ({
75
+ const MachineDetailTableRow = styled(TableRow, {
76
+ shouldForwardProp: (prop) => prop.toString()[0] !== "$",
77
+ })(({ $borderBottom }) => ({
76
78
  ...($borderBottom && {
77
79
  "&:not(:last-child)": {
78
80
  borderBottom: "2px solid black",
@@ -133,7 +135,8 @@ function ToolSummaryHeader() {
133
135
  const cntsWereEstimated = useAtomValue(toolReportEstimatedToolCounts);
134
136
  return (_jsxs(ToolTableRow, { children: [_jsx(TableCell, {}), _jsx(TableCell, { children: "Tool" }), _jsx(TableCell, { align: "right", children: _jsx(Tooltip, { title: "Expected use for all currently scheduled parts." +
135
137
  (cntsWereEstimated ? " Counts are estimates." : ""), children: _jsx("span", { children: "Scheduled Use" }) }) }), _jsx(TableCell, { align: "right", children: _jsx(Tooltip, { title: "Remaining use summed over all machines which have a scheduled part." +
136
- (cntsWereEstimated ? " Counts are estimates." : ""), children: _jsx("span", { children: "Total Remaining Use" }) }) }), _jsx(TableCell, { align: "right", children: _jsx(Tooltip, { title: "Machine with the least remaining use." + (cntsWereEstimated ? " Counts are estimates." : ""), children: _jsx("span", { children: "Smallest Remaining Use" }) }) }), _jsx(TableCell, {})] }));
138
+ (cntsWereEstimated ? " Counts are estimates." : ""), children: _jsx("span", { children: "Total Remaining Use" }) }) }), _jsx(TableCell, { align: "right", children: _jsx(Tooltip, { title: "Machine with the least remaining use." +
139
+ (cntsWereEstimated ? " Counts are estimates." : ""), children: _jsx("span", { children: "Smallest Remaining Use" }) }) }), _jsx(TableCell, {})] }));
137
140
  }
138
141
  function ToolSummaryRow({ tool }) {
139
142
  const [open, setOpen] = useState(false);
@@ -144,11 +147,17 @@ function ToolSummaryRow({ tool }) {
144
147
  const totalRemainCnt = machinesWithSomePart.sumBy((m) => m.remainingCnt ?? 0);
145
148
  const minRemainMin = machinesWithSomePart
146
149
  .groupBy((m) => m.machineName)
147
- .map(([mach, tools]) => ({ mach, remainMin: LazySeq.of(tools).sumBy((m) => m.remainingMinutes ?? 0) }))
150
+ .map(([mach, tools]) => ({
151
+ mach,
152
+ remainMin: LazySeq.of(tools).sumBy((m) => m.remainingMinutes ?? 0),
153
+ }))
148
154
  .minBy(({ remainMin }) => remainMin);
149
155
  const minRemainCnt = machinesWithSomePart
150
156
  .groupBy((m) => m.machineName)
151
- .map(([mach, tools]) => ({ mach, remainCnt: LazySeq.of(tools).sumBy((m) => m.remainingCnt ?? 0) }))
157
+ .map(([mach, tools]) => ({
158
+ mach,
159
+ remainCnt: LazySeq.of(tools).sumBy((m) => m.remainingCnt ?? 0),
160
+ }))
152
161
  .minBy(({ remainCnt }) => remainCnt);
153
162
  const numCols = 6;
154
163
  return (_jsxs(_Fragment, { children: [_jsxs(ToolTableRow, { "$noBorderBottom": true, "$highlightedRow": schUseMin > totalRemainMin || schUseCnt > totalRemainCnt, "$noticeRow": schUseMin <= totalRemainMin &&
@@ -166,7 +175,9 @@ function ToolMachineHeader({ machine }) {
166
175
  const cntsWereEstimated = useAtomValue(toolReportEstimatedToolCounts);
167
176
  const showSerial = useAtomValue(toolReportHasSerial);
168
177
  return (_jsxs(ToolTableRow, { children: [_jsx(TableCell, {}), _jsxs(TableCell, { children: ["Tool In ", machine] }), _jsx(TableCell, { align: "right", children: "Pocket" }), showSerial ? _jsx(TableCell, { children: "Serial" }) : undefined, _jsx(TableCell, { align: "right", children: _jsx(Tooltip, { title: "Expected use for all currently scheduled parts." +
169
- (cntsWereEstimated ? " Counts are estimates." : ""), children: _jsx("span", { children: "Scheduled Use" }) }) }), _jsx(TableCell, { align: "right", children: _jsx(Tooltip, { title: "Current recorded usage of this tool." + (cntsWereEstimated ? " Counts are estimates." : ""), children: _jsx("span", { children: "Current Use" }) }) }), _jsxs(TableCell, { align: "right", children: [_jsx(Tooltip, { title: "Current configured lifetime of this tool." + (cntsWereEstimated ? " Counts are estimates." : ""), children: _jsx("span", { children: "Lifetime" }) }), " "] }), _jsx(TableCell, { align: "right", children: _jsx(Tooltip, { title: "Lifetime minus current use." + (cntsWereEstimated ? " Counts are estimates." : ""), children: _jsx("span", { children: "Remaining Use" }) }) }), _jsx(TableCell, {})] }));
178
+ (cntsWereEstimated ? " Counts are estimates." : ""), children: _jsx("span", { children: "Scheduled Use" }) }) }), _jsx(TableCell, { align: "right", children: _jsx(Tooltip, { title: "Current recorded usage of this tool." +
179
+ (cntsWereEstimated ? " Counts are estimates." : ""), children: _jsx("span", { children: "Current Use" }) }) }), _jsxs(TableCell, { align: "right", children: [_jsx(Tooltip, { title: "Current configured lifetime of this tool." +
180
+ (cntsWereEstimated ? " Counts are estimates." : ""), children: _jsx("span", { children: "Lifetime" }) }), " "] }), _jsx(TableCell, { align: "right", children: _jsx(Tooltip, { title: "Lifetime minus current use." + (cntsWereEstimated ? " Counts are estimates." : ""), children: _jsx("span", { children: "Remaining Use" }) }) }), _jsx(TableCell, {})] }));
170
181
  }
171
182
  function ToolMachineRow({ report, pocket }) {
172
183
  const [open, setOpen] = useState(false);
@@ -188,7 +199,7 @@ export function ToolSummaryTable() {
188
199
  if (tools === null) {
189
200
  return _jsx("div", {});
190
201
  }
191
- return (_jsxs(Table, { stickyHeader: true, children: [_jsx(TableHead, { children: machineFilter === null ? _jsx(ToolSummaryHeader, {}) : _jsx(ToolMachineHeader, { machine: machineFilter }) }), _jsx(TableBody, { children: tools.map((tool) => machineFilter === null ? (_jsx(ToolSummaryRow, { tool: tool }, tool.toolName)) : (_jsx(Fragment, { children: tool.machines
202
+ return (_jsxs(Table, { stickyHeader: true, children: [_jsx(TableHead, { children: machineFilter === null ? (_jsx(ToolSummaryHeader, {})) : (_jsx(ToolMachineHeader, { machine: machineFilter })) }), _jsx(TableBody, { children: tools.map((tool) => machineFilter === null ? (_jsx(ToolSummaryRow, { tool: tool }, tool.toolName)) : (_jsx(Fragment, { children: tool.machines
192
203
  .filter((m) => m.machineName === machineFilter)
193
204
  .map((m) => (_jsx(ToolMachineRow, { report: tool, pocket: m }, m.pocket))) }, tool.toolName))) })] }));
194
205
  }
@@ -1 +1 @@
1
- export declare function WorkorderGantt(): import("react/jsx-runtime").JSX.Element;
1
+ export declare function WorkorderGantt(): import("react").JSX.Element;
@@ -1,2 +1,2 @@
1
- export declare function PartLookupStepper(): import("react/jsx-runtime").JSX.Element;
2
- export declare function QualityMaterialPage(): import("react/jsx-runtime").JSX.Element;
1
+ export declare function PartLookupStepper(): import("react").JSX.Element;
2
+ export declare function QualityMaterialPage(): import("react").JSX.Element;
@@ -34,7 +34,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
34
34
  import { useState } from "react";
35
35
  import { CircularProgress, Stack, TextField, Button, Stepper, Step, StepLabel, Typography, } from "@mui/material";
36
36
  import * as matDetails from "../../cell-status/material-details.js";
37
- import { MaterialDetailTitle, MaterialDetailContent, MaterialLoading } from "../station-monitor/Material.js";
37
+ import { MaterialDetailTitle, MaterialDetailContent, MaterialLoading, } from "../station-monitor/Material.js";
38
38
  import { buildPathString, extractPath } from "../../data/results.inspection.js";
39
39
  import { startOfToday, addDays, startOfDay, endOfDay } from "date-fns";
40
40
  import { ApiException, LogType } from "../../network/api.js";
@@ -1 +1 @@
1
- export declare const QualityPaths: import("react").MemoExoticComponent<() => import("react/jsx-runtime").JSX.Element>;
1
+ export declare const QualityPaths: import("react").MemoExoticComponent<() => import("react").JSX.Element>;
@@ -1 +1 @@
1
- export declare function RecentFailedInspectionsTable(): import("react/jsx-runtime").JSX.Element;
1
+ export declare function RecentFailedInspectionsTable(): import("react").JSX.Element;
@@ -163,7 +163,7 @@ export declare const isDemoAtom: import("jotai").PrimitiveAtom<boolean> & {
163
163
  init: boolean;
164
164
  };
165
165
  export declare const currentRoute: import("jotai").WritableAtom<RouteState, [to: RouteState], void>;
166
- export declare function AppLink({ to, children }: {
166
+ export declare function AppLink({ to, children, }: {
167
167
  to: RouteState;
168
168
  children: React.ReactNode;
169
169
  }): React.ReactElement;
@@ -202,7 +202,7 @@ export const currentRoute = atom((get) => get(currentRouteLocation), (get, set,
202
202
  history.pushState(null, "", routeToUrl(to));
203
203
  }
204
204
  });
205
- export function AppLink({ to, children }) {
205
+ export function AppLink({ to, children, }) {
206
206
  const setRoute = useSetAtom(currentRoute);
207
207
  return createElement(Link, {
208
208
  href: routeToUrl(to),
@@ -2,10 +2,10 @@ import * as api from "../../network/api.js";
2
2
  export declare const bulkAddCastingToQueue: import("jotai").PrimitiveAtom<string | null> & {
3
3
  init: string | null;
4
4
  };
5
- export declare const BulkAddCastingWithoutSerialDialog: import("react").MemoExoticComponent<() => import("react/jsx-runtime").JSX.Element>;
5
+ export declare const BulkAddCastingWithoutSerialDialog: import("react").MemoExoticComponent<() => import("react").JSX.Element>;
6
6
  export interface MultiMaterialDialogProps {
7
7
  readonly material: ReadonlyArray<Readonly<api.IInProcessMaterial>> | null;
8
8
  readonly closeDialog: () => void;
9
9
  readonly operator: string | null;
10
10
  }
11
- export declare const MultiMaterialDialog: import("react").MemoExoticComponent<(props: MultiMaterialDialogProps) => import("react/jsx-runtime").JSX.Element>;
11
+ export declare const MultiMaterialDialog: import("react").MemoExoticComponent<(props: MultiMaterialDialogProps) => import("react").JSX.Element>;
@@ -59,7 +59,9 @@ function WaitingForMaterialDialog() {
59
59
  onAfterPrint: () => setWaiting(null),
60
60
  ignoreGlobalStyles: true,
61
61
  });
62
- let materialToPrint = waiting ? st.material.filter((m) => waiting.materialIds.has(m.materialID)) : null;
62
+ let materialToPrint = waiting
63
+ ? st.material.filter((m) => waiting.materialIds.has(m.materialID))
64
+ : null;
63
65
  if (materialToPrint?.length !== waiting?.materialIds.size) {
64
66
  materialToPrint = null;
65
67
  }
@@ -142,7 +144,9 @@ export const BulkAddCastingWithoutSerialDialog = memo(function BulkAddCastingWit
142
144
  onNewMaterial: (mats) => {
143
145
  setWaitingToPrint({
144
146
  selectedCasting: selectedCasting,
145
- operator: fmsInfo.requireOperatorNamePromptWhenAddingMaterial ? enteredOperator : operator,
147
+ operator: fmsInfo.requireOperatorNamePromptWhenAddingMaterial
148
+ ? enteredOperator
149
+ : operator,
146
150
  materialIds: new Set(mats.map((m) => m.materialID)),
147
151
  });
148
152
  close();
@@ -168,11 +172,11 @@ export const BulkAddCastingWithoutSerialDialog = memo(function BulkAddCastingWit
168
172
  enteredQty === null ||
169
173
  isNaN(enteredQty) ||
170
174
  (fmsInfo.requireOperatorNamePromptWhenAddingMaterial &&
171
- (enteredOperator === null || enteredOperator === "")), onClick: addAndPrint, children: [adding ? _jsx(CircularProgress, { size: 10 }) : undefined, "Add ", enteredQty !== null && !isNaN(enteredQty) ? enteredQty.toString() + " " : "", "to ", queue] })) : (_jsxs(Button, { color: "primary", disabled: selectedCasting === null ||
175
+ (enteredOperator === null || enteredOperator === "")), onClick: addAndPrint, children: [adding ? _jsx(CircularProgress, { size: 10 }) : undefined, "Add ", enteredQty !== null && !isNaN(enteredQty) ? enteredQty.toString() + " " : "", "to", " ", queue] })) : (_jsxs(Button, { color: "primary", disabled: selectedCasting === null ||
172
176
  enteredQty === null ||
173
177
  isNaN(enteredQty) ||
174
178
  (fmsInfo.requireOperatorNamePromptWhenAddingMaterial &&
175
- (enteredOperator === null || enteredOperator === "")), onClick: add, children: ["Add ", enteredQty !== null && !isNaN(enteredQty) ? enteredQty.toString() + " " : "", "to ", queue] })), _jsx(Button, { color: "primary", disabled: adding && printOnAdd, onClick: close, children: "Cancel" })] })] }), _jsx(WaitingForMaterialDialog, {})] }));
179
+ (enteredOperator === null || enteredOperator === "")), onClick: add, children: ["Add ", enteredQty !== null && !isNaN(enteredQty) ? enteredQty.toString() + " " : "", "to", " ", queue] })), _jsx(Button, { color: "primary", disabled: adding && printOnAdd, onClick: close, children: "Cancel" })] })] }), _jsx(WaitingForMaterialDialog, {})] }));
176
180
  });
177
181
  export const MultiMaterialDialog = memo(function MultiMaterialDialog(props) {
178
182
  const fmsInfo = useAtomValue(fmsInformation);
@@ -242,7 +246,9 @@ export const MultiMaterialDialog = memo(function MultiMaterialDialog(props) {
242
246
  }
243
247
  const mat1 = props.material?.[0];
244
248
  return (_jsxs(Dialog, { open: props.material !== null, onClose: close, maxWidth: "md", children: [_jsx(DialogTitle, { children: mat1 && props.material && props.material.length > 0 ? (_jsx(MaterialDetailTitle, { partName: mat1.partName, subtitle: props.material.length.toString() +
245
- (mat1.jobUnique && mat1.jobUnique !== "" ? " assigned to " + mat1.jobUnique : " unassigned") })) : ("Material") }), _jsxs(DialogContent, { children: [loading ? _jsx(CircularProgress, { color: "secondary" }) : _jsx(LogEntries, { entries: events, copyToClipboard: true }), showRemove && props.material ? (_jsx("div", { style: { marginTop: "1em" }, children: _jsx(TextField, { type: "number", variant: "outlined", fullWidth: true, label: "Quantity to Remove", slotProps: { htmlInput: { min: "1", max: props.material.length.toString() } }, value: isNaN(removeCnt) ? "" : removeCnt, onChange: (e) => setRemoveCnt(parseInt(e.target.value)) }) })) : undefined] }), _jsxs(DialogActions, { children: [props.material && props.material.length > 0 && fmsInfo.usingLabelPrinterForSerials ? (fmsInfo.useClientPrinterForLabels ? (_jsx(PrintOnClientButton, { mat: props.material || [], materialName: rawMatName, operator: lastOperator })) : (_jsx(Button, { color: "primary", disabled: printingLabel, onClick: () => props.material && props.material.length > 0
249
+ (mat1.jobUnique && mat1.jobUnique !== ""
250
+ ? " assigned to " + mat1.jobUnique
251
+ : " unassigned") })) : ("Material") }), _jsxs(DialogContent, { children: [loading ? (_jsx(CircularProgress, { color: "secondary" })) : (_jsx(LogEntries, { entries: events, copyToClipboard: true })), showRemove && props.material ? (_jsx("div", { style: { marginTop: "1em" }, children: _jsx(TextField, { type: "number", variant: "outlined", fullWidth: true, label: "Quantity to Remove", slotProps: { htmlInput: { min: "1", max: props.material.length.toString() } }, value: isNaN(removeCnt) ? "" : removeCnt, onChange: (e) => setRemoveCnt(parseInt(e.target.value)) }) })) : undefined] }), _jsxs(DialogActions, { children: [props.material && props.material.length > 0 && fmsInfo.usingLabelPrinterForSerials ? (fmsInfo.useClientPrinterForLabels ? (_jsx(PrintOnClientButton, { mat: props.material || [], materialName: rawMatName, operator: lastOperator })) : (_jsx(Button, { color: "primary", disabled: printingLabel, onClick: () => props.material && props.material.length > 0
246
252
  ? printLabel({
247
253
  materialId: props.material[0].materialID,
248
254
  proc: 0,
@@ -127,7 +127,9 @@ export function Closeout({ forceSingleColumn }) {
127
127
  const uncompleted = [];
128
128
  const closed = [];
129
129
  for (const m of matSummary.matsById.values()) {
130
- if (m.completed_last_proc_machining === true && m.last_unload_time && m.last_unload_time >= cutoff) {
130
+ if (m.completed_last_proc_machining === true &&
131
+ m.last_unload_time &&
132
+ m.last_unload_time >= cutoff) {
131
133
  if (m.closeout_completed === undefined) {
132
134
  uncompleted.push(m);
133
135
  }
@@ -151,7 +153,9 @@ export function Closeout({ forceSingleColumn }) {
151
153
  minHeight: forceSingleColumn ? undefined : { md: "calc(100vh - 64px)" },
152
154
  width: forceSingleColumn ? "100%" : { md: "50vw" },
153
155
  borderRight: forceSingleColumn ? undefined : { md: "1px solid black" },
154
- borderBottom: forceSingleColumn ? "1px solid black" : { sm: "1px solid black", md: "none" },
156
+ borderBottom: forceSingleColumn
157
+ ? "1px solid black"
158
+ : { sm: "1px solid black", md: "none" },
155
159
  }, children: [_jsx(Typography, { variant: "h4", children: "Recently Completed" }), _jsx(Box, { sx: {
156
160
  display: "flex",
157
161
  justifyContent: "flex-start",
@@ -100,7 +100,9 @@ export function Inspection({ focusInspectionType, forceSingleColumn }) {
100
100
  minHeight: forceSingleColumn ? undefined : { md: "calc(100vh - 64px)" },
101
101
  width: forceSingleColumn ? "100%" : { md: "50vw" },
102
102
  borderRight: forceSingleColumn ? undefined : { md: "1px solid black" },
103
- borderBottom: forceSingleColumn ? "1px solid black" : { sm: "1px solid black", md: "none" },
103
+ borderBottom: forceSingleColumn
104
+ ? "1px solid black"
105
+ : { sm: "1px solid black", md: "none" },
104
106
  }, children: [_jsx(Typography, { variant: "h4", children: "Parts to Inspect" }), _jsx(Box, { sx: {
105
107
  display: "flex",
106
108
  justifyContent: "flex-start",
@@ -10,12 +10,12 @@ export type InvalidateCycleProps = {
10
10
  readonly st: InvalidateCycleState | null;
11
11
  readonly setState: (s: InvalidateCycleState | null) => void;
12
12
  };
13
- export declare function InvalidateCycleDialogContent(props: InvalidateCycleProps): import("react/jsx-runtime").JSX.Element;
13
+ export declare function InvalidateCycleDialogContent(props: InvalidateCycleProps): import("react").JSX.Element;
14
14
  export declare function InvalidateCycleDialogButton(props: InvalidateCycleProps & {
15
15
  readonly onClose: () => void;
16
16
  readonly ignoreOperator?: boolean;
17
17
  readonly loadStation?: boolean;
18
- }): import("react/jsx-runtime").JSX.Element | null;
18
+ }): import("react").JSX.Element | null;
19
19
  interface SwapMaterial {
20
20
  readonly selectedMatToSwap: Readonly<IInProcessMaterial> | null;
21
21
  readonly updating: boolean;
@@ -29,5 +29,5 @@ export declare function SwapMaterialDialogContent(props: SwapMaterialProps): Rea
29
29
  export declare function SwapMaterialButtons(props: SwapMaterialProps & {
30
30
  readonly onClose: () => void;
31
31
  readonly ignoreOperator?: boolean;
32
- }): import("react/jsx-runtime").JSX.Element | null;
32
+ }): import("react").JSX.Element | null;
33
33
  export {};
@@ -91,7 +91,9 @@ function InvalidateSelect(props) {
91
91
  .map((p) => (_jsxs(MenuItem, { value: "proc" + p.toString(), children: ["Invalidate Process ", p] }, p)))
92
92
  .toRArray()
93
93
  : [],
94
- hasProc && hasChangeMat ? [_jsx(ListSubheader, { children: "Change Material Type" }, "matheader")] : [],
94
+ hasProc && hasChangeMat
95
+ ? [_jsx(ListSubheader, { children: "Change Material Type" }, "matheader")]
96
+ : [],
95
97
  hasChangeMat
96
98
  ? [
97
99
  ...castings.map((c) => (_jsxs(MenuItem, { value: "rawMat" + c, children: ["Invalidate Everything And Change to ", c] }, "rawMat" + c))),
@@ -165,7 +167,9 @@ export function InvalidateCycleDialogButton(props) {
165
167
  }
166
168
  }
167
169
  return (_jsxs(_Fragment, { children: [props.st === null ? (_jsx(Button, { color: "primary", onClick: showInvalidate, children: "Invalidate Cycle" })) : undefined, props.st !== null ? (_jsx(Button, { color: "primary", onClick: invalidateCycle, disabled: props.st.updating ||
168
- (props.st.process === null && props.st.changeRawMat === null && props.st.changeJobUnique === null), children: props.st.process !== null
170
+ (props.st.process === null &&
171
+ props.st.changeRawMat === null &&
172
+ props.st.changeJobUnique === null), children: props.st.process !== null
169
173
  ? "Invalidate Process " + props.st.process.toString()
170
174
  : props.st.changeJobUnique !== null
171
175
  ? "Invalidate And Change To Job " + props.st.changeJobUnique
@@ -243,7 +247,10 @@ export function SwapMaterialButtons(props) {
243
247
  return null;
244
248
  }
245
249
  function swapMats() {
246
- if (curMat && props.st && props.st.selectedMatToSwap && curMat.location.type === LocType.OnPallet) {
250
+ if (curMat &&
251
+ props.st &&
252
+ props.st.selectedMatToSwap &&
253
+ curMat.location.type === LocType.OnPallet) {
247
254
  props.setState({ selectedMatToSwap: props.st.selectedMatToSwap, updating: true });
248
255
  JobsBackend.swapMaterialOnPallet(curMat.materialID, operator, {
249
256
  pallet: curMat.location.palletNum ?? 0,
@@ -43,7 +43,7 @@ import { durationToMinutes } from "../../util/parseISODuration.js";
43
43
  import { materialDialogOpen } from "../../cell-status/material-details.js";
44
44
  import { currentStatus } from "../../cell-status/current-status.js";
45
45
  import { selectedAnalysisPeriod } from "../../network/load-specific-month.js";
46
- import { last30MaterialSummary, specificMonthMaterialSummary } from "../../cell-status/material-summary.js";
46
+ import { last30MaterialSummary, specificMonthMaterialSummary, } from "../../cell-status/material-summary.js";
47
47
  import { LazySeq, HashSet } from "@seedtactics/immutable-collections";
48
48
  import { basketDisplayName, loadStationDisplayName } from "../../cell-status/station-cycles.js";
49
49
  import { MoreHoriz } from "@mui/icons-material";
@@ -70,7 +70,9 @@ function JobDisplay(props) {
70
70
  const displayLoadStations = (stations) => stations.map((station) => loadStationDisplayName(station, fmsInfo.loadStationNames)).join(", ");
71
71
  return (_jsx("div", { children: _jsxs("dl", { children: [_jsx("dt", { children: "Job ID" }), _jsx("dd", { children: props.job.unique }), _jsx("dt", { children: "Time" }), _jsxs("dd", { children: [displayDate(props.job.routeStartUTC), " to ", displayDate(props.job.routeEndUTC)] }), props.job.cycles ? (_jsxs(_Fragment, { children: [_jsx("dt", { children: "Quantity" }), _jsx("dd", { children: props.job.cycles })] })) : undefined, props.job.comment !== undefined && props.job.comment !== "" ? (_jsxs(_Fragment, { children: [_jsx("dt", { children: "Comment" }), _jsx("dd", { children: props.job.comment })] })) : undefined, props.job.assignedWorkorders && props.job.assignedWorkorders.length > 0 ? (_jsxs(_Fragment, { children: [_jsx("dt", { children: "Workorders" }), _jsx("dd", { children: props.job.assignedWorkorders.join(", ") })] })) : undefined, props.job.procsAndPaths.map((proc, procIdx) => (_jsx(Fragment, { children: proc.paths.map((path, pathIdx) => (_jsxs(Fragment, { children: [_jsxs("dt", { children: ["Process ", procIdx + 1, proc.paths.length > 1 ? ", Path " + (pathIdx + 1).toString() : undefined] }), _jsxs("dd", { children: [_jsx(JobCompleted, { job: props.job, procIdx: procIdx, pathIdx: pathIdx }), _jsxs("div", { children: ["Estimated Start: ", displayDate(path.simulatedStartingUTC)] }), _jsxs("div", { children: ["Pallets: ", (path.palletNums ?? []).map((p) => p.toString()).join(",")] }), path.fixture ? (_jsxs("div", { children: ["Fixture: ", path.fixture, " ", path.face !== undefined ? ", Face: " + path.face.toString() : undefined] })) : undefined, path.inputQueue ? _jsxs("div", { children: ["Input Queue: ", path.inputQueue] }) : undefined, path.casting ? _jsxs("div", { children: ["Raw Material: ", path.casting] }) : undefined, proc.basketLoadStations &&
72
72
  proc.basketLoadStations.length > 0 &&
73
- proc.expectedBasketLoadTime ? (_jsxs("div", { children: ["Basket Load Stations: ", displayLoadStations(proc.basketLoadStations), " |", " ", durationToMinutes(proc.expectedBasketLoadTime).toFixed(1), " mins", path.partsPerPallet > 1 ? " per piece" : ""] })) : undefined, _jsxs("div", { children: ["Load Stations: ", displayLoadStations(path.load), " |", " ", durationToMinutes(path.expectedLoadTime).toFixed(1), " mins", path.partsPerPallet > 1 ? " per piece" : ""] }), path.stops.map((stop, stopIdx) => (_jsx(Fragment, { children: _jsxs("div", { children: [stop.stationGroup, ": ", (stop.stationNums ?? []).join(","), " | Program: ", stop.program, stop.programRevision ? " rev" + stop.programRevision.toString() : undefined, " |", " ", (durationToMinutes(stop.expectedCycleTime) / path.partsPerPallet).toFixed(1), " mins", path.partsPerPallet > 1 ? " per piece" : ""] }) }, stopIdx))), _jsxs("div", { children: ["Unload Stations: ", displayLoadStations(path.unload), " |", " ", durationToMinutes(path.expectedUnloadTime).toFixed(1), " mins", path.partsPerPallet > 1 ? " per piece" : ""] }), proc.basketUnloadStations &&
73
+ proc.expectedBasketLoadTime ? (_jsxs("div", { children: ["Basket Load Stations: ", displayLoadStations(proc.basketLoadStations), " |", " ", durationToMinutes(proc.expectedBasketLoadTime).toFixed(1), " mins", path.partsPerPallet > 1 ? " per piece" : ""] })) : undefined, _jsxs("div", { children: ["Load Stations: ", displayLoadStations(path.load), " |", " ", durationToMinutes(path.expectedLoadTime).toFixed(1), " mins", path.partsPerPallet > 1 ? " per piece" : ""] }), path.stops.map((stop, stopIdx) => (_jsx(Fragment, { children: _jsxs("div", { children: [stop.stationGroup, ": ", (stop.stationNums ?? []).join(","), " | Program:", " ", stop.program, stop.programRevision
74
+ ? " rev" + stop.programRevision.toString()
75
+ : undefined, " ", "|", " ", (durationToMinutes(stop.expectedCycleTime) / path.partsPerPallet).toFixed(1), " ", "mins", path.partsPerPallet > 1 ? " per piece" : ""] }) }, stopIdx))), _jsxs("div", { children: ["Unload Stations: ", displayLoadStations(path.unload), " |", " ", durationToMinutes(path.expectedUnloadTime).toFixed(1), " mins", path.partsPerPallet > 1 ? " per piece" : ""] }), proc.basketUnloadStations &&
74
76
  proc.basketUnloadStations.length > 0 &&
75
77
  proc.expectedBasketUnloadTime ? (_jsxs("div", { children: ["Basket Unload Stations: ", displayLoadStations(proc.basketUnloadStations), " |", " ", durationToMinutes(proc.expectedBasketUnloadTime).toFixed(1), " mins", path.partsPerPallet > 1 ? " per piece" : ""] })) : undefined, path.outputQueue ? _jsxs("div", { children: ["Output Queue: ", path.outputQueue] }) : undefined, path.inspections && path.inspections.length > 0 ? (_jsxs("div", { children: ["Inspections: ", path.inspections.map((i) => i.inspectionType).join(",")] })) : undefined] })] }, pathIdx))) }, procIdx)))] }) }));
76
78
  }
@@ -5,6 +5,6 @@ interface LoadStationProps {
5
5
  readonly completed: boolean;
6
6
  readonly whiteBackground?: boolean;
7
7
  }
8
- export declare function LoadStation(props: LoadStationProps): import("react/jsx-runtime").JSX.Element;
8
+ export declare function LoadStation(props: LoadStationProps): import("react").JSX.Element;
9
9
  declare function LoadStationCheckWidth(props: LoadStationProps): ReactNode;
10
10
  export default LoadStationCheckWidth;
@@ -171,7 +171,8 @@ function selectLoadStationAndQueueProps(loadNum, queues, curSt, hideNonLoading)
171
171
  for (const m of curSt.material) {
172
172
  if (pal) {
173
173
  // if loading onto pallet, set elapsed load time, ensure face exists, and set free loading
174
- if (m.action.type === api.ActionType.Loading && m.action.loadOntoPalletNum === pal.palletNum) {
174
+ if (m.action.type === api.ActionType.Loading &&
175
+ m.action.loadOntoPalletNum === pal.palletNum) {
175
176
  if (m.action.elapsedLoadUnloadTime) {
176
177
  elapsedLoadingTime = m.action.elapsedLoadUnloadTime;
177
178
  }
@@ -204,7 +205,8 @@ function selectLoadStationAndQueueProps(loadNum, queues, curSt, hideNonLoading)
204
205
  if (isLoadingToDisplayedTarget(m, pal, activeBasket) && m.action.elapsedLoadUnloadTime) {
205
206
  elapsedLoadingTime = m.action.elapsedLoadUnloadTime;
206
207
  }
207
- if (m.location.type === api.LocType.InBasket && m.location.basketId === activeBasket.basketId) {
208
+ if (m.location.type === api.LocType.InBasket &&
209
+ m.location.basketId === activeBasket.basketId) {
208
210
  if ((m.action.type === api.ActionType.UnloadToCompletedMaterial ||
209
211
  m.action.type === api.ActionType.UnloadToInProcess) &&
210
212
  m.action.elapsedLoadUnloadTime) {
@@ -501,7 +503,8 @@ function InstructionButton({ pallet }) {
501
503
  if (material === null)
502
504
  return null;
503
505
  let type;
504
- if (material.action.type === api.ActionType.Loading && material.action.loadOntoPalletNum === pallet) {
506
+ if (material.action.type === api.ActionType.Loading &&
507
+ material.action.loadOntoPalletNum === pallet) {
505
508
  type = "load";
506
509
  }
507
510
  else if ((material.action.type === api.ActionType.UnloadToInProcess ||
@@ -5,7 +5,7 @@ export declare class PartIdenticon extends PureComponent<{
5
5
  part: string;
6
6
  size?: number;
7
7
  }> {
8
- render(): import("react/jsx-runtime").JSX.Element;
8
+ render(): import("react").JSX.Element;
9
9
  }
10
10
  export type MatCardFontSize = "normal" | "large" | "x-large";
11
11
  export declare function MaterialAction({ mat, displayActionForSinglePallet, fsize, }: {
@@ -13,7 +13,7 @@ export declare function MaterialAction({ mat, displayActionForSinglePallet, fsiz
13
13
  displayActionForSinglePallet?: number;
14
14
  fsize?: MatCardFontSize;
15
15
  }): ReactNode | null;
16
- export declare function WorkorderFromBarcode(): import("react/jsx-runtime").JSX.Element | null;
16
+ export declare function WorkorderFromBarcode(): import("react").JSX.Element | null;
17
17
  export interface MaterialSummaryProps {
18
18
  readonly mat: Readonly<MaterialSummaryAndCompletedData>;
19
19
  readonly inProcMat?: Readonly<api.IInProcessMaterial>;
@@ -43,12 +43,12 @@ export type ShakeProp = {
43
43
  };
44
44
  export declare const InProcMaterial: import("react").MemoExoticComponent<(props: InProcMaterialProps & ShakeProp & {
45
45
  readonly showHandle?: boolean;
46
- }) => import("react/jsx-runtime").JSX.Element>;
46
+ }) => import("react").JSX.Element>;
47
47
  export type SortableMatData = {
48
48
  readonly mat: Readonly<api.IInProcessMaterial>;
49
49
  };
50
- export declare const SortableInProcMaterial: import("react").MemoExoticComponent<(props: InProcMaterialProps & ShakeProp) => import("react/jsx-runtime").JSX.Element>;
51
- export declare function DragOverlayInProcMaterial(props: InProcMaterialProps): import("react/jsx-runtime").JSX.Element;
50
+ export declare const SortableInProcMaterial: import("react").MemoExoticComponent<(props: InProcMaterialProps & ShakeProp) => import("react").JSX.Element>;
51
+ export declare function DragOverlayInProcMaterial(props: InProcMaterialProps): import("react").JSX.Element;
52
52
  export interface MultiMaterialProps {
53
53
  readonly partOrCasting: string;
54
54
  readonly fsize?: MatCardFontSize;
@@ -56,17 +56,17 @@ export interface MultiMaterialProps {
56
56
  readonly material: ReadonlyArray<Readonly<api.IInProcessMaterial>>;
57
57
  onOpen: () => void;
58
58
  }
59
- export declare const MultiMaterial: import("react").MemoExoticComponent<(props: MultiMaterialProps) => import("react/jsx-runtime").JSX.Element>;
59
+ export declare const MultiMaterial: import("react").MemoExoticComponent<(props: MultiMaterialProps) => import("react").JSX.Element>;
60
60
  export declare const MaterialDetailTitle: import("react").MemoExoticComponent<({ partName, serial, subtitle, notes, }: {
61
61
  partName: string;
62
62
  serial?: string | null;
63
63
  subtitle?: string;
64
64
  notes?: boolean;
65
- }) => import("react/jsx-runtime").JSX.Element>;
65
+ }) => import("react").JSX.Element>;
66
66
  export declare const MaterialDetailContent: import("react").MemoExoticComponent<({ highlightProcsGreaterOrEqualTo, }: {
67
67
  highlightProcsGreaterOrEqualTo?: number;
68
- }) => import("react/jsx-runtime").JSX.Element | null>;
69
- export declare function MaterialLoading(): import("react/jsx-runtime").JSX.Element | null;
68
+ }) => import("react").JSX.Element | null>;
69
+ export declare function MaterialLoading(): import("react").JSX.Element | null;
70
70
  export interface MaterialDialogProps {
71
71
  buttons?: ReactNode;
72
72
  onClose?: () => void;
@@ -74,4 +74,4 @@ export interface MaterialDialogProps {
74
74
  extraDialogElements?: ReactNode;
75
75
  highlightProcsGreaterOrEqualTo?: number;
76
76
  }
77
- export declare const MaterialDialog: import("react").MemoExoticComponent<(props: MaterialDialogProps) => import("react/jsx-runtime").JSX.Element>;
77
+ export declare const MaterialDialog: import("react").MemoExoticComponent<(props: MaterialDialogProps) => import("react").JSX.Element>;