From 592ff49abefcd227f90658679bdf9bbc0fcdc168 Mon Sep 17 00:00:00 2001 From: cproudlock Date: Sun, 19 Jul 2026 00:02:32 -0400 Subject: [PATCH] ADR-013 Phase 4: extract the 11 plugin routes embedded in core.js core.js still routed plugin-owned pages directly. Extracted all 11 into the owning plugin's route file + moved their views into plugins//frontend/: - computers: reports/pc-relationships, settings/pctypemapping - printers: reports/toner, settings/printertypes, settings/zabbix (toner/supply monitoring) - machines: settings/machinetypes - network: settings/networktypes - warranty: settings/dellwarranty - slides: settings/slides (its route file gains a default export; it was toplevel-only) - employees: NEW plugin frontend (employees/:sso + settings/employeedirectory) - employees had no route file before; its pages lived only in core.js. core.js now holds only core routes; all 14 bundled plugins are self-contained under plugins//frontend/. Verified live: the extracted Machine Types settings page renders in the settings rail from the machines plugin frontend. Build + 58 vitest + naming green. --- frontend/src/router/routes/core.js | 66 ------------------- plugins/computers/frontend/routes.js | 12 ++++ .../frontend/views}/PCRelationshipsReport.vue | 2 +- .../frontend/views}/PCTypeMappingSettings.vue | 0 plugins/employees/frontend/routes.js | 18 +++++ .../frontend/views}/EmployeeDetail.vue | 4 +- .../frontend/views}/EmployeeDirectory.vue | 6 +- plugins/machines/frontend/routes.js | 6 ++ .../frontend/views}/MachineTypesList.vue | 6 +- plugins/network/frontend/routes.js | 6 ++ .../frontend/views}/NetworkTypesList.vue | 6 +- plugins/printers/frontend/routes.js | 18 +++++ .../frontend/views}/PrinterTypesList.vue | 6 +- .../printers/frontend/views}/TonerReport.vue | 2 +- .../frontend/views}/ZabbixSettings.vue | 2 +- plugins/slides/frontend/routes.js | 9 +++ .../slides/frontend/views}/SlideManager.vue | 0 plugins/warranty/frontend/routes.js | 6 ++ .../frontend/views}/DellWarrantySettings.vue | 2 +- 19 files changed, 93 insertions(+), 84 deletions(-) rename {frontend/src/views/reports => plugins/computers/frontend/views}/PCRelationshipsReport.vue (95%) rename {frontend/src/views/settings => plugins/computers/frontend/views}/PCTypeMappingSettings.vue (100%) create mode 100644 plugins/employees/frontend/routes.js rename {frontend/src/views/employees => plugins/employees/frontend/views}/EmployeeDetail.vue (99%) rename {frontend/src/views/settings => plugins/employees/frontend/views}/EmployeeDirectory.vue (98%) rename {frontend/src/views/settings => plugins/machines/frontend/views}/MachineTypesList.vue (97%) rename {frontend/src/views/settings => plugins/network/frontend/views}/NetworkTypesList.vue (97%) rename {frontend/src/views/settings => plugins/printers/frontend/views}/PrinterTypesList.vue (97%) rename {frontend/src/views/reports => plugins/printers/frontend/views}/TonerReport.vue (95%) rename {frontend/src/views/settings => plugins/printers/frontend/views}/ZabbixSettings.vue (97%) rename {frontend/src/views/settings => plugins/slides/frontend/views}/SlideManager.vue (100%) rename {frontend/src/views/settings => plugins/warranty/frontend/views}/DellWarrantySettings.vue (98%) diff --git a/frontend/src/router/routes/core.js b/frontend/src/router/routes/core.js index 34b094d..0d98321 100644 --- a/frontend/src/router/routes/core.js +++ b/frontend/src/router/routes/core.js @@ -28,24 +28,6 @@ export default [ name: 'reports', component: () => import('../../views/reports/ReportsIndex.vue') }, - { - path: 'reports/pc-relationships', - name: 'report-pc-relationships', - component: () => import('../../views/reports/PCRelationshipsReport.vue'), - meta: { plugin: 'computers' } - }, - { - path: 'reports/toner', - name: 'toner-report', - component: () => import('../../views/reports/TonerReport.vue'), - meta: { plugin: 'printers' } - }, - { - path: 'employees/:sso', - name: 'employee-detail', - component: () => import('../../views/employees/EmployeeDetail.vue'), - meta: { plugin: 'employees' } - }, // Settings { path: 'settings', @@ -107,30 +89,6 @@ export default [ component: () => import('../../views/settings/SiteSettings.vue'), meta: { requiresAuth: true, requiresAdmin: true } }, - { - path: 'settings/slides', - name: 'slide-manager', - component: () => import('../../views/settings/SlideManager.vue'), - meta: { requiresAuth: true, requiresAdmin: true, plugin: 'slides' } - }, - { - path: 'settings/machinetypes', - name: 'machinetypes', - component: () => import('../../views/settings/MachineTypesList.vue'), - meta: { requiresAuth: true, requiresAdmin: true } - }, - { - path: 'settings/networktypes', - name: 'network-types', - component: () => import('../../views/settings/NetworkTypesList.vue'), - meta: { requiresAuth: true, requiresAdmin: true } - }, - { - path: 'settings/printertypes', - name: 'printer-types', - component: () => import('../../views/settings/PrinterTypesList.vue'), - meta: { requiresAuth: true, requiresAdmin: true } - }, { path: 'settings/relationshiptypes', name: 'relationship-types', @@ -155,12 +113,6 @@ export default [ component: () => import('../../views/settings/CustomFieldsList.vue'), meta: { requiresAuth: true, requiresAdmin: true } }, - { - path: 'settings/employeedirectory', - name: 'employee-directory', - component: () => import('../../views/settings/EmployeeDirectory.vue'), - meta: { requiresAuth: true, requiresAdmin: true } - }, // The old monolithic System Settings tab page is split into one routed page // per section (below). This redirect keeps old bookmarks working: bare // /settings/system and every /settings/system?tab= land on the right page. @@ -192,24 +144,6 @@ export default [ component: () => import('../../views/settings/ServiceNowSettings.vue'), meta: { requiresAuth: true, requiresAdmin: true } }, - { - path: 'settings/zabbix', - name: 'zabbix-settings', - component: () => import('../../views/settings/ZabbixSettings.vue'), - meta: { requiresAuth: true, requiresAdmin: true } - }, - { - path: 'settings/dellwarranty', - name: 'dell-warranty-settings', - component: () => import('../../views/settings/DellWarrantySettings.vue'), - meta: { requiresAuth: true, requiresAdmin: true } - }, - { - path: 'settings/pctypemapping', - name: 'pctype-mapping-settings', - component: () => import('../../views/settings/PCTypeMappingSettings.vue'), - meta: { requiresAuth: true, requiresAdmin: true } - }, { path: 'settings/branding', name: 'branding-settings', diff --git a/plugins/computers/frontend/routes.js b/plugins/computers/frontend/routes.js index 71ad106..7a91ba8 100644 --- a/plugins/computers/frontend/routes.js +++ b/plugins/computers/frontend/routes.js @@ -2,6 +2,18 @@ * Computers plugin routes */ export default [ + { + path: 'reports/pc-relationships', + name: 'report-pc-relationships', + component: () => import('./views/PCRelationshipsReport.vue'), + meta: { plugin: 'computers' } + }, + { + path: 'settings/pctypemapping', + name: 'pctype-mapping-settings', + component: () => import('./views/PCTypeMappingSettings.vue'), + meta: { requiresAuth: true, requiresAdmin: true, plugin: 'computers' } + }, { path: 'pcs', name: 'pcs', diff --git a/frontend/src/views/reports/PCRelationshipsReport.vue b/plugins/computers/frontend/views/PCRelationshipsReport.vue similarity index 95% rename from frontend/src/views/reports/PCRelationshipsReport.vue rename to plugins/computers/frontend/views/PCRelationshipsReport.vue index 9cc0862..c6aea90 100644 --- a/frontend/src/views/reports/PCRelationshipsReport.vue +++ b/plugins/computers/frontend/views/PCRelationshipsReport.vue @@ -54,7 +54,7 @@