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:
@ -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,
|
||||
|
||||
@ -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);
|
||||
|
||||
Reference in New Issue
Block a user