Browse Source

fix(nc-gui): introduce nonDeletedFilters

pull/4020/head
Wing-Kam Wong 2 years ago
parent
commit
2cf8399f0f
  1. 4
      packages/nc-gui/components/smartsheet/toolbar/ColumnFilter.vue
  2. 4
      packages/nc-gui/components/smartsheet/toolbar/ColumnFilterMenu.vue
  3. 12
      packages/nc-gui/composables/useViewFilters.ts

4
packages/nc-gui/components/smartsheet/toolbar/ColumnFilter.vue

@ -43,7 +43,7 @@ const reloadDataHook = inject(ReloadViewDataHookInj)!
const { $e } = useNuxtApp() const { $e } = useNuxtApp()
const { nestedFilters } = useSmartsheetStoreOrThrow() const { nestedFilters } = useSmartsheetStoreOrThrow()
const { filters, deleteFilter, saveOrUpdate, loadFilters, addFilter, addFilterGroup, sync } = useViewFilters( const { filters, nonDeletedFilters, deleteFilter, saveOrUpdate, loadFilters, addFilter, addFilterGroup, sync } = useViewFilters(
activeView, activeView,
parentId, parentId,
computed(() => autoSave), computed(() => autoSave),
@ -92,7 +92,7 @@ watch(
) )
watch( watch(
() => filters.value.length, () => nonDeletedFilters.value.length,
(length) => { (length) => {
emit('update:filtersLength', length ?? 0) emit('update:filtersLength', length ?? 0)
}, },

4
packages/nc-gui/components/smartsheet/toolbar/ColumnFilterMenu.vue

@ -29,7 +29,7 @@ const { $e } = useNuxtApp()
const { nestedFilters } = useSmartsheetStoreOrThrow() const { nestedFilters } = useSmartsheetStoreOrThrow()
// todo: avoid duplicate api call by keeping a filter store // todo: avoid duplicate api call by keeping a filter store
const { filters, loadFilters } = useViewFilters( const { nonDeletedFilters, loadFilters } = useViewFilters(
activeView, activeView,
undefined, undefined,
computed(() => true), computed(() => true),
@ -45,7 +45,7 @@ watch(
async (viewId) => { async (viewId) => {
if (viewId) { if (viewId) {
await loadFilters() await loadFilters()
filtersLength.value = filters.value.length || 0 filtersLength.value = nonDeletedFilters.value.length || 0
} }
}, },
{ immediate: true }, { immediate: true },

12
packages/nc-gui/composables/useViewFilters.ts

@ -54,6 +54,10 @@ export function useViewFilters(
}, },
}) })
// when a filter is deleted with auto apply disabled, the status is marked as 'delete'
// nonDeletedFilters are those filters that are not deleted physically & virtually
const nonDeletedFilters = computed(() => filters.value.filter((f) => !f?.status || f.status !== 'delete'))
const placeholderFilter: Filter = { const placeholderFilter: Filter = {
comparison_op: 'eq', comparison_op: 'eq',
value: '', value: '',
@ -129,13 +133,11 @@ export function useViewFilters(
if (!autoApply?.value) { if (!autoApply?.value) {
filter.status = 'delete' filter.status = 'delete'
// if auto-apply enabled invoke delete api and remove from array // if auto-apply enabled invoke delete api and remove from array
filters.value.splice(i, 1) // no splice is required here
} else { } else {
try { try {
await $api.dbTableFilter.delete(filter.id) await $api.dbTableFilter.delete(filter.id)
reloadData?.() reloadData?.()
filters.value.splice(i, 1) filters.value.splice(i, 1)
} catch (e: any) { } catch (e: any) {
console.log(e) console.log(e)
@ -146,7 +148,7 @@ export function useViewFilters(
} else { } else {
filters.value.splice(i, 1) filters.value.splice(i, 1)
} }
$e('a:filter:delete', { length: filters.value.length }) $e('a:filter:delete', { length: nonDeletedFilters.value.length })
} }
} }
@ -223,5 +225,5 @@ export function useViewFilters(
}, },
) )
return { filters, loadFilters, sync, deleteFilter, saveOrUpdate, addFilter, addFilterGroup } return { filters, nonDeletedFilters, loadFilters, sync, deleteFilter, saveOrUpdate, addFilter, addFilterGroup }
} }

Loading…
Cancel
Save