diff --git a/ui/src/criteria/filterableGroup.tsx b/ui/src/criteria/filterableGroup.tsx index 87ad04e3b..e83380030 100644 --- a/ui/src/criteria/filterableGroup.tsx +++ b/ui/src/criteria/filterableGroup.tsx @@ -1190,16 +1190,43 @@ function generateFilters( }, }); } else { - operands.push({ - filterType: tanagra.FilterFilterTypeEnum.Attribute, - filterUnion: { - attributeFilter: { - attribute: vd.attribute, - operator: tanagra.AttributeFilterOperatorEnum.In, - values: vd.selected.map((s) => literalFromDataValue(s.value)), + const operandFilter: tanagra.Filter[] = [ + { + filterType: tanagra.FilterFilterTypeEnum.Attribute, + filterUnion: { + attributeFilter: { + attribute: vd.attribute, + operator: tanagra.AttributeFilterOperatorEnum.In, + values: [], + }, }, }, + ]; + + vd.selected.forEach((s) => { + const sLiteral = literalFromDataValue(s.value); + if (s.value === null) { + // 'n/a' is selected: entries with no value for this attribute + operandFilter.push({ + filterType: tanagra.FilterFilterTypeEnum.Attribute, + filterUnion: { + attributeFilter: { + attribute: vd.attribute, + operator: tanagra.AttributeFilterOperatorEnum.IsEmptyString, + }, + }, + }); + } else { + operandFilter[0].filterUnion?.attributeFilter?.values?.push(sLiteral); + } }); + + operands.push( + makeBooleanLogicFilter( + tanagra.BooleanLogicFilterOperatorEnum.Or, + operandFilter + ) as tanagra.Filter + ); } }); diff --git a/ui/src/data/source.tsx b/ui/src/data/source.tsx index fbeff42cc..5eb3bb5f8 100644 --- a/ui/src/data/source.tsx +++ b/ui/src/data/source.tsx @@ -1606,9 +1606,9 @@ function isInternalAttribute(attribute: string): boolean { } export function literalFromDataValue(value: DataValue): tanagra.Literal { - let dataType = tanagra.DataType.String; - if (typeof value === "bigint") { - dataType = tanagra.DataType.Int64; + let dataType = tanagra.DataType.Int64; + if (typeof value === "string") { + dataType = tanagra.DataType.String; } else if (typeof value === "boolean") { dataType = tanagra.DataType.Boolean; } else if (value instanceof Date) {