|
|
|
@ -21,25 +21,43 @@ import { SortDirection } from '@angular/material/sort'; |
|
|
|
|
|
|
|
export const MAX_SAFE_PAGE_SIZE = 2147483647; |
|
|
|
|
|
|
|
export type PageLinkSearchFunction<T> = (entity: T, textSearch: string) => boolean; |
|
|
|
export type PageLinkSearchFunction<T> = (entity: T, textSearch: string, searchProperty?: string) => boolean; |
|
|
|
|
|
|
|
const defaultPageLinkSearchFunction: PageLinkSearchFunction<any> = |
|
|
|
(entity: any, textSearch: string) => { |
|
|
|
export function defaultPageLinkSearchFunction(searchProperty?: string): PageLinkSearchFunction<any> { |
|
|
|
return (entity, textSearch) => defaultPageLinkSearch(entity, textSearch, searchProperty); |
|
|
|
} |
|
|
|
|
|
|
|
const defaultPageLinkSearch: PageLinkSearchFunction<any> = |
|
|
|
(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<T>(data: Array<T>, |
|
|
|
searchFunction: PageLinkSearchFunction<T> = defaultPageLinkSearchFunction): PageData<T> { |
|
|
|
searchFunction: PageLinkSearchFunction<T> = defaultPageLinkSearchFunction()): PageData<T> { |
|
|
|
const pageData = emptyPageData<T>(); |
|
|
|
pageData.data = [...data]; |
|
|
|
if (this.textSearch && this.textSearch.length) { |
|
|
|
|