@seedtactics/insight-client 16.4.0
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 +37 -0
- package/dist/cell-status/buffers.d.ts +36 -0
- package/dist/cell-status/buffers.js +127 -0
- package/dist/cell-status/current-status.d.ts +30 -0
- package/dist/cell-status/current-status.js +200 -0
- package/dist/cell-status/estimated-cycle-times.d.ts +41 -0
- package/dist/cell-status/estimated-cycle-times.js +257 -0
- package/dist/cell-status/inspections.d.ts +55 -0
- package/dist/cell-status/inspections.js +213 -0
- package/dist/cell-status/loading.d.ts +26 -0
- package/dist/cell-status/loading.js +112 -0
- package/dist/cell-status/material-details.d.ts +116 -0
- package/dist/cell-status/material-details.js +422 -0
- package/dist/cell-status/material-summary.d.ts +52 -0
- package/dist/cell-status/material-summary.js +312 -0
- package/dist/cell-status/names.d.ts +19 -0
- package/dist/cell-status/names.js +134 -0
- package/dist/cell-status/pallet-cycles.d.ts +24 -0
- package/dist/cell-status/pallet-cycles.js +78 -0
- package/dist/cell-status/rebookings.d.ts +30 -0
- package/dist/cell-status/rebookings.js +139 -0
- package/dist/cell-status/scheduled-jobs.d.ts +18 -0
- package/dist/cell-status/scheduled-jobs.js +94 -0
- package/dist/cell-status/sim-day-usage.d.ts +14 -0
- package/dist/cell-status/sim-day-usage.js +54 -0
- package/dist/cell-status/sim-production.d.ts +22 -0
- package/dist/cell-status/sim-production.js +91 -0
- package/dist/cell-status/sim-station-use.d.ts +25 -0
- package/dist/cell-status/sim-station-use.js +71 -0
- package/dist/cell-status/station-cycles.d.ts +34 -0
- package/dist/cell-status/station-cycles.js +145 -0
- package/dist/cell-status/tool-replacements.d.ts +44 -0
- package/dist/cell-status/tool-replacements.js +155 -0
- package/dist/cell-status/tool-usage.d.ts +25 -0
- package/dist/cell-status/tool-usage.js +95 -0
- package/dist/components/App.d.ts +15 -0
- package/dist/components/App.js +549 -0
- package/dist/components/AxisAndGrid.d.ts +51 -0
- package/dist/components/AxisAndGrid.js +47 -0
- package/dist/components/BarcodeScanning.d.ts +6 -0
- package/dist/components/BarcodeScanning.js +150 -0
- package/dist/components/ChartTooltip.d.ts +28 -0
- package/dist/components/ChartTooltip.js +95 -0
- package/dist/components/ChooseMode.d.ts +18 -0
- package/dist/components/ChooseMode.js +136 -0
- package/dist/components/ChooseOperator.d.ts +1 -0
- package/dist/components/ChooseOperator.js +93 -0
- package/dist/components/ErrorsAndLoading.d.ts +9 -0
- package/dist/components/ErrorsAndLoading.js +55 -0
- package/dist/components/LoadingIcon.d.ts +1 -0
- package/dist/components/LoadingIcon.js +48 -0
- package/dist/components/LogEntry.d.ts +16 -0
- package/dist/components/LogEntry.js +365 -0
- package/dist/components/ManualSerialEntry.d.ts +5 -0
- package/dist/components/ManualSerialEntry.js +91 -0
- package/dist/components/MonthSelect.d.ts +6 -0
- package/dist/components/MonthSelect.js +67 -0
- package/dist/components/Navigation.d.ts +23 -0
- package/dist/components/Navigation.js +120 -0
- package/dist/components/VerboseLogging.d.ts +1 -0
- package/dist/components/VerboseLogging.js +47 -0
- package/dist/components/analysis/AnalysisSelectToolbar.d.ts +1 -0
- package/dist/components/analysis/AnalysisSelectToolbar.js +55 -0
- package/dist/components/analysis/BufferChart.d.ts +1 -0
- package/dist/components/analysis/BufferChart.js +139 -0
- package/dist/components/analysis/CostPerPiece.d.ts +2 -0
- package/dist/components/analysis/CostPerPiece.js +175 -0
- package/dist/components/analysis/CycleChart.d.ts +42 -0
- package/dist/components/analysis/CycleChart.js +281 -0
- package/dist/components/analysis/DataTable.d.ts +83 -0
- package/dist/components/analysis/DataTable.js +215 -0
- package/dist/components/analysis/EfficiencyPage.d.ts +2 -0
- package/dist/components/analysis/EfficiencyPage.js +138 -0
- package/dist/components/analysis/HeatChart.d.ts +22 -0
- package/dist/components/analysis/HeatChart.js +161 -0
- package/dist/components/analysis/InspectionDataTable.d.ts +10 -0
- package/dist/components/analysis/InspectionDataTable.js +148 -0
- package/dist/components/analysis/InspectionSankey.d.ts +12 -0
- package/dist/components/analysis/InspectionSankey.js +140 -0
- package/dist/components/analysis/PalletCycleCards.d.ts +1 -0
- package/dist/components/analysis/PalletCycleCards.js +137 -0
- package/dist/components/analysis/PartCycleCards.d.ts +2 -0
- package/dist/components/analysis/PartCycleCards.js +331 -0
- package/dist/components/analysis/QualityPage.d.ts +1 -0
- package/dist/components/analysis/QualityPage.js +49 -0
- package/dist/components/analysis/ScheduleHistory.d.ts +3 -0
- package/dist/components/analysis/ScheduleHistory.js +108 -0
- package/dist/components/analysis/StationDataTable.d.ts +25 -0
- package/dist/components/analysis/StationDataTable.js +246 -0
- package/dist/components/analysis/ToolReplacements.d.ts +1 -0
- package/dist/components/analysis/ToolReplacements.js +370 -0
- package/dist/components/operations/AllMaterial.d.ts +5 -0
- package/dist/components/operations/AllMaterial.js +267 -0
- package/dist/components/operations/ChartRangeEdit.d.ts +4 -0
- package/dist/components/operations/ChartRangeEdit.js +148 -0
- package/dist/components/operations/CloseoutReport.d.ts +2 -0
- package/dist/components/operations/CloseoutReport.js +172 -0
- package/dist/components/operations/CompletedParts.d.ts +2 -0
- package/dist/components/operations/CompletedParts.js +286 -0
- package/dist/components/operations/CurrentWorkorders.d.ts +3 -0
- package/dist/components/operations/CurrentWorkorders.js +368 -0
- package/dist/components/operations/Dashboard.d.ts +2 -0
- package/dist/components/operations/Dashboard.js +90 -0
- package/dist/components/operations/OEEChart.d.ts +10 -0
- package/dist/components/operations/OEEChart.js +173 -0
- package/dist/components/operations/Outliers.d.ts +4 -0
- package/dist/components/operations/Outliers.js +69 -0
- package/dist/components/operations/ProgramHighlight.d.ts +1 -0
- package/dist/components/operations/ProgramHighlight.js +9 -0
- package/dist/components/operations/Programs.d.ts +5 -0
- package/dist/components/operations/Programs.js +363 -0
- package/dist/components/operations/Rebookings.d.ts +1 -0
- package/dist/components/operations/Rebookings.js +213 -0
- package/dist/components/operations/RecentCycleChart.d.ts +4 -0
- package/dist/components/operations/RecentCycleChart.js +240 -0
- package/dist/components/operations/RecentProduction.d.ts +2 -0
- package/dist/components/operations/RecentProduction.js +213 -0
- package/dist/components/operations/RecentSchedules.d.ts +12 -0
- package/dist/components/operations/RecentSchedules.js +180 -0
- package/dist/components/operations/RecentStationCycles.d.ts +4 -0
- package/dist/components/operations/RecentStationCycles.js +159 -0
- package/dist/components/operations/ShiftSettings.d.ts +6 -0
- package/dist/components/operations/ShiftSettings.js +134 -0
- package/dist/components/operations/SimDayUsage.d.ts +1 -0
- package/dist/components/operations/SimDayUsage.js +133 -0
- package/dist/components/operations/ToolReport.d.ts +3 -0
- package/dist/components/operations/ToolReport.js +233 -0
- package/dist/components/operations/WorkorderGantt.d.ts +1 -0
- package/dist/components/operations/WorkorderGantt.js +124 -0
- package/dist/components/quality/QualityMaterial.d.ts +2 -0
- package/dist/components/quality/QualityMaterial.js +169 -0
- package/dist/components/quality/QualityPaths.d.ts +1 -0
- package/dist/components/quality/QualityPaths.js +53 -0
- package/dist/components/quality/RecentFailedInspections.d.ts +1 -0
- package/dist/components/quality/RecentFailedInspections.js +123 -0
- package/dist/components/routes.d.ts +170 -0
- package/dist/components/routes.js +301 -0
- package/dist/components/station-monitor/BulkRawMaterial.d.ts +11 -0
- package/dist/components/station-monitor/BulkRawMaterial.js +251 -0
- package/dist/components/station-monitor/Closeout.d.ts +5 -0
- package/dist/components/station-monitor/Closeout.js +162 -0
- package/dist/components/station-monitor/CustomStationMonitorDialog.d.ts +1 -0
- package/dist/components/station-monitor/CustomStationMonitorDialog.js +55 -0
- package/dist/components/station-monitor/Inspection.d.ts +8 -0
- package/dist/components/station-monitor/Inspection.js +164 -0
- package/dist/components/station-monitor/InvalidateCycle.d.ts +33 -0
- package/dist/components/station-monitor/InvalidateCycle.js +262 -0
- package/dist/components/station-monitor/JobDetails.d.ts +7 -0
- package/dist/components/station-monitor/JobDetails.js +108 -0
- package/dist/components/station-monitor/LoadStation.d.ts +10 -0
- package/dist/components/station-monitor/LoadStation.js +450 -0
- package/dist/components/station-monitor/Material.d.ts +77 -0
- package/dist/components/station-monitor/Material.js +489 -0
- package/dist/components/station-monitor/MoveMaterialArrows.d.ts +11 -0
- package/dist/components/station-monitor/MoveMaterialArrows.js +118 -0
- package/dist/components/station-monitor/PrintedLabel.d.ts +29 -0
- package/dist/components/station-monitor/PrintedLabel.js +166 -0
- package/dist/components/station-monitor/QuarantineButton.d.ts +4 -0
- package/dist/components/station-monitor/QuarantineButton.js +184 -0
- package/dist/components/station-monitor/Queues.d.ts +23 -0
- package/dist/components/station-monitor/Queues.js +312 -0
- package/dist/components/station-monitor/QueuesAddMaterial.d.ts +30 -0
- package/dist/components/station-monitor/QueuesAddMaterial.js +248 -0
- package/dist/components/station-monitor/SelectInspType.d.ts +2 -0
- package/dist/components/station-monitor/SelectInspType.js +99 -0
- package/dist/components/station-monitor/SelectWorkorder.d.ts +4 -0
- package/dist/components/station-monitor/SelectWorkorder.js +100 -0
- package/dist/components/station-monitor/StationToolbar.d.ts +3 -0
- package/dist/components/station-monitor/StationToolbar.js +168 -0
- package/dist/components/station-monitor/SystemOverview.d.ts +46 -0
- package/dist/components/station-monitor/SystemOverview.js +439 -0
- package/dist/components/station-monitor/Whiteboard.d.ts +10 -0
- package/dist/components/station-monitor/Whiteboard.js +67 -0
- package/dist/data/all-material-bins.d.ts +45 -0
- package/dist/data/all-material-bins.js +224 -0
- package/dist/data/chart-times.d.ts +20 -0
- package/dist/data/chart-times.js +99 -0
- package/dist/data/cost-per-piece.d.ts +32 -0
- package/dist/data/cost-per-piece.js +183 -0
- package/dist/data/current-cycles.d.ts +13 -0
- package/dist/data/current-cycles.js +144 -0
- package/dist/data/inspection-sankey.d.ts +15 -0
- package/dist/data/inspection-sankey.js +147 -0
- package/dist/data/move-arrows.d.ts +48 -0
- package/dist/data/move-arrows.js +217 -0
- package/dist/data/operators.d.ts +2 -0
- package/dist/data/operators.js +44 -0
- package/dist/data/part-summary.d.ts +17 -0
- package/dist/data/part-summary.js +107 -0
- package/dist/data/path-lookup.d.ts +13 -0
- package/dist/data/path-lookup.js +107 -0
- package/dist/data/queue-material.d.ts +46 -0
- package/dist/data/queue-material.js +256 -0
- package/dist/data/results.bufferchart.d.ts +10 -0
- package/dist/data/results.bufferchart.js +90 -0
- package/dist/data/results.completed-parts.d.ts +26 -0
- package/dist/data/results.completed-parts.js +181 -0
- package/dist/data/results.cycles.d.ts +86 -0
- package/dist/data/results.cycles.js +454 -0
- package/dist/data/results.inspection.d.ts +36 -0
- package/dist/data/results.inspection.js +188 -0
- package/dist/data/results.oee.d.ts +40 -0
- package/dist/data/results.oee.js +330 -0
- package/dist/data/results.schedules.d.ts +23 -0
- package/dist/data/results.schedules.js +157 -0
- package/dist/data/tools-programs.d.ts +78 -0
- package/dist/data/tools-programs.js +376 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.js +60 -0
- package/dist/network/api.d.ts +1390 -0
- package/dist/network/api.js +4971 -0
- package/dist/network/backend-mock.d.ts +11 -0
- package/dist/network/backend-mock.js +512 -0
- package/dist/network/backend.d.ts +57 -0
- package/dist/network/backend.js +77 -0
- package/dist/network/load-specific-month.d.ts +13 -0
- package/dist/network/load-specific-month.js +77 -0
- package/dist/network/server-settings.d.ts +12 -0
- package/dist/network/server-settings.js +92 -0
- package/dist/network/websocket.d.ts +4 -0
- package/dist/network/websocket.js +165 -0
- package/dist/renderer.d.ts +8 -0
- package/dist/renderer.js +55 -0
- package/dist/seedtactics-logo.d.ts +2 -0
- package/dist/seedtactics-logo.js +4 -0
- package/dist/util/chart-colors.d.ts +1 -0
- package/dist/util/chart-colors.js +116 -0
- package/dist/util/chart-helpers.d.ts +3 -0
- package/dist/util/chart-helpers.js +51 -0
- package/dist/util/parseISODuration.d.ts +4 -0
- package/dist/util/parseISODuration.js +40 -0
- package/docs/client-efficiency.md +355 -0
- package/docs/client-engineering.md +54 -0
- package/docs/client-launch.md +55 -0
- package/docs/client-operations.md +88 -0
- package/docs/client-quality.md +74 -0
- package/docs/client-sales.md +61 -0
- package/docs/client-scanners.md +41 -0
- package/docs/client-station-monitor.md +149 -0
- package/docs/client-tools-programs.md +74 -0
- package/docs/improve-fms.md +141 -0
- package/docs/makino.md +40 -0
- package/docs/material-quarantine.md +82 -0
- package/docs/material-tracking.md +236 -0
- package/docs/mazak.md +115 -0
- package/docs/niigata.md +228 -0
- package/docs/operator-procedures.md +106 -0
- package/docs/part-instructions.md +63 -0
- package/docs/screenshots/insight-all-material.png +0 -0
- package/docs/screenshots/insight-analysis-pallets.png +0 -0
- package/docs/screenshots/insight-analysis-part-completed.png +0 -0
- package/docs/screenshots/insight-analysis-sankey.png +0 -0
- package/docs/screenshots/insight-analysis-station-oee.png +0 -0
- package/docs/screenshots/insight-buffer-occupancy.png +0 -0
- package/docs/screenshots/insight-choose-analysis-month.png +0 -0
- package/docs/screenshots/insight-closeout.png +0 -0
- package/docs/screenshots/insight-cost-percentages.png +0 -0
- package/docs/screenshots/insight-dashboard.png +0 -0
- package/docs/screenshots/insight-event-custom-view.jpg +0 -0
- package/docs/screenshots/insight-event-viewer.jpg +0 -0
- package/docs/screenshots/insight-inspection.png +0 -0
- package/docs/screenshots/insight-load-station-details.png +0 -0
- package/docs/screenshots/insight-load-station.png +0 -0
- package/docs/screenshots/insight-loadcycle-graph.png +0 -0
- package/docs/screenshots/insight-loadstation-small.jpg +0 -0
- package/docs/screenshots/insight-machinecycle-graph.png +0 -0
- package/docs/screenshots/insight-machinecycle-table.png +0 -0
- package/docs/screenshots/insight-machinecycles.png +0 -0
- package/docs/screenshots/insight-machinehours.png +0 -0
- package/docs/screenshots/insight-machineoutliers.png +0 -0
- package/docs/screenshots/insight-monthly-schedules.png +0 -0
- package/docs/screenshots/insight-operations-material.png +0 -0
- package/docs/screenshots/insight-operations-overview.png +0 -0
- package/docs/screenshots/insight-operations-reports.png +0 -0
- package/docs/screenshots/insight-part-cost.png +0 -0
- package/docs/screenshots/insight-program-report.png +0 -0
- package/docs/screenshots/insight-quality-material-details.png +0 -0
- package/docs/screenshots/insight-quality-material.png +0 -0
- package/docs/screenshots/insight-quality-quarantine.png +0 -0
- package/docs/screenshots/insight-quality-sankey.png +0 -0
- package/docs/screenshots/insight-quality-similar-paths.png +0 -0
- package/docs/screenshots/insight-queue-details.png +0 -0
- package/docs/screenshots/insight-queues-jobs-table.png +0 -0
- package/docs/screenshots/insight-queues.png +0 -0
- package/docs/screenshots/insight-sim-day-usage.png +0 -0
- package/docs/screenshots/insight-station-system-overview-buttons.png +0 -0
- package/docs/screenshots/insight-station-system-overview.png +0 -0
- package/docs/screenshots/insight-system-overview.png +0 -0
- package/docs/screenshots/insight-tool-replacements.png +0 -0
- package/docs/screenshots/insight-tool-report.png +0 -0
- package/docs/screenshots/insight-toolbar-btns.png +0 -0
- package/docs/screenshots/insight-workorder-gantt.png +0 -0
- package/docs/screenshots/insight-workorders.png +0 -0
- package/docs/security.md +131 -0
- package/docs/server-config.md +56 -0
- package/docs/server-errors.md +44 -0
- package/package.json +90 -0
- package/src/index.ts +65 -0
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: Load/Unload Procedures
|
|
3
|
+
nav: Procedures > Operator Load/Unload
|
|
4
|
+
description: >-
|
|
5
|
+
Implement continuous improvement of a flexible machining system by reviewing
|
|
6
|
+
targeted metrics which expose cell efficiency and cost per piece.
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# Load/Unload Procedures
|
|
10
|
+
|
|
11
|
+
FMS Insight provides [targeted pages](client-station-monitor) for operators on the factory floor:
|
|
12
|
+
a page for each load station which shows the material to load or unload, a page for each inspection stand
|
|
13
|
+
showing details about the material to be inspected, a page for the wash station, and finally a page
|
|
14
|
+
for in-process material queue management. These pages use the [whiteboard metaphor](material-tracking)
|
|
15
|
+
for material tracking. We suggest that each station has a dedicated display or tablet with the relevant page
|
|
16
|
+
bookmarked or made the homepage; these pages are designed to work on a touchscreen. In addition, each station
|
|
17
|
+
should have an attached barcode scanner.
|
|
18
|
+
|
|
19
|
+
FMS Insight's load station page will display what the cell controller
|
|
20
|
+
is expecting to happen at the load station. Specifically, the page will display the material
|
|
21
|
+
to load, the material to unload, and the material to transfer between faces (if the pallet has
|
|
22
|
+
multiple faces). If the operator performs all the tasks as specified, the operator presses
|
|
23
|
+
the load button to signal to the cell controller that the load is complete. FMS Insight monitors
|
|
24
|
+
the cell controller and will update the page.
|
|
25
|
+
|
|
26
|
+

