|
|
|
<script setup lang="ts">
|
|
|
|
import { watch } from 'vue'
|
|
|
|
import useProject from '~/composables/useProject'
|
|
|
|
import useTabs from '~/composables/useTabs'
|
|
|
|
|
|
|
|
const route = useRoute()
|
|
|
|
const { loadProject, loadTables } = useProject()
|
|
|
|
const { clearTabs } = useTabs()
|
|
|
|
|
|
|
|
onMounted(async () => {
|
|
|
|
await loadProject(route.params.projectId as string)
|
|
|
|
await loadTables()
|
|
|
|
})
|
|
|
|
|
|
|
|
watch(
|
|
|
|
() => route.params.projectId,
|
|
|
|
async (newVal, oldVal) => {
|
|
|
|
if (newVal !== oldVal) {
|
|
|
|
clearTabs()
|
|
|
|
if (newVal) {
|
|
|
|
await loadProject(newVal as string)
|
|
|
|
await loadTables()
|
|
|
|
}
|
|
|
|
}
|
|
|
|
},
|
|
|
|
)
|
|
|
|
</script>
|
|
|
|
|
|
|
|
<template>
|
|
|
|
<NuxtLayout>
|
|
|
|
<template #sidebar>
|
|
|
|
<v-navigation-drawer permanent>
|
|
|
|
<DashboardTreeView />
|
|
|
|
</v-navigation-drawer>
|
|
|
|
</template>
|
|
|
|
|
|
|
|
<v-container>
|
|
|
|
<DashboardTabView />
|
|
|
|
</v-container>
|
|
|
|
</NuxtLayout>
|
|
|
|
</template>
|
|
|
|
|
|
|
|
<style scoped lang="scss">
|
|
|
|
.nc-container {
|
|
|
|
.nc-topbar {
|
|
|
|
position: fixed;
|
|
|
|
top: 0;
|
|
|
|
left: 0;
|
|
|
|
height: 50px;
|
|
|
|
width: 100%;
|
|
|
|
z-index: 5;
|
|
|
|
}
|
|
|
|
|
|
|
|
.nc-sidebar {
|
|
|
|
position: fixed;
|
|
|
|
top: 50px;
|
|
|
|
left: 0;
|
|
|
|
height: calc(100% - 50px);
|
|
|
|
width: 250px;
|
|
|
|
}
|
|
|
|
|
|
|
|
.nc-content {
|
|
|
|
position: fixed;
|
|
|
|
top: 50px;
|
|
|
|
left: 250px;
|
|
|
|
height: calc(100% - 50px);
|
|
|
|
width: calc(100% - 250px);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
</style>
|