Add rating filter/sort + fix isEmpty/isNotEmpty + fix combinedViewFilters (#6310)

## Context
- Adding RATING sort and filter capabilities.
- Fixing isEmpty/isNotEmpty filters
- Fixing combined view filters so it combines filters per field metadata
and not per filter id. This is more a product question but to me it does
not make sense to apply multiples filters on the same field IF the
operations is wrapped in a AND. If at some point we want to put a OR
instead then that would make more sense
This commit is contained in:
Weiko
2024-07-17 17:54:37 +02:00
committed by GitHub
parent 47ddc7be83
commit efd932e99b
12 changed files with 172 additions and 14 deletions

View File

@ -42,17 +42,20 @@ export const useCombinedViewFilters = (viewBarComponentId?: string) => {
}
const matchingFilterInCurrentView = currentView.viewFilters.find(
(viewFilter) => viewFilter.id === upsertedFilter.id,
(viewFilter) =>
viewFilter.fieldMetadataId === upsertedFilter.fieldMetadataId,
);
const matchingFilterInUnsavedFilters = unsavedToUpsertViewFilters.find(
(viewFilter) => viewFilter.id === upsertedFilter.id,
(viewFilter) =>
viewFilter.fieldMetadataId === upsertedFilter.fieldMetadataId,
);
if (isDefined(matchingFilterInUnsavedFilters)) {
const updatedFilters = unsavedToUpsertViewFilters.map((viewFilter) =>
viewFilter.id === matchingFilterInUnsavedFilters.id
? { ...viewFilter, ...upsertedFilter }
viewFilter.fieldMetadataId ===
matchingFilterInUnsavedFilters.fieldMetadataId
? { ...viewFilter, ...upsertedFilter, id: viewFilter.id }
: viewFilter,
);
@ -63,7 +66,11 @@ export const useCombinedViewFilters = (viewBarComponentId?: string) => {
if (isDefined(matchingFilterInCurrentView)) {
set(unsavedToUpsertViewFiltersState, [
...unsavedToUpsertViewFilters,
{ ...matchingFilterInCurrentView, ...upsertedFilter },
{
...matchingFilterInCurrentView,
...upsertedFilter,
id: matchingFilterInCurrentView.id,
},
]);
set(
unsavedToDeleteViewFilterIdsState,

View File

@ -58,12 +58,14 @@ export const useSaveCurrentViewFiltersAndSorts = (
const viewSortsToCreate = unsavedToUpsertViewSorts.filter(
(viewSort) =>
!view.viewSorts.some(
(vf) => vf.fieldMetadataId === viewSort.fieldMetadataId,
(vs) => vs.fieldMetadataId === viewSort.fieldMetadataId,
),
);
const viewSortsToUpdate = unsavedToUpsertViewSorts.filter((viewSort) =>
view.viewSorts.some((vf) => vf.id === viewSort.id),
view.viewSorts.some(
(vs) => vs.fieldMetadataId === viewSort.fieldMetadataId,
),
);
await createViewSortRecords(viewSortsToCreate, view);
@ -101,12 +103,16 @@ export const useSaveCurrentViewFiltersAndSorts = (
const viewFiltersToCreate = unsavedToUpsertViewFilters.filter(
(viewFilter) =>
!view.viewFilters.some((vf) => vf.id === viewFilter.id),
!view.viewFilters.some(
(vf) => vf.fieldMetadataId === viewFilter.fieldMetadataId,
),
);
const viewFiltersToUpdate = unsavedToUpsertViewFilters.filter(
(viewFilter) =>
view.viewFilters.some((vf) => vf.id === viewFilter.id),
view.viewFilters.some(
(vf) => vf.fieldMetadataId === viewFilter.fieldMetadataId,
),
);
await createViewFilterRecords(viewFiltersToCreate, view);