From ebca0b00b09403c9e83c288265b56b718089374e Mon Sep 17 00:00:00 2001 From: cproudlock Date: Sat, 18 Jul 2026 23:56:07 -0400 Subject: [PATCH] ADR-013 Phase 4: relocate the remaining 9 plugin frontends (all 13 done) Relocate warranty, measuringtools, network, printers, usb, notifications, computers, and slides into plugins//frontend/. Each plugin's views are pulled from wherever they lived (own dir, plus the shared views/settings/, views/reports/, views/print/ dirs, and top-level views) into the plugin's frontend/views/, and its route file becomes the self-contained routes.js. Handled the messy cases: - computers: name mismatch (its views live in views/pcs/) - moved by following the route file's own imports, so the dir name did not matter. Its OS/access- protocol/PC-type settings views move with it (only computers.js routed them). - network: NetworkHub's sibling sub-views (NetworkDevicesList, SubnetsBrowse, not directly routed) moved too so its `./` imports resolve. - printers: the qrLogo helper is SHARED with core AssetLabel, so it stays in views/print/ and PrinterQR imports it via @/views/print/qrLogo. - slides: route file is toplevel-only (TVDashboard); SlideManager stays core (core.js routes /settings/slides). frontend/src/views/ now holds only core views; frontend/src/router/routes/ holds only core.js. All 13 plugins are self-contained under plugins//frontend/. Verified live: Network (hub + moved sub-views), Computers (name mismatch), GE-Enforce (helper), printedparts all render from their staged frontends. Build + 58 vitest + naming green. --- .../computers/frontend/routes.js | 14 +++++++------- .../frontend/views}/AccessProtocolsList.vue | 2 +- .../frontend/views}/OperatingSystemsList.vue | 8 ++++---- .../computers/frontend/views}/PCDetail.vue | 14 +++++++------- .../computers/frontend/views}/PCForm.vue | 14 +++++++------- .../computers/frontend/views}/PCTypesList.vue | 6 +++--- .../computers/frontend/views}/PCsList.vue | 4 ++-- .../measuringtools/frontend/routes.js | 14 +++++++------- .../frontend/views}/CalibrationReport.vue | 2 +- .../frontend/views}/MeasuringToolDetail.vue | 10 +++++----- .../frontend/views}/MeasuringToolForm.vue | 8 ++++---- .../frontend/views}/MeasuringToolTypesList.vue | 6 +++--- .../frontend/views}/MeasuringToolsList.vue | 4 ++-- .../network/frontend/routes.js | 14 +++++++------- .../frontend/views}/NetworkDeviceDetail.vue | 16 ++++++++-------- .../frontend/views}/NetworkDeviceForm.vue | 8 ++++---- .../frontend/views}/NetworkDevicesList.vue | 4 ++-- .../network/frontend/views}/NetworkHub.vue | 0 .../network/frontend/views}/SubnetDetail.vue | 0 .../network/frontend/views}/SubnetsBrowse.vue | 0 .../network/frontend/views}/SubnetsList.vue | 8 ++++---- .../network/frontend/views}/VLANsList.vue | 8 ++++---- .../notifications/frontend/routes.js | 12 ++++++------ .../frontend}/views/CalendarView.vue | 0 .../frontend/views}/NotificationForm.vue | 2 +- .../frontend/views}/NotificationTypesList.vue | 2 +- .../frontend/views}/NotificationsList.vue | 2 +- .../printers/frontend/routes.js | 16 ++++++++-------- .../frontend/views}/ModelSuppliesList.vue | 2 +- .../printers/frontend/views}/PrinterDetail.vue | 14 +++++++------- .../frontend/views}/PrinterDriversList.vue | 6 +++--- .../printers/frontend/views}/PrinterForm.vue | 16 ++++++++-------- .../printers/frontend/views}/PrinterQRBatch.vue | 4 ++-- .../printers/frontend/views}/PrinterQRSingle.vue | 4 ++-- .../printers/frontend/views}/PrintersList.vue | 4 ++-- .../slides/frontend/routes.js | 2 +- .../slides/frontend}/views/TVDashboard.vue | 0 .../usb.js => plugins/usb/frontend/routes.js | 10 +++++----- .../usb/frontend/views}/USBDetail.vue | 8 ++++---- .../usb/frontend/views}/USBForm.vue | 2 +- .../usb/frontend/views}/USBLabelBatch.vue | 2 +- .../usb/frontend/views}/USBList.vue | 12 ++++++------ .../warranty/frontend/routes.js | 4 ++-- .../warranty/frontend/views}/WarrantiesList.vue | 6 +++--- .../warranty/frontend/views}/WarrantyReport.vue | 4 ++-- 45 files changed, 149 insertions(+), 149 deletions(-) rename frontend/src/router/routes/computers.js => plugins/computers/frontend/routes.js (66%) rename {frontend/src/views/settings => plugins/computers/frontend/views}/AccessProtocolsList.vue (99%) rename {frontend/src/views/settings => plugins/computers/frontend/views}/OperatingSystemsList.vue (97%) rename {frontend/src/views/pcs => plugins/computers/frontend/views}/PCDetail.vue (96%) rename {frontend/src/views/pcs => plugins/computers/frontend/views}/PCForm.vue (97%) rename {frontend/src/views/settings => plugins/computers/frontend/views}/PCTypesList.vue (97%) rename {frontend/src/views/pcs => plugins/computers/frontend/views}/PCsList.vue (98%) rename frontend/src/router/routes/measuringtools.js => plugins/measuringtools/frontend/routes.js (71%) rename {frontend/src/views/reports => plugins/measuringtools/frontend/views}/CalibrationReport.vue (98%) rename {frontend/src/views/measuringtools => plugins/measuringtools/frontend/views}/MeasuringToolDetail.vue (96%) rename {frontend/src/views/measuringtools => plugins/measuringtools/frontend/views}/MeasuringToolForm.vue (98%) rename {frontend/src/views/settings => plugins/measuringtools/frontend/views}/MeasuringToolTypesList.vue (97%) rename {frontend/src/views/measuringtools => plugins/measuringtools/frontend/views}/MeasuringToolsList.vue (98%) rename frontend/src/router/routes/network.js => plugins/network/frontend/routes.js (66%) rename {frontend/src/views/network => plugins/network/frontend/views}/NetworkDeviceDetail.vue (96%) rename {frontend/src/views/network => plugins/network/frontend/views}/NetworkDeviceForm.vue (98%) rename {frontend/src/views/network => plugins/network/frontend/views}/NetworkDevicesList.vue (98%) rename {frontend/src/views/network => plugins/network/frontend/views}/NetworkHub.vue (100%) rename {frontend/src/views/network => plugins/network/frontend/views}/SubnetDetail.vue (100%) rename {frontend/src/views/network => plugins/network/frontend/views}/SubnetsBrowse.vue (100%) rename {frontend/src/views/settings => plugins/network/frontend/views}/SubnetsList.vue (98%) rename {frontend/src/views/settings => plugins/network/frontend/views}/VLANsList.vue (98%) rename frontend/src/router/routes/notifications.js => plugins/notifications/frontend/routes.js (62%) rename {frontend/src => plugins/notifications/frontend}/views/CalendarView.vue (100%) rename {frontend/src/views/notifications => plugins/notifications/frontend/views}/NotificationForm.vue (99%) rename {frontend/src/views/notifications => plugins/notifications/frontend/views}/NotificationTypesList.vue (99%) rename {frontend/src/views/notifications => plugins/notifications/frontend/views}/NotificationsList.vue (95%) rename frontend/src/router/routes/printers.js => plugins/printers/frontend/routes.js (64%) rename {frontend/src/views/settings => plugins/printers/frontend/views}/ModelSuppliesList.vue (99%) rename {frontend/src/views/printers => plugins/printers/frontend/views}/PrinterDetail.vue (97%) rename {frontend/src/views/settings => plugins/printers/frontend/views}/PrinterDriversList.vue (97%) rename {frontend/src/views/printers => plugins/printers/frontend/views}/PrinterForm.vue (97%) rename {frontend/src/views/print => plugins/printers/frontend/views}/PrinterQRBatch.vue (96%) rename {frontend/src/views/print => plugins/printers/frontend/views}/PrinterQRSingle.vue (95%) rename {frontend/src/views/printers => plugins/printers/frontend/views}/PrintersList.vue (97%) rename frontend/src/router/routes/slides.js => plugins/slides/frontend/routes.js (62%) rename {frontend/src => plugins/slides/frontend}/views/TVDashboard.vue (100%) rename frontend/src/router/routes/usb.js => plugins/usb/frontend/routes.js (63%) rename {frontend/src/views/usb => plugins/usb/frontend/views}/USBDetail.vue (97%) rename {frontend/src/views/usb => plugins/usb/frontend/views}/USBForm.vue (98%) rename {frontend/src/views/print => plugins/usb/frontend/views}/USBLabelBatch.vue (99%) rename {frontend/src/views/usb => plugins/usb/frontend/views}/USBList.vue (96%) rename frontend/src/router/routes/warranty.js => plugins/warranty/frontend/routes.js (62%) rename {frontend/src/views/warranty => plugins/warranty/frontend/views}/WarrantiesList.vue (99%) rename {frontend/src/views/reports => plugins/warranty/frontend/views}/WarrantyReport.vue (98%) diff --git a/frontend/src/router/routes/computers.js b/plugins/computers/frontend/routes.js similarity index 66% rename from frontend/src/router/routes/computers.js rename to plugins/computers/frontend/routes.js index 90619de..71ad106 100644 --- a/frontend/src/router/routes/computers.js +++ b/plugins/computers/frontend/routes.js @@ -5,44 +5,44 @@ export default [ { path: 'pcs', name: 'pcs', - component: () => import('../../views/pcs/PCsList.vue'), + component: () => import('./views/PCsList.vue'), meta: { plugin: 'computers' } }, { path: 'pcs/new', name: 'pc-new', - component: () => import('../../views/pcs/PCForm.vue'), + component: () => import('./views/PCForm.vue'), meta: { requiresAuth: true, plugin: 'computers' } }, { path: 'pcs/:id', name: 'pc-detail', - component: () => import('../../views/pcs/PCDetail.vue'), + component: () => import('./views/PCDetail.vue'), meta: { plugin: 'computers' } }, { path: 'pcs/:id/edit', name: 'pc-edit', - component: () => import('../../views/pcs/PCForm.vue'), + component: () => import('./views/PCForm.vue'), meta: { requiresAuth: true, plugin: 'computers' } }, // Computer-specific settings { path: 'settings/pctypes', name: 'pctypes', - component: () => import('../../views/settings/PCTypesList.vue'), + component: () => import('./views/PCTypesList.vue'), meta: { requiresAuth: true, requiresAdmin: true, plugin: 'computers' } }, { path: 'settings/operatingsystems', name: 'operatingsystems', - component: () => import('../../views/settings/OperatingSystemsList.vue'), + component: () => import('./views/OperatingSystemsList.vue'), meta: { requiresAuth: true, requiresAdmin: true, plugin: 'computers' } }, { path: 'settings/accessprotocols', name: 'access-protocols', - component: () => import('../../views/settings/AccessProtocolsList.vue'), + component: () => import('./views/AccessProtocolsList.vue'), meta: { requiresAuth: true, requiresAdmin: true, plugin: 'computers' } } ] diff --git a/frontend/src/views/settings/AccessProtocolsList.vue b/plugins/computers/frontend/views/AccessProtocolsList.vue similarity index 99% rename from frontend/src/views/settings/AccessProtocolsList.vue rename to plugins/computers/frontend/views/AccessProtocolsList.vue index ec4b71b..045320f 100644 --- a/frontend/src/views/settings/AccessProtocolsList.vue +++ b/plugins/computers/frontend/views/AccessProtocolsList.vue @@ -92,7 +92,7 @@