Remove filter definition (#10227)
This PR removes completely filter definition usage and states, everything is now derived from fieldMetadataItem.
This commit is contained in:
@ -20,6 +20,15 @@ const baseDefinition = {
|
||||
fieldName: 'fieldName',
|
||||
};
|
||||
|
||||
const baseFieldMetadataItem = {
|
||||
id: '05731f68-6e7a-4903-8374-c0b6a9063482',
|
||||
createdAt: '2021-01-01',
|
||||
updatedAt: '2021-01-01',
|
||||
name: 'name',
|
||||
label: 'Name',
|
||||
type: FieldMetadataType.FULL_NAME,
|
||||
};
|
||||
|
||||
describe('mapViewSortsToSorts', () => {
|
||||
it('should map each ViewSort object to a corresponding Sort object', () => {
|
||||
const viewSorts: ViewSort[] = [
|
||||
@ -62,23 +71,12 @@ describe('mapViewFiltersToFilters', () => {
|
||||
value: 'testValue',
|
||||
displayValue: 'Test Display Value',
|
||||
operand: ViewFilterOperand.Is,
|
||||
definition: {
|
||||
...baseDefinition,
|
||||
type: 'FULL_NAME',
|
||||
},
|
||||
label: baseDefinition.label,
|
||||
type: 'FULL_NAME',
|
||||
positionInViewFilterGroup: undefined,
|
||||
viewFilterGroupId: undefined,
|
||||
label: baseFieldMetadataItem.label,
|
||||
type: FieldMetadataType.FULL_NAME,
|
||||
},
|
||||
];
|
||||
expect(
|
||||
mapViewFiltersToFilters(viewFilters, [
|
||||
{
|
||||
...baseDefinition,
|
||||
type: 'FULL_NAME',
|
||||
},
|
||||
]),
|
||||
mapViewFiltersToFilters(viewFilters, [baseFieldMetadataItem]),
|
||||
).toEqual(expectedFilters);
|
||||
});
|
||||
});
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
import { FieldMetadataItem } from '@/object-metadata/types/FieldMetadataItem';
|
||||
import { ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem';
|
||||
import { formatFieldMetadataItemsAsFilterDefinitions } from '@/object-metadata/utils/formatFieldMetadataItemsAsFilterDefinitions';
|
||||
|
||||
import { formatFieldMetadataItemsAsSortDefinitions } from '@/object-metadata/utils/formatFieldMetadataItemsAsSortDefinitions';
|
||||
import { turnSortsIntoOrderBy } from '@/object-record/object-sort-dropdown/utils/turnSortsIntoOrderBy';
|
||||
import { RecordFilterValueDependencies } from '@/object-record/record-filter/types/RecordFilterValueDependencies';
|
||||
@ -15,13 +15,11 @@ export const getQueryVariablesFromView = ({
|
||||
view,
|
||||
fieldMetadataItems,
|
||||
objectMetadataItem,
|
||||
isJsonFilterEnabled,
|
||||
filterValueDependencies,
|
||||
}: {
|
||||
view: View | null | undefined;
|
||||
fieldMetadataItems: FieldMetadataItem[];
|
||||
objectMetadataItem: ObjectMetadataItem;
|
||||
isJsonFilterEnabled: boolean;
|
||||
filterValueDependencies: RecordFilterValueDependencies;
|
||||
}) => {
|
||||
if (!isDefined(view)) {
|
||||
@ -33,18 +31,13 @@ export const getQueryVariablesFromView = ({
|
||||
|
||||
const { viewFilterGroups, viewFilters, viewSorts } = view;
|
||||
|
||||
const filterDefinitions = formatFieldMetadataItemsAsFilterDefinitions({
|
||||
fields: fieldMetadataItems,
|
||||
isJsonFilterEnabled,
|
||||
});
|
||||
|
||||
const sortDefinitions = formatFieldMetadataItemsAsSortDefinitions({
|
||||
fields: fieldMetadataItems,
|
||||
});
|
||||
|
||||
const filter = computeViewRecordGqlOperationFilter(
|
||||
filterValueDependencies,
|
||||
mapViewFiltersToFilters(viewFilters, filterDefinitions),
|
||||
mapViewFiltersToFilters(viewFilters, fieldMetadataItems),
|
||||
objectMetadataItem?.fields ?? [],
|
||||
viewFilterGroups ?? [],
|
||||
);
|
||||
|
||||
@ -1,21 +1,31 @@
|
||||
import { RecordFilter } from '@/object-record/record-filter/types/RecordFilter';
|
||||
import { isDefined } from 'twenty-shared';
|
||||
|
||||
import { RecordFilterDefinition } from '@/object-record/record-filter/types/RecordFilterDefinition';
|
||||
import { FieldMetadataItem } from '@/object-metadata/types/FieldMetadataItem';
|
||||
|
||||
import { getFilterTypeFromFieldType } from '@/object-metadata/utils/formatFieldMetadataItemsAsFilterDefinitions';
|
||||
import { ViewFilter } from '../types/ViewFilter';
|
||||
|
||||
export const mapViewFiltersToFilters = (
|
||||
viewFilters: ViewFilter[],
|
||||
availableFilterDefinitions: RecordFilterDefinition[],
|
||||
availableFieldMetadataItems: FieldMetadataItem[],
|
||||
): RecordFilter[] => {
|
||||
return viewFilters
|
||||
.map((viewFilter) => {
|
||||
const availableFilterDefinition = availableFilterDefinitions.find(
|
||||
(filterDefinition) =>
|
||||
filterDefinition.fieldMetadataId === viewFilter.fieldMetadataId,
|
||||
const availableFieldMetadataItem = availableFieldMetadataItems.find(
|
||||
(fieldMetadataItem) =>
|
||||
fieldMetadataItem.id === viewFilter.fieldMetadataId,
|
||||
);
|
||||
|
||||
if (!availableFilterDefinition) return null;
|
||||
if (!isDefined(availableFieldMetadataItem)) {
|
||||
throw new Error(
|
||||
`Field metadata item not found for view filter ${viewFilter.id} and field metadata id ${viewFilter.fieldMetadataId}`,
|
||||
);
|
||||
}
|
||||
|
||||
const filterType = getFilterTypeFromFieldType(
|
||||
availableFieldMetadataItem.type,
|
||||
);
|
||||
|
||||
return {
|
||||
id: viewFilter.id,
|
||||
@ -25,9 +35,8 @@ export const mapViewFiltersToFilters = (
|
||||
operand: viewFilter.operand,
|
||||
viewFilterGroupId: viewFilter.viewFilterGroupId,
|
||||
positionInViewFilterGroup: viewFilter.positionInViewFilterGroup,
|
||||
definition: viewFilter.definition ?? availableFilterDefinition,
|
||||
label: viewFilter.definition?.label ?? availableFilterDefinition.label,
|
||||
type: viewFilter.definition?.type ?? availableFilterDefinition.type,
|
||||
label: availableFieldMetadataItem.label,
|
||||
type: filterType,
|
||||
};
|
||||
})
|
||||
.filter(isDefined);
|
||||
|
||||
Reference in New Issue
Block a user