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) +}