From 5e17e87a4b3f2264d9a96d4855742d682a73d217 Mon Sep 17 00:00:00 2001 From: Wing-Kam Wong Date: Wed, 15 Feb 2023 12:26:10 +0800 Subject: [PATCH] fix(nc-gui): revise isComparisonOpAllowed logic --- packages/nc-gui/composables/useViewFilters.ts | 23 ++++++++++++++----- 1 file changed, 17 insertions(+), 6 deletions(-) diff --git a/packages/nc-gui/composables/useViewFilters.ts b/packages/nc-gui/composables/useViewFilters.ts index d8aedceb02..67796d49d2 100644 --- a/packages/nc-gui/composables/useViewFilters.ts +++ b/packages/nc-gui/composables/useViewFilters.ts @@ -116,17 +116,28 @@ export function useViewFilters( excludedTypes?: UITypes[] }, ) => { + const isNullOrEmptyOp = ['empty', 'notempty', 'null', 'notnull'].includes(compOp.value) if (compOp.includedTypes) { // include allowed values only if selected column type matches - return filter.fk_column_id && compOp.includedTypes.includes(types.value[filter.fk_column_id]) + if (filter.fk_column_id && compOp.includedTypes.includes(types.value[filter.fk_column_id])) { + // for 'empty', 'notempty', 'null', 'notnull', + // show them based on `showNullAndEmptyInFilter` in Project Settings + return isNullOrEmptyOp ? projectMeta.value.showNullAndEmptyInFilter : true + } else { + return false + } } else if (compOp.excludedTypes) { // include not allowed values only if selected column type not matches - return filter.fk_column_id && !compOp.excludedTypes.includes(types.value[filter.fk_column_id]) - } else if (['empty', 'notempty', 'null', 'notnull'].includes(compOp.value)) { - // for these 4 comparisonOp, show them based on `showNullAndEmptyInFilter` in Project Settings - return projectMeta.value.showNullAndEmptyInFilter + if (filter.fk_column_id && !compOp.excludedTypes.includes(types.value[filter.fk_column_id])) { + // for 'empty', 'notempty', 'null', 'notnull', + // show them based on `showNullAndEmptyInFilter` in Project Settings + return isNullOrEmptyOp ? projectMeta.value.showNullAndEmptyInFilter : true + } else { + return false + } } - return true + // explicitly include for non-null / non-empty ops + return isNullOrEmptyOp ? projectMeta.value.showNullAndEmptyInFilter : true } const placeholderFilter = (): Filter => {