ADR-013 Phase 4: all 13 plugin frontends relocated + staging machinery
This commit is contained in:
@@ -10,6 +10,7 @@
|
|||||||
"prebuild": "npm run stage",
|
"prebuild": "npm run stage",
|
||||||
"build": "vite build",
|
"build": "vite build",
|
||||||
"preview": "vite preview",
|
"preview": "vite preview",
|
||||||
|
"pretest": "npm run stage",
|
||||||
"test": "vitest run",
|
"test": "vitest run",
|
||||||
"test:watch": "vitest"
|
"test:watch": "vitest"
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -14,6 +14,8 @@ export default defineConfig({
|
|||||||
test: {
|
test: {
|
||||||
environment: 'jsdom',
|
environment: 'jsdom',
|
||||||
globals: true,
|
globals: true,
|
||||||
|
// Core specs plus plugin-frontend specs, which the pretest stage copies
|
||||||
|
// into src/.plugins-staged/ (under root, so this glob finds them).
|
||||||
include: ['src/**/*.spec.js'],
|
include: ['src/**/*.spec.js'],
|
||||||
},
|
},
|
||||||
})
|
})
|
||||||
|
|||||||
@@ -5,23 +5,23 @@ export default [
|
|||||||
{
|
{
|
||||||
path: 'applications',
|
path: 'applications',
|
||||||
name: 'applications',
|
name: 'applications',
|
||||||
component: () => import('../../views/applications/ApplicationsList.vue')
|
component: () => import('./views/ApplicationsList.vue')
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
path: 'applications/new',
|
path: 'applications/new',
|
||||||
name: 'application-new',
|
name: 'application-new',
|
||||||
component: () => import('../../views/applications/ApplicationForm.vue'),
|
component: () => import('./views/ApplicationForm.vue'),
|
||||||
meta: { requiresAuth: true }
|
meta: { requiresAuth: true }
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
path: 'applications/:id',
|
path: 'applications/:id',
|
||||||
name: 'application-detail',
|
name: 'application-detail',
|
||||||
component: () => import('../../views/applications/ApplicationDetail.vue')
|
component: () => import('./views/ApplicationDetail.vue')
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
path: 'applications/:id/edit',
|
path: 'applications/:id/edit',
|
||||||
name: 'application-edit',
|
name: 'application-edit',
|
||||||
component: () => import('../../views/applications/ApplicationForm.vue'),
|
component: () => import('./views/ApplicationForm.vue'),
|
||||||
meta: { requiresAuth: true }
|
meta: { requiresAuth: true }
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
@@ -156,8 +156,8 @@
|
|||||||
<script setup>
|
<script setup>
|
||||||
import { ref, onMounted } from 'vue'
|
import { ref, onMounted } from 'vue'
|
||||||
import { useRoute } from 'vue-router'
|
import { useRoute } from 'vue-router'
|
||||||
import { applicationsApi } from '../../api'
|
import { applicationsApi } from '@/api'
|
||||||
import { getContactEmailDomain } from '../../utils/siteSettings'
|
import { getContactEmailDomain } from '@/utils/siteSettings'
|
||||||
|
|
||||||
const route = useRoute()
|
const route = useRoute()
|
||||||
|
|
||||||
@@ -154,8 +154,8 @@
|
|||||||
<script setup>
|
<script setup>
|
||||||
import { ref, onMounted, computed } from 'vue'
|
import { ref, onMounted, computed } from 'vue'
|
||||||
import { useRoute, useRouter } from 'vue-router'
|
import { useRoute, useRouter } from 'vue-router'
|
||||||
import { applicationsApi, supportteamsApi } from '../../api'
|
import { applicationsApi, supportteamsApi } from '@/api'
|
||||||
import { apiError } from '../../utils/apiError'
|
import { apiError } from '@/utils/apiError'
|
||||||
|
|
||||||
const route = useRoute()
|
const route = useRoute()
|
||||||
const router = useRouter()
|
const router = useRouter()
|
||||||
@@ -99,8 +99,8 @@
|
|||||||
|
|
||||||
<script setup>
|
<script setup>
|
||||||
import { ref, onMounted } from 'vue'
|
import { ref, onMounted } from 'vue'
|
||||||
import { applicationsApi } from '../../api'
|
import { applicationsApi } from '@/api'
|
||||||
import PaginationBar from '../../components/PaginationBar.vue'
|
import PaginationBar from '@/components/PaginationBar.vue'
|
||||||
import { useListQuery } from '@/composables/listQuery'
|
import { useListQuery } from '@/composables/listQuery'
|
||||||
|
|
||||||
const applications = ref([])
|
const applications = ref([])
|
||||||
@@ -5,44 +5,44 @@ export default [
|
|||||||
{
|
{
|
||||||
path: 'pcs',
|
path: 'pcs',
|
||||||
name: 'pcs',
|
name: 'pcs',
|
||||||
component: () => import('../../views/pcs/PCsList.vue'),
|
component: () => import('./views/PCsList.vue'),
|
||||||
meta: { plugin: 'computers' }
|
meta: { plugin: 'computers' }
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
path: 'pcs/new',
|
path: 'pcs/new',
|
||||||
name: 'pc-new',
|
name: 'pc-new',
|
||||||
component: () => import('../../views/pcs/PCForm.vue'),
|
component: () => import('./views/PCForm.vue'),
|
||||||
meta: { requiresAuth: true, plugin: 'computers' }
|
meta: { requiresAuth: true, plugin: 'computers' }
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
path: 'pcs/:id',
|
path: 'pcs/:id',
|
||||||
name: 'pc-detail',
|
name: 'pc-detail',
|
||||||
component: () => import('../../views/pcs/PCDetail.vue'),
|
component: () => import('./views/PCDetail.vue'),
|
||||||
meta: { plugin: 'computers' }
|
meta: { plugin: 'computers' }
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
path: 'pcs/:id/edit',
|
path: 'pcs/:id/edit',
|
||||||
name: 'pc-edit',
|
name: 'pc-edit',
|
||||||
component: () => import('../../views/pcs/PCForm.vue'),
|
component: () => import('./views/PCForm.vue'),
|
||||||
meta: { requiresAuth: true, plugin: 'computers' }
|
meta: { requiresAuth: true, plugin: 'computers' }
|
||||||
},
|
},
|
||||||
// Computer-specific settings
|
// Computer-specific settings
|
||||||
{
|
{
|
||||||
path: 'settings/pctypes',
|
path: 'settings/pctypes',
|
||||||
name: 'pctypes',
|
name: 'pctypes',
|
||||||
component: () => import('../../views/settings/PCTypesList.vue'),
|
component: () => import('./views/PCTypesList.vue'),
|
||||||
meta: { requiresAuth: true, requiresAdmin: true, plugin: 'computers' }
|
meta: { requiresAuth: true, requiresAdmin: true, plugin: 'computers' }
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
path: 'settings/operatingsystems',
|
path: 'settings/operatingsystems',
|
||||||
name: 'operatingsystems',
|
name: 'operatingsystems',
|
||||||
component: () => import('../../views/settings/OperatingSystemsList.vue'),
|
component: () => import('./views/OperatingSystemsList.vue'),
|
||||||
meta: { requiresAuth: true, requiresAdmin: true, plugin: 'computers' }
|
meta: { requiresAuth: true, requiresAdmin: true, plugin: 'computers' }
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
path: 'settings/accessprotocols',
|
path: 'settings/accessprotocols',
|
||||||
name: 'access-protocols',
|
name: 'access-protocols',
|
||||||
component: () => import('../../views/settings/AccessProtocolsList.vue'),
|
component: () => import('./views/AccessProtocolsList.vue'),
|
||||||
meta: { requiresAuth: true, requiresAdmin: true, plugin: 'computers' }
|
meta: { requiresAuth: true, requiresAdmin: true, plugin: 'computers' }
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
@@ -92,7 +92,7 @@
|
|||||||
<script setup>
|
<script setup>
|
||||||
import { ref, computed, onMounted } from 'vue'
|
import { ref, computed, onMounted } from 'vue'
|
||||||
import { computersApi } from '@/api'
|
import { computersApi } from '@/api'
|
||||||
import { apiError } from '../../utils/apiError'
|
import { apiError } from '@/utils/apiError'
|
||||||
|
|
||||||
const protocols = ref([])
|
const protocols = ref([])
|
||||||
const loading = ref(true)
|
const loading = ref(true)
|
||||||
@@ -117,10 +117,10 @@
|
|||||||
|
|
||||||
<script setup>
|
<script setup>
|
||||||
import { ref, onMounted } from 'vue'
|
import { ref, onMounted } from 'vue'
|
||||||
import { operatingsystemsApi } from '../../api'
|
import { operatingsystemsApi } from '@/api'
|
||||||
import PaginationBar from '../../components/PaginationBar.vue'
|
import PaginationBar from '@/components/PaginationBar.vue'
|
||||||
import { useToast } from '../../composables/toast'
|
import { useToast } from '@/composables/toast'
|
||||||
import { apiError } from '../../utils/apiError'
|
import { apiError } from '@/utils/apiError'
|
||||||
import { useListQuery } from '@/composables/listQuery'
|
import { useListQuery } from '@/composables/listQuery'
|
||||||
const toast = useToast()
|
const toast = useToast()
|
||||||
|
|
||||||
@@ -240,13 +240,13 @@
|
|||||||
import { ref, onMounted } from 'vue'
|
import { ref, onMounted } from 'vue'
|
||||||
import { colorStyle } from "@/utils/colorStyle"
|
import { colorStyle } from "@/utils/colorStyle"
|
||||||
import { useRoute } from 'vue-router'
|
import { useRoute } from 'vue-router'
|
||||||
import { computersApi, applicationsApi } from '../../api'
|
import { computersApi, applicationsApi } from '@/api'
|
||||||
import { useWarrantyBadge } from '../../composables/warrantyBadge'
|
import { useWarrantyBadge } from '@/composables/warrantyBadge'
|
||||||
import LocationMapTooltip from '../../components/LocationMapTooltip.vue'
|
import LocationMapTooltip from '@/components/LocationMapTooltip.vue'
|
||||||
import CustomFieldsSection from '../../components/CustomFieldsSection.vue'
|
import CustomFieldsSection from '@/components/CustomFieldsSection.vue'
|
||||||
import PluginAssetPanels from '../../components/PluginAssetPanels.vue'
|
import PluginAssetPanels from '@/components/PluginAssetPanels.vue'
|
||||||
import AssetRelationships from '../../components/AssetRelationships.vue'
|
import AssetRelationships from '@/components/AssetRelationships.vue'
|
||||||
import { useIdentifierFlags } from '../../composables/identifierSettings'
|
import { useIdentifierFlags } from '@/composables/identifierSettings'
|
||||||
|
|
||||||
const route = useRoute()
|
const route = useRoute()
|
||||||
const { isEnabled } = useIdentifierFlags()
|
const { isEnabled } = useIdentifierFlags()
|
||||||
@@ -304,13 +304,13 @@
|
|||||||
<script setup>
|
<script setup>
|
||||||
import { ref, onMounted, computed, watch } from 'vue'
|
import { ref, onMounted, computed, watch } from 'vue'
|
||||||
import { useRoute, useRouter } from 'vue-router'
|
import { useRoute, useRouter } from 'vue-router'
|
||||||
import { computersApi, assetsApi, vendorsApi, locationsApi, modelsApi, operatingsystemsApi } from '../../api'
|
import { computersApi, assetsApi, vendorsApi, locationsApi, modelsApi, operatingsystemsApi } from '@/api'
|
||||||
import ShopFloorMap from '../../components/ShopFloorMap.vue'
|
import ShopFloorMap from '@/components/ShopFloorMap.vue'
|
||||||
import Modal from '../../components/Modal.vue'
|
import Modal from '@/components/Modal.vue'
|
||||||
import CustomFieldsInputs from '../../components/CustomFieldsInputs.vue'
|
import CustomFieldsInputs from '@/components/CustomFieldsInputs.vue'
|
||||||
import { currentTheme } from '../../stores/theme'
|
import { currentTheme } from '@/stores/theme'
|
||||||
import { useIdentifierFlags } from '../../composables/identifierSettings'
|
import { useIdentifierFlags } from '@/composables/identifierSettings'
|
||||||
import { apiError } from '../../utils/apiError'
|
import { apiError } from '@/utils/apiError'
|
||||||
|
|
||||||
const { isEnabled } = useIdentifierFlags()
|
const { isEnabled } = useIdentifierFlags()
|
||||||
|
|
||||||
@@ -83,11 +83,11 @@
|
|||||||
|
|
||||||
<script setup>
|
<script setup>
|
||||||
import { ref, computed, onMounted } from 'vue'
|
import { ref, computed, onMounted } from 'vue'
|
||||||
import { computersApi } from '../../api'
|
import { computersApi } from '@/api'
|
||||||
import ColorSwatchPicker from '@/components/ColorSwatchPicker.vue'
|
import ColorSwatchPicker from '@/components/ColorSwatchPicker.vue'
|
||||||
import { colorStyle } from '@/utils/colorStyle'
|
import { colorStyle } from '@/utils/colorStyle'
|
||||||
import { useToast } from '../../composables/toast'
|
import { useToast } from '@/composables/toast'
|
||||||
import { apiError } from '../../utils/apiError'
|
import { apiError } from '@/utils/apiError'
|
||||||
const toast = useToast()
|
const toast = useToast()
|
||||||
|
|
||||||
const pcTypes = ref([])
|
const pcTypes = ref([])
|
||||||
@@ -87,8 +87,8 @@
|
|||||||
|
|
||||||
<script setup>
|
<script setup>
|
||||||
import { ref, onMounted } from 'vue'
|
import { ref, onMounted } from 'vue'
|
||||||
import { computersApi } from '../../api'
|
import { computersApi } from '@/api'
|
||||||
import PaginationBar from '../../components/PaginationBar.vue'
|
import PaginationBar from '@/components/PaginationBar.vue'
|
||||||
import { colorStyle } from '@/utils/colorStyle'
|
import { colorStyle } from '@/utils/colorStyle'
|
||||||
import { useListQuery } from '@/composables/listQuery'
|
import { useListQuery } from '@/composables/listQuery'
|
||||||
|
|
||||||
@@ -9,20 +9,20 @@
|
|||||||
export default [
|
export default [
|
||||||
{
|
{
|
||||||
path: 'geenforce',
|
path: 'geenforce',
|
||||||
component: () => import('../../views/geenforce/GeEnforceLayout.vue'),
|
component: () => import('./views/GeEnforceLayout.vue'),
|
||||||
meta: { requiresAuth: true, requiresAdmin: true, plugin: 'geenforce' },
|
meta: { requiresAuth: true, requiresAdmin: true, plugin: 'geenforce' },
|
||||||
children: [
|
children: [
|
||||||
{ path: '', redirect: '/geenforce/manifests' },
|
{ path: '', redirect: '/geenforce/manifests' },
|
||||||
{
|
{
|
||||||
path: 'manifests',
|
path: 'manifests',
|
||||||
name: 'geenforce-manifests',
|
name: 'geenforce-manifests',
|
||||||
component: () => import('../../views/geenforce/ManifestEditor.vue'),
|
component: () => import('./views/ManifestEditor.vue'),
|
||||||
meta: { requiresAuth: true, requiresAdmin: true, plugin: 'geenforce' }
|
meta: { requiresAuth: true, requiresAdmin: true, plugin: 'geenforce' }
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
path: 'reports',
|
path: 'reports',
|
||||||
name: 'geenforce-reports',
|
name: 'geenforce-reports',
|
||||||
component: () => import('../../views/geenforce/EnforcementReports.vue'),
|
component: () => import('./views/EnforcementReports.vue'),
|
||||||
meta: { requiresAuth: true, requiresAdmin: true, plugin: 'geenforce' }
|
meta: { requiresAuth: true, requiresAdmin: true, plugin: 'geenforce' }
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
@@ -104,7 +104,7 @@
|
|||||||
|
|
||||||
<script setup>
|
<script setup>
|
||||||
import { ref } from 'vue'
|
import { ref } from 'vue'
|
||||||
import api from '../../api'
|
import api from '@/api'
|
||||||
|
|
||||||
const reports = ref([])
|
const reports = ref([])
|
||||||
const detail = ref(null)
|
const detail = ref(null)
|
||||||
@@ -570,7 +570,7 @@
|
|||||||
|
|
||||||
<script setup>
|
<script setup>
|
||||||
import { ref, computed } from 'vue'
|
import { ref, computed } from 'vue'
|
||||||
import api from '../../api'
|
import api from '@/api'
|
||||||
// Pure entry-form logic lives in entryForm.js (unit-tested by entryForm.spec.js);
|
// Pure entry-form logic lives in entryForm.js (unit-tested by entryForm.spec.js);
|
||||||
// this component wires it to reactive state so the tests cover the shipped code.
|
// this component wires it to reactive state so the tests cover the shipped code.
|
||||||
import {
|
import {
|
||||||
@@ -5,25 +5,25 @@ export default [
|
|||||||
{
|
{
|
||||||
path: 'knowledgebase',
|
path: 'knowledgebase',
|
||||||
name: 'knowledgebase',
|
name: 'knowledgebase',
|
||||||
component: () => import('../../views/knowledgebase/KnowledgeBaseList.vue'),
|
component: () => import('./views/KnowledgeBaseList.vue'),
|
||||||
meta: { plugin: 'knowledgebase' }
|
meta: { plugin: 'knowledgebase' }
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
path: 'knowledgebase/new',
|
path: 'knowledgebase/new',
|
||||||
name: 'knowledgebase-new',
|
name: 'knowledgebase-new',
|
||||||
component: () => import('../../views/knowledgebase/KnowledgeBaseForm.vue'),
|
component: () => import('./views/KnowledgeBaseForm.vue'),
|
||||||
meta: { requiresAuth: true, plugin: 'knowledgebase' }
|
meta: { requiresAuth: true, plugin: 'knowledgebase' }
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
path: 'knowledgebase/:id',
|
path: 'knowledgebase/:id',
|
||||||
name: 'knowledgebase-detail',
|
name: 'knowledgebase-detail',
|
||||||
component: () => import('../../views/knowledgebase/KnowledgeBaseDetail.vue'),
|
component: () => import('./views/KnowledgeBaseDetail.vue'),
|
||||||
meta: { plugin: 'knowledgebase' }
|
meta: { plugin: 'knowledgebase' }
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
path: 'knowledgebase/:id/edit',
|
path: 'knowledgebase/:id/edit',
|
||||||
name: 'knowledgebase-edit',
|
name: 'knowledgebase-edit',
|
||||||
component: () => import('../../views/knowledgebase/KnowledgeBaseForm.vue'),
|
component: () => import('./views/KnowledgeBaseForm.vue'),
|
||||||
meta: { requiresAuth: true, plugin: 'knowledgebase' }
|
meta: { requiresAuth: true, plugin: 'knowledgebase' }
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
@@ -79,7 +79,7 @@
|
|||||||
<script setup>
|
<script setup>
|
||||||
import { ref, onMounted } from 'vue'
|
import { ref, onMounted } from 'vue'
|
||||||
import { useRoute } from 'vue-router'
|
import { useRoute } from 'vue-router'
|
||||||
import { knowledgebaseApi } from '../../api'
|
import { knowledgebaseApi } from '@/api'
|
||||||
|
|
||||||
const route = useRoute()
|
const route = useRoute()
|
||||||
|
|
||||||
@@ -82,8 +82,8 @@
|
|||||||
<script setup>
|
<script setup>
|
||||||
import { ref, onMounted, computed } from 'vue'
|
import { ref, onMounted, computed } from 'vue'
|
||||||
import { useRoute, useRouter } from 'vue-router'
|
import { useRoute, useRouter } from 'vue-router'
|
||||||
import { knowledgebaseApi, applicationsApi } from '../../api'
|
import { knowledgebaseApi, applicationsApi } from '@/api'
|
||||||
import { apiError } from '../../utils/apiError'
|
import { apiError } from '@/utils/apiError'
|
||||||
|
|
||||||
const route = useRoute()
|
const route = useRoute()
|
||||||
const router = useRouter()
|
const router = useRouter()
|
||||||
@@ -109,8 +109,8 @@
|
|||||||
|
|
||||||
<script setup>
|
<script setup>
|
||||||
import { ref, onMounted } from 'vue'
|
import { ref, onMounted } from 'vue'
|
||||||
import { knowledgebaseApi, applicationsApi } from '../../api'
|
import { knowledgebaseApi, applicationsApi } from '@/api'
|
||||||
import PaginationBar from '../../components/PaginationBar.vue'
|
import PaginationBar from '@/components/PaginationBar.vue'
|
||||||
import { useListQuery } from '@/composables/listQuery'
|
import { useListQuery } from '@/composables/listQuery'
|
||||||
|
|
||||||
const loading = ref(true)
|
const loading = ref(true)
|
||||||
@@ -5,25 +5,25 @@ export default [
|
|||||||
{
|
{
|
||||||
path: 'machines',
|
path: 'machines',
|
||||||
name: 'machines',
|
name: 'machines',
|
||||||
component: () => import('../../views/machines/MachinesList.vue'),
|
component: () => import('./views/MachinesList.vue'),
|
||||||
meta: { plugin: 'machines' }
|
meta: { plugin: 'machines' }
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
path: 'machines/new',
|
path: 'machines/new',
|
||||||
name: 'machine-new',
|
name: 'machine-new',
|
||||||
component: () => import('../../views/machines/MachineForm.vue'),
|
component: () => import('./views/MachineForm.vue'),
|
||||||
meta: { requiresAuth: true, plugin: 'machines' }
|
meta: { requiresAuth: true, plugin: 'machines' }
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
path: 'machines/:id',
|
path: 'machines/:id',
|
||||||
name: 'machine-detail',
|
name: 'machine-detail',
|
||||||
component: () => import('../../views/machines/MachineDetail.vue'),
|
component: () => import('./views/MachineDetail.vue'),
|
||||||
meta: { plugin: 'machines' }
|
meta: { plugin: 'machines' }
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
path: 'machines/:id/edit',
|
path: 'machines/:id/edit',
|
||||||
name: 'machine-edit',
|
name: 'machine-edit',
|
||||||
component: () => import('../../views/machines/MachineForm.vue'),
|
component: () => import('./views/MachineForm.vue'),
|
||||||
meta: { requiresAuth: true, plugin: 'machines' }
|
meta: { requiresAuth: true, plugin: 'machines' }
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
@@ -234,13 +234,13 @@
|
|||||||
<script setup>
|
<script setup>
|
||||||
import { ref, onMounted } from 'vue'
|
import { ref, onMounted } from 'vue'
|
||||||
import { useRoute } from 'vue-router'
|
import { useRoute } from 'vue-router'
|
||||||
import { machinesApi } from '../../api'
|
import { machinesApi } from '@/api'
|
||||||
import LocationMapTooltip from '../../components/LocationMapTooltip.vue'
|
import LocationMapTooltip from '@/components/LocationMapTooltip.vue'
|
||||||
import CustomFieldsSection from '../../components/CustomFieldsSection.vue'
|
import CustomFieldsSection from '@/components/CustomFieldsSection.vue'
|
||||||
import PluginAssetPanels from '../../components/PluginAssetPanels.vue'
|
import PluginAssetPanels from '@/components/PluginAssetPanels.vue'
|
||||||
import AssetRelationships from '../../components/AssetRelationships.vue'
|
import AssetRelationships from '@/components/AssetRelationships.vue'
|
||||||
import { useWarrantyBadge } from '../../composables/warrantyBadge'
|
import { useWarrantyBadge } from '@/composables/warrantyBadge'
|
||||||
import { useIdentifierFlags } from '../../composables/identifierSettings'
|
import { useIdentifierFlags } from '@/composables/identifierSettings'
|
||||||
|
|
||||||
const route = useRoute()
|
const route = useRoute()
|
||||||
const { isEnabled } = useIdentifierFlags()
|
const { isEnabled } = useIdentifierFlags()
|
||||||
@@ -347,13 +347,13 @@
|
|||||||
<script setup>
|
<script setup>
|
||||||
import { ref, onMounted, computed, watch } from 'vue'
|
import { ref, onMounted, computed, watch } from 'vue'
|
||||||
import { useRoute, useRouter } from 'vue-router'
|
import { useRoute, useRouter } from 'vue-router'
|
||||||
import { machinesApi, vendorsApi, locationsApi, modelsApi, businessunitsApi, computersApi, assetsApi, relationshipTypesApi } from '../../api'
|
import { machinesApi, vendorsApi, locationsApi, modelsApi, businessunitsApi, computersApi, assetsApi, relationshipTypesApi } from '@/api'
|
||||||
import ShopFloorMap from '../../components/ShopFloorMap.vue'
|
import ShopFloorMap from '@/components/ShopFloorMap.vue'
|
||||||
import Modal from '../../components/Modal.vue'
|
import Modal from '@/components/Modal.vue'
|
||||||
import CustomFieldsInputs from '../../components/CustomFieldsInputs.vue'
|
import CustomFieldsInputs from '@/components/CustomFieldsInputs.vue'
|
||||||
import { currentTheme } from '../../stores/theme'
|
import { currentTheme } from '@/stores/theme'
|
||||||
import { useIdentifierFlags } from '../../composables/identifierSettings'
|
import { useIdentifierFlags } from '@/composables/identifierSettings'
|
||||||
import { apiError } from '../../utils/apiError'
|
import { apiError } from '@/utils/apiError'
|
||||||
|
|
||||||
const { isEnabled } = useIdentifierFlags()
|
const { isEnabled } = useIdentifierFlags()
|
||||||
|
|
||||||
@@ -85,8 +85,8 @@
|
|||||||
<script setup>
|
<script setup>
|
||||||
import { ref, onMounted } from 'vue'
|
import { ref, onMounted } from 'vue'
|
||||||
import { colorStyle } from "@/utils/colorStyle"
|
import { colorStyle } from "@/utils/colorStyle"
|
||||||
import { machinesApi } from '../../api'
|
import { machinesApi } from '@/api'
|
||||||
import PaginationBar from '../../components/PaginationBar.vue'
|
import PaginationBar from '@/components/PaginationBar.vue'
|
||||||
import { useListQuery } from '@/composables/listQuery'
|
import { useListQuery } from '@/composables/listQuery'
|
||||||
|
|
||||||
const machines = ref([])
|
const machines = ref([])
|
||||||
@@ -10,13 +10,13 @@ export default [
|
|||||||
{
|
{
|
||||||
path: 'measuringtools',
|
path: 'measuringtools',
|
||||||
name: 'measuringtools',
|
name: 'measuringtools',
|
||||||
component: () => import('../../views/measuringtools/MeasuringToolsList.vue'),
|
component: () => import('./views/MeasuringToolsList.vue'),
|
||||||
meta: { plugin: 'measuringtools' }
|
meta: { plugin: 'measuringtools' }
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
path: 'measuringtools/new',
|
path: 'measuringtools/new',
|
||||||
name: 'measuringtool-new',
|
name: 'measuringtool-new',
|
||||||
component: () => import('../../views/measuringtools/MeasuringToolForm.vue'),
|
component: () => import('./views/MeasuringToolForm.vue'),
|
||||||
meta: { requiresAuth: true, plugin: 'measuringtools' }
|
meta: { requiresAuth: true, plugin: 'measuringtools' }
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -24,31 +24,31 @@ export default [
|
|||||||
// assetid, not the extension id). Shares the detail component.
|
// assetid, not the extension id). Shares the detail component.
|
||||||
path: 'measuringtools/by-asset/:assetid',
|
path: 'measuringtools/by-asset/:assetid',
|
||||||
name: 'measuringtool-by-asset',
|
name: 'measuringtool-by-asset',
|
||||||
component: () => import('../../views/measuringtools/MeasuringToolDetail.vue'),
|
component: () => import('./views/MeasuringToolDetail.vue'),
|
||||||
meta: { plugin: 'measuringtools' }
|
meta: { plugin: 'measuringtools' }
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
path: 'measuringtools/:id',
|
path: 'measuringtools/:id',
|
||||||
name: 'measuringtool-detail',
|
name: 'measuringtool-detail',
|
||||||
component: () => import('../../views/measuringtools/MeasuringToolDetail.vue'),
|
component: () => import('./views/MeasuringToolDetail.vue'),
|
||||||
meta: { plugin: 'measuringtools' }
|
meta: { plugin: 'measuringtools' }
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
path: 'measuringtools/:id/edit',
|
path: 'measuringtools/:id/edit',
|
||||||
name: 'measuringtool-edit',
|
name: 'measuringtool-edit',
|
||||||
component: () => import('../../views/measuringtools/MeasuringToolForm.vue'),
|
component: () => import('./views/MeasuringToolForm.vue'),
|
||||||
meta: { requiresAuth: true, plugin: 'measuringtools' }
|
meta: { requiresAuth: true, plugin: 'measuringtools' }
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
path: 'reports/calibration',
|
path: 'reports/calibration',
|
||||||
name: 'calibration-report',
|
name: 'calibration-report',
|
||||||
component: () => import('../../views/reports/CalibrationReport.vue'),
|
component: () => import('./views/CalibrationReport.vue'),
|
||||||
meta: { plugin: 'measuringtools' }
|
meta: { plugin: 'measuringtools' }
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
path: 'settings/measuringtooltypes',
|
path: 'settings/measuringtooltypes',
|
||||||
name: 'measuringtooltypes',
|
name: 'measuringtooltypes',
|
||||||
component: () => import('../../views/settings/MeasuringToolTypesList.vue'),
|
component: () => import('./views/MeasuringToolTypesList.vue'),
|
||||||
meta: { requiresAuth: true, requiresAdmin: true, plugin: 'measuringtools' }
|
meta: { requiresAuth: true, requiresAdmin: true, plugin: 'measuringtools' }
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
@@ -54,7 +54,7 @@
|
|||||||
|
|
||||||
<script setup>
|
<script setup>
|
||||||
import { ref, onMounted } from 'vue'
|
import { ref, onMounted } from 'vue'
|
||||||
import { measuringtoolsApi } from '../../api'
|
import { measuringtoolsApi } from '@/api'
|
||||||
|
|
||||||
const loading = ref(true)
|
const loading = ref(true)
|
||||||
const counts = ref({})
|
const counts = ref({})
|
||||||
@@ -167,11 +167,11 @@
|
|||||||
import { ref, onMounted } from 'vue'
|
import { ref, onMounted } from 'vue'
|
||||||
import { useRoute } from 'vue-router'
|
import { useRoute } from 'vue-router'
|
||||||
import { colorStyle } from '@/utils/colorStyle'
|
import { colorStyle } from '@/utils/colorStyle'
|
||||||
import { measuringtoolsApi } from '../../api'
|
import { measuringtoolsApi } from '@/api'
|
||||||
import CustomFieldsSection from '../../components/CustomFieldsSection.vue'
|
import CustomFieldsSection from '@/components/CustomFieldsSection.vue'
|
||||||
import PluginAssetPanels from '../../components/PluginAssetPanels.vue'
|
import PluginAssetPanels from '@/components/PluginAssetPanels.vue'
|
||||||
import AssetRelationships from '../../components/AssetRelationships.vue'
|
import AssetRelationships from '@/components/AssetRelationships.vue'
|
||||||
import { useIdentifierFlags } from '../../composables/identifierSettings'
|
import { useIdentifierFlags } from '@/composables/identifierSettings'
|
||||||
|
|
||||||
const route = useRoute()
|
const route = useRoute()
|
||||||
|
|
||||||
@@ -132,10 +132,10 @@
|
|||||||
<script setup>
|
<script setup>
|
||||||
import { ref, onMounted, computed } from 'vue'
|
import { ref, onMounted, computed } from 'vue'
|
||||||
import { useRoute, useRouter } from 'vue-router'
|
import { useRoute, useRouter } from 'vue-router'
|
||||||
import { measuringtoolsApi, assetsApi, locationsApi, businessunitsApi } from '../../api'
|
import { measuringtoolsApi, assetsApi, locationsApi, businessunitsApi } from '@/api'
|
||||||
import CustomFieldsInputs from '../../components/CustomFieldsInputs.vue'
|
import CustomFieldsInputs from '@/components/CustomFieldsInputs.vue'
|
||||||
import { useIdentifierFlags } from '../../composables/identifierSettings'
|
import { useIdentifierFlags } from '@/composables/identifierSettings'
|
||||||
import { apiError } from '../../utils/apiError'
|
import { apiError } from '@/utils/apiError'
|
||||||
|
|
||||||
const route = useRoute()
|
const route = useRoute()
|
||||||
const router = useRouter()
|
const router = useRouter()
|
||||||
@@ -83,11 +83,11 @@
|
|||||||
|
|
||||||
<script setup>
|
<script setup>
|
||||||
import { ref, computed, onMounted } from 'vue'
|
import { ref, computed, onMounted } from 'vue'
|
||||||
import { measuringtoolsApi } from '../../api'
|
import { measuringtoolsApi } from '@/api'
|
||||||
import ColorSwatchPicker from '@/components/ColorSwatchPicker.vue'
|
import ColorSwatchPicker from '@/components/ColorSwatchPicker.vue'
|
||||||
import { colorStyle } from '@/utils/colorStyle'
|
import { colorStyle } from '@/utils/colorStyle'
|
||||||
import { useToast } from '../../composables/toast'
|
import { useToast } from '@/composables/toast'
|
||||||
import { apiError } from '../../utils/apiError'
|
import { apiError } from '@/utils/apiError'
|
||||||
const toast = useToast()
|
const toast = useToast()
|
||||||
|
|
||||||
const types = ref([])
|
const types = ref([])
|
||||||
@@ -94,8 +94,8 @@
|
|||||||
<script setup>
|
<script setup>
|
||||||
import { ref, onMounted } from 'vue'
|
import { ref, onMounted } from 'vue'
|
||||||
import { colorStyle } from '@/utils/colorStyle'
|
import { colorStyle } from '@/utils/colorStyle'
|
||||||
import { measuringtoolsApi } from '../../api'
|
import { measuringtoolsApi } from '@/api'
|
||||||
import PaginationBar from '../../components/PaginationBar.vue'
|
import PaginationBar from '@/components/PaginationBar.vue'
|
||||||
import { useListQuery } from '@/composables/listQuery'
|
import { useListQuery } from '@/composables/listQuery'
|
||||||
|
|
||||||
const tools = ref([])
|
const tools = ref([])
|
||||||
@@ -5,25 +5,25 @@ export default [
|
|||||||
{
|
{
|
||||||
path: 'network',
|
path: 'network',
|
||||||
name: 'network',
|
name: 'network',
|
||||||
component: () => import('../../views/network/NetworkHub.vue'),
|
component: () => import('./views/NetworkHub.vue'),
|
||||||
meta: { plugin: 'network' }
|
meta: { plugin: 'network' }
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
path: 'network/new',
|
path: 'network/new',
|
||||||
name: 'network-new',
|
name: 'network-new',
|
||||||
component: () => import('../../views/network/NetworkDeviceForm.vue'),
|
component: () => import('./views/NetworkDeviceForm.vue'),
|
||||||
meta: { requiresAuth: true, plugin: 'network' }
|
meta: { requiresAuth: true, plugin: 'network' }
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
path: 'network/:id',
|
path: 'network/:id',
|
||||||
name: 'network-detail',
|
name: 'network-detail',
|
||||||
component: () => import('../../views/network/NetworkDeviceDetail.vue'),
|
component: () => import('./views/NetworkDeviceDetail.vue'),
|
||||||
meta: { plugin: 'network' }
|
meta: { plugin: 'network' }
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
path: 'network/:id/edit',
|
path: 'network/:id/edit',
|
||||||
name: 'network-edit',
|
name: 'network-edit',
|
||||||
component: () => import('../../views/network/NetworkDeviceForm.vue'),
|
component: () => import('./views/NetworkDeviceForm.vue'),
|
||||||
meta: { requiresAuth: true, plugin: 'network' }
|
meta: { requiresAuth: true, plugin: 'network' }
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -34,20 +34,20 @@ export default [
|
|||||||
{
|
{
|
||||||
path: 'networks/:id',
|
path: 'networks/:id',
|
||||||
name: 'network-subnet-detail',
|
name: 'network-subnet-detail',
|
||||||
component: () => import('../../views/network/SubnetDetail.vue'),
|
component: () => import('./views/SubnetDetail.vue'),
|
||||||
meta: { plugin: 'network' }
|
meta: { plugin: 'network' }
|
||||||
},
|
},
|
||||||
// Network-specific settings
|
// Network-specific settings
|
||||||
{
|
{
|
||||||
path: 'settings/vlans',
|
path: 'settings/vlans',
|
||||||
name: 'vlans',
|
name: 'vlans',
|
||||||
component: () => import('../../views/settings/VLANsList.vue'),
|
component: () => import('./views/VLANsList.vue'),
|
||||||
meta: { requiresAuth: true, requiresAdmin: true, plugin: 'network' }
|
meta: { requiresAuth: true, requiresAdmin: true, plugin: 'network' }
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
path: 'settings/subnets',
|
path: 'settings/subnets',
|
||||||
name: 'subnets',
|
name: 'subnets',
|
||||||
component: () => import('../../views/settings/SubnetsList.vue'),
|
component: () => import('./views/SubnetsList.vue'),
|
||||||
meta: { requiresAuth: true, requiresAdmin: true, plugin: 'network' }
|
meta: { requiresAuth: true, requiresAdmin: true, plugin: 'network' }
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
@@ -200,14 +200,14 @@ import { ref, onMounted } from 'vue'
|
|||||||
import { colorStyle } from "@/utils/colorStyle"
|
import { colorStyle } from "@/utils/colorStyle"
|
||||||
import { useRoute, useRouter } from 'vue-router'
|
import { useRoute, useRouter } from 'vue-router'
|
||||||
import { Network, Router, Shield, Wifi, Camera, Server, Server as Rack, Globe } from 'lucide-vue-next'
|
import { Network, Router, Shield, Wifi, Camera, Server, Server as Rack, Globe } from 'lucide-vue-next'
|
||||||
import { useAuthStore } from '../../stores/auth'
|
import { useAuthStore } from '@/stores/auth'
|
||||||
import { networkApi } from '../../api'
|
import { networkApi } from '@/api'
|
||||||
import AssetRelationships from '../../components/AssetRelationships.vue'
|
import AssetRelationships from '@/components/AssetRelationships.vue'
|
||||||
import CustomFieldsSection from '../../components/CustomFieldsSection.vue'
|
import CustomFieldsSection from '@/components/CustomFieldsSection.vue'
|
||||||
import PluginAssetPanels from '../../components/PluginAssetPanels.vue'
|
import PluginAssetPanels from '@/components/PluginAssetPanels.vue'
|
||||||
import { useWarrantyBadge } from '../../composables/warrantyBadge'
|
import { useWarrantyBadge } from '@/composables/warrantyBadge'
|
||||||
import { useIdentifierFlags } from '../../composables/identifierSettings'
|
import { useIdentifierFlags } from '@/composables/identifierSettings'
|
||||||
import { useToast } from '../../composables/toast'
|
import { useToast } from '@/composables/toast'
|
||||||
const toast = useToast()
|
const toast = useToast()
|
||||||
|
|
||||||
const { isEnabled } = useIdentifierFlags()
|
const { isEnabled } = useIdentifierFlags()
|
||||||
@@ -254,10 +254,10 @@ import {
|
|||||||
locationsApi,
|
locationsApi,
|
||||||
assetsApi,
|
assetsApi,
|
||||||
businessunitsApi
|
businessunitsApi
|
||||||
} from '../../api'
|
} from '@/api'
|
||||||
import CustomFieldsInputs from '../../components/CustomFieldsInputs.vue'
|
import CustomFieldsInputs from '@/components/CustomFieldsInputs.vue'
|
||||||
import { useIdentifierFlags } from '../../composables/identifierSettings'
|
import { useIdentifierFlags } from '@/composables/identifierSettings'
|
||||||
import { apiError } from '../../utils/apiError'
|
import { apiError } from '@/utils/apiError'
|
||||||
|
|
||||||
const { isEnabled } = useIdentifierFlags()
|
const { isEnabled } = useIdentifierFlags()
|
||||||
|
|
||||||
@@ -119,8 +119,8 @@
|
|||||||
<script setup>
|
<script setup>
|
||||||
import { ref, onMounted } from 'vue'
|
import { ref, onMounted } from 'vue'
|
||||||
import { colorStyle } from "@/utils/colorStyle"
|
import { colorStyle } from "@/utils/colorStyle"
|
||||||
import { networkApi, vendorsApi, locationsApi } from '../../api'
|
import { networkApi, vendorsApi, locationsApi } from '@/api'
|
||||||
import PaginationBar from '../../components/PaginationBar.vue'
|
import PaginationBar from '@/components/PaginationBar.vue'
|
||||||
import { useListQuery } from '@/composables/listQuery'
|
import { useListQuery } from '@/composables/listQuery'
|
||||||
|
|
||||||
const devices = ref([])
|
const devices = ref([])
|
||||||
@@ -283,10 +283,10 @@
|
|||||||
<script setup>
|
<script setup>
|
||||||
import { ref, onMounted } from 'vue'
|
import { ref, onMounted } from 'vue'
|
||||||
import { useRoute } from 'vue-router'
|
import { useRoute } from 'vue-router'
|
||||||
import { networkApi, locationsApi } from '../../api'
|
import { networkApi, locationsApi } from '@/api'
|
||||||
import PaginationBar from '../../components/PaginationBar.vue'
|
import PaginationBar from '@/components/PaginationBar.vue'
|
||||||
import { useToast } from '../../composables/toast'
|
import { useToast } from '@/composables/toast'
|
||||||
import { apiError } from '../../utils/apiError'
|
import { apiError } from '@/utils/apiError'
|
||||||
import { useListQuery } from '@/composables/listQuery'
|
import { useListQuery } from '@/composables/listQuery'
|
||||||
const toast = useToast()
|
const toast = useToast()
|
||||||
|
|
||||||
@@ -185,10 +185,10 @@
|
|||||||
|
|
||||||
<script setup>
|
<script setup>
|
||||||
import { ref, onMounted } from 'vue'
|
import { ref, onMounted } from 'vue'
|
||||||
import { networkApi } from '../../api'
|
import { networkApi } from '@/api'
|
||||||
import PaginationBar from '../../components/PaginationBar.vue'
|
import PaginationBar from '@/components/PaginationBar.vue'
|
||||||
import { useToast } from '../../composables/toast'
|
import { useToast } from '@/composables/toast'
|
||||||
import { apiError } from '../../utils/apiError'
|
import { apiError } from '@/utils/apiError'
|
||||||
import { useListQuery } from '@/composables/listQuery'
|
import { useListQuery } from '@/composables/listQuery'
|
||||||
const toast = useToast()
|
const toast = useToast()
|
||||||
|
|
||||||
@@ -5,37 +5,37 @@ export default [
|
|||||||
{
|
{
|
||||||
path: 'notifications',
|
path: 'notifications',
|
||||||
name: 'notifications',
|
name: 'notifications',
|
||||||
component: () => import('../../views/notifications/NotificationsList.vue'),
|
component: () => import('./views/NotificationsList.vue'),
|
||||||
meta: { plugin: 'notifications' }
|
meta: { plugin: 'notifications' }
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
path: 'notifications/new',
|
path: 'notifications/new',
|
||||||
name: 'notification-new',
|
name: 'notification-new',
|
||||||
component: () => import('../../views/notifications/NotificationForm.vue'),
|
component: () => import('./views/NotificationForm.vue'),
|
||||||
meta: { requiresAuth: true, plugin: 'notifications' }
|
meta: { requiresAuth: true, plugin: 'notifications' }
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
path: 'settings/notificationtypes',
|
path: 'settings/notificationtypes',
|
||||||
name: 'notification-types',
|
name: 'notification-types',
|
||||||
component: () => import('../../views/notifications/NotificationTypesList.vue'),
|
component: () => import('./views/NotificationTypesList.vue'),
|
||||||
meta: { requiresAuth: true, plugin: 'notifications' }
|
meta: { requiresAuth: true, plugin: 'notifications' }
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
path: 'notifications/:id',
|
path: 'notifications/:id',
|
||||||
name: 'notification-detail',
|
name: 'notification-detail',
|
||||||
component: () => import('../../views/notifications/NotificationForm.vue'),
|
component: () => import('./views/NotificationForm.vue'),
|
||||||
meta: { plugin: 'notifications' }
|
meta: { plugin: 'notifications' }
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
path: 'notifications/:id/edit',
|
path: 'notifications/:id/edit',
|
||||||
name: 'notification-edit',
|
name: 'notification-edit',
|
||||||
component: () => import('../../views/notifications/NotificationForm.vue'),
|
component: () => import('./views/NotificationForm.vue'),
|
||||||
meta: { requiresAuth: true, plugin: 'notifications' }
|
meta: { requiresAuth: true, plugin: 'notifications' }
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
path: 'calendar',
|
path: 'calendar',
|
||||||
name: 'calendar',
|
name: 'calendar',
|
||||||
component: () => import('../../views/CalendarView.vue'),
|
component: () => import('./views/CalendarView.vue'),
|
||||||
meta: { plugin: 'notifications' }
|
meta: { plugin: 'notifications' }
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
@@ -242,7 +242,7 @@
|
|||||||
import { ref, onMounted, computed, watch } from 'vue'
|
import { ref, onMounted, computed, watch } from 'vue'
|
||||||
import { useRoute, useRouter } from 'vue-router'
|
import { useRoute, useRouter } from 'vue-router'
|
||||||
import { notificationsApi, applicationsApi, businessUnitsApi, employeesApi } from '@/api'
|
import { notificationsApi, applicationsApi, businessUnitsApi, employeesApi } from '@/api'
|
||||||
import { apiError } from '../../utils/apiError'
|
import { apiError } from '@/utils/apiError'
|
||||||
|
|
||||||
const route = useRoute()
|
const route = useRoute()
|
||||||
const router = useRouter()
|
const router = useRouter()
|
||||||
@@ -139,7 +139,7 @@
|
|||||||
import { ref, onMounted } from 'vue'
|
import { ref, onMounted } from 'vue'
|
||||||
import { notificationsApi } from '@/api'
|
import { notificationsApi } from '@/api'
|
||||||
import ColorSwatchPicker from '@/components/ColorSwatchPicker.vue'
|
import ColorSwatchPicker from '@/components/ColorSwatchPicker.vue'
|
||||||
import { apiError } from '../../utils/apiError'
|
import { apiError } from '@/utils/apiError'
|
||||||
|
|
||||||
const types = ref([])
|
const types = ref([])
|
||||||
const loading = ref(true)
|
const loading = ref(true)
|
||||||
@@ -89,7 +89,7 @@
|
|||||||
<script setup>
|
<script setup>
|
||||||
import { ref, onMounted } from 'vue'
|
import { ref, onMounted } from 'vue'
|
||||||
import { notificationsApi } from '@/api'
|
import { notificationsApi } from '@/api'
|
||||||
import PaginationBar from '../../components/PaginationBar.vue'
|
import PaginationBar from '@/components/PaginationBar.vue'
|
||||||
import { useListQuery } from '@/composables/listQuery'
|
import { useListQuery } from '@/composables/listQuery'
|
||||||
|
|
||||||
const notifications = ref([])
|
const notifications = ref([])
|
||||||
@@ -5,38 +5,38 @@ export default [
|
|||||||
{
|
{
|
||||||
path: 'printers',
|
path: 'printers',
|
||||||
name: 'printers',
|
name: 'printers',
|
||||||
component: () => import('../../views/printers/PrintersList.vue'),
|
component: () => import('./views/PrintersList.vue'),
|
||||||
meta: { plugin: 'printers' }
|
meta: { plugin: 'printers' }
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
path: 'printers/new',
|
path: 'printers/new',
|
||||||
name: 'printer-new',
|
name: 'printer-new',
|
||||||
component: () => import('../../views/printers/PrinterForm.vue'),
|
component: () => import('./views/PrinterForm.vue'),
|
||||||
meta: { requiresAuth: true, plugin: 'printers' }
|
meta: { requiresAuth: true, plugin: 'printers' }
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
path: 'printers/:id',
|
path: 'printers/:id',
|
||||||
name: 'printer-detail',
|
name: 'printer-detail',
|
||||||
component: () => import('../../views/printers/PrinterDetail.vue'),
|
component: () => import('./views/PrinterDetail.vue'),
|
||||||
meta: { plugin: 'printers' }
|
meta: { plugin: 'printers' }
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
path: 'printers/:id/edit',
|
path: 'printers/:id/edit',
|
||||||
name: 'printer-edit',
|
name: 'printer-edit',
|
||||||
component: () => import('../../views/printers/PrinterForm.vue'),
|
component: () => import('./views/PrinterForm.vue'),
|
||||||
meta: { requiresAuth: true, plugin: 'printers' }
|
meta: { requiresAuth: true, plugin: 'printers' }
|
||||||
},
|
},
|
||||||
// printer-specific settings
|
// printer-specific settings
|
||||||
{
|
{
|
||||||
path: 'settings/modelsupplies',
|
path: 'settings/modelsupplies',
|
||||||
name: 'model-supplies',
|
name: 'model-supplies',
|
||||||
component: () => import('../../views/settings/ModelSuppliesList.vue'),
|
component: () => import('./views/ModelSuppliesList.vue'),
|
||||||
meta: { requiresAuth: true, plugin: 'printers' }
|
meta: { requiresAuth: true, plugin: 'printers' }
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
path: 'settings/printerdrivers',
|
path: 'settings/printerdrivers',
|
||||||
name: 'printer-drivers',
|
name: 'printer-drivers',
|
||||||
component: () => import('../../views/settings/PrinterDriversList.vue'),
|
component: () => import('./views/PrinterDriversList.vue'),
|
||||||
meta: { requiresAuth: true, requiresAdmin: true, plugin: 'printers' }
|
meta: { requiresAuth: true, requiresAdmin: true, plugin: 'printers' }
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
@@ -45,13 +45,13 @@ export const toplevel = [
|
|||||||
{
|
{
|
||||||
path: '/print/printer-qr',
|
path: '/print/printer-qr',
|
||||||
name: 'print-printer-qr-batch',
|
name: 'print-printer-qr-batch',
|
||||||
component: () => import('../../views/print/PrinterQRBatch.vue'),
|
component: () => import('./views/PrinterQRBatch.vue'),
|
||||||
meta: { plugin: 'printers' }
|
meta: { plugin: 'printers' }
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
path: '/print/printer-qr/:id',
|
path: '/print/printer-qr/:id',
|
||||||
name: 'print-printer-qr-single',
|
name: 'print-printer-qr-single',
|
||||||
component: () => import('../../views/print/PrinterQRSingle.vue'),
|
component: () => import('./views/PrinterQRSingle.vue'),
|
||||||
meta: { plugin: 'printers' }
|
meta: { plugin: 'printers' }
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
@@ -147,7 +147,7 @@
|
|||||||
<script setup>
|
<script setup>
|
||||||
import { ref, onMounted } from 'vue'
|
import { ref, onMounted } from 'vue'
|
||||||
import { printersApi } from '@/api'
|
import { printersApi } from '@/api'
|
||||||
import { apiError } from '../../utils/apiError'
|
import { apiError } from '@/utils/apiError'
|
||||||
|
|
||||||
const models = ref([])
|
const models = ref([])
|
||||||
const loadingModels = ref(true)
|
const loadingModels = ref(true)
|
||||||
@@ -279,13 +279,13 @@
|
|||||||
<script setup>
|
<script setup>
|
||||||
import { ref, onMounted, computed } from 'vue'
|
import { ref, onMounted, computed } from 'vue'
|
||||||
import { useRoute } from 'vue-router'
|
import { useRoute } from 'vue-router'
|
||||||
import { printersApi } from '../../api'
|
import { printersApi } from '@/api'
|
||||||
import LocationMapTooltip from '../../components/LocationMapTooltip.vue'
|
import LocationMapTooltip from '@/components/LocationMapTooltip.vue'
|
||||||
import CustomFieldsSection from '../../components/CustomFieldsSection.vue'
|
import CustomFieldsSection from '@/components/CustomFieldsSection.vue'
|
||||||
import PluginAssetPanels from '../../components/PluginAssetPanels.vue'
|
import PluginAssetPanels from '@/components/PluginAssetPanels.vue'
|
||||||
import AssetRelationships from '../../components/AssetRelationships.vue'
|
import AssetRelationships from '@/components/AssetRelationships.vue'
|
||||||
import { useWarrantyBadge } from '../../composables/warrantyBadge'
|
import { useWarrantyBadge } from '@/composables/warrantyBadge'
|
||||||
import { useIdentifierFlags } from '../../composables/identifierSettings'
|
import { useIdentifierFlags } from '@/composables/identifierSettings'
|
||||||
|
|
||||||
const route = useRoute()
|
const route = useRoute()
|
||||||
const { isEnabled } = useIdentifierFlags()
|
const { isEnabled } = useIdentifierFlags()
|
||||||
@@ -96,9 +96,9 @@
|
|||||||
|
|
||||||
<script setup>
|
<script setup>
|
||||||
import { ref, computed, onMounted } from 'vue'
|
import { ref, computed, onMounted } from 'vue'
|
||||||
import { printersApi } from '../../api'
|
import { printersApi } from '@/api'
|
||||||
import { useToast } from '../../composables/toast'
|
import { useToast } from '@/composables/toast'
|
||||||
import { apiError } from '../../utils/apiError'
|
import { apiError } from '@/utils/apiError'
|
||||||
const toast = useToast()
|
const toast = useToast()
|
||||||
|
|
||||||
const items = ref([])
|
const items = ref([])
|
||||||
@@ -292,14 +292,14 @@
|
|||||||
<script setup>
|
<script setup>
|
||||||
import { ref, onMounted, computed, watch } from 'vue'
|
import { ref, onMounted, computed, watch } from 'vue'
|
||||||
import { useRoute, useRouter } from 'vue-router'
|
import { useRoute, useRouter } from 'vue-router'
|
||||||
import { assetsApi, vendorsApi, locationsApi, printersApi, modelsApi } from '../../api'
|
import { assetsApi, vendorsApi, locationsApi, printersApi, modelsApi } from '@/api'
|
||||||
import ShopFloorMap from '../../components/ShopFloorMap.vue'
|
import ShopFloorMap from '@/components/ShopFloorMap.vue'
|
||||||
import Modal from '../../components/Modal.vue'
|
import Modal from '@/components/Modal.vue'
|
||||||
import CustomFieldsInputs from '../../components/CustomFieldsInputs.vue'
|
import CustomFieldsInputs from '@/components/CustomFieldsInputs.vue'
|
||||||
import { currentTheme } from '../../stores/theme'
|
import { currentTheme } from '@/stores/theme'
|
||||||
import { useIdentifierFlags } from '../../composables/identifierSettings'
|
import { useIdentifierFlags } from '@/composables/identifierSettings'
|
||||||
import { apiError } from '../../utils/apiError'
|
import { apiError } from '@/utils/apiError'
|
||||||
import { getPrinterHostnameTemplate } from '../../utils/siteSettings'
|
import { getPrinterHostnameTemplate } from '@/utils/siteSettings'
|
||||||
|
|
||||||
const { isEnabled } = useIdentifierFlags()
|
const { isEnabled } = useIdentifierFlags()
|
||||||
|
|
||||||
@@ -64,8 +64,8 @@
|
|||||||
|
|
||||||
<script setup>
|
<script setup>
|
||||||
import { ref, computed, onMounted, watch, nextTick } from 'vue'
|
import { ref, computed, onMounted, watch, nextTick } from 'vue'
|
||||||
import { printersApi } from '../../api'
|
import { printersApi } from '@/api'
|
||||||
import { renderQrDataUrl } from './qrLogo'
|
import { renderQrDataUrl } from '@/views/print/qrLogo'
|
||||||
import { buildQrUrl } from '@/utils/qrTarget'
|
import { buildQrUrl } from '@/utils/qrTarget'
|
||||||
|
|
||||||
const printers = ref([])
|
const printers = ref([])
|
||||||
@@ -46,8 +46,8 @@
|
|||||||
<script setup>
|
<script setup>
|
||||||
import { ref, computed, onMounted, watch, nextTick } from 'vue'
|
import { ref, computed, onMounted, watch, nextTick } from 'vue'
|
||||||
import { useRoute } from 'vue-router'
|
import { useRoute } from 'vue-router'
|
||||||
import { printersApi } from '../../api'
|
import { printersApi } from '@/api'
|
||||||
import { renderQrDataUrl } from './qrLogo'
|
import { renderQrDataUrl } from '@/views/print/qrLogo'
|
||||||
import { buildQrUrl } from '@/utils/qrTarget'
|
import { buildQrUrl } from '@/utils/qrTarget'
|
||||||
|
|
||||||
const route = useRoute()
|
const route = useRoute()
|
||||||
@@ -88,8 +88,8 @@
|
|||||||
|
|
||||||
<script setup>
|
<script setup>
|
||||||
import { ref, onMounted } from 'vue'
|
import { ref, onMounted } from 'vue'
|
||||||
import { printersApi } from '../../api'
|
import { printersApi } from '@/api'
|
||||||
import PaginationBar from '../../components/PaginationBar.vue'
|
import PaginationBar from '@/components/PaginationBar.vue'
|
||||||
import { useListQuery } from '@/composables/listQuery'
|
import { useListQuery } from '@/composables/listQuery'
|
||||||
|
|
||||||
const printers = ref([])
|
const printers = ref([])
|
||||||
@@ -3,7 +3,7 @@ export const toplevel = [
|
|||||||
{
|
{
|
||||||
path: '/tv',
|
path: '/tv',
|
||||||
name: 'tv',
|
name: 'tv',
|
||||||
component: () => import('../../views/TVDashboard.vue'),
|
component: () => import('./views/TVDashboard.vue'),
|
||||||
meta: { plugin: 'slides' }
|
meta: { plugin: 'slides' }
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
@@ -5,25 +5,25 @@ export default [
|
|||||||
{
|
{
|
||||||
path: 'usb',
|
path: 'usb',
|
||||||
name: 'usb',
|
name: 'usb',
|
||||||
component: () => import('../../views/usb/USBList.vue'),
|
component: () => import('./views/USBList.vue'),
|
||||||
meta: { plugin: 'usb' }
|
meta: { plugin: 'usb' }
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
path: 'usb/new',
|
path: 'usb/new',
|
||||||
name: 'usb-new',
|
name: 'usb-new',
|
||||||
component: () => import('../../views/usb/USBForm.vue'),
|
component: () => import('./views/USBForm.vue'),
|
||||||
meta: { requiresAuth: true, plugin: 'usb' }
|
meta: { requiresAuth: true, plugin: 'usb' }
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
path: 'usb/:id',
|
path: 'usb/:id',
|
||||||
name: 'usb-detail',
|
name: 'usb-detail',
|
||||||
component: () => import('../../views/usb/USBDetail.vue'),
|
component: () => import('./views/USBDetail.vue'),
|
||||||
meta: { plugin: 'usb' }
|
meta: { plugin: 'usb' }
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
path: 'usb/:id/edit',
|
path: 'usb/:id/edit',
|
||||||
name: 'usb-edit',
|
name: 'usb-edit',
|
||||||
component: () => import('../../views/usb/USBForm.vue'),
|
component: () => import('./views/USBForm.vue'),
|
||||||
meta: { requiresAuth: true, plugin: 'usb' }
|
meta: { requiresAuth: true, plugin: 'usb' }
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
@@ -32,7 +32,7 @@ export const toplevel = [
|
|||||||
{
|
{
|
||||||
path: '/print/usb-labels',
|
path: '/print/usb-labels',
|
||||||
name: 'print-usb-labels',
|
name: 'print-usb-labels',
|
||||||
component: () => import('../../views/print/USBLabelBatch.vue'),
|
component: () => import('./views/USBLabelBatch.vue'),
|
||||||
meta: { plugin: 'usb' }
|
meta: { plugin: 'usb' }
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
@@ -156,10 +156,10 @@
|
|||||||
<script setup>
|
<script setup>
|
||||||
import { ref, onMounted } from 'vue'
|
import { ref, onMounted } from 'vue'
|
||||||
import { useRoute } from 'vue-router'
|
import { useRoute } from 'vue-router'
|
||||||
import { usbApi } from '../../api'
|
import { usbApi } from '@/api'
|
||||||
import Modal from '../../components/Modal.vue'
|
import Modal from '@/components/Modal.vue'
|
||||||
import { useToast } from '../../composables/toast'
|
import { useToast } from '@/composables/toast'
|
||||||
import { apiError } from '../../utils/apiError'
|
import { apiError } from '@/utils/apiError'
|
||||||
const toast = useToast()
|
const toast = useToast()
|
||||||
|
|
||||||
const route = useRoute()
|
const route = useRoute()
|
||||||
@@ -62,7 +62,7 @@
|
|||||||
import { ref, onMounted, computed } from 'vue'
|
import { ref, onMounted, computed } from 'vue'
|
||||||
import { useRoute, useRouter } from 'vue-router'
|
import { useRoute, useRouter } from 'vue-router'
|
||||||
import { usbApi } from '@/api'
|
import { usbApi } from '@/api'
|
||||||
import { apiError } from '../../utils/apiError'
|
import { apiError } from '@/utils/apiError'
|
||||||
|
|
||||||
const route = useRoute()
|
const route = useRoute()
|
||||||
const router = useRouter()
|
const router = useRouter()
|
||||||
@@ -82,7 +82,7 @@
|
|||||||
|
|
||||||
<script setup>
|
<script setup>
|
||||||
import { ref, computed, onMounted, watch, nextTick } from 'vue'
|
import { ref, computed, onMounted, watch, nextTick } from 'vue'
|
||||||
import { usbApi } from '../../api'
|
import { usbApi } from '@/api'
|
||||||
import JsBarcode from 'jsbarcode'
|
import JsBarcode from 'jsbarcode'
|
||||||
import QRCode from 'qrcode'
|
import QRCode from 'qrcode'
|
||||||
import { getSetting } from '@/utils/siteSettings'
|
import { getSetting } from '@/utils/siteSettings'
|
||||||
@@ -143,12 +143,12 @@
|
|||||||
|
|
||||||
<script setup>
|
<script setup>
|
||||||
import { ref, onMounted } from 'vue'
|
import { ref, onMounted } from 'vue'
|
||||||
import { usbApi } from '../../api'
|
import { usbApi } from '@/api'
|
||||||
import Modal from '../../components/Modal.vue'
|
import Modal from '@/components/Modal.vue'
|
||||||
import EmployeeSearch from '../../components/EmployeeSearch.vue'
|
import EmployeeSearch from '@/components/EmployeeSearch.vue'
|
||||||
import PaginationBar from '../../components/PaginationBar.vue'
|
import PaginationBar from '@/components/PaginationBar.vue'
|
||||||
import { useToast } from '../../composables/toast'
|
import { useToast } from '@/composables/toast'
|
||||||
import { apiError } from '../../utils/apiError'
|
import { apiError } from '@/utils/apiError'
|
||||||
import { useListQuery } from '@/composables/listQuery'
|
import { useListQuery } from '@/composables/listQuery'
|
||||||
const toast = useToast()
|
const toast = useToast()
|
||||||
|
|
||||||
@@ -5,13 +5,13 @@ export default [
|
|||||||
{
|
{
|
||||||
path: 'warranties',
|
path: 'warranties',
|
||||||
name: 'warranties',
|
name: 'warranties',
|
||||||
component: () => import('../../views/warranty/WarrantiesList.vue'),
|
component: () => import('./views/WarrantiesList.vue'),
|
||||||
meta: { plugin: 'warranty' }
|
meta: { plugin: 'warranty' }
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
path: 'reports/warranty',
|
path: 'reports/warranty',
|
||||||
name: 'warranty-report',
|
name: 'warranty-report',
|
||||||
component: () => import('../../views/reports/WarrantyReport.vue'),
|
component: () => import('./views/WarrantyReport.vue'),
|
||||||
meta: { plugin: 'warranty' }
|
meta: { plugin: 'warranty' }
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
@@ -160,9 +160,9 @@
|
|||||||
import { ref, computed, watch, onMounted } from 'vue'
|
import { ref, computed, watch, onMounted } from 'vue'
|
||||||
import { useRoute } from 'vue-router'
|
import { useRoute } from 'vue-router'
|
||||||
import { colorStyle } from '@/utils/colorStyle'
|
import { colorStyle } from '@/utils/colorStyle'
|
||||||
import { warrantyApi, assetsApi, vendorsApi } from '../../api'
|
import { warrantyApi, assetsApi, vendorsApi } from '@/api'
|
||||||
import { useToast } from '../../composables/toast'
|
import { useToast } from '@/composables/toast'
|
||||||
import { apiError } from '../../utils/apiError'
|
import { apiError } from '@/utils/apiError'
|
||||||
|
|
||||||
const toast = useToast()
|
const toast = useToast()
|
||||||
const route = useRoute()
|
const route = useRoute()
|
||||||
@@ -56,8 +56,8 @@
|
|||||||
|
|
||||||
<script setup>
|
<script setup>
|
||||||
import { ref, computed, onMounted } from 'vue'
|
import { ref, computed, onMounted } from 'vue'
|
||||||
import { warrantyApi } from '../../api'
|
import { warrantyApi } from '@/api'
|
||||||
import EmailReportButton from '../../components/EmailReportButton.vue'
|
import EmailReportButton from '@/components/EmailReportButton.vue'
|
||||||
|
|
||||||
const loading = ref(true)
|
const loading = ref(true)
|
||||||
const counts = ref({})
|
const counts = ref({})
|
||||||
@@ -45,11 +45,11 @@ const childParts = []
|
|||||||
const topParts = []
|
const topParts = []
|
||||||
for (const name of chosen) {
|
for (const name of chosen) {
|
||||||
const id = 'p_' + name.replace(/[^a-zA-Z0-9]/g, '_')
|
const id = 'p_' + name.replace(/[^a-zA-Z0-9]/g, '_')
|
||||||
lines.push(
|
// Namespace import so a route file without a `toplevel` export is not a
|
||||||
`import ${id}Default, { toplevel as ${id}Top } from `
|
// (strict ESM) build error - the binding is just undefined on the namespace.
|
||||||
+ `'../.plugins-staged/${name}/routes.js'`)
|
lines.push(`import * as ${id} from '../.plugins-staged/${name}/routes.js'`)
|
||||||
childParts.push(`...(${id}Default || [])`)
|
childParts.push(`...(${id}.default || [])`)
|
||||||
topParts.push(`...(${id}Top || [])`)
|
topParts.push(`...(${id}.toplevel || [])`)
|
||||||
}
|
}
|
||||||
lines.push('')
|
lines.push('')
|
||||||
lines.push(`export const stagedChildren = [${childParts.join(', ')}]`)
|
lines.push(`export const stagedChildren = [${childParts.join(', ')}]`)
|
||||||
|
|||||||
Reference in New Issue
Block a user