From 425f8f5f71d1dae1cf3a5d0307b3a2faeadb54b5 Mon Sep 17 00:00:00 2001 From: Blake Matthes Date: Sat, 25 Oct 2025 17:22:51 -0500 Subject: [PATCH] feat(frontend): migrated old > new silo adjustments moved the apps around so we can use 1 url for cors bs --- .../LstV2/Warehouse/Machine Connections.bru | 23 + .../LstV2/Warehouse/PPOO.bru | 16 + .../LstV2/Warehouse/folder.bru | 8 + .../app/auth/Session.bru | 1 + .../app/logistics/labeling/Preprint.bru | 2 +- .../app/logistics/warehouse/folder.bru | 8 + .../app/system/Settings.bru | 16 + .../environments/lst.bru | 2 +- app/main.ts | 28 +- .../demandManagement/forecastEDIData.ts | 15 + .../system/controller/settings/settings.json | 14 + .../system/routes/settings/getSettings.ts | 41 +- app/src/pkg/db/schema/forecastEDIData.ts | 29 + .../4048fd0d-f4a99b9d94dad09ecb130786d5536cef | 9 + frontend/package-lock.json | 421 ++++++++- frontend/package.json | 2 + frontend/src/components/navBar/Nav.tsx | 3 + frontend/src/components/ui/chart.tsx | 355 ++++++++ frontend/src/components/ui/collapsible.tsx | 31 + frontend/src/components/ui/dialog.tsx | 141 +++ frontend/src/components/ui/textarea.tsx | 18 + frontend/src/lib/authClient.ts | 266 +++--- .../src/lib/providers/SessionProvider.tsx | 36 +- frontend/src/routeTree.gen.ts | 836 ++++++++++-------- .../-components/RequestResetPassword.tsx | 88 -- .../(auth)/-components/ResetPasswordForm.tsx | 114 --- .../routes/(auth)/-components/SignupForm.tsx | 129 --- frontend/src/routes/(auth)/login.tsx | 30 - frontend/src/routes/__root.tsx | 27 +- frontend/src/routes/_adminLayout/route.tsx | 19 - .../(auth)/-components/LoginForm.tsx | 10 +- .../-components/RequestResetPassword.tsx | 86 ++ .../(auth)/-components/ResetPasswordForm.tsx | 112 +++ .../_app/(auth)/-components/SignupForm.tsx | 127 +++ frontend/src/routes/_app/(auth)/login.tsx | 30 + .../routes/{ => _app}/(auth)/user/index.tsx | 4 +- .../routes/{ => _app}/(auth)/user/profile.tsx | 4 +- .../{ => _app}/(auth)/user/resetpassword.tsx | 2 +- .../routes/{ => _app}/(auth)/user/signup.tsx | 2 +- .../(logistics)/-components/DragCell.tsx | 0 .../(logistics)/-components/Grid.tsx | 2 +- .../(logistics)/-components/GridBody.tsx | 0 .../(logistics)/-components/GridHeader.tsx | 0 .../(logistics)/-components/Shipments.tsx | 0 .../(logistics)/-components/style.css | 0 .../(logistics)/-hooks/useDateWindow.tsx | 0 .../logistics/deliverySchedule.tsx | 22 +- .../_adminLayout/-components/ExpandedRow.tsx | 6 +- .../_adminLayout/admin/_users/prodUsers.tsx | 2 +- .../_adminLayout/admin/_users/route.tsx | 2 +- .../_adminLayout/admin/_users/users.tsx | 46 +- .../{ => _app}/_adminLayout/admin/servers.tsx | 2 +- .../_adminLayout/admin/settings.tsx | 2 +- .../src/routes/_app/_adminLayout/route.tsx | 19 + frontend/src/routes/_app/index.tsx | 16 + frontend/src/routes/_app/route.tsx | 29 + .../_mobileLayout/m/cyclecounts.tsx | 2 +- .../_mobileLayout/m/delivery.tsx | 2 +- .../_mobileLayout/m/index.tsx | 2 +- .../_mobileLayout/m/relocate.tsx | 2 +- .../_mobileLayout/route.tsx | 2 +- .../old/(logistics)/siloAdjustments/$hist.tsx | 41 + .../siloAdjustments/comment/$comment.tsx | 39 + .../old/(logistics)/siloAdjustments/index.tsx | 34 + .../old/-components/dashboard/AddCards.tsx | 47 + .../_old/old/-components/dashboard/Cards.tsx | 104 +++ .../old/-components/dashboard/Dashboard.tsx | 40 + .../old/-components/extendedUi/LstCard.tsx | 23 + .../old/-components/layout/lst-sidebar.tsx | 55 ++ .../layout/side-components/admin.tsx | 194 ++++ .../layout/side-components/eom.tsx | 40 + .../layout/side-components/forklift.tsx | 116 +++ .../layout/side-components/header.tsx | 33 + .../layout/side-components/logistics.tsx | 36 +- .../layout/side-components/production.tsx | 62 ++ .../layout/side-components/quality.tsx | 39 + .../logistics/siloAdjustments/AttachSilo.tsx | 156 ++++ .../logistics/siloAdjustments/ChartData.tsx | 106 +++ .../logistics/siloAdjustments/Comment.tsx | 103 +++ .../logistics/siloAdjustments/DetachSilo.tsx | 144 +++ .../siloAdjustments/HistoricalData.tsx | 26 + .../logistics/siloAdjustments/SiloCard.tsx | 155 ++-- .../logistics/siloAdjustments/SiloPage.tsx | 30 + .../logistics/warehouse/CardSettings.tsx | 0 .../warehouse/ExportInventoryData.tsx | 0 .../logistics/warehouse/InventoryCard.tsx | 40 + .../logistics/warehouse/PPOOCard.tsx | 62 ++ .../logistics/warehouse/openOrders.tsx | 30 + .../_old/old/-lib/store/useCardStore.ts | 46 + .../_old/old/-lib/store/useModuleStore.ts | 30 + .../routes/_old/old/-lib/store/useSettings.ts | 28 + .../_old/old/-lib/store/useSubModuleStore.ts | 30 + frontend/src/routes/_old/old/-types/lots.ts | 19 + .../src/routes/_old/old/-types/modules.ts | 20 + frontend/src/routes/_old/old/-types/roles.ts | 4 + frontend/src/routes/_old/old/-types/users.ts | 10 + .../routes/_old/old/-utils/moduleActive.ts | 25 + .../src/routes/_old/old/-utils/oldAppUrl.tsx | 14 + .../_old/old/-utils/querys/admin/modules.tsx | 25 + .../old/-utils/querys/admin/notifications.tsx | 26 + .../old/-utils/querys/admin/subModules.tsx | 25 + .../old/-utils/querys/admin/userRoles.tsx | 26 + .../_old/old/-utils/querys/admin/users.tsx | 26 + .../querys/logistics/getInventoryCheck.tsx | 25 + .../-utils/querys/logistics/getOpenOrders.tsx | 22 + .../old/-utils/querys/logistics/getPPOO.tsx | 22 + .../querys/logistics/getWarehouseLanes.tsx | 20 + .../querys/logistics/machineConnected.tsx | 23 + .../-utils/querys/logistics/notConnected.tsx | 23 + .../siloAdjustments/getAdjustments.tsx | 26 + .../siloAdjustments/getStockSilo.tsx | 25 + .../-utils/querys/prodUser/getProdPerms.tsx | 25 + .../-utils/querys/production/getOcmeInfo.tsx | 19 + .../-utils/querys/production/labelRatio.tsx | 20 + .../old/-utils/querys/production/labels.tsx | 20 + .../old/-utils/querys/production/lots.tsx | 21 + .../old/-utils/querys/production/ocpLogs.tsx | 22 + .../old/-utils/querys/production/printers.tsx | 20 + .../old/-utils/querys/rfid/getReaders.tsx | 20 + .../routes/_old/old/-utils/querys/servers.tsx | 19 + .../_old/old/-utils/querys/settings.tsx | 25 + .../InventoryCards/inventoryColumns.tsx | 27 + .../InventoryCards/inventoryData.tsx | 164 ++++ .../tableData/notifications/notifyColumns.tsx | 61 ++ .../tableData/notifications/notifyData.tsx | 131 +++ .../-utils/tableData/openorders/ooColumns.tsx | 63 ++ .../-utils/tableData/openorders/ooData.tsx | 236 +++++ .../old/-utils/tableData/ppoo/ppooColumns.tsx | 44 + .../old/-utils/tableData/ppoo/ppooData.tsx | 174 ++++ .../tableData/printers/printerColumns.tsx | 61 ++ .../-utils/tableData/printers/printerData.tsx | 131 +++ .../labelRatio/labelRatioColumns.tsx | 84 ++ .../production/labelRatio/labelRatioData.tsx | 119 +++ .../production/labels/labelColumns.tsx | 48 + .../tableData/production/labels/labelData.tsx | 171 ++++ .../production/ocpLogs/ocpLogColumns.tsx | 60 ++ .../production/ocpLogs/ocpLogData.tsx | 179 ++++ .../tableData/rfid/readers/readerColumns.tsx | 141 +++ .../tableData/rfid/readers/readerData.tsx | 172 ++++ .../siloAdjustmentHist/siloAdjHistColumns.tsx | 78 ++ .../tableData/siloAdjustmentHist/siloData.tsx | 106 +++ .../src/routes/_old/old/-utils/userAccess.ts | 54 ++ frontend/src/routes/_old/old/index.tsx | 9 + frontend/src/routes/_old/old/route.tsx | 110 +++ frontend/src/routes/index.tsx | 13 - frontend/tsconfig.app.json | 49 +- frontend/tsconfig.json | 21 +- frontend/vite.config.ts | 5 + .../src/components/extendedUI/LstCard.tsx | 23 - .../src/components/layout/lst-sidebar.tsx | 55 -- .../src/components/layout/mode-toggle.tsx | 26 - .../layout/side-components/admin.tsx | 212 ----- .../components/layout/side-components/eom.tsx | 39 - .../layout/side-components/forklift.tsx | 106 --- .../layout/side-components/header.tsx | 36 - .../layout/side-components/production.tsx | 64 -- .../layout/side-components/quality.tsx | 39 - .../src/components/layout/theme-provider.tsx | 67 -- .../logistics/siloAdjustments/AttachSilo.tsx | 163 ---- .../logistics/siloAdjustments/ChartData.tsx | 113 --- .../logistics/siloAdjustments/Comment.tsx | 120 --- .../logistics/siloAdjustments/DetachSilo.tsx | 151 ---- .../siloAdjustments/HistoricalData.tsx | 26 - .../logistics/siloAdjustments/SiloPage.tsx | 30 - .../logistics/warehouse/InventoryCard.tsx | 44 - .../logistics/warehouse/PPOOCard.tsx | 61 -- .../logistics/warehouse/openOrders.tsx | 33 - lstV2/frontend/src/lib/authClient.ts | 202 +++++ lstV2/frontend/src/lib/axiosAPI.ts | 6 + lstV2/frontend/src/routeTree.gen.ts | 67 -- .../(logistics)/siloAdjustments/$hist.tsx | 32 - .../siloAdjustments/comment/$comment.tsx | 34 - .../(logistics)/siloAdjustments/index.tsx | 28 - lstV2/frontend/tsconfig.json | 18 +- lstV2/package.json | 7 +- lstV2/server/index.ts | 62 +- .../services/server/utils/subModuleCheck.ts | 17 +- package-lock.json | 70 +- package.json | 4 +- 179 files changed, 7511 insertions(+), 2724 deletions(-) create mode 100644 LogisticsSupportTool_API_DOCS/LstV2/Warehouse/Machine Connections.bru create mode 100644 LogisticsSupportTool_API_DOCS/LstV2/Warehouse/PPOO.bru create mode 100644 LogisticsSupportTool_API_DOCS/LstV2/Warehouse/folder.bru create mode 100644 LogisticsSupportTool_API_DOCS/app/logistics/warehouse/folder.bru create mode 100644 LogisticsSupportTool_API_DOCS/app/system/Settings.bru create mode 100644 app/src/internal/logistics/controller/demandManagement/forecastEDIData.ts create mode 100644 app/src/pkg/db/schema/forecastEDIData.ts create mode 100644 frontend/.tanstack/tmp/4048fd0d-f4a99b9d94dad09ecb130786d5536cef create mode 100644 frontend/src/components/ui/chart.tsx create mode 100644 frontend/src/components/ui/collapsible.tsx create mode 100644 frontend/src/components/ui/dialog.tsx create mode 100644 frontend/src/components/ui/textarea.tsx delete mode 100644 frontend/src/routes/(auth)/-components/RequestResetPassword.tsx delete mode 100644 frontend/src/routes/(auth)/-components/ResetPasswordForm.tsx delete mode 100644 frontend/src/routes/(auth)/-components/SignupForm.tsx delete mode 100644 frontend/src/routes/(auth)/login.tsx delete mode 100644 frontend/src/routes/_adminLayout/route.tsx rename frontend/src/routes/{ => _app}/(auth)/-components/LoginForm.tsx (91%) create mode 100644 frontend/src/routes/_app/(auth)/-components/RequestResetPassword.tsx create mode 100644 frontend/src/routes/_app/(auth)/-components/ResetPasswordForm.tsx create mode 100644 frontend/src/routes/_app/(auth)/-components/SignupForm.tsx create mode 100644 frontend/src/routes/_app/(auth)/login.tsx rename frontend/src/routes/{ => _app}/(auth)/user/index.tsx (73%) rename frontend/src/routes/{ => _app}/(auth)/user/profile.tsx (85%) rename frontend/src/routes/{ => _app}/(auth)/user/resetpassword.tsx (90%) rename frontend/src/routes/{ => _app}/(auth)/user/signup.tsx (80%) rename frontend/src/routes/{ => _app}/(logistics)/-components/DragCell.tsx (100%) rename frontend/src/routes/{ => _app}/(logistics)/-components/Grid.tsx (95%) rename frontend/src/routes/{ => _app}/(logistics)/-components/GridBody.tsx (100%) rename frontend/src/routes/{ => _app}/(logistics)/-components/GridHeader.tsx (100%) rename frontend/src/routes/{ => _app}/(logistics)/-components/Shipments.tsx (100%) rename frontend/src/routes/{ => _app}/(logistics)/-components/style.css (100%) rename frontend/src/routes/{ => _app}/(logistics)/-hooks/useDateWindow.tsx (100%) rename frontend/src/routes/{ => _app}/(logistics)/logistics/deliverySchedule.tsx (81%) rename frontend/src/routes/{ => _app}/_adminLayout/-components/ExpandedRow.tsx (95%) rename frontend/src/routes/{ => _app}/_adminLayout/admin/_users/prodUsers.tsx (69%) rename frontend/src/routes/{ => _app}/_adminLayout/admin/_users/route.tsx (91%) rename frontend/src/routes/{ => _app}/_adminLayout/admin/_users/users.tsx (86%) rename frontend/src/routes/{ => _app}/_adminLayout/admin/servers.tsx (70%) rename frontend/src/routes/{ => _app}/_adminLayout/admin/settings.tsx (70%) create mode 100644 frontend/src/routes/_app/_adminLayout/route.tsx create mode 100644 frontend/src/routes/_app/index.tsx create mode 100644 frontend/src/routes/_app/route.tsx rename frontend/src/routes/{(mobileStuff) => _mobile}/_mobileLayout/m/cyclecounts.tsx (83%) rename frontend/src/routes/{(mobileStuff) => _mobile}/_mobileLayout/m/delivery.tsx (71%) rename frontend/src/routes/{(mobileStuff) => _mobile}/_mobileLayout/m/index.tsx (97%) rename frontend/src/routes/{(mobileStuff) => _mobile}/_mobileLayout/m/relocate.tsx (71%) rename frontend/src/routes/{(mobileStuff) => _mobile}/_mobileLayout/route.tsx (74%) create mode 100644 frontend/src/routes/_old/old/(logistics)/siloAdjustments/$hist.tsx create mode 100644 frontend/src/routes/_old/old/(logistics)/siloAdjustments/comment/$comment.tsx create mode 100644 frontend/src/routes/_old/old/(logistics)/siloAdjustments/index.tsx create mode 100644 frontend/src/routes/_old/old/-components/dashboard/AddCards.tsx create mode 100644 frontend/src/routes/_old/old/-components/dashboard/Cards.tsx create mode 100644 frontend/src/routes/_old/old/-components/dashboard/Dashboard.tsx create mode 100644 frontend/src/routes/_old/old/-components/extendedUi/LstCard.tsx create mode 100644 frontend/src/routes/_old/old/-components/layout/lst-sidebar.tsx create mode 100644 frontend/src/routes/_old/old/-components/layout/side-components/admin.tsx create mode 100644 frontend/src/routes/_old/old/-components/layout/side-components/eom.tsx create mode 100644 frontend/src/routes/_old/old/-components/layout/side-components/forklift.tsx create mode 100644 frontend/src/routes/_old/old/-components/layout/side-components/header.tsx rename {lstV2/frontend/src/components => frontend/src/routes/_old/old/-components}/layout/side-components/logistics.tsx (52%) create mode 100644 frontend/src/routes/_old/old/-components/layout/side-components/production.tsx create mode 100644 frontend/src/routes/_old/old/-components/layout/side-components/quality.tsx create mode 100644 frontend/src/routes/_old/old/-components/logistics/siloAdjustments/AttachSilo.tsx create mode 100644 frontend/src/routes/_old/old/-components/logistics/siloAdjustments/ChartData.tsx create mode 100644 frontend/src/routes/_old/old/-components/logistics/siloAdjustments/Comment.tsx create mode 100644 frontend/src/routes/_old/old/-components/logistics/siloAdjustments/DetachSilo.tsx create mode 100644 frontend/src/routes/_old/old/-components/logistics/siloAdjustments/HistoricalData.tsx rename {lstV2/frontend/src/components => frontend/src/routes/_old/old/-components}/logistics/siloAdjustments/SiloCard.tsx (57%) create mode 100644 frontend/src/routes/_old/old/-components/logistics/siloAdjustments/SiloPage.tsx rename {lstV2/frontend/src/components => frontend/src/routes/_old/old/-components}/logistics/warehouse/CardSettings.tsx (100%) rename {lstV2/frontend/src/components => frontend/src/routes/_old/old/-components}/logistics/warehouse/ExportInventoryData.tsx (100%) create mode 100644 frontend/src/routes/_old/old/-components/logistics/warehouse/InventoryCard.tsx create mode 100644 frontend/src/routes/_old/old/-components/logistics/warehouse/PPOOCard.tsx create mode 100644 frontend/src/routes/_old/old/-components/logistics/warehouse/openOrders.tsx create mode 100644 frontend/src/routes/_old/old/-lib/store/useCardStore.ts create mode 100644 frontend/src/routes/_old/old/-lib/store/useModuleStore.ts create mode 100644 frontend/src/routes/_old/old/-lib/store/useSettings.ts create mode 100644 frontend/src/routes/_old/old/-lib/store/useSubModuleStore.ts create mode 100644 frontend/src/routes/_old/old/-types/lots.ts create mode 100644 frontend/src/routes/_old/old/-types/modules.ts create mode 100644 frontend/src/routes/_old/old/-types/roles.ts create mode 100644 frontend/src/routes/_old/old/-types/users.ts create mode 100644 frontend/src/routes/_old/old/-utils/moduleActive.ts create mode 100644 frontend/src/routes/_old/old/-utils/oldAppUrl.tsx create mode 100644 frontend/src/routes/_old/old/-utils/querys/admin/modules.tsx create mode 100644 frontend/src/routes/_old/old/-utils/querys/admin/notifications.tsx create mode 100644 frontend/src/routes/_old/old/-utils/querys/admin/subModules.tsx create mode 100644 frontend/src/routes/_old/old/-utils/querys/admin/userRoles.tsx create mode 100644 frontend/src/routes/_old/old/-utils/querys/admin/users.tsx create mode 100644 frontend/src/routes/_old/old/-utils/querys/logistics/getInventoryCheck.tsx create mode 100644 frontend/src/routes/_old/old/-utils/querys/logistics/getOpenOrders.tsx create mode 100644 frontend/src/routes/_old/old/-utils/querys/logistics/getPPOO.tsx create mode 100644 frontend/src/routes/_old/old/-utils/querys/logistics/getWarehouseLanes.tsx create mode 100644 frontend/src/routes/_old/old/-utils/querys/logistics/machineConnected.tsx create mode 100644 frontend/src/routes/_old/old/-utils/querys/logistics/notConnected.tsx create mode 100644 frontend/src/routes/_old/old/-utils/querys/logistics/siloAdjustments/getAdjustments.tsx create mode 100644 frontend/src/routes/_old/old/-utils/querys/logistics/siloAdjustments/getStockSilo.tsx create mode 100644 frontend/src/routes/_old/old/-utils/querys/prodUser/getProdPerms.tsx create mode 100644 frontend/src/routes/_old/old/-utils/querys/production/getOcmeInfo.tsx create mode 100644 frontend/src/routes/_old/old/-utils/querys/production/labelRatio.tsx create mode 100644 frontend/src/routes/_old/old/-utils/querys/production/labels.tsx create mode 100644 frontend/src/routes/_old/old/-utils/querys/production/lots.tsx create mode 100644 frontend/src/routes/_old/old/-utils/querys/production/ocpLogs.tsx create mode 100644 frontend/src/routes/_old/old/-utils/querys/production/printers.tsx create mode 100644 frontend/src/routes/_old/old/-utils/querys/rfid/getReaders.tsx create mode 100644 frontend/src/routes/_old/old/-utils/querys/servers.tsx create mode 100644 frontend/src/routes/_old/old/-utils/querys/settings.tsx create mode 100644 frontend/src/routes/_old/old/-utils/tableData/InventoryCards/inventoryColumns.tsx create mode 100644 frontend/src/routes/_old/old/-utils/tableData/InventoryCards/inventoryData.tsx create mode 100644 frontend/src/routes/_old/old/-utils/tableData/notifications/notifyColumns.tsx create mode 100644 frontend/src/routes/_old/old/-utils/tableData/notifications/notifyData.tsx create mode 100644 frontend/src/routes/_old/old/-utils/tableData/openorders/ooColumns.tsx create mode 100644 frontend/src/routes/_old/old/-utils/tableData/openorders/ooData.tsx create mode 100644 frontend/src/routes/_old/old/-utils/tableData/ppoo/ppooColumns.tsx create mode 100644 frontend/src/routes/_old/old/-utils/tableData/ppoo/ppooData.tsx create mode 100644 frontend/src/routes/_old/old/-utils/tableData/printers/printerColumns.tsx create mode 100644 frontend/src/routes/_old/old/-utils/tableData/printers/printerData.tsx create mode 100644 frontend/src/routes/_old/old/-utils/tableData/production/labelRatio/labelRatioColumns.tsx create mode 100644 frontend/src/routes/_old/old/-utils/tableData/production/labelRatio/labelRatioData.tsx create mode 100644 frontend/src/routes/_old/old/-utils/tableData/production/labels/labelColumns.tsx create mode 100644 frontend/src/routes/_old/old/-utils/tableData/production/labels/labelData.tsx create mode 100644 frontend/src/routes/_old/old/-utils/tableData/production/ocpLogs/ocpLogColumns.tsx create mode 100644 frontend/src/routes/_old/old/-utils/tableData/production/ocpLogs/ocpLogData.tsx create mode 100644 frontend/src/routes/_old/old/-utils/tableData/rfid/readers/readerColumns.tsx create mode 100644 frontend/src/routes/_old/old/-utils/tableData/rfid/readers/readerData.tsx create mode 100644 frontend/src/routes/_old/old/-utils/tableData/siloAdjustmentHist/siloAdjHistColumns.tsx create mode 100644 frontend/src/routes/_old/old/-utils/tableData/siloAdjustmentHist/siloData.tsx create mode 100644 frontend/src/routes/_old/old/-utils/userAccess.ts create mode 100644 frontend/src/routes/_old/old/index.tsx create mode 100644 frontend/src/routes/_old/old/route.tsx delete mode 100644 frontend/src/routes/index.tsx delete mode 100644 lstV2/frontend/src/components/extendedUI/LstCard.tsx delete mode 100644 lstV2/frontend/src/components/layout/lst-sidebar.tsx delete mode 100644 lstV2/frontend/src/components/layout/mode-toggle.tsx delete mode 100644 lstV2/frontend/src/components/layout/side-components/admin.tsx delete mode 100644 lstV2/frontend/src/components/layout/side-components/eom.tsx delete mode 100644 lstV2/frontend/src/components/layout/side-components/forklift.tsx delete mode 100644 lstV2/frontend/src/components/layout/side-components/header.tsx delete mode 100644 lstV2/frontend/src/components/layout/side-components/production.tsx delete mode 100644 lstV2/frontend/src/components/layout/side-components/quality.tsx delete mode 100644 lstV2/frontend/src/components/layout/theme-provider.tsx delete mode 100644 lstV2/frontend/src/components/logistics/siloAdjustments/AttachSilo.tsx delete mode 100644 lstV2/frontend/src/components/logistics/siloAdjustments/ChartData.tsx delete mode 100644 lstV2/frontend/src/components/logistics/siloAdjustments/Comment.tsx delete mode 100644 lstV2/frontend/src/components/logistics/siloAdjustments/DetachSilo.tsx delete mode 100644 lstV2/frontend/src/components/logistics/siloAdjustments/HistoricalData.tsx delete mode 100644 lstV2/frontend/src/components/logistics/siloAdjustments/SiloPage.tsx delete mode 100644 lstV2/frontend/src/components/logistics/warehouse/InventoryCard.tsx delete mode 100644 lstV2/frontend/src/components/logistics/warehouse/PPOOCard.tsx delete mode 100644 lstV2/frontend/src/components/logistics/warehouse/openOrders.tsx create mode 100644 lstV2/frontend/src/lib/authClient.ts create mode 100644 lstV2/frontend/src/lib/axiosAPI.ts delete mode 100644 lstV2/frontend/src/routes/(logistics)/siloAdjustments/$hist.tsx delete mode 100644 lstV2/frontend/src/routes/(logistics)/siloAdjustments/comment/$comment.tsx delete mode 100644 lstV2/frontend/src/routes/(logistics)/siloAdjustments/index.tsx diff --git a/LogisticsSupportTool_API_DOCS/LstV2/Warehouse/Machine Connections.bru b/LogisticsSupportTool_API_DOCS/LstV2/Warehouse/Machine Connections.bru new file mode 100644 index 0000000..24903e8 --- /dev/null +++ b/LogisticsSupportTool_API_DOCS/LstV2/Warehouse/Machine Connections.bru @@ -0,0 +1,23 @@ +meta { + name: Machine Connections + type: http + seq: 2 +} + +post { + url: {{url}}/lst/old/api/logistics/siloconnection + body: json + auth: inherit +} + +body:json { + { + "siloID": "35010", + "connectionType": "connected" + } +} + +settings { + encodeUrl: true + timeout: 0 +} diff --git a/LogisticsSupportTool_API_DOCS/LstV2/Warehouse/PPOO.bru b/LogisticsSupportTool_API_DOCS/LstV2/Warehouse/PPOO.bru new file mode 100644 index 0000000..001b8f5 --- /dev/null +++ b/LogisticsSupportTool_API_DOCS/LstV2/Warehouse/PPOO.bru @@ -0,0 +1,16 @@ +meta { + name: PPOO + type: http + seq: 1 +} + +get { + url: {{url}}/lst/old/api/logistics/getppoo + body: none + auth: inherit +} + +settings { + encodeUrl: true + timeout: 0 +} diff --git a/LogisticsSupportTool_API_DOCS/LstV2/Warehouse/folder.bru b/LogisticsSupportTool_API_DOCS/LstV2/Warehouse/folder.bru new file mode 100644 index 0000000..11bcedb --- /dev/null +++ b/LogisticsSupportTool_API_DOCS/LstV2/Warehouse/folder.bru @@ -0,0 +1,8 @@ +meta { + name: Warehouse + seq: 5 +} + +auth { + mode: inherit +} diff --git a/LogisticsSupportTool_API_DOCS/app/auth/Session.bru b/LogisticsSupportTool_API_DOCS/app/auth/Session.bru index 0019246..c708214 100644 --- a/LogisticsSupportTool_API_DOCS/app/auth/Session.bru +++ b/LogisticsSupportTool_API_DOCS/app/auth/Session.bru @@ -32,4 +32,5 @@ script:post-response { settings { encodeUrl: true + timeout: 0 } diff --git a/LogisticsSupportTool_API_DOCS/app/logistics/labeling/Preprint.bru b/LogisticsSupportTool_API_DOCS/app/logistics/labeling/Preprint.bru index b95e78e..01411b1 100644 --- a/LogisticsSupportTool_API_DOCS/app/logistics/labeling/Preprint.bru +++ b/LogisticsSupportTool_API_DOCS/app/logistics/labeling/Preprint.bru @@ -18,7 +18,7 @@ body:json { "printerId": 22, // 457=22, 458=23 "layoutId": 7, "numberOfCopies": 0, - "qtyToPrint": 3 + "qtyToPrint": 1 } } diff --git a/LogisticsSupportTool_API_DOCS/app/logistics/warehouse/folder.bru b/LogisticsSupportTool_API_DOCS/app/logistics/warehouse/folder.bru new file mode 100644 index 0000000..817f446 --- /dev/null +++ b/LogisticsSupportTool_API_DOCS/app/logistics/warehouse/folder.bru @@ -0,0 +1,8 @@ +meta { + name: warehouse + seq: 2 +} + +auth { + mode: inherit +} diff --git a/LogisticsSupportTool_API_DOCS/app/system/Settings.bru b/LogisticsSupportTool_API_DOCS/app/system/Settings.bru new file mode 100644 index 0000000..56aad9f --- /dev/null +++ b/LogisticsSupportTool_API_DOCS/app/system/Settings.bru @@ -0,0 +1,16 @@ +meta { + name: Settings + type: http + seq: 2 +} + +get { + url: {{url}}/lst/api/system/settings + body: none + auth: inherit +} + +settings { + encodeUrl: true + timeout: 0 +} diff --git a/LogisticsSupportTool_API_DOCS/environments/lst.bru b/LogisticsSupportTool_API_DOCS/environments/lst.bru index bd1ed2c..fd387a9 100644 --- a/LogisticsSupportTool_API_DOCS/environments/lst.bru +++ b/LogisticsSupportTool_API_DOCS/environments/lst.bru @@ -1,5 +1,5 @@ vars { - url: http://localhost:5500 + url: https://usmcd1vms036.alpla.net session_cookie: urlv2: http://localhost:3000 jwtV2: diff --git a/app/main.ts b/app/main.ts index 6da4816..b93585c 100644 --- a/app/main.ts +++ b/app/main.ts @@ -4,6 +4,7 @@ import { toNodeHandler } from "better-auth/node"; import cors from "cors"; import express from "express"; import { createServer } from "http"; +import { createProxyMiddleware, fixRequestBody } from "http-proxy-middleware"; import morgan from "morgan"; import os from "os"; import { dirname, join } from "path"; @@ -81,6 +82,24 @@ const main = async () => { ); } + // old app prox temp stuff + app.use( + basePath + "/old", + createProxyMiddleware({ + target: `http://localhost:3000`, + changeOrigin: true, + pathRewrite: (path, req) => { + // Remove the basePath + '/old' prefix from the path dynamically + return path.replace(`${basePath}/old`, ""); + }, + + headers: { + // forward auth headers if needed + "X-Forwarded-By": "express-proxy", + }, + }), + ); + // global middleware app.set("trust proxy", true); app.use(apiHitMiddleware); @@ -93,6 +112,8 @@ const main = async () => { /^https?:\/\/.*\.alpla\.net$/, "http://localhost:4173", "http://localhost:4200", + "http://localhost:3000", + "http://localhost:4000", env.BETTER_AUTH_URL, // prod ]; @@ -124,7 +145,12 @@ const main = async () => { methods: ["GET", "POST", "PUT", "DELETE", "PATCH", "OPTIONS"], credentials: true, exposedHeaders: ["set-cookie"], - allowedHeaders: ["Content-Type", "Authorization", "X-Requested-With"], + allowedHeaders: [ + "Content-Type", + "Authorization", + "X-Requested-With", + "XMLHttpRequest", + ], }), ); diff --git a/app/src/internal/logistics/controller/demandManagement/forecastEDIData.ts b/app/src/internal/logistics/controller/demandManagement/forecastEDIData.ts new file mode 100644 index 0000000..5aecb91 --- /dev/null +++ b/app/src/internal/logistics/controller/demandManagement/forecastEDIData.ts @@ -0,0 +1,15 @@ +/** + * When we pass over the edi data we want to now store it so we can see the day to day + * id + * itemNumber // customer code + * date requested + * qty requested + * av - what av this is linked to + * add_date + */ + +type IncomingForecastData = { + CustomerArticleNumber: number; +}; + +export const forecastData = async (data: IncomingForecastData) => {}; diff --git a/app/src/internal/system/controller/settings/settings.json b/app/src/internal/system/controller/settings/settings.json index fb73115..7fddd2d 100644 --- a/app/src/internal/system/controller/settings/settings.json +++ b/app/src/internal/system/controller/settings/settings.json @@ -12,5 +12,19 @@ "description": "What is the db server", "moduleName": "system", "roles": ["systemAdmin"] + }, + { + "name": "v1Server", + "value": "localhost", + "description": "What is the port the v1app is on", + "moduleName": "system", + "roles": ["systemAdmin"] + }, + { + "name": "v1Port", + "value": "3000", + "description": "What is the port the v1app is on", + "moduleName": "system", + "roles": ["systemAdmin"] } ] diff --git a/app/src/internal/system/routes/settings/getSettings.ts b/app/src/internal/system/routes/settings/getSettings.ts index 80f646b..01045ee 100644 --- a/app/src/internal/system/routes/settings/getSettings.ts +++ b/app/src/internal/system/routes/settings/getSettings.ts @@ -1,35 +1,36 @@ -import { Router } from "express"; +import { and, asc, eq } from "drizzle-orm"; import type { Request, Response } from "express"; -import { tryCatch } from "../../../../pkg/utils/tryCatch.js"; +import { Router } from "express"; import { db } from "../../../../pkg/db/db.js"; import { serverData } from "../../../../pkg/db/schema/servers.js"; -import { and, asc, eq } from "drizzle-orm"; +import { settings } from "../../../../pkg/db/schema/settings.js"; +import { tryCatch } from "../../../../pkg/utils/tryCatch.js"; const router = Router(); router.get("/", async (req: Request, res: Response) => { - const token = req.query.token; + const token = req.query.token; - const conditions = []; + const conditions = []; - if (token !== undefined) { - conditions.push(eq(serverData.plantToken, `${token}`)); - } + if (token !== undefined) { + conditions.push(eq(serverData.plantToken, `${token}`)); + } - conditions.push(eq(serverData.active, true)); + conditions.push(eq(serverData.active, true)); - const { data, error } = await tryCatch( - db - .select() - .from(serverData) - .where(and(...conditions)) - .orderBy(asc(serverData.name)) - ); + const { data, error } = await tryCatch( + db + .select() + .from(settings) + //.where(and(...conditions)) + .orderBy(asc(settings.name)), + ); - if (error) { - return res.status(400).json({ error: error }); - } - res.status(200).json({ message: "Current Active server", data: data }); + if (error) { + return res.status(400).json({ error: error }); + } + res.status(200).json({ message: "Current Active server", data: data }); }); export default router; diff --git a/app/src/pkg/db/schema/forecastEDIData.ts b/app/src/pkg/db/schema/forecastEDIData.ts new file mode 100644 index 0000000..47e37c8 --- /dev/null +++ b/app/src/pkg/db/schema/forecastEDIData.ts @@ -0,0 +1,29 @@ +import { + boolean, + integer, + jsonb, + pgTable, + real, + text, + timestamp, + uuid, +} from "drizzle-orm/pg-core"; +import { createInsertSchema, createSelectSchema } from "drizzle-zod"; +import { z } from "zod"; + +export const forecastData = pgTable("forecast_Data", { + id: uuid("id").defaultRandom().primaryKey(), + customerArticleNumber: text("customer_article_number"), + dateRequested: timestamp("date_requested").defaultNow(), + quantity: real("quantity"), + requestDate: timestamp("request_date").notNull(), + article: integer("article"), + customerID: integer("customer_id").notNull(), + createdAt: timestamp("created_at").defaultNow(), +}); + +export const forecastDataSchema = createSelectSchema(forecastData); +export const newForecastDataSchema = createInsertSchema(forecastData); + +export type ForecastData = z.infer; +export type NewForecastData = z.infer; diff --git a/frontend/.tanstack/tmp/4048fd0d-f4a99b9d94dad09ecb130786d5536cef b/frontend/.tanstack/tmp/4048fd0d-f4a99b9d94dad09ecb130786d5536cef new file mode 100644 index 0000000..a17a486 --- /dev/null +++ b/frontend/.tanstack/tmp/4048fd0d-f4a99b9d94dad09ecb130786d5536cef @@ -0,0 +1,9 @@ +import { createFileRoute } from '@tanstack/react-router' + +export const Route = createFileRoute('/_old')({ + component: RouteComponent, +}) + +function RouteComponent() { + return
Hello "/_old"!
+} diff --git a/frontend/package-lock.json b/frontend/package-lock.json index 8940676..aa0a05f 100644 --- a/frontend/package-lock.json +++ b/frontend/package-lock.json @@ -11,6 +11,7 @@ "@dnd-kit/core": "^6.3.1", "@radix-ui/react-avatar": "^1.1.10", "@radix-ui/react-checkbox": "^1.3.3", + "@radix-ui/react-collapsible": "^1.1.12", "@radix-ui/react-dialog": "^1.1.15", "@radix-ui/react-dropdown-menu": "^2.1.16", "@radix-ui/react-label": "^2.1.7", @@ -41,6 +42,7 @@ "react-calendar-timeline": "^0.30.0-beta.3", "react-day-picker": "^9.11.1", "react-dom": "^19.1.1", + "recharts": "^2.15.4", "socket.io-client": "^4.8.1", "sonner": "^2.0.7", "tailwind-merge": "^3.3.1", @@ -96,6 +98,7 @@ "integrity": "sha512-2BCOP7TN8M+gVDj7/ht3hsaO/B/n5oDbiAyyvnRlNOs+u1o+JWNYTQrmpuNp1/Wq2gcFrI01JAW+paEKDMx/CA==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@babel/code-frame": "^7.27.1", "@babel/generator": "^7.28.3", @@ -480,6 +483,15 @@ "@babel/core": "^7.0.0-0" } }, + "node_modules/@babel/runtime": { + "version": "7.28.4", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.28.4.tgz", + "integrity": "sha512-Q/N6JNWvIvPnLDvjlE1OUBLPQHH6l3CltCEsHIujp45zQUSSh8K+gHnaEX45yAT1nyngnINhvWtzN+Nb9D8RAQ==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, "node_modules/@babel/template": { "version": "7.27.2", "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.27.2.tgz", @@ -1268,8 +1280,7 @@ "version": "1.10.27", "resolved": "https://registry.npmjs.org/@interactjs/types/-/types-1.10.27.tgz", "integrity": "sha512-BUdv0cvs4H5ODuwft2Xp4eL8Vmi3LcihK42z0Ft/FbVJZoRioBsxH+LlsBdK4tAie7PqlKGy+1oyOncu1nQ6eA==", - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/@isaacs/fs-minipass": { "version": "4.0.1", @@ -1644,6 +1655,36 @@ } } }, + "node_modules/@radix-ui/react-collapsible": { + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/@radix-ui/react-collapsible/-/react-collapsible-1.1.12.tgz", + "integrity": "sha512-Uu+mSh4agx2ib1uIGPP4/CKNULyajb3p92LsVXmH2EHVMTfZWpll88XJ0j4W0z3f8NK1eYl1+Mf/szHPmcHzyA==", + "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.1.3", + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-id": "1.1.1", + "@radix-ui/react-presence": "1.1.5", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-use-controllable-state": "1.2.2", + "@radix-ui/react-use-layout-effect": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, "node_modules/@radix-ui/react-collection": { "version": "1.1.7", "resolved": "https://registry.npmjs.org/@radix-ui/react-collection/-/react-collection-1.1.7.tgz", @@ -3314,6 +3355,7 @@ "resolved": "https://registry.npmjs.org/@tanstack/react-router/-/react-router-1.131.36.tgz", "integrity": "sha512-9tglm3Rf9qkANBIyYLbGlOjNj7GDBr0jOEOaADfwiGV3Ua3P562MGn7nHUOrfRfA6u2MCg0EKJ+LH7AeWxAqkg==", "license": "MIT", + "peer": true, "dependencies": { "@tanstack/history": "1.131.2", "@tanstack/react-store": "^0.7.0", @@ -3398,6 +3440,7 @@ "resolved": "https://registry.npmjs.org/@tanstack/router-core/-/router-core-1.131.36.tgz", "integrity": "sha512-faGrKwrJBjJDxbcyeaOXgQcyccmzIGkwk+tnFeJuMTnH5OMfArykYnTZ9BxIrlOY2Mori9DXmYKMlig6mVqmGA==", "license": "MIT", + "peer": true, "dependencies": { "@tanstack/history": "1.131.2", "@tanstack/store": "^0.7.0", @@ -3581,6 +3624,69 @@ "url": "https://github.com/sponsors/tannerlinsley" } }, + "node_modules/@types/d3-array": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/@types/d3-array/-/d3-array-3.2.2.tgz", + "integrity": "sha512-hOLWVbm7uRza0BYXpIIW5pxfrKe0W+D5lrFiAEYR+pb6w3N2SwSMaJbXdUfSEv+dT4MfHBLtn5js0LAWaO6otw==", + "license": "MIT" + }, + "node_modules/@types/d3-color": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/@types/d3-color/-/d3-color-3.1.3.tgz", + "integrity": "sha512-iO90scth9WAbmgv7ogoq57O9YpKmFBbmoEoCHDB2xMBY0+/KVrqAaCDyCE16dUspeOvIxFFRI+0sEtqDqy2b4A==", + "license": "MIT" + }, + "node_modules/@types/d3-ease": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/d3-ease/-/d3-ease-3.0.2.tgz", + "integrity": "sha512-NcV1JjO5oDzoK26oMzbILE6HW7uVXOHLQvHshBUW4UMdZGfiY6v5BeQwh9a9tCzv+CeefZQHJt5SRgK154RtiA==", + "license": "MIT" + }, + "node_modules/@types/d3-interpolate": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@types/d3-interpolate/-/d3-interpolate-3.0.4.tgz", + "integrity": "sha512-mgLPETlrpVV1YRJIglr4Ez47g7Yxjl1lj7YKsiMCb27VJH9W8NVM6Bb9d8kkpG/uAQS5AmbA48q2IAolKKo1MA==", + "license": "MIT", + "dependencies": { + "@types/d3-color": "*" + } + }, + "node_modules/@types/d3-path": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@types/d3-path/-/d3-path-3.1.1.tgz", + "integrity": "sha512-VMZBYyQvbGmWyWVea0EHs/BwLgxc+MKi1zLDCONksozI4YJMcTt8ZEuIR4Sb1MMTE8MMW49v0IwI5+b7RmfWlg==", + "license": "MIT" + }, + "node_modules/@types/d3-scale": { + "version": "4.0.9", + "resolved": "https://registry.npmjs.org/@types/d3-scale/-/d3-scale-4.0.9.tgz", + "integrity": "sha512-dLmtwB8zkAeO/juAMfnV+sItKjlsw2lKdZVVy6LRr0cBmegxSABiLEpGVmSJJ8O08i4+sGR6qQtb6WtuwJdvVw==", + "license": "MIT", + "dependencies": { + "@types/d3-time": "*" + } + }, + "node_modules/@types/d3-shape": { + "version": "3.1.7", + "resolved": "https://registry.npmjs.org/@types/d3-shape/-/d3-shape-3.1.7.tgz", + "integrity": "sha512-VLvUQ33C+3J+8p+Daf+nYSOsjB4GXp19/S/aGo60m9h1v6XaxjiT82lKVWJCfzhtuZ3yD7i/TPeC/fuKLLOSmg==", + "license": "MIT", + "dependencies": { + "@types/d3-path": "*" + } + }, + "node_modules/@types/d3-time": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@types/d3-time/-/d3-time-3.0.4.tgz", + "integrity": "sha512-yuzZug1nkAAaBlBBikKZTgzCeA+k1uy4ZFwWANOfKw5z5LRhV0gNA7gNkKm7HoK+HRN0wX3EkxGk0fpbWhmB7g==", + "license": "MIT" + }, + "node_modules/@types/d3-timer": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/d3-timer/-/d3-timer-3.0.2.tgz", + "integrity": "sha512-Ps3T8E8dZDam6fUyNiMkekK3XUsaUEik+idO9/YjPtfj2qruF8tFBXS7XhtE4iIXBLxhmLjP3SXpLhVf21I9Lw==", + "license": "MIT" + }, "node_modules/@types/estree": { "version": "1.0.8", "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz", @@ -3607,6 +3713,7 @@ "integrity": "sha512-3vXmQDXy+woz+gnrTvuvNrPzekOi+Ds0ReMxw0LzBiK3a+1k0kQn9f2NWk+lgD4rJehFUmYy2gMhJ2ZI+7YP9g==", "devOptional": true, "license": "MIT", + "peer": true, "dependencies": { "undici-types": "~7.10.0" } @@ -3616,6 +3723,7 @@ "resolved": "https://registry.npmjs.org/@types/react/-/react-19.1.11.tgz", "integrity": "sha512-lr3jdBw/BGj49Eps7EvqlUaoeA0xpj3pc0RoJkHpYaCHkVK7i28dKyImLQb3JVlqs3aYSXf7qYuWOW/fgZnTXQ==", "license": "MIT", + "peer": true, "dependencies": { "csstype": "^3.0.2" } @@ -3636,6 +3744,7 @@ "integrity": "sha512-xG7xaBMJCpcK0RpN8jDbAACQo54ycO6h4dSSmgv8+fu6ZIAdANkx/WsawASUjVXYfy+J9AbUpRMNNEsXCDfDBQ==", "devOptional": true, "license": "MIT", + "peer": true, "peerDependencies": { "@types/react": "^19.0.0" } @@ -3686,6 +3795,7 @@ "integrity": "sha512-gTtSdWX9xiMPA/7MV9STjJOOYtWwIJIYxkQxnSV1U3xcE+mnJSH3f6zI0RYP+ew66WSlZ5ed+h0VCxsvdC1jJg==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@typescript-eslint/scope-manager": "8.41.0", "@typescript-eslint/types": "8.41.0", @@ -3921,6 +4031,7 @@ "integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==", "dev": true, "license": "MIT", + "peer": true, "bin": { "acorn": "bin/acorn" }, @@ -4218,6 +4329,7 @@ } ], "license": "MIT", + "peer": true, "dependencies": { "caniuse-lite": "^1.0.30001737", "electron-to-chromium": "^1.5.211", @@ -4437,7 +4549,129 @@ "version": "3.1.3", "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz", "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==", - "license": "MIT" + "license": "MIT", + "peer": true + }, + "node_modules/d3-array": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-3.2.4.tgz", + "integrity": "sha512-tdQAmyA18i4J7wprpYq8ClcxZy3SC31QMeByyCFyRt7BVHdREQZ5lpzoe5mFEYZUWe+oq8HBvk9JjpibyEV4Jg==", + "license": "ISC", + "dependencies": { + "internmap": "1 - 2" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-color": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-color/-/d3-color-3.1.0.tgz", + "integrity": "sha512-zg/chbXyeBtMQ1LbD/WSoW2DpC3I0mpmPdW+ynRTj/x2DAWYrIY7qeZIHidozwV24m4iavr15lNwIwLxRmOxhA==", + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-ease": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-ease/-/d3-ease-3.0.1.tgz", + "integrity": "sha512-wR/XK3D3XcLIZwpbvQwQ5fK+8Ykds1ip7A2Txe0yxncXSdq1L9skcG7blcedkOX+ZcgxGAmLX1FrRGbADwzi0w==", + "license": "BSD-3-Clause", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-format": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-format/-/d3-format-3.1.0.tgz", + "integrity": "sha512-YyUI6AEuY/Wpt8KWLgZHsIU86atmikuoOmCfommt0LYHiQSPjvX2AcFc38PX0CBpr2RCyZhjex+NS/LPOv6YqA==", + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-interpolate": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-interpolate/-/d3-interpolate-3.0.1.tgz", + "integrity": "sha512-3bYs1rOD33uo8aqJfKP3JWPAibgw8Zm2+L9vBKEHJ2Rg+viTR7o5Mmv5mZcieN+FRYaAOWX5SJATX6k1PWz72g==", + "license": "ISC", + "dependencies": { + "d3-color": "1 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-path": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-path/-/d3-path-3.1.0.tgz", + "integrity": "sha512-p3KP5HCf/bvjBSSKuXid6Zqijx7wIfNW+J/maPs+iwR35at5JCbLUT0LzF1cnjbCHWhqzQTIN2Jpe8pRebIEFQ==", + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-scale": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/d3-scale/-/d3-scale-4.0.2.tgz", + "integrity": "sha512-GZW464g1SH7ag3Y7hXjf8RoUuAFIqklOAq3MRl4OaWabTFJY9PN/E1YklhXLh+OQ3fM9yS2nOkCoS+WLZ6kvxQ==", + "license": "ISC", + "dependencies": { + "d3-array": "2.10.0 - 3", + "d3-format": "1 - 3", + "d3-interpolate": "1.2.0 - 3", + "d3-time": "2.1.1 - 3", + "d3-time-format": "2 - 4" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-shape": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/d3-shape/-/d3-shape-3.2.0.tgz", + "integrity": "sha512-SaLBuwGm3MOViRq2ABk3eLoxwZELpH6zhl3FbAoJ7Vm1gofKx6El1Ib5z23NUEhF9AsGl7y+dzLe5Cw2AArGTA==", + "license": "ISC", + "dependencies": { + "d3-path": "^3.1.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-time": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-time/-/d3-time-3.1.0.tgz", + "integrity": "sha512-VqKjzBLejbSMT4IgbmVgDjpkYrNWUYJnbCGo874u7MMKIWsILRX+OpX/gTk8MqjpT1A/c6HY2dCA77ZN0lkQ2Q==", + "license": "ISC", + "dependencies": { + "d3-array": "2 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-time-format": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/d3-time-format/-/d3-time-format-4.1.0.tgz", + "integrity": "sha512-dJxPBlzC7NugB2PDLwo9Q8JiTR3M3e4/XANkreKSUxF8vvXKqm1Yfq4Q5dl8budlunRVlUUaDUgFt7eA8D6NLg==", + "license": "ISC", + "dependencies": { + "d3-time": "1 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-timer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-timer/-/d3-timer-3.0.1.tgz", + "integrity": "sha512-ndfJ/JxxMd3nw31uyKoY2naivF+r29V+Lc0svZxe1JvvIRmi8hUsrMvdOwgS1o6uBHmiz91geQ0ylPP0aj1VUA==", + "license": "ISC", + "engines": { + "node": ">=12" + } }, "node_modules/date-fns": { "version": "4.1.0", @@ -4480,6 +4714,12 @@ } } }, + "node_modules/decimal.js-light": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/decimal.js-light/-/decimal.js-light-2.5.1.tgz", + "integrity": "sha512-qIMFpTMZmny+MMIitAB6D7iVPEorVw6YQRWkvarTkT4tBeSLLiHzcwj6q0MmYSFCiVpiqPJTJEYIrpcPzVEIvg==", + "license": "MIT" + }, "node_modules/decode-formdata": { "version": "0.9.0", "resolved": "https://registry.npmjs.org/decode-formdata/-/decode-formdata-0.9.0.tgz", @@ -4539,6 +4779,16 @@ "node": ">=0.3.1" } }, + "node_modules/dom-helpers": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/dom-helpers/-/dom-helpers-5.2.1.tgz", + "integrity": "sha512-nRCa7CK3VTrM2NmGkIy4cbK7IZlgBE/PYMn55rrXefr5xXDP0LdtfPnblFDoVdcAfslJ7or6iqAUnx0CCGIWQA==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.8.7", + "csstype": "^3.0.2" + } + }, "node_modules/dunder-proto": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", @@ -4736,6 +4986,7 @@ "integrity": "sha512-RNCHRX5EwdrESy3Jc9o8ie8Bog+PeYvvSR8sDGoZxNFTvZ4dlxUB3WzQ3bQMztFrSRODGrLLj8g6OFuGY/aiQg==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@eslint-community/eslint-utils": "^4.2.0", "@eslint-community/regexpp": "^4.12.1", @@ -4922,6 +5173,12 @@ "node": ">=0.10.0" } }, + "node_modules/eventemitter3": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", + "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==", + "license": "MIT" + }, "node_modules/fast-deep-equal": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", @@ -4929,6 +5186,15 @@ "dev": true, "license": "MIT" }, + "node_modules/fast-equals": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/fast-equals/-/fast-equals-5.3.2.tgz", + "integrity": "sha512-6rxyATwPCkaFIL3JLqw8qXqMpIZ942pTX/tbQFkRsDGblS8tNGtlUauA/+mt6RUfqn/4MoEr+WDkYoIQbibWuQ==", + "license": "MIT", + "engines": { + "node": ">=6.0.0" + } + }, "node_modules/fast-glob": { "version": "3.3.3", "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.3.tgz", @@ -5331,6 +5597,15 @@ "@interactjs/types": "1.10.27" } }, + "node_modules/internmap": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/internmap/-/internmap-2.0.3.tgz", + "integrity": "sha512-5Hh7Y1wQbvY5ooGgPbDaL5iYLAPzMTUrjMulskHLH6wnv/A+1q5rgEaiuqEjB+oxGXIVZs1FF+R/KPN3ZSQYYg==", + "license": "ISC", + "engines": { + "node": ">=12" + } + }, "node_modules/is-binary-path": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", @@ -5430,7 +5705,6 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", - "dev": true, "license": "MIT" }, "node_modules/js-yaml": { @@ -5783,6 +6057,18 @@ "dev": true, "license": "MIT" }, + "node_modules/loose-envify": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", + "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "license": "MIT", + "dependencies": { + "js-tokens": "^3.0.0 || ^4.0.0" + }, + "bin": { + "loose-envify": "cli.js" + } + }, "node_modules/lru-cache": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", @@ -5992,6 +6278,15 @@ "node": ">=0.10.0" } }, + "node_modules/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/optionator": { "version": "0.9.4", "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz", @@ -6148,6 +6443,23 @@ "url": "https://github.com/prettier/prettier?sponsor=1" } }, + "node_modules/prop-types": { + "version": "15.8.1", + "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", + "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", + "license": "MIT", + "dependencies": { + "loose-envify": "^1.4.0", + "object-assign": "^4.1.1", + "react-is": "^16.13.1" + } + }, + "node_modules/prop-types/node_modules/react-is": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", + "license": "MIT" + }, "node_modules/proxy-from-env": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", @@ -6216,6 +6528,7 @@ "resolved": "https://registry.npmjs.org/react/-/react-19.1.1.tgz", "integrity": "sha512-w8nqGImo45dmMIfljjMwOGtbmC/mk4CMYhWIicdSflH91J9TyCyczcPFXJzrZ/ZXcgGRFeP6BU0BEJTw6tZdfQ==", "license": "MIT", + "peer": true, "engines": { "node": ">=0.10.0" } @@ -6264,6 +6577,7 @@ "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-19.1.1.tgz", "integrity": "sha512-Dlq/5LAZgF0Gaz6yiqZCf6VCcZs1ghAJyrsu84Q/GT0gV+mCxbfmKNoGRKBYMJ8IEdGPqu49YWXD02GCknEDkw==", "license": "MIT", + "peer": true, "dependencies": { "scheduler": "^0.26.0" }, @@ -6271,6 +6585,12 @@ "react": "^19.1.1" } }, + "node_modules/react-is": { + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", + "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", + "license": "MIT" + }, "node_modules/react-remove-scroll": { "version": "2.7.1", "resolved": "https://registry.npmjs.org/react-remove-scroll/-/react-remove-scroll-2.7.1.tgz", @@ -6318,6 +6638,21 @@ } } }, + "node_modules/react-smooth": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/react-smooth/-/react-smooth-4.0.4.tgz", + "integrity": "sha512-gnGKTpYwqL0Iii09gHobNolvX4Kiq4PKx6eWBCYYix+8cdw+cGo3do906l1NBPKkSWx1DghC1dlWG9L2uGd61Q==", + "license": "MIT", + "dependencies": { + "fast-equals": "^5.0.1", + "prop-types": "^15.8.1", + "react-transition-group": "^4.4.5" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", + "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" + } + }, "node_modules/react-style-singleton": { "version": "2.2.3", "resolved": "https://registry.npmjs.org/react-style-singleton/-/react-style-singleton-2.2.3.tgz", @@ -6340,6 +6675,22 @@ } } }, + "node_modules/react-transition-group": { + "version": "4.4.5", + "resolved": "https://registry.npmjs.org/react-transition-group/-/react-transition-group-4.4.5.tgz", + "integrity": "sha512-pZcd1MCJoiKiBR2NRxeCRg13uCXbydPnmB4EOeRrY7480qNWO8IIgQG6zlDkm6uRMsURXPuKq0GWtiM59a5Q6g==", + "license": "BSD-3-Clause", + "dependencies": { + "@babel/runtime": "^7.5.5", + "dom-helpers": "^5.0.1", + "loose-envify": "^1.4.0", + "prop-types": "^15.6.2" + }, + "peerDependencies": { + "react": ">=16.6.0", + "react-dom": ">=16.6.0" + } + }, "node_modules/readdirp": { "version": "3.6.0", "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", @@ -6380,6 +6731,38 @@ "node": ">=0.10.0" } }, + "node_modules/recharts": { + "version": "2.15.4", + "resolved": "https://registry.npmjs.org/recharts/-/recharts-2.15.4.tgz", + "integrity": "sha512-UT/q6fwS3c1dHbXv2uFgYJ9BMFHu3fwnd7AYZaEQhXuYQ4hgsxLvsUXzGdKeZrW5xopzDCvuA2N41WJ88I7zIw==", + "license": "MIT", + "dependencies": { + "clsx": "^2.0.0", + "eventemitter3": "^4.0.1", + "lodash": "^4.17.21", + "react-is": "^18.3.1", + "react-smooth": "^4.0.4", + "recharts-scale": "^0.4.4", + "tiny-invariant": "^1.3.1", + "victory-vendor": "^36.6.8" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "react": "^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", + "react-dom": "^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" + } + }, + "node_modules/recharts-scale": { + "version": "0.4.5", + "resolved": "https://registry.npmjs.org/recharts-scale/-/recharts-scale-0.4.5.tgz", + "integrity": "sha512-kivNFO+0OcUNu7jQquLXAxz1FIwZj8nrj+YkOKc5694NbjCvcT6aSZiIzNzd2Kul4o4rTto8QVR9lMNtxD4G1w==", + "license": "MIT", + "dependencies": { + "decimal.js-light": "^2.4.1" + } + }, "node_modules/reflect-metadata": { "version": "0.2.2", "resolved": "https://registry.npmjs.org/reflect-metadata/-/reflect-metadata-0.2.2.tgz", @@ -6510,6 +6893,7 @@ "resolved": "https://registry.npmjs.org/seroval/-/seroval-1.3.2.tgz", "integrity": "sha512-RbcPH1n5cfwKrru7v7+zrZvjLurgHhGyso3HTyGtRivGWgYjbOmGuivCQaORNELjNONoK35nj28EoWul9sb1zQ==", "license": "MIT", + "peer": true, "engines": { "node": ">=10" } @@ -6742,7 +7126,8 @@ "version": "1.3.3", "resolved": "https://registry.npmjs.org/tiny-invariant/-/tiny-invariant-1.3.3.tgz", "integrity": "sha512-+FbBPE1o9QAYvviau/qC5SE3caw21q3xkvWKBtja5vgqOWIHHJ3ioaq1VPfn/Szqctz2bU/oYeKd9/z5BL+PVg==", - "license": "MIT" + "license": "MIT", + "peer": true }, "node_modules/tiny-warning": { "version": "1.0.3", @@ -6788,6 +7173,7 @@ "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", "license": "MIT", + "peer": true, "engines": { "node": ">=12" }, @@ -6894,6 +7280,7 @@ "integrity": "sha512-p1diW6TqL9L07nNxvRMM7hMMw4c5XOo/1ibL4aAIGmSAt9slTE1Xgw5KWuof2uTOvCg9BY7ZRi+GaF+7sfgPeQ==", "dev": true, "license": "Apache-2.0", + "peer": true, "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" @@ -7074,11 +7461,34 @@ "uuid": "dist-node/bin/uuid" } }, + "node_modules/victory-vendor": { + "version": "36.9.2", + "resolved": "https://registry.npmjs.org/victory-vendor/-/victory-vendor-36.9.2.tgz", + "integrity": "sha512-PnpQQMuxlwYdocC8fIJqVXvkeViHYzotI+NJrCuav0ZYFoq912ZHBk3mCeuj+5/VpodOjPe1z0Fk2ihgzlXqjQ==", + "license": "MIT AND ISC", + "dependencies": { + "@types/d3-array": "^3.0.3", + "@types/d3-ease": "^3.0.0", + "@types/d3-interpolate": "^3.0.1", + "@types/d3-scale": "^4.0.2", + "@types/d3-shape": "^3.1.0", + "@types/d3-time": "^3.0.0", + "@types/d3-timer": "^3.0.0", + "d3-array": "^3.1.6", + "d3-ease": "^3.0.1", + "d3-interpolate": "^3.0.1", + "d3-scale": "^4.0.2", + "d3-shape": "^3.1.0", + "d3-time": "^3.0.0", + "d3-timer": "^3.0.1" + } + }, "node_modules/vite": { "version": "7.1.3", "resolved": "https://registry.npmjs.org/vite/-/vite-7.1.3.tgz", "integrity": "sha512-OOUi5zjkDxYrKhTV3V7iKsoS37VUM7v40+HuwEmcrsf11Cdx9y3DIr2Px6liIcZFwt3XSRpQvFpL3WVy7ApkGw==", "license": "MIT", + "peer": true, "dependencies": { "esbuild": "^0.25.0", "fdir": "^6.5.0", @@ -7170,6 +7580,7 @@ "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", "license": "MIT", + "peer": true, "engines": { "node": ">=12" }, diff --git a/frontend/package.json b/frontend/package.json index c8e65eb..cb802eb 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -13,6 +13,7 @@ "@dnd-kit/core": "^6.3.1", "@radix-ui/react-avatar": "^1.1.10", "@radix-ui/react-checkbox": "^1.3.3", + "@radix-ui/react-collapsible": "^1.1.12", "@radix-ui/react-dialog": "^1.1.15", "@radix-ui/react-dropdown-menu": "^2.1.16", "@radix-ui/react-label": "^2.1.7", @@ -43,6 +44,7 @@ "react-calendar-timeline": "^0.30.0-beta.3", "react-day-picker": "^9.11.1", "react-dom": "^19.1.1", + "recharts": "^2.15.4", "socket.io-client": "^4.8.1", "sonner": "^2.0.7", "tailwind-merge": "^3.3.1", diff --git a/frontend/src/components/navBar/Nav.tsx b/frontend/src/components/navBar/Nav.tsx index 72b100d..0672be7 100644 --- a/frontend/src/components/navBar/Nav.tsx +++ b/frontend/src/components/navBar/Nav.tsx @@ -49,6 +49,9 @@ export default function Nav() { Profile + + LST-Old + {/* Billing Team Subscription */} diff --git a/frontend/src/components/ui/chart.tsx b/frontend/src/components/ui/chart.tsx new file mode 100644 index 0000000..48d2724 --- /dev/null +++ b/frontend/src/components/ui/chart.tsx @@ -0,0 +1,355 @@ +import * as React from "react" +import * as RechartsPrimitive from "recharts" + +import { cn } from "@/lib/utils" + +// Format: { THEME_NAME: CSS_SELECTOR } +const THEMES = { light: "", dark: ".dark" } as const + +export type ChartConfig = { + [k in string]: { + label?: React.ReactNode + icon?: React.ComponentType + } & ( + | { color?: string; theme?: never } + | { color?: never; theme: Record } + ) +} + +type ChartContextProps = { + config: ChartConfig +} + +const ChartContext = React.createContext(null) + +function useChart() { + const context = React.useContext(ChartContext) + + if (!context) { + throw new Error("useChart must be used within a ") + } + + return context +} + +function ChartContainer({ + id, + className, + children, + config, + ...props +}: React.ComponentProps<"div"> & { + config: ChartConfig + children: React.ComponentProps< + typeof RechartsPrimitive.ResponsiveContainer + >["children"] +}) { + const uniqueId = React.useId() + const chartId = `chart-${id || uniqueId.replace(/:/g, "")}` + + return ( + +
+ + + {children} + +
+
+ ) +} + +const ChartStyle = ({ id, config }: { id: string; config: ChartConfig }) => { + const colorConfig = Object.entries(config).filter( + ([, config]) => config.theme || config.color + ) + + if (!colorConfig.length) { + return null + } + + return ( + + + +

We’ve moved!

+

With new security and updating to mobile version the app had to be moved. You will be redirected to.

+

${target}

+

Redirecting in ${waitSeconds} seconds…

+ + + + `); +}); + +// app.all("/*", (c) => { +// console.log(c.req.path); +// return c.html(html`${newPageDoc}`); +// }); + // front end static files -app.use("/*", serveStatic({ root: "./frontend/dist" })); -app.use("*", serveStatic({ path: "./frontend/dist/index.html" })); +//app.use("/*", serveStatic({ root: "./frontend/dist" })); +//app.use("*", serveStatic({ path: "./frontend/dist/index.html" })); // Handle app exit signals process.on("SIGINT", async () => { diff --git a/lstV2/server/services/server/utils/subModuleCheck.ts b/lstV2/server/services/server/utils/subModuleCheck.ts index 0c28f85..81a593e 100644 --- a/lstV2/server/services/server/utils/subModuleCheck.ts +++ b/lstV2/server/services/server/utils/subModuleCheck.ts @@ -13,7 +13,7 @@ const newSubModules = [ name: "RFID", moduleName: "prodcution", description: "RFID stuff", - link: "/rfid", + link: "/lst/app/old/rfid", icon: "Tags", active: true, roles: [ @@ -30,7 +30,7 @@ const newSubModules = [ name: "siloAdjustments", moduleName: "logistics", description: "Do a silo adjustments", - link: "/siloAdjustments", + link: "/lst/app/old/siloAdjustments", icon: "Cylinder", active: false, roles: ["technician", "supervisor", "manager", "admin", "systemAdmin"], @@ -40,7 +40,7 @@ const newSubModules = [ name: "demandManagement", moduleName: "logistics", description: "Bulk order and Forecast imports", - link: "/dm", + link: "/lst/app/old/dm", icon: "Truck", roles: ["technician", "supervisor", "manager", "admin", "systemAdmin"], active: false, @@ -60,7 +60,7 @@ const newSubModules = [ name: "Material Helper", moduleName: "logistics", description: "", - link: "/materialHelper/consumption", + link: "/lst/app/old/materialHelper/consumption", icon: "Package", roles: [ "viewer", @@ -77,7 +77,7 @@ const newSubModules = [ name: "Ocme Cyclecount", moduleName: "logistics", description: "", - link: "/cyclecount", + link: "/lst/app/old/cyclecount", icon: "Package", roles: ["technician", "supervisor", "manager", "admin", "systemAdmin"], active: false, @@ -87,7 +87,7 @@ const newSubModules = [ name: "Open Orders", moduleName: "logistics", description: "Open orders", - link: "/openOrders", + link: "/lst/app/old/openOrders", icon: "Truck", roles: [ "viewer", @@ -104,7 +104,7 @@ const newSubModules = [ name: "Barcodes", moduleName: "logistics", description: "Barcodes, lanes and scanable", - link: "/barcodegen", + link: "/lst/app/old/barcodegen", icon: "Barcode", roles: [ "viewer", @@ -121,7 +121,7 @@ const newSubModules = [ name: "Helper Commands", moduleName: "logistics", description: "Commands to assist when a scanner is not avalible", - link: "/helpercommands", + link: "/lst/app/old/helpercommands", icon: "Command", roles: ["technician", "supervisor", "manager", "admin", "systemAdmin"], active: true, @@ -222,6 +222,7 @@ const newSubModules = [ }, ]; export const areSubModulesIn = async () => { + await db.delete(subModules); try { for (let i = 0; i < newSubModules.length; i++) { const subModuleUpdate = await db diff --git a/package-lock.json b/package-lock.json index ffec1b5..e9bfcc0 100644 --- a/package-lock.json +++ b/package-lock.json @@ -22,6 +22,7 @@ "drizzle-zod": "^0.8.3", "express": "^5.1.0", "handlebars": "^4.7.8", + "http-proxy-middleware": "^3.0.5", "morgan": "^1.10.1", "mssql": "^12.0.0", "nodemailer": "^7.0.9", @@ -3334,6 +3335,15 @@ "dev": true, "license": "MIT" }, + "node_modules/@types/http-proxy": { + "version": "1.17.16", + "resolved": "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.16.tgz", + "integrity": "sha512-sdWoUajOB1cd0A8cRRQ1cfyWNbmFKLAqBB89Y8x5iYyG/mkJHc0YUH8pdWBy2omi9qtCpiIgGjuwO0dQST2l5w==", + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, "node_modules/@types/mime": { "version": "1.3.5", "dev": true, @@ -3904,7 +3914,6 @@ }, "node_modules/braces": { "version": "3.0.3", - "dev": true, "license": "MIT", "dependencies": { "fill-range": "^7.1.1" @@ -5692,6 +5701,12 @@ "node": ">=6" } }, + "node_modules/eventemitter3": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", + "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==", + "license": "MIT" + }, "node_modules/events": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", @@ -5947,7 +5962,6 @@ }, "node_modules/fill-range": { "version": "7.1.1", - "dev": true, "license": "MIT", "dependencies": { "to-regex-range": "^5.0.1" @@ -6635,6 +6649,20 @@ "node": ">= 0.8" } }, + "node_modules/http-proxy": { + "version": "1.18.1", + "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz", + "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==", + "license": "MIT", + "dependencies": { + "eventemitter3": "^4.0.0", + "follow-redirects": "^1.0.0", + "requires-port": "^1.0.0" + }, + "engines": { + "node": ">=8.0.0" + } + }, "node_modules/http-proxy-agent": { "version": "7.0.2", "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz", @@ -6648,6 +6676,23 @@ "node": ">= 14" } }, + "node_modules/http-proxy-middleware": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-3.0.5.tgz", + "integrity": "sha512-GLZZm1X38BPY4lkXA01jhwxvDoOkkXqjgVyUzVxiEK4iuRu03PZoYHhHRwxnfhQMDuaxi3vVri0YgSro/1oWqg==", + "license": "MIT", + "dependencies": { + "@types/http-proxy": "^1.17.15", + "debug": "^4.3.6", + "http-proxy": "^1.18.1", + "is-glob": "^4.0.3", + "is-plain-object": "^5.0.0", + "micromatch": "^4.0.8" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, "node_modules/https-proxy-agent": { "version": "7.0.6", "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.6.tgz", @@ -6943,7 +6988,6 @@ }, "node_modules/is-extglob": { "version": "2.1.1", - "dev": true, "license": "MIT", "engines": { "node": ">=0.10.0" @@ -6960,7 +7004,6 @@ }, "node_modules/is-glob": { "version": "4.0.3", - "dev": true, "license": "MIT", "dependencies": { "is-extglob": "^2.1.1" @@ -6999,7 +7042,6 @@ }, "node_modules/is-number": { "version": "7.0.0", - "dev": true, "license": "MIT", "engines": { "node": ">=0.12.0" @@ -7025,6 +7067,15 @@ "node": ">=0.10.0" } }, + "node_modules/is-plain-object": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz", + "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/is-promise": { "version": "4.0.0", "license": "MIT" @@ -7823,7 +7874,6 @@ "version": "4.0.8", "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", - "dev": true, "license": "MIT", "dependencies": { "braces": "^3.0.3", @@ -8638,7 +8688,6 @@ }, "node_modules/picomatch": { "version": "2.3.1", - "dev": true, "license": "MIT", "engines": { "node": ">=8.6" @@ -9210,6 +9259,12 @@ "node": ">=0.10.0" } }, + "node_modules/requires-port": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", + "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==", + "license": "MIT" + }, "node_modules/resolve": { "version": "1.22.10", "dev": true, @@ -10163,7 +10218,6 @@ }, "node_modules/to-regex-range": { "version": "5.0.1", - "dev": true, "license": "MIT", "dependencies": { "is-number": "^7.0.0" diff --git a/package.json b/package.json index c689dd0..b51370d 100644 --- a/package.json +++ b/package.json @@ -10,7 +10,8 @@ "dev:front": "cd frontend && npm run dev", "dev:db:migrate": "npx drizzle-kit push", "dev:db:generate": "tsc && npx drizzle-kit generate --config=drizzle-dev.config.ts", - "dev": "concurrently -n \"server,frontend,docs\" -c \"#007755,#2f6da3,#DB4FE0\" \"npm run dev:app\" \"npm run dev:front\" \"npm run dev:docs\"", + "dev": "concurrently -n \"server,frontend,docs,oldServer\" -c \"#007755,#2f6da3,#DB4FE0, #1F73D1\" \"npm run dev:app\" \"npm run dev:front\" \"npm run dev:docs\" \"npm run dev:old\"", + "dev:old": "cd lstV2 && npm run dev", "copy:docs": "node scripts/lstDocCopy.mjs", "build:app": "rimraf dist && npx tsc && node scripts/lstAppMoves.mjs", "build:front": "cd frontend && rimraf dist && npm run build", @@ -55,6 +56,7 @@ "drizzle-zod": "^0.8.3", "express": "^5.1.0", "handlebars": "^4.7.8", + "http-proxy-middleware": "^3.0.5", "morgan": "^1.10.1", "mssql": "^12.0.0", "nodemailer": "^7.0.9",