From e50fc047071b612cbaedde3334f8bc4d703281a8 Mon Sep 17 00:00:00 2001 From: Muhammed Mustafa Date: Fri, 22 Sep 2023 15:23:14 +0000 Subject: [PATCH] fix: Added viewsByTable in views store thus we can store multiple view list per table --- packages/nc-gui/store/views.ts | 33 +++++++++++++++++++++++++-------- 1 file changed, 25 insertions(+), 8 deletions(-) diff --git a/packages/nc-gui/store/views.ts b/packages/nc-gui/store/views.ts index 12e76ba77d..de0fad35c6 100644 --- a/packages/nc-gui/store/views.ts +++ b/packages/nc-gui/store/views.ts @@ -8,7 +8,18 @@ export const useViewsStore = defineStore('viewsStore', () => { const router = useRouter() const route = router.currentRoute - const views = ref([]) + const tablesStore = useTablesStore() + + const viewsByTable = ref>(new Map()) + const views = computed({ + get: () => (tablesStore.activeTableId ? viewsByTable.value.get(tablesStore.activeTableId) : []) ?? [], + set: (value) => { + if (!tablesStore.activeTableId) return + if (!value) return viewsByTable.value.delete(tablesStore.activeTableId) + + viewsByTable.value.set(tablesStore.activeTableId, value) + }, + }) const isViewsLoading = ref(true) const isViewDataLoading = ref(true) const isPublic = computed(() => route.value.meta?.public) @@ -70,16 +81,20 @@ export const useViewsStore = defineStore('viewsStore', () => { // Used for Grid View Pagination const isPaginationLoading = ref(false) - const tablesStore = useTablesStore() + const loadViews = async ({ tableId, ignoreLoading }: { tableId?: string; ignoreLoading?: boolean } = {}) => { + tableId = tableId ?? tablesStore.activeTableId + if (tableId) { + if (!ignoreLoading) isViewsLoading.value = true - const loadViews = async () => { - if (tablesStore.activeTableId) { - isViewsLoading.value = true - const response = (await $api.dbView.list(tablesStore.activeTableId)).list as ViewType[] + const response = (await $api.dbView.list(tableId)).list as ViewType[] if (response) { - views.value = response.sort((a, b) => a.order! - b.order!) + viewsByTable.value.set( + tableId, + response.sort((a, b) => a.order! - b.order!), + ) } - isViewsLoading.value = false + + if (!ignoreLoading) isViewsLoading.value = false } } @@ -132,6 +147,8 @@ export const useViewsStore = defineStore('viewsStore', () => { openedViewsTab, onViewsTabChange, sharedView, + viewsByTable, + activeViewTitleOrId, } })