diff --git a/ui-ngx/src/app/shared/models/page/page-link.ts b/ui-ngx/src/app/shared/models/page/page-link.ts index ee0f2c8fda..caf353e69a 100644 --- a/ui-ngx/src/app/shared/models/page/page-link.ts +++ b/ui-ngx/src/app/shared/models/page/page-link.ts @@ -21,25 +21,43 @@ import { SortDirection } from '@angular/material/sort'; export const MAX_SAFE_PAGE_SIZE = 2147483647; -export type PageLinkSearchFunction = (entity: T, textSearch: string) => boolean; +export type PageLinkSearchFunction = (entity: T, textSearch: string, searchProperty?: string) => boolean; -const defaultPageLinkSearchFunction: PageLinkSearchFunction = - (entity: any, textSearch: string) => { +export function defaultPageLinkSearchFunction(searchProperty?: string): PageLinkSearchFunction { + return (entity, textSearch) => defaultPageLinkSearch(entity, textSearch, searchProperty); +} + +const defaultPageLinkSearch: PageLinkSearchFunction = + (entity: any, textSearch: string, searchProperty?: string) => { if (textSearch === null || !textSearch.length) { return true; } const expected = ('' + textSearch).toLowerCase(); - for (const key of Object.keys(entity)) { - const val = entity[key]; - if (val !== null) { - if (val !== Object(val)) { - const actual = ('' + val).toLowerCase(); - if (actual.indexOf(expected) !== -1) { - return true; + if (searchProperty && searchProperty.length) { + if (Object.prototype.hasOwnProperty.call(entity, searchProperty)) { + const val = entity[searchProperty]; + if (val !== null) { + if (val !== Object(val)) { + const actual = ('' + val).toLowerCase(); + if (actual.indexOf(expected) !== -1) { + return true; + } } - } else if (isObject(val)) { - if (defaultPageLinkSearchFunction(val, textSearch)) { - return true; + } + } + } else { + for (const key of Object.keys(entity)) { + const val = entity[key]; + if (val !== null) { + if (val !== Object(val)) { + const actual = ('' + val).toLowerCase(); + if (actual.indexOf(expected) !== -1) { + return true; + } + } else if (isObject(val)) { + if (defaultPageLinkSearch(val, textSearch)) { + return true; + } } } } @@ -103,7 +121,7 @@ export class PageLink { } public filterData(data: Array, - searchFunction: PageLinkSearchFunction = defaultPageLinkSearchFunction): PageData { + searchFunction: PageLinkSearchFunction = defaultPageLinkSearchFunction()): PageData { const pageData = emptyPageData(); pageData.data = [...data]; if (this.textSearch && this.textSearch.length) {