This PR fixes many bugs on advanced filters, the goal here was to have CRUD working with other simple filters and sorts. In order to test this PR you'll have to run a sync metadata. Fixes https://github.com/twentyhq/core-team-issues/issues/560 ## Changed positionInViewFilterGroup field metadata type This PR changes the type of positionInViewFilterGroup to NUMERIC instead of POSITION, there certainly was a confusion during the initial development, where POSITION type seemed relevant but it is not for this particular feature because the position in a view filter group is not the position of a record, which is used for displaying and re-ordering purpose in table and kanban views. Here the positionInViewFilterGroup is a specific position concept tied to a custom feature, and it is handled by the specific logic of this advanced filter dropdown layout. ## Create new ids when duplicating a view When we use create view from an existing view, the logic in useCreateViewFromCurrentView will copy over filters, filter groups and sorts. The problem is that it copies it with the same ids, and that if the backend manages somehow to create new ids, the ids that are put in parentViewFilterGroupId are corresponding to the old filter groups not the duplicated new ones. So we had to create a map of old id => new id so that everything that has to be sent to the backend for creation already has the same mapping of parent id but with new ids generated by the frontend. ## Bug with creating a simple filter We couldn't create a simple filter when advanced filters were set, this was because of findDuplicateRecordFilterInNonAdvancedRecordFilters which wasn't doing what it's naming tells, it wasn't filtering on simple filters only before looking for duplicates. ## Clean code - Use lastChildPosition directly from useChildRecordFiltersAndRecordFilterGroups instead of drilling it down - Refactored AdvancedFilterDropdownButton to extract the code lower where it is really needed in AdvancedFilterChip - Renamed a few View to Record naming where relevant
Run yarn dev while server running on port 3000