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.Email,
|
||||||
FieldMetadataType.Number,
|
FieldMetadataType.Number,
|
||||||
FieldMetadataType.Link,
|
FieldMetadataType.Link,
|
||||||
|
FieldMetadataType.Links,
|
||||||
FieldMetadataType.FullName,
|
FieldMetadataType.FullName,
|
||||||
FieldMetadataType.Address,
|
FieldMetadataType.Address,
|
||||||
FieldMetadataType.Relation,
|
FieldMetadataType.Relation,
|
||||||
@ -65,6 +66,8 @@ export const getFilterTypeFromFieldType = (fieldType: FieldMetadataType) => {
|
|||||||
return 'DATE';
|
return 'DATE';
|
||||||
case FieldMetadataType.Link:
|
case FieldMetadataType.Link:
|
||||||
return 'LINK';
|
return 'LINK';
|
||||||
|
case FieldMetadataType.Links:
|
||||||
|
return 'LINKS';
|
||||||
case FieldMetadataType.FullName:
|
case FieldMetadataType.FullName:
|
||||||
return 'FULL_NAME';
|
return 'FULL_NAME';
|
||||||
case FieldMetadataType.Number:
|
case FieldMetadataType.Number:
|
||||||
|
|||||||
@ -54,6 +54,7 @@ export const MultipleFiltersDropdownContent = ({
|
|||||||
'PHONE',
|
'PHONE',
|
||||||
'FULL_NAME',
|
'FULL_NAME',
|
||||||
'LINK',
|
'LINK',
|
||||||
|
'LINKS',
|
||||||
'ADDRESS',
|
'ADDRESS',
|
||||||
].includes(filterDefinitionUsedInDropdown.type) && (
|
].includes(filterDefinitionUsedInDropdown.type) && (
|
||||||
<ObjectFilterDropdownTextSearchInput />
|
<ObjectFilterDropdownTextSearchInput />
|
||||||
|
|||||||
@ -8,6 +8,7 @@ export type FilterType =
|
|||||||
| 'CURRENCY'
|
| 'CURRENCY'
|
||||||
| 'FULL_NAME'
|
| 'FULL_NAME'
|
||||||
| 'LINK'
|
| 'LINK'
|
||||||
|
| 'LINKS'
|
||||||
| 'RELATION'
|
| 'RELATION'
|
||||||
| 'ADDRESS'
|
| 'ADDRESS'
|
||||||
| 'SELECT'
|
| 'SELECT'
|
||||||
|
|||||||
@ -13,6 +13,7 @@ describe('getOperandsForFilterType', () => {
|
|||||||
],
|
],
|
||||||
['ADDRESS', [ViewFilterOperand.Contains, ViewFilterOperand.DoesNotContain]],
|
['ADDRESS', [ViewFilterOperand.Contains, ViewFilterOperand.DoesNotContain]],
|
||||||
['LINK', [ViewFilterOperand.Contains, ViewFilterOperand.DoesNotContain]],
|
['LINK', [ViewFilterOperand.Contains, ViewFilterOperand.DoesNotContain]],
|
||||||
|
['LINKS', [ViewFilterOperand.Contains, ViewFilterOperand.DoesNotContain]],
|
||||||
['CURRENCY', [ViewFilterOperand.GreaterThan, ViewFilterOperand.LessThan]],
|
['CURRENCY', [ViewFilterOperand.GreaterThan, ViewFilterOperand.LessThan]],
|
||||||
['NUMBER', [ViewFilterOperand.GreaterThan, ViewFilterOperand.LessThan]],
|
['NUMBER', [ViewFilterOperand.GreaterThan, ViewFilterOperand.LessThan]],
|
||||||
['DATE_TIME', [ViewFilterOperand.GreaterThan, ViewFilterOperand.LessThan]],
|
['DATE_TIME', [ViewFilterOperand.GreaterThan, ViewFilterOperand.LessThan]],
|
||||||
|
|||||||
@ -13,6 +13,8 @@ export const getOperandsForFilterType = (
|
|||||||
case 'PHONE':
|
case 'PHONE':
|
||||||
case 'LINK':
|
case 'LINK':
|
||||||
return [ViewFilterOperand.Contains, ViewFilterOperand.DoesNotContain];
|
return [ViewFilterOperand.Contains, ViewFilterOperand.DoesNotContain];
|
||||||
|
case 'LINKS':
|
||||||
|
return [ViewFilterOperand.Contains, ViewFilterOperand.DoesNotContain];
|
||||||
case 'CURRENCY':
|
case 'CURRENCY':
|
||||||
case 'NUMBER':
|
case 'NUMBER':
|
||||||
case 'DATE_TIME':
|
case 'DATE_TIME':
|
||||||
|
|||||||
@ -203,6 +203,35 @@ export const turnObjectDropdownFilterIntoQueryFilter = (
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
break;
|
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': {
|
case 'FULL_NAME': {
|
||||||
const fullNameFilters = generateILikeFiltersForCompositeFields(
|
const fullNameFilters = generateILikeFiltersForCompositeFields(
|
||||||
rawUIFilter.value,
|
rawUIFilter.value,
|
||||||
|
|||||||
@ -20,7 +20,7 @@ export const linksCompositeType: CompositeType = {
|
|||||||
{
|
{
|
||||||
name: 'secondaryLinks',
|
name: 'secondaryLinks',
|
||||||
type: FieldMetadataType.RAW_JSON,
|
type: FieldMetadataType.RAW_JSON,
|
||||||
hidden: false,
|
hidden: 'input',
|
||||||
isRequired: false,
|
isRequired: false,
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
|
|||||||
Reference in New Issue
Block a user