feat: version 1.0.0 (#21)
This commit is contained in:
@ -1,13 +1,17 @@
|
||||
<script lang="ts" setup>
|
||||
const route = useRoute()
|
||||
import { computed, ref } from 'vue'
|
||||
import { computedAsync } from '@vueuse/core'
|
||||
import { useRouter } from 'nuxt/app'
|
||||
import { rpc } from '../composables/rpc'
|
||||
import { selectedCollection } from '../composables/state'
|
||||
|
||||
const router = useRouter()
|
||||
|
||||
const selectedCollection = ref()
|
||||
const drawer = ref(false)
|
||||
const search = ref('')
|
||||
|
||||
const collections = computedAsync(async () => {
|
||||
return await rpc.listCollections()
|
||||
return await rpc.value?.listCollections()
|
||||
})
|
||||
|
||||
const filtered = computed(() => {
|
||||
@ -16,28 +20,23 @@ const filtered = computed(() => {
|
||||
return collections.value.filter((c: any) => c.name.toLowerCase().includes(search.value.toLowerCase()))
|
||||
})
|
||||
|
||||
onMounted(() => {
|
||||
if (route.query.table)
|
||||
selectedCollection.value = route.query.table
|
||||
})
|
||||
|
||||
async function dropCollection(table: any) {
|
||||
await rpc.dropCollection(table.name)
|
||||
collections.value = await rpc.listCollections()
|
||||
await rpc.value?.dropCollection(table.name)
|
||||
collections.value = await rpc.value?.listCollections()
|
||||
if (selectedCollection.value === table.name) {
|
||||
selectedCollection.value = undefined
|
||||
selectedCollection.value = ''
|
||||
router.push({ name: 'index' })
|
||||
}
|
||||
}
|
||||
|
||||
async function refresh() {
|
||||
collections.value = await rpc.listCollections()
|
||||
collections.value = await rpc.value?.listCollections()
|
||||
drawer.value = false
|
||||
}
|
||||
</script>
|
||||
|
||||
<template>
|
||||
<PanelLeftRight :min-left="13" :max-left="20">
|
||||
<SplitPanel :min-left="13" :max-left="20">
|
||||
<template #left>
|
||||
<div px4>
|
||||
<Navbar v-model:search="search" :placeholder="`${collections?.length ?? '-'} collection in total`" mt2>
|
||||
@ -48,13 +47,20 @@ async function refresh() {
|
||||
</div>
|
||||
</Navbar>
|
||||
<div grid gird-cols-1 my2 mx1>
|
||||
<NuxtLink v-for="table in filtered" :key="table.name" :to="{ name: 'index', query: { table: table.name } }" flex justify-between p2 my1 hover-bg-green hover-bg-opacity-5 hover-text-green rounded-lg :class="{ 'bg-green bg-opacity-5 text-green': selectedCollection === table.name }" @click="selectedCollection = table.name">
|
||||
<NuxtLink
|
||||
v-for="table in filtered"
|
||||
:key="table.name"
|
||||
:to="{ name: 'index', query: { table: table.name } }"
|
||||
flex justify-between p2 my1 hover-bg-green hover-bg-opacity-5 hover-text-green rounded-lg
|
||||
:class="{ 'bg-green bg-opacity-5 text-green': selectedCollection === table.name }"
|
||||
@click="selectedCollection = table.name"
|
||||
>
|
||||
<span>
|
||||
<NIcon icon="carbon-db2-database" />
|
||||
{{ table.name }}
|
||||
</span>
|
||||
<div flex gap2>
|
||||
<NIconButton block n="red" icon="carbon-delete" @click="dropCollection(table)" />
|
||||
<NIconButton block n="red" icon="carbon-trash-can" @click="dropCollection(table)" />
|
||||
<!-- <NIconButton icon="carbon-overflow-menu-horizontal" /> -->
|
||||
</div>
|
||||
</NuxtLink>
|
||||
@ -72,8 +78,8 @@ async function refresh() {
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
</PanelLeftRight>
|
||||
<DrawerRight v-model="drawer" style="width: calc(80.5%);" auto-close @close="drawer = false">
|
||||
</SplitPanel>
|
||||
<Drawer v-model="drawer" style="width: calc(80.5%);" auto-close @close="drawer = false">
|
||||
<CreateResource @refresh="refresh" />
|
||||
</DrawerRight>
|
||||
</Drawer>
|
||||
</template>
|
||||
|
||||
Reference in New Issue
Block a user