From d2657d13390d2b68d1001b7455fe60e6d87ed216 Mon Sep 17 00:00:00 2001 From: Pranav C Date: Sat, 27 Aug 2022 17:40:38 +0530 Subject: [PATCH] wip(gui-v2): sorts state Signed-off-by: Pranav C --- .../nc-gui/components/tabs/Smartsheet.vue | 23 ++++++++++++++++++- 1 file changed, 22 insertions(+), 1 deletion(-) diff --git a/packages/nc-gui/components/tabs/Smartsheet.vue b/packages/nc-gui/components/tabs/Smartsheet.vue index cb2d0e2f2b..75471ef24d 100644 --- a/packages/nc-gui/components/tabs/Smartsheet.vue +++ b/packages/nc-gui/components/tabs/Smartsheet.vue @@ -37,7 +37,7 @@ const meta = computed(() => activeTab.value && metas.valu const reloadEventHook = createEventHook() -const { isGallery, isGrid, isForm, isKanban, isLocked, nestedFilters } = useProvideSmartsheetStore(activeView, meta) +const { isGallery, isGrid, isForm, isKanban, isLocked, nestedFilters, sorts } = useProvideSmartsheetStore(activeView, meta) const openNewRecordFormHook = createEventHook() @@ -45,6 +45,27 @@ const reloadViewMetaEventHook = createEventHook() useProvideKanbanViewStore(meta, activeView) + +/** keep view level state in tabMeta and restore on view change */ +watch(nestedFilters, (newFilters) => { + activeTab.value.state = activeTab.value.state || {} + activeTab.value.state[activeView.value.id] = activeTab.value.state[activeView.value.id] || {} + activeTab.value.state[activeView.value.id].filters = newFilters +}) + +watch(sorts, (newSorts) => { + activeTab.value.state = activeTab.value.state || {} + activeTab.value.state[activeView.value.id] = activeTab.value.state[activeView.value.id] || {} + activeTab.value.state[activeView.value.id].sorts = newSorts +}) + +watch(activeView, (newView: ViewType) => { + if (activeTab.value.state?.[newView.id!]?.filters) + nestedFilters.value = activeTab.value.state?.[newView.id!]?.filters || [] + if (activeTab.value.state?.[newView.id!]?.sorts) + sorts.value = activeTab.value.state?.[newView.id!]?.sorts || [] +}) + // todo: move to store provide(MetaInj, meta) provide(ActiveViewInj, activeView)