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
52 lines (48 loc) • 1.79 kB
text/typescript
import { PipeTransform, Pipe } from '@angular/core';
import { FilterModel } from './sui.util.filter.model';
import { contains } from './sui.util.contains';
({
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) {
items = items.filter(item => {
let key = '';
if (!filter.isStringArray) {
key = item[ft.key];
} else {
key = item;
}
let response = false;
ft.value.forEach(y => {
let con = contains(key, y);
if (con) {
response = true;
}
})
return response;
});
}
} else {
let res: any[] = [];
for (let item of items) {
for (let ft of filter.keyValues) {
let key = '';
if (!filter.isStringArray) {
key = item[ft.key];
} else {
key = item;
}
if (contains(key, ft.value[0]))
res.push(item);
}
}
return res;
}
}
return items;
}
}