UI: Improve page link default search function
This commit is contained in:
parent
4832f85f5d
commit
88ff9f4d19
@ -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) {
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user