angular2-simple-ui
Version:
Angular 2 Simple Material Design UI Components customisable with Simple 30 KB CSS with LESS support and full features support , just plugin up and run for clarity look at sample examples
43 lines (39 loc) • 1.55 kB
text/typescript
import { PipeTransform, Pipe } from '@angular/core';
import { contains } from './sui.util.contains';
({
name: 'tableMenuFilter'
})
export class TableMenuFilterPipe implements PipeTransform {
transform(items: any[], tableMenuFilterModels: TableMenuFilterModel[]): any {
if (items && items.length && tableMenuFilterModels && tableMenuFilterModels.length) {
let field = items[0].field;
let res: any[] = [];
tableMenuFilterModels.forEach(tableMenuFilterModel => {
if (tableMenuFilterModel.fieldName && tableMenuFilterModel.search) {
items.forEach(y => {
if (field === tableMenuFilterModel.fieldName) {
if (contains(y.value, tableMenuFilterModel.search)) {
res.push(y);
}
} else {
if (!this.hasFieldName(y, tableMenuFilterModels))
res.push(y);
}
})
}
});
return res;
}
return items;
}
hasFieldName(item: any, tableMenuFilterModels: TableMenuFilterModel[]): boolean {
let exist = tableMenuFilterModels.find(y => y.fieldName == item.field);
if (exist)
return true;
return false;
}
}
export class TableMenuFilterModel {
public fieldName: string;
public search: Object;
}