This PR was created by [GitStart](https://gitstart.com/) to address the requirements from this ticket: [TWNTY-6784](https://clients.gitstart.com/twenty/5449/tickets/TWNTY-6784). This ticket was imported from: [TWNTY-6784](https://github.com/twentyhq/twenty/issues/6784) --- ### Description - Add filter on array and jsonb field types - We did not implement the contains any filter for arrays on the frontend because we would need to change the UI design since this should be an array of values, and now we have only one input ### Demo <https://www.loom.com/share/0facf752b63f4120b5d4ea4ee9772d35?sid=d7bde469-e6a9-4298-a637-d81d40695a86> Fixes #6784 --------- Co-authored-by: gitstart-twenty <gitstart-twenty@users.noreply.github.com> Co-authored-by: gitstart-twenty <140154534+gitstart-twenty@users.noreply.github.com> Co-authored-by: Weiko <corentin@twenty.com>
56 lines
1.8 KiB
TypeScript
56 lines
1.8 KiB
TypeScript
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 { turnFiltersIntoQueryFilter } from '@/object-record/record-filter/utils/turnFiltersIntoQueryFilter';
|
|
import { View } from '@/views/types/View';
|
|
import { mapViewFiltersToFilters } from '@/views/utils/mapViewFiltersToFilters';
|
|
import { mapViewSortsToSorts } from '@/views/utils/mapViewSortsToSorts';
|
|
import { isDefined } from '~/utils/isDefined';
|
|
|
|
export const getQueryVariablesFromView = ({
|
|
view,
|
|
fieldMetadataItems,
|
|
objectMetadataItem,
|
|
isArrayAndJsonFilterEnabled,
|
|
}: {
|
|
view: View | null | undefined;
|
|
fieldMetadataItems: FieldMetadataItem[];
|
|
objectMetadataItem: ObjectMetadataItem;
|
|
isArrayAndJsonFilterEnabled: boolean;
|
|
}) => {
|
|
if (!isDefined(view)) {
|
|
return {
|
|
filter: undefined,
|
|
orderBy: undefined,
|
|
};
|
|
}
|
|
|
|
const { viewFilters, viewSorts } = view;
|
|
|
|
const filterDefinitions = formatFieldMetadataItemsAsFilterDefinitions({
|
|
fields: fieldMetadataItems,
|
|
isArrayAndJsonFilterEnabled,
|
|
});
|
|
|
|
const sortDefinitions = formatFieldMetadataItemsAsSortDefinitions({
|
|
fields: fieldMetadataItems,
|
|
});
|
|
|
|
const filter = turnFiltersIntoQueryFilter(
|
|
mapViewFiltersToFilters(viewFilters, filterDefinitions),
|
|
objectMetadataItem?.fields ?? [],
|
|
);
|
|
|
|
const orderBy = turnSortsIntoOrderBy(
|
|
objectMetadataItem,
|
|
mapViewSortsToSorts(viewSorts, sortDefinitions),
|
|
);
|
|
|
|
return {
|
|
filter,
|
|
orderBy,
|
|
};
|
|
};
|