|
|
27
|
+
|
|
28
|
+
If queues are used for managing material, the load station screen also can show the queues on the
|
|
29
|
+
right hand side. The specific material that is marked as loaded is the first material in the queue
|
|
30
|
+
which matches the job and route details. The material in the queue can be re-ordered by dragging,
|
|
31
|
+
which allows the operator to control which serial is loaded onto the pallet. Note that because
|
|
32
|
+
the cell controller has already assigned a job to the pallet at the load station, the material
|
|
33
|
+
at the front of the queue will not always be the material that is loaded; the first material which
|
|
34
|
+
matches the job is loaded.
|
|
35
|
+
|
|
36
|
+
## Introducing Raw Material
|
|
37
|
+
|
|
38
|
+
The jobs control how raw material is introduced. If no raw
|
|
39
|
+
material queue is set on the job, the cell controller will assume that raw material is
|
|
40
|
+
always available and bring a pallet to be loaded as soon as it is empty. FMS Insight is watching
|
|
41
|
+
the cell controller and will create new material once the load is complete.
|
|
42
|
+
|
|
43
|
+
Alternatively, the job can be configured with an input queue on the first process. In this case,
|
|
44
|
+
the contents of the queue control when the cell controller will bring a pallet to the load
|
|
45
|
+
station to be loaded. The Queues webpage shows the contents of the queue and allows the operator
|
|
46
|
+
to scan or enter new material into the queue. The page also shows a table of scheduled jobs and
|
|
47
|
+
shows the quantity of parts that still must be loaded.
|
|
48
|
+
|
|
49
|
+

