From 9ace314b1bc20d2e4c2b3a222553ee8decbc71ac Mon Sep 17 00:00:00 2001 From: Pranav C Date: Fri, 22 Jul 2022 23:41:44 +0530 Subject: [PATCH] feat(gui-v2): table delete Signed-off-by: Pranav C --- .../components/dashboard/TreeView.vue | 74 +++++++++++++++++-- packages/nc-gui-v2/composables/useMetas.ts | 21 ++++-- packages/nc-gui-v2/composables/useTabs.ts | 8 +- 3 files changed, 88 insertions(+), 15 deletions(-) diff --git a/packages/nc-gui-v2/components/dashboard/TreeView.vue b/packages/nc-gui-v2/components/dashboard/TreeView.vue index 835e96b818..4f7100c80b 100644 --- a/packages/nc-gui-v2/components/dashboard/TreeView.vue +++ b/packages/nc-gui-v2/components/dashboard/TreeView.vue @@ -1,13 +1,17 @@ @@ -194,7 +252,7 @@ const setMenuContext = (type: 'table' | 'main', value?: any) => { Team and settings - + diff --git a/packages/nc-gui-v2/composables/useMetas.ts b/packages/nc-gui-v2/composables/useMetas.ts index 77110a0f3f..40232b1c49 100644 --- a/packages/nc-gui-v2/composables/useMetas.ts +++ b/packages/nc-gui-v2/composables/useMetas.ts @@ -1,4 +1,4 @@ -import type { TableType } from 'nocodb-sdk' +import type { TableInfoType, TableType } from 'nocodb-sdk' import { useNuxtApp, useState } from '#app' import { useProject } from '#imports' @@ -8,13 +8,13 @@ export default () => { const metas = useState<{ [idOrTitle: string]: TableType | any }>('metas', () => ({})) - const getMeta = async (tableIdOrTitle: string, force = false) => { - if (!force && metas[tableIdOrTitle as keyof typeof metas]) return metas[tableIdOrTitle as keyof typeof metas] + const getMeta = async (tableIdOrTitle: string, force = false): Promise => { + if (!force && metas.value[tableIdOrTitle as string]) return metas.value[tableIdOrTitle as string] const modelId = (tables.value.find((t) => t.title === tableIdOrTitle || t.id === tableIdOrTitle) || {}).id if (!modelId) { console.warn(`Table '${tableIdOrTitle}' is not found in the table list`) - return + return null } const model = await $api.dbTable.read(modelId) @@ -28,5 +28,16 @@ export default () => { return model } - return { getMeta, metas } + const clearAllMeta = () => { + metas.value = {} + } + const removeMeta = (idOrTitle: string) => { + const meta = metas.value[idOrTitle] + if (meta) { + delete metas.value[meta.id] + delete metas.value[meta.title] + } + } + + return { getMeta, clearAllMeta, metas, removeMeta } } diff --git a/packages/nc-gui-v2/composables/useTabs.ts b/packages/nc-gui-v2/composables/useTabs.ts index ad9f82e1ee..169fdbd7b3 100644 --- a/packages/nc-gui-v2/composables/useTabs.ts +++ b/packages/nc-gui-v2/composables/useTabs.ts @@ -25,8 +25,12 @@ export default () => { const clearTabs = () => { tabs.value = [] } - const closeTab = (index: number) => { - tabs.value.splice(index, 1) + const closeTab = (key: number | TabItem) => { + if (typeof key === 'number') tabs.value.splice(key, 1) + else { + const index = tabs.value.findIndex((tab) => tab.id === key.id && tab.type === key.type && tab.title === key.title) + if (index > -1) tabs.value.splice(index, 1) + } } return { tabs, addTab, activeTab, clearTabs, closeTab }