From 75c9c45bc515c9ece7c30562d165455a922a9578 Mon Sep 17 00:00:00 2001 From: Pranav C Date: Sat, 4 May 2024 09:22:01 +0000 Subject: [PATCH] feat: restrict usage of different logical operations within same filter group --- .../smartsheet/toolbar/ColumnFilter.vue | 20 +++++++++++++++++-- packages/nc-gui/composables/useViewFilters.ts | 4 ++-- 2 files changed, 20 insertions(+), 4 deletions(-) diff --git a/packages/nc-gui/components/smartsheet/toolbar/ColumnFilter.vue b/packages/nc-gui/components/smartsheet/toolbar/ColumnFilter.vue index 427b245faa..c2c4a4ed55 100644 --- a/packages/nc-gui/components/smartsheet/toolbar/ColumnFilter.vue +++ b/packages/nc-gui/components/smartsheet/toolbar/ColumnFilter.vue @@ -371,6 +371,22 @@ watch( immediate: true, }, ) + +const isLogicalOpChangeAllowed = computed(() => { + return new Set(filters.value.slice(1).map((filter) => filter.logical_op)).size > 1 +}) + +const onLogicalOpUpdate = async (filter: Filter, index: number) => { + if (index === 1 && filters.value.slice(2).every((siblingFilter) => siblingFilter.logical_op !== filter.logical_op)) { + await Promise.all( + filters.value.slice(2).map(async (siblingFilter, i) => { + siblingFilter.logical_op = filter.logical_op + saveOrUpdate(siblingFilter, i + 2, false, false, true) + }), + ) + } + await filterUpdateCondition(filter, index) +}