angular2-boiler-plate
Version:
Angular 2 Boiler plate that integrated with WebPack, TypeScript, DatePicker, RxJs for Reactive Extensions in Java Script , Karma , Jasmine for unit testing , WebKit ,protractor e2e testing
49 lines (43 loc) • 1.47 kB
text/typescript
import { PipeTransform, Pipe } from '@angular/core';
import { FilterModel } from './sui.util.filter.model';
({
name: 'filter'
})
export class FilterPipe implements PipeTransform {
transform(items: any[], filter: FilterModel): any {
if (filter && filter.keyValues && filter.keyValues.length) {
if (!filter.orCondition) {
for (let ft of filter.keyValues) {
debugger;
items = items.filter(item => {
return contains(item[ft.key], ft.value);
});
}
} else {
let res: any[] = [];
for (let item of items) {
for (let ft of filter.keyValues) {
if (contains(item[ft.key], ft.value))
res.push(item);
}
}
return res;
}
}
return items;
}
}
export function contains(val: Object, search: Object) {
debugger;
if (!search)
return true;
if (typeof val === 'string') {
if (val.toLowerCase().includes(search.toString().toLowerCase())) {
return true;
}
} else if (typeof val === 'number') {
return Number(val) === Number(search);
} else if (typeof val === 'boolean') {
return val.toString() === search.toString();
}
}