|
|
50
|
+
|
|
51
|
+
The operator should physically bring the casting/raw material to the cell and place it in
|
|
52
|
+
a designated area nearby the load station. Once the material has arrived, the operator
|
|
53
|
+
can click a button on the queues webpage (or scan a barcode) to add the material to the queue.
|
|
54
|
+
FMS Insight supports a variety of techniques controlled by [config settings](server-config):
|
|
55
|
+
adding raw material assigned to a specific job, adding raw material with or without a serial,
|
|
56
|
+
or bulk adding a large quantity of material.
|
|
57
|
+
|
|
58
|
+
Each physical location on the shop floor which holds material should correspond to a queue
|
|
59
|
+
in FMS Insight. In addition, each queue should have a dedicated display or tablet mounted
|
|
60
|
+
on the shop floor right next to the queue. This display should have the queues page
|
|
61
|
+
bookmarked or set as the homepage and only show the queues page. This allows the operators
|
|
62
|
+
and supervisors to quickly check at a glance that the material on the shop floor matches
|
|
63
|
+
the material FMS Insight records as in the queue.
|
|
64
|
+
|
|
65
|
+
## Quarantine Material
|
|
66
|
+
|
|
67
|
+
FMS Insight optionally supports the ability to [quarantine material](material-quarantine).
|
|
68
|
+
Quarantined material is material that is temporarily removed from the cell for re-machining,
|
|
69
|
+
more detailed inspection, or some other rework. Material can be quarantined on the queues
|
|
70
|
+
page by opening the material dialog and clicking a button. This moves the material to
|
|
71
|
+
the quarantine queue where it is visible on the supervisor's material page.
|
|
72
|
+
|
|
73
|
+
Once the material is ready to be re-introduced into the cell, the operator should bring it
|
|
74
|
+
back to the shop floor. Once the material has arrived, the operator can click a button on
|
|
75
|
+
the queues webpage (or scan the barcode) to add the material into the queue. Once it is
|
|
76
|
+
back in the queue, the cell controller will activate a pallet to load the material.
|
|
77
|
+
|
|
78
|
+
## Recovering From Misload
|
|
79
|
+
|
|
80
|
+
The load station page displays the load, unload, or reclamp steps that the cell
|
|
81
|
+
controller is expecting the operator to preform. When the operator presses the ready button,
|
|
82
|
+
both the cell controller and FMS Insight (which is watching the cell controller) assumes
|
|
83
|
+
that these instructions took place. FMS Insight will take the material from the input queue
|
|
84
|
+
and record it as loaded onto the pallet. The cell controller will begin moving the pallet
|
|
85
|
+
to the machine.
|
|
86
|
+
|
|
87
|
+
If for whatever reason the load instructions can not be followed, ideally the operator should
|
|
88
|
+
edit the cell controller **before** the load is completed. FMS Insight will adjust itself
|
|
89
|
+
based on whatever the cell controller expects to happen and only at the time that the load
|
|
90
|
+
is completed is anything finalized and recorded.
|
|
91
|
+
|
|
92
|
+
If the load button is pressed, the first step is to adjust the status in the cell controller
|
|
93
|
+
to match what actually happened. FMS Insight is watching the cell controller and when
|
|
94
|
+
the pallet status is adjusted, FMS Insight will move any material that was thought to
|
|
95
|
+
be loaded on the pallet to the quarantine queue. That material can then be re-introduced
|
|
96
|
+
back into the queue so that the queue in FMS Insight matches the material on the shop floor.
|
|
97
|
+
In addition, FMS Insight allows the ability to invalidate the inadvertent load events that
|
|
98
|
+
were created.
|
|
99
|
+
|
|
100
|
+
Finally, in certain situations depending on the specific configuration of the jobs and queues,
|
|
101
|
+
FMS Insight supports a serial swap. FMS Insight assumes the material that is loaded is the
|
|
102
|
+
first material in the queue which matches the job the cell controller expects.
|
|
103
|
+
If the serial actually loaded is different but the job and details match, the supervisor can
|
|
104
|
+
swap the two serials on the supervisor's material page. This is a data-only change and no
|
|
105
|
+
change is made to the cell controller. If a swap cannot be performed, the material must be
|
|
106
|
+
quarantined and invalidated as described above.
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: Operator Instructions
|
|
3
|
+
nav: FMS Insight Server > Instructions
|
|
4
|
+
description: >-
|
|
5
|
+
The FMS Insight server can be configured to display arbitrary load, unload, wash
|
|
6
|
+
and inspection instructions to the operator.
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# FMS Insight Operator Instructions
|
|
10
|
+
|
|
11
|
+
FMS Insight can display load, wash, and inspection instructions to the operator.
|
|
12
|
+
The instructions are documents (typically PDF files) stored on the FMS Insight server,
|
|
13
|
+
and when the user clicks a button in the client the instructions are shown in a new
|
|
14
|
+
browser tab.
|
|
15
|
+
|
|
16
|
+
### Configuration
|
|
17
|
+
|
|
18
|
+
The instruction files are kept on the FMS Insight server in a single directory. The
|
|
19
|
+
directory is configured via a [configuration option](server-config) `InstructionFilePath`
|
|
20
|
+
within the `FMS` section. Once configured, this directory should be filled with files
|
|
21
|
+
that can be displayed in a browser (PDF is a good choice). When the user requests an
|
|
22
|
+
instruction file, the FMS Insight server will search the filename of all files inside this
|
|
23
|
+
directory
|
|
24
|
+
|
|
25
|
+
### Instruction Types
|
|
26
|
+
|
|
27
|
+
There are four instruction types: load, unload, wash, and inspections. Each instruction type will
|
|
28
|
+
search for a different file depending on the page on the
|
|
29
|
+
[station monitor screen](client-station-monitor) and the currently selected part. To create
|
|
30
|
+
instruction files for all possibilities, you should create files as follows:
|
|
31
|
+
|
|
32
|
+
- For each part, create a file with the partname and `load` in the filename. Inside this
|
|
33
|
+
file, add pictures and text to explain how to load and optionally unload the part from the pallet.
|
|
34
|
+
For example, for a part named `ABC123`, you could create a file `ABC123-load.pdf` which contains
|
|
35
|
+
the instructions. When the user is on the Load Station page in FMS Insight, FMS Insight
|
|
36
|
+
will search for a file with the partname and `load` in the filename, find `ABC123-load.pdf`,
|
|
37
|
+
and display it to the user.
|
|
38
|
+
|
|
39
|
+
- For each part, optionally create a file with the partname and `unload` in the filename. If no
|
|
40
|
+
file exists with the partname and `unload` in the filename, FMS Insight will fall back to searching
|
|
41
|
+
for a file with the partname and `load` in the filename. Thus you could just create a single file
|
|
42
|
+
(e.g. `ABC123-load.pdf`) which contains both the load and unload instructions, or you could create
|
|
43
|
+
two separate files (e.g. `ABC123-load.pdf` and `ABC123-unload.pdf`).
|
|
44
|
+
|
|
45
|
+
- For each part, create a file with the partname and `wash` in the filename. Inside this
|
|
46
|
+
file, add pictures and text to explain how to wash and perhaps other tasks at the wash station.
|
|
47
|
+
For example, for a part named `ABC123`, you could create a file `ABC123-wash.pdf`.
|
|
48
|
+
Similar to before, when the user is on the Wash page in FMS Insight, this instruction file
|
|
49
|
+
will be displayed.
|
|
50
|
+
|
|
51
|
+
- For each part and each inspection type, create a file with the partname and the inspection type
|
|
52
|
+
in the filename. For example, for a part named `ABC123` and inspection types `CMM` and `3DScan`,
|
|
53
|
+
you should create two files: `ABC123-CMM.pdf` and `ABC123-3DScan.pdf`. Each file should contain
|
|
54
|
+
pictures and text to explain how to perform the inspection on this part. When the user is on
|
|
55
|
+
the Inspection page, FMS Insight will find the file based on the currently selected part and
|
|
56
|
+
inspection type.
|
|
57
|
+
|
|
58
|
+
### Opening the instructions
|
|
59
|
+
|
|
60
|
+
To open the instructions, click on any material card in the [station monitor page](client-station-monitor). When clicked, a dialog will appear with details about the
|
|
61
|
+
material. On the bottom of the dialog, there is a button "Instructions". When clicked,
|
|
62
|
+
FMS Insight will search for a file matching the current partname and page (load, wash, or inspection) as described above. The instruction file will then be displayed in a new tab. When subsequent instructions are requested, the tab will be re-used. Thus the tab does not need to be
|
|
63
|
+
manually closed after each operation.
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
package/docs/security.md
ADDED
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: FMS Insight Security
|
|
3
|
+
nav: FMS Insight Server > Security
|
|
4
|
+
description: >-
|
|
5
|
+
The FMS Insight server runs on the cell controller and uses TLS and OpenID
|
|
6
|
+
Connect.
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# FMS Insight Security
|
|
10
|
+
|
|
11
|
+
FMS Insight implements a JSON+REST-based HTTP server and runs on the cell
|
|
12
|
+
controller. By default, FMS Insight listens on port 5000 with no TLS and no
|
|
13
|
+
authentication; any computer which can connect to the port can view data and
|
|
14
|
+
download jobs.
|
|
15
|
+
|
|
16
|
+
To implement security, we recommend one of two possible variants.
|
|
17
|
+
|
|
18
|
+
- FMS Insight can be configured to require TLS and require OpenID connect authentication for
|
|
19
|
+
single-sign-on. This requires the cell controller computer (running FMS Insight) to be directly connected
|
|
20
|
+
to the existing factory network, but a firewall can be used to only allow access on the specific
|
|
21
|
+
port running FMS Insight.
|
|
22
|
+
- A cell-local private network containing the machines, cell-controller, and FMS Insight is created.
|
|
23
|
+
A reverse HTTP proxy connects the cell-local private network to the factory network.
|
|
24
|
+
|
|
25
|
+
## FMS Insight HTTPS, Authentication, and Firewall
|
|
26
|
+
|
|
27
|
+
In this design, FMS Insight is configured to require TLS/HTTPS and implements
|
|
28
|
+
authentication using OpenID Connect. We have tested with AzureAD, Okta, and
|
|
29
|
+
Keycloak, but any OpenID/OAuth2 compliant identity provider should work. An
|
|
30
|
+
external firewall is placed between the cell-controller and the factory
|
|
31
|
+
network and is configured to only allow traffic on the FMS Insight port.
|
|
32
|
+
|
|
33
|
+
To enable HTTPS, a server certificate must be created and stored in a pfx file. This
|
|
34
|
+
should be signed by the enterprise domain, but could also be a self-signed certificate.
|
|
35
|
+
Once created, within the FMS Insight [config.ini](server-config) file, enable the
|
|
36
|
+
`TLSCertFile` setting with the path to the certificate.
|
|
37
|
+
|
|
38
|
+
Within your identity provider, create an application for FMS Insight and create a client.
|
|
39
|
+
The client must require implicit grant flow with no client secret. The Redirect URI for the client
|
|
40
|
+
must be set to the common name from the TLS certificate with a root path.
|
|
41
|
+
Finally, most identity providers allow the administrator to restrict an
|
|
42
|
+
application to a set of users (e.g. Azure Active Directory allows assigning specific users
|
|
43
|
+
or groups to the application).
|
|
44
|
+
|
|
45
|
+
Once the client has been created, there are four settings in the [config.ini](server-config).
|
|
46
|
+
|
|
47
|
+
- `OpenIDConnectAuthority`: This setting is the path to the well-known configuration document for the identity provider.
|
|
48
|
+
For example, for AzureAD, this is `https://login.microsoftonline.com/{tenant}/v2.0` where `{tenant}` is your tenant GUID.
|
|
49
|
+
- `OpenIDConnectClientID`: This should be the ClientID for the implicit grant flow client. This ClientID is passed
|
|
50
|
+
to the FMS Insight webpage which then performs the implicit flow grant to obtain a token.
|
|
51
|
+
- `AuthAuthority`: This must be identical to the `OpenIDConnectAuthority`.
|
|
52
|
+
- `AuthTokenAudiences`: This is a list of audiences which the server uses to validate the identity tokens. In almost all
|
|
53
|
+
cases, the audience matches the ClientID. Multiple audiences are separated by semi-colons.
|
|
54
|
+
|
|
55
|
+
## Cell-Local Private Network With Proxy
|
|
56
|
+
|
|
57
|
+
In this design, a cell-local private network is created with a proxy computer to the factory network.
|
|
58
|
+
The design is based on a networking DMZ-setup.
|
|
59
|
+
|
|
60
|
+
- The machines and cell controller are placed on a private network. This network has no DNS,
|
|
61
|
+
no DHCP, and no route or access to any other network. IP Addresses are statically assigned.
|
|
62
|
+
|
|
63
|
+
- The cell controller computer runs FMS Insight with no TLS, listening on port 5000.
|
|
64
|
+
|
|
65
|
+
- The factory provides a computer with two network cards. One network card connects
|
|
66
|
+
to the cell-local private network and is statically assigned an IP address.
|
|
67
|
+
The second network card connects to the existing factory network. This computer can join the domain,
|
|
68
|
+
enable Windows Updates, and use all the typical configuration of the Factory's IT.
|
|
69
|
+
This computer should deny ALL network traffic to be routed between the cell-local network and the
|
|
70
|
+
factory network. All communication is proxied (a networking DMZ setup). The factory provides this
|
|
71
|
+
computer, allowing you to use your preferred supplier and configuration.
|
|
72
|
+
|
|
73
|
+
- The proxy computer runs a reverse-HTTP-proxy. This can be Nginx, IIS, or something else. We
|
|
74
|
+
also provide the source code for a small C# reverse-proxy server built using ASP.NET Core and Kestrel
|
|
75
|
+
(~250 lines of code) which you can use if you wish it. The reverse-proxy implements TLS and requires connections over HTTPS.
|
|
76
|
+
|
|
77
|
+
- Either the reverse-proxy or FMS Insight itself is configured to require OpenID Connect/OAuth2 Authentication.
|
|
78
|
+
This allows single-sign-on and only authenticated users will then be able to view data and create jobs.
|
|
79
|
+
FMS Insight has been tested with AzureAD, Okta, and Keycloak, but any OpenID Connect compliant
|
|
80
|
+
identity provider should work.
|
|
81
|
+
|
|
82
|
+
- Software running on the factory network connects and authenticates with the reverse-proxy, which
|
|
83
|
+
passes the requests along to FMS Insight running on the cell controller.
|
|
84
|
+
|
|
85
|
+
#### Reverse-Proxy Implemented Authentication
|
|
86
|
+
|
|
87
|
+
One option for authentication is for the reverse-proxy to require authentication. The reverse-proxy
|
|
88
|
+
should require OpenID Connect authentication for all routes starting with `/api` except for `/api/v1/fms/fms-information`.
|
|
89
|
+
Our small C# reverse-proxy implements OpenID Connect authentication and has been tested with AzureAD, Okta,
|
|
90
|
+
and Keycloak. Alternatively, Nginx+ or IIS can be configured to require authentication.
|
|
91
|
+
|
|
92
|
+
In this scenario, two settings are needed in FMS Insight's [config.ini](server-config):
|
|
93
|
+
|
|
94
|
+
- `OpenIDConnectAuthority`: This setting is the path to the well-known configuration document for the identity provider.
|
|
95
|
+
For example, for AzureAD, this is `https://login.microsoftonline.com/{tenant}/v2.0` where `{tenant}` is your tenant GUID.
|
|
96
|
+
- `OpenIDConnectClientID`: This is the ClientID for an implicit grant flow client. This ClientID is passed
|
|
97
|
+
to the FMS Insight webpage which then performs the implicit flow grant to authenticate the user and obtain a token.
|
|
98
|
+
|
|
99
|
+
These settings are just returned to clients in the `/api/v1/fms/fms-information` route, FMS Insight itself does not
|
|
100
|
+
check the request for a proper JWT token.
|
|
101
|
+
|
|
102
|
+
Next, the reverse-proxy is configured with TLS certificates and authentication. For our small C# reverse-proxy,
|
|
103
|
+
this is done in the appsettings.json file.
|
|
104
|
+
|
|
105
|
+
#### FMS Insight Implemented Authentication
|
|
106
|
+
|
|
107
|
+
If the reverse-proxy does not implement authentication, FMS Insight itself can verify the tokens. The main challenge
|
|
108
|
+
is that the FMS Insight server requires access to the OpenID Connect Authority well-known configuration document
|
|
109
|
+
to be able to obtain the signing keys. For example, in AzureAD, the well-known document
|
|
110
|
+
is `https://login.microsoftonline.com/{tenant}/v2.0/.well-known/openid-configuration` where tenant is your tenant GUID.
|
|
111
|
+
This document is required to be accessible by the FMS Insight server to obtain the rotating signing keys of the
|
|
112
|
+
identity provider. Since FMS Insight is running on the cell-controller on the cell-local private network and the proxy
|
|
113
|
+
computer denies all routed traffic, FMS Insight has no direct access to the well-known configuration document.
|
|
114
|
+
|
|
115
|
+
Thus, the reverse-proxy must also proxy the well-known configuration document. That is, the reverse-proxy is
|
|
116
|
+
configured to first proxy all connections from the factory network to FMS Insight. In addition, the reverse-proxy
|
|
117
|
+
is then also configured to proxy the request from FMS Insight to the OpenID Connect configuration document to
|
|
118
|
+
the real identity provider.
|
|
119
|
+
|
|
120
|
+
The configuration in FMS Insight's [config.ini](server-config) are as follows:
|
|
121
|
+
|
|
122
|
+
- `OpenIDConnectAuthority`: The real identity-provided authority URL.
|
|
123
|
+
For example, for AzureAD, this is `https://login.microsoftonline.com/{tenant}/v2.0` where `{tenant}` is your tenant GUID.
|
|
124
|
+
- `OpenIDConnectClientID`: This is the ClientID for an implicit grant flow client. This ClientID is passed
|
|
125
|
+
to the FMS Insight webpage which then performs the implicit flow grant to authenticate the user and obtain a token.
|
|
126
|
+
- `AuthAuthority`: The path to the reverse-proxy to obtain the OpenID configuration. For example, it could be
|
|
127
|
+
`http://{reverse-proxy-ip-address}/openid-authority`. The reverse-proxy should then be configured to proxy all
|
|
128
|
+
paths starting with `/openid-authority/*` to the real identity provider.
|
|
129
|
+
- `AuthTokenAudiences`: This is a list of audiences which the server uses to validate the identity tokens. In almost all
|
|
130
|
+
cases, the audience matches the ClientID. Multiple audiences are separated by semi-colons. Thus this setting should
|
|
131
|
+
be all the ClientIDs created separated by semi-colons.
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: FMS Insight Server Configuration
|
|
3
|
+
nav: FMS Insight Server > Configuration
|
|
4
|
+
description: >-
|
|
5
|
+
The FMS Insight server runs on the cell controller and is configured by
|
|
6
|
+
a config.ini file.
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# FMS Insight Server Configuration
|
|
10
|
+
|
|
11
|
+
The FMS Insight server is configured via a file
|
|
12
|
+
`SeedTactics\FMSInsight\config.ini` located in the Windows Common AppData
|
|
13
|
+
folder. On a default Windows install, this has a full path of
|
|
14
|
+
`c:\ProgramData\SeedTactics\FMSInsight\config.ini`. The config file itself
|
|
15
|
+
describes the settings in detail, but they fall into three groups: server
|
|
16
|
+
settings such as network ports and SSL, FMS settings such as automatic serial
|
|
17
|
+
assignment, and finally cell controller specific settings.
|
|
18
|
+
|
|
19
|
+
The first time FMS Insight starts, if the `config.ini` file does not exist,
|
|
20
|
+
FMS Insight will create a default config file. FMS Insight should run fine
|
|
21
|
+
with the default settings, so typically when first getting started no config
|
|
22
|
+
file settings need to be changed. Any changes to settings in `config.ini`
|
|
23
|
+
require the FMS Insight server to be restarted before they take effect.
|
|
24
|
+
|
|
25
|
+
The `config.ini` file is an [INI file](https://en.wikipedia.org/wiki/INI_file).
|
|
26
|
+
The default config file contains a large number of comments describing each option.
|
|
27
|
+
Comments describing each option are prefixed by a hash (`#`) and the options themselves
|
|
28
|
+
are prefixed by a semicolon (`;`). To edit an option, remove the leading semicolon (`;`)
|
|
29
|
+
and then edit the option value. Remember to restart the FMS Insight server. If any configuration
|
|
30
|
+
errors are present, FMS Insight will generate an error message with details into the
|
|
31
|
+
[event log](server-errors).
|
|
32
|
+
|
|
33
|
+
## Databases
|
|
34
|
+
|
|
35
|
+
FMS Insight uses [SQLite](https://www.sqlite.org/) to store data about the cell.
|
|
36
|
+
The primary data stored is a log of the activity of all parts, pallets, machines, jobs,
|
|
37
|
+
schedules, inspections, serial numbers, orders, and other data. In addition, FMS Insight
|
|
38
|
+
stores a small amount of temporary data to assist with monitoring.
|
|
39
|
+
|
|
40
|
+
The SQLite databases are by default stored locally in the Windows Common
|
|
41
|
+
AppData folder which on a default Windows install is
|
|
42
|
+
`c:\ProgramData\SeedTactics\FMSInsight`. This path can be changed in the
|
|
43
|
+
`config.ini` file if needed, but we suggest that the databases are kept on
|
|
44
|
+
the local drive for performance and data integrity (SQLite works best on a
|
|
45
|
+
local drive). The SQLite databases are not large, typically under 100
|
|
46
|
+
megabytes, so disk space is not a problem.
|
|
47
|
+
|
|
48
|
+
Every time FMS Insight starts, it checks for the existence of the SQLite
|
|
49
|
+
databases and if they are missing it creates them. For this reason, the
|
|
50
|
+
databases can be deleted without impacting the operation of the cell (as long
|
|
51
|
+
as FMS Insight is restarted). Also, since the databases just store a log of
|
|
52
|
+
past activity and all complex logic is outside FMS Insight, if the databases
|
|
53
|
+
are deleted (and recreated) the cell will continue to operate just fine in
|
|
54
|
+
the future (minus the historical data). Thus it is not necessary to backup
|
|
55
|
+
the databases (but of course you can if you want to preserve historical
|
|
56
|
+
data).
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: FMS Insight Errors
|
|
3
|
+
nav: FMS Insight Server > Errors
|
|
4
|
+
description: >-
|
|
5
|
+
The FMS Insight server runs on the cell controller and logs errors and warnings
|
|
6
|
+
into the Windows Event Viewer.
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# FMS Insight Error Logging
|
|
10
|
+
|
|
11
|
+
When the FMS Insight server encounters an error, it reports the error back over the network to the
|
|
12
|
+
software that requested the operation (such as the Insight client web page). The FMS Insight server
|
|
13
|
+
also logs the error with more details into the Windows Event Log. Thus, when the Insight web page or
|
|
14
|
+
any other software reports an error you can check the Windows Event Log on the cell controller
|
|
15
|
+
for more information.
|
|
16
|
+
|
|
17
|
+
## Windows Event Viewer
|
|
18
|
+
|
|
19
|
+
The location of the viewer is different in different versions of Windows;
|
|
20
|
+
on Windows 10 and 11, open the start menu and search for "Event Viewer" and on Windows 7 open the "Control Panel",
|
|
21
|
+
navigate to "Administrative Tools", and then open the "Event Viewer". To view the events in the event viewer,
|
|
22
|
+
navigate to "Windows Logs" and then "Application" in the tree on the left (see the screenshot below).
|
|
23
|
+
|
|
24
|
+

|
|
25
|
+
|
|
26
|
+
The windows event viewer shows events from all applications. FMS Insight generates events "FMS Insight"
|
|
27
|
+
as the event source, which allows you to create a custom view to filter only the events from FMS Insight.
|
|
28
|
+
To do so, go to the action menu, click "Create Custom View", and fill in "FMS Insight" as the event source
|
|
29
|
+
(see the screenshot below).
|
|
30
|
+
|
|
31
|
+

|
|
32
|
+
|
|
33
|
+
## Debug Log
|
|
34
|
+
|
|
35
|
+
To assist with debugging, FMS Insight has the ability to output a trace of
|
|
36
|
+
activity with events for almost all actions that FMS Insight takes. The debug
|
|
37
|
+
trace is disabled by default because it generates a lot of data. To enable
|
|
38
|
+
it, edit the [config file](server-config) and change the setting
|
|
39
|
+
"EnableDebugLog" to true. The FMS Insight server must be restarted before the
|
|
40
|
+
config setting takes effect. The debug trace log will be generated into the
|
|
41
|
+
global AppData folder, which defaults to `c:\ProgramData\SeedTactics\FMSInsight`.
|
|
42
|
+
The debug trace files are named `fmsinsight-debug.txt`, there will be one file
|
|
43
|
+
per day, and the file is JSON formatted. Remember to disable the trace log after
|
|
44
|
+
a day or two because it generates a lot of data.
|
package/package.json
ADDED
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@seedtactics/insight-client",
|
|
3
|
+
"version": "16.4.0",
|
|
4
|
+
"license": "BSD-3-Clause",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"main": "./src/index.ts",
|
|
7
|
+
"repository": {
|
|
8
|
+
"url": "https://github.com/seedtactics/fms-insight.git"
|
|
9
|
+
},
|
|
10
|
+
"exports": {
|
|
11
|
+
"./cell-status/*": "./dist/cell-status/*.js",
|
|
12
|
+
"./components/*": "./dist/components/*.js",
|
|
13
|
+
"./components/analysis/*": "./dist/components/analysis/*.js",
|
|
14
|
+
"./components/operations/*": "./dist/components/operations/*.js",
|
|
15
|
+
"./components/quality/*": "./dist/components/quality/*.js",
|
|
16
|
+
"./components/station-monitor/*": "./dist/components/station-monitor/*.js",
|
|
17
|
+
"./data/*": "./dist/data/*.js",
|
|
18
|
+
"./network/*": "./dist/network/*.js",
|
|
19
|
+
"./util/*": "./dist/util/*.js"
|
|
20
|
+
},
|
|
21
|
+
"files": [
|
|
22
|
+
"dist",
|
|
23
|
+
"docs"
|
|
24
|
+
],
|
|
25
|
+
"dependencies": {
|
|
26
|
+
"@dnd-kit/core": "^6.3.1",
|
|
27
|
+
"@dnd-kit/sortable": "^10.0.0",
|
|
28
|
+
"@emotion/react": "^11.14.0",
|
|
29
|
+
"@emotion/styled": "^11.14.1",
|
|
30
|
+
"@fontsource/roboto": "^5.2.9",
|
|
31
|
+
"@mui/icons-material": "^7.3.6",
|
|
32
|
+
"@mui/material": "^7.3.6",
|
|
33
|
+
"@react-spring/rafz": "^10.0.3",
|
|
34
|
+
"@react-spring/web": "^10.0.3",
|
|
35
|
+
"@seedtactics/immutable-collections": "^1.0.2",
|
|
36
|
+
"@yudiel/react-qr-scanner": "^2.5.0",
|
|
37
|
+
"copy-to-clipboard": "^3.3.3",
|
|
38
|
+
"d3-interpolate-path": "^2.3.0",
|
|
39
|
+
"d3-sankey": "^0.12.3",
|
|
40
|
+
"d3-scale": "^4.0.2",
|
|
41
|
+
"d3-shape": "^3.2.0",
|
|
42
|
+
"date-fns": "^4.1.0",
|
|
43
|
+
"highlight.js": "^11.11.1",
|
|
44
|
+
"jdenticon": "^3.3.0",
|
|
45
|
+
"jotai": "^2.16.0",
|
|
46
|
+
"jotai-family": "^1.0.1",
|
|
47
|
+
"jsbarcode": "^3.12.1",
|
|
48
|
+
"oidc-client-ts": "^3.4.1",
|
|
49
|
+
"react": "^19.2.3",
|
|
50
|
+
"react-calendar": "^6.0.0",
|
|
51
|
+
"react-dom": "^19.2.3",
|
|
52
|
+
"react-error-boundary": "^6.0.0",
|
|
53
|
+
"react-resize-detector": "^12.3.0",
|
|
54
|
+
"react-timeago": "^8.3.0",
|
|
55
|
+
"react-to-print": "^3.2.0",
|
|
56
|
+
"urlpattern-polyfill": "^10.1.0"
|
|
57
|
+
},
|
|
58
|
+
"devDependencies": {
|
|
59
|
+
"@eslint/js": "^9.39.2",
|
|
60
|
+
"@faker-js/faker": "^10.1.0",
|
|
61
|
+
"@types/d3-interpolate-path": "^2.0.3",
|
|
62
|
+
"@types/d3-sankey": "^0.12.5",
|
|
63
|
+
"@types/d3-scale": "^4.0.9",
|
|
64
|
+
"@types/d3-shape": "^3.1.7",
|
|
65
|
+
"@types/node": "^25.0.3",
|
|
66
|
+
"@types/react": "^19.2.7",
|
|
67
|
+
"@types/react-dom": "^19.2.3",
|
|
68
|
+
"@vitejs/plugin-react": "^5.1.2",
|
|
69
|
+
"eslint": "^9.39.2",
|
|
70
|
+
"eslint-config-prettier": "^10.1.8",
|
|
71
|
+
"eslint-plugin-react": "^7.37.5",
|
|
72
|
+
"eslint-plugin-react-hooks": "^7.0.1",
|
|
73
|
+
"eslint-plugin-react-refresh": "^0.4.26",
|
|
74
|
+
"jsdom": "^27.3.0",
|
|
75
|
+
"nswag": "^14.6.3",
|
|
76
|
+
"prettier": "^3.7.4",
|
|
77
|
+
"typescript": "^5.9.3",
|
|
78
|
+
"typescript-eslint": "^8.50.0",
|
|
79
|
+
"vite": "^7.3.0",
|
|
80
|
+
"vitest": "^4.0.16"
|
|
81
|
+
},
|
|
82
|
+
"scripts": {
|
|
83
|
+
"build": "tsc --noEmit --skipLibCheck && vite build",
|
|
84
|
+
"build:package": "tsc --project tsconfig.publish.json && cp -Tr ../../docs ./docs",
|
|
85
|
+
"start": "vite",
|
|
86
|
+
"test": "vitest run",
|
|
87
|
+
"test:watch": "vitest watch",
|
|
88
|
+
"nswag": "./node_modules/nswag/bin/nswag.js aspnetcore2openapi /project:../../server/debug-mock /output:../../server/fms-insight-api.json && ./node_modules/nswag/bin/nswag.js openapi2tsclient /UseAbortSignal:true /input:../../server/fms-insight-api.json /output:src/network/api.ts"
|
|
89
|
+
}
|
|
90
|
+
}
|