Added support for Links filtering (#5785)
References #5741 --------- Co-authored-by: kiridarivaki <k.darivaki03@gmail.com>
This commit is contained in:
@ -17,6 +17,7 @@ export const formatFieldMetadataItemsAsFilterDefinitions = ({
|
||||
FieldMetadataType.Email,
|
||||
FieldMetadataType.Number,
|
||||
FieldMetadataType.Link,
|
||||
FieldMetadataType.Links,
|
||||
FieldMetadataType.FullName,
|
||||
FieldMetadataType.Address,
|
||||
FieldMetadataType.Relation,
|
||||
@ -65,6 +66,8 @@ export const getFilterTypeFromFieldType = (fieldType: FieldMetadataType) => {
|
||||
return 'DATE';
|
||||
case FieldMetadataType.Link:
|
||||
return 'LINK';
|
||||
case FieldMetadataType.Links:
|
||||
return 'LINKS';
|
||||
case FieldMetadataType.FullName:
|
||||
return 'FULL_NAME';
|
||||
case FieldMetadataType.Number:
|
||||
|
||||
@ -54,6 +54,7 @@ export const MultipleFiltersDropdownContent = ({
|
||||
'PHONE',
|
||||
'FULL_NAME',
|
||||
'LINK',
|
||||
'LINKS',
|
||||
'ADDRESS',
|
||||
].includes(filterDefinitionUsedInDropdown.type) && (
|
||||
<ObjectFilterDropdownTextSearchInput />
|
||||
|
||||
@ -8,6 +8,7 @@ export type FilterType =
|
||||
| 'CURRENCY'
|
||||
| 'FULL_NAME'
|
||||
| 'LINK'
|
||||
| 'LINKS'
|
||||
| 'RELATION'
|
||||
| 'ADDRESS'
|
||||
| 'SELECT'
|
||||
|
||||
@ -13,6 +13,7 @@ describe('getOperandsForFilterType', () => {
|
||||
],
|
||||
['ADDRESS', [ViewFilterOperand.Contains, ViewFilterOperand.DoesNotContain]],
|
||||
['LINK', [ViewFilterOperand.Contains, ViewFilterOperand.DoesNotContain]],
|
||||
['LINKS', [ViewFilterOperand.Contains, ViewFilterOperand.DoesNotContain]],
|
||||
['CURRENCY', [ViewFilterOperand.GreaterThan, ViewFilterOperand.LessThan]],
|
||||
['NUMBER', [ViewFilterOperand.GreaterThan, ViewFilterOperand.LessThan]],
|
||||
['DATE_TIME', [ViewFilterOperand.GreaterThan, ViewFilterOperand.LessThan]],
|
||||
|
||||
@ -13,6 +13,8 @@ export const getOperandsForFilterType = (
|
||||
case 'PHONE':
|
||||
case 'LINK':
|
||||
return [ViewFilterOperand.Contains, ViewFilterOperand.DoesNotContain];
|
||||
case 'LINKS':
|
||||
return [ViewFilterOperand.Contains, ViewFilterOperand.DoesNotContain];
|
||||
case 'CURRENCY':
|
||||
case 'NUMBER':
|
||||
case 'DATE_TIME':
|
||||
|
||||
@ -203,6 +203,35 @@ export const turnObjectDropdownFilterIntoQueryFilter = (
|
||||
);
|
||||
}
|
||||
break;
|
||||
case 'LINKS': {
|
||||
const linksFilters = generateILikeFiltersForCompositeFields(
|
||||
rawUIFilter.value,
|
||||
correspondingField.name,
|
||||
['primaryLinkLabel', 'primaryLinkUrl'],
|
||||
);
|
||||
switch (rawUIFilter.operand) {
|
||||
case ViewFilterOperand.Contains:
|
||||
objectRecordFilters.push({
|
||||
or: linksFilters,
|
||||
});
|
||||
break;
|
||||
case ViewFilterOperand.DoesNotContain:
|
||||
objectRecordFilters.push({
|
||||
and: linksFilters.map((filter) => {
|
||||
return {
|
||||
not: filter,
|
||||
};
|
||||
}),
|
||||
});
|
||||
break;
|
||||
default:
|
||||
throw new Error(
|
||||
`Unknown operand ${rawUIFilter.operand} for ${rawUIFilter.definition.type} filter`,
|
||||
);
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
case 'FULL_NAME': {
|
||||
const fullNameFilters = generateILikeFiltersForCompositeFields(
|
||||
rawUIFilter.value,
|
||||
|
||||
@ -20,7 +20,7 @@ export const linksCompositeType: CompositeType = {
|
||||
{
|
||||
name: 'secondaryLinks',
|
||||
type: FieldMetadataType.RAW_JSON,
|
||||
hidden: false,
|
||||
hidden: 'input',
|
||||
isRequired: false,
|
||||
},
|
||||
],
|
||||
|
||||
Reference in New Issue
Block a user