diff --git a/src/components/index/Datascreen.vue b/src/components/index/Datascreen.vue new file mode 100644 index 0000000..bba4de0 --- /dev/null +++ b/src/components/index/Datascreen.vue @@ -0,0 +1,109 @@ + + \ No newline at end of file diff --git a/src/components/index/Leftbar.vue b/src/components/index/Leftbar.vue index ab0d8d5..cc93c86 100644 --- a/src/components/index/Leftbar.vue +++ b/src/components/index/Leftbar.vue @@ -1,16 +1,40 @@ \ No newline at end of file diff --git a/src/components/index/Loading.vue b/src/components/index/Loading.vue index 3289f21..4c2a473 100644 --- a/src/components/index/Loading.vue +++ b/src/components/index/Loading.vue @@ -21,6 +21,7 @@ onMounted(() => { height: 100vh; width: 100vw; background-color: #fff; + z-index: 9999; } .title { position: fixed; diff --git a/src/components/index/Main.vue b/src/components/index/Main.vue new file mode 100644 index 0000000..e06caa0 --- /dev/null +++ b/src/components/index/Main.vue @@ -0,0 +1,36 @@ + + + \ No newline at end of file diff --git a/src/components/index/Topbar.vue b/src/components/index/Topbar.vue index e38c68b..ca906d8 100644 --- a/src/components/index/Topbar.vue +++ b/src/components/index/Topbar.vue @@ -43,8 +43,10 @@ onUnmounted(() => { left: 0; width: 100%; height: 32px; - background-color: rgba(255,255,255,0.2); + background-color: rgba(255,255,255,0.15); backdrop-filter: blur(3px); + -webkit-backdrop-filter: blur(3px); + z-index: 2; } .logo { position: fixed; diff --git a/src/router.js b/src/router.js index 8eafd5f..80bae91 100644 --- a/src/router.js +++ b/src/router.js @@ -32,15 +32,60 @@ const router = createRouter({ history: createWebHistory(import.meta.env.BASE_URL), routes: [ { - path: '/' || '/index.html', - name: 'index', - component: () => import('./views/Index.vue'), - meta: { requiresIndexLoading: true }, + path: '/', + name: 'Index', + component: () => import('./views/Loading.vue'), + meta: { requiresIndexLoading: true } + }, + { + path: '/datascreen', + name: 'Datascreen', + component: () => import('./views/Index.vue') + }, + { + path: '/category', + name: 'Category', + component: () => import('./views/Index.vue') + }, + { + path: '/datasource', + name: 'Datasource', + component: () => import('./views/Index.vue') + }, + { + path: '/record', + name: 'Record', + component: () => import('./views/Index.vue') + }, + { + path: '/components', + name: 'Components', + component: () => import('./views/Index.vue') + }, + { + path: '/variables', + name: 'Variables', + component: () => import('./views/Index.vue') + }, + { + path: '/files', + name: 'Files', + component: () => import('./views/Index.vue') + }, + { + path: '/maps', + name: 'Maps', + component: () => import('./views/Index.vue') + }, + { + path: '/tools', + name: 'Tools', + component: () => import('./views/Index.vue') }, { path: '/:pathMatch(.*)*', name: 'NotFound', - component: () => import('./views/NotFound.vue'), + component: () => import('./views/NotFound.vue') }, ], }) @@ -48,22 +93,19 @@ const router = createRouter({ router.beforeEach(async (to, from, next) => { if (!to.meta.requiresIndexLoading) { NProgress.start() - } - - if (to.meta.requiresIndexLoading) { + } else { NProgress.done() NProgress.remove() + loadingNode = document.createElement('div'); loadingNode.id = 'custom-loading'; document.body.appendChild(loadingNode); try { const LoadingComponent = (await import('@/components/index/Loading.vue')).default; - loadingApp = createApp({ render: () => h(LoadingComponent) }); - loadingApp.mount(loadingNode); } catch (error) { console.error('Failed to load custom loading component:', error); @@ -88,7 +130,7 @@ router.afterEach((to) => { document.body.removeChild(loadingNode); loadingNode = null; } - }, 300); + }, 3000); } if (!to.meta.requiresIndexLoading && NProgress.isStarted()) { diff --git a/src/views/Index.vue b/src/views/Index.vue index 84ddb24..4c5855e 100644 --- a/src/views/Index.vue +++ b/src/views/Index.vue @@ -9,14 +9,27 @@ const config = getConfig() const Topbar = defineAsyncComponent(() => import('@/components/index/Topbar.vue')) const Leftbar = defineAsyncComponent(() => import('@/components/index/Leftbar.vue')) +const Main = defineAsyncComponent(() => import('@/components/index/Main.vue')) onMounted(() => { document.title = config.title document.body.style.background = "url('"+config.backgroundImg+"') no-repeat center center fixed" document.body.style.backgroundSize = "cover" + + const linkElement = document.createElement('link'); + linkElement.rel = 'stylesheet'; + + if (config.cdnUrl && config.cdnUrl !== "") { + linkElement.href = `${config.cdnUrl}/assets/font-awesome/css/all.min.css`; + } else { + linkElement.href = '@/assets/font-awesome/css/all.min.css'; + } + + document.head.appendChild(linkElement); }) \ No newline at end of file diff --git a/src/views/Loading.vue b/src/views/Loading.vue new file mode 100644 index 0000000..a751a1f --- /dev/null +++ b/src/views/Loading.vue @@ -0,0 +1,19 @@ + \ No newline at end of file diff --git a/src/views/NotFound.vue b/src/views/NotFound.vue index 32654d3..30fa772 100644 --- a/src/views/NotFound.vue +++ b/src/views/NotFound.vue @@ -54,8 +54,13 @@ onMounted(() => { height: 80%; border-radius: 20px; backdrop-filter: blur(3px); - background-color: rgba(255, 255, 255, 0.2); - box-shadow: 5px 5px 15px rgba(0, 0, 0, 0.2); + background-color: rgba(255, 255, 255, 0.15); + backdrop-filter: blur(10px) saturate(180%); + -webkit-backdrop-filter: blur(10px) saturate(180%); + border: 1px solid rgba(255,255,255,0.4); + box-shadow: + 0 8px 32px rgba(0,0,0,0.2), + inset 0 4px 20px rgba(255,255,255,0.3); display: flex; flex-direction: column; justify-content: center;