add filter to handle object arrays

This commit is contained in:
Mads Rasmussen
2024-05-15 14:36:48 +02:00
parent 3a3cfb085f
commit 2c6abfa686
2 changed files with 11 additions and 2 deletions

View File

@@ -1,5 +1,5 @@
import { umbUserGroupMockDb } from '../user-group/user-group.db.js';
import { arrayFilter, stringFilter, queryFilter } from '../utils.js';
import { arrayFilter, stringFilter, queryFilter, objectArrayFilter } from '../utils.js';
import { UmbEntityMockDbBase } from '../utils/entity/entity-base.js';
import { UmbMockEntityItemManager } from '../utils/entity/entity-item.manager.js';
import { UmbMockEntityDetailManager } from '../utils/entity/entity-detail.manager.js';
@@ -28,7 +28,7 @@ interface UserFilterOptions {
}
const userGroupFilter = (filterOptions: UserFilterOptions, item: UmbMockUserModel) =>
arrayFilter(filterOptions.userGroupIds, item.userGroupIds);
objectArrayFilter(filterOptions.userGroupIds, item.userGroupIds, 'id');
const userStateFilter = (filterOptions: UserFilterOptions, item: UmbMockUserModel) =>
stringFilter(filterOptions.userStates, item.state);
const userQueryFilter = (filterOptions: UserFilterOptions, item: UmbMockUserModel) =>

View File

@@ -7,11 +7,20 @@ export const arrayFilter = (filterBy: Array<string>, value?: Array<string>): boo
return filterBy.some((filterValue: string) => value?.includes(filterValue));
};
export const objectArrayFilter = (filterBy: Array<any>, value: Array<any>, key: string): boolean => {
if (!filterBy || !value) {
return true;
}
return value.map((value) => value[key]).some((value: any) => filterBy.includes(value));
};
export const stringFilter = (filterBy: Array<string>, value?: string): boolean => {
// if a filter is not set, return all items
if (!filterBy || !value) {
return true;
}
return filterBy.includes(value);
};