UNPKG

ng-jhipster

Version:

A Jhipster util library for Angular 2

66 lines (65 loc) 2.37 kB
import { Pipe } from '@angular/core'; export var FilterPipe = (function () { function FilterPipe() { } FilterPipe.prototype.filterByStringAndField = function (filter, field) { return function (value) { return !filter || (value[field] && value[field].toLowerCase().indexOf(filter.toLowerCase()) !== -1); }; }; // adapted from https://github.com/VadimDez/ng2-filter-pipe FilterPipe.prototype.filterByString = function (filter) { return function (value) { return !filter || value.toLowerCase().indexOf(filter.toLowerCase()) !== -1; }; }; FilterPipe.prototype.filterDefault = function (filter) { return function (value) { return !filter || filter === value; }; }; FilterPipe.prototype.filterByObject = function (filter) { var _this = this; return function (value) { for (var i = 0, keys = Object.keys(filter); i < keys.length; i++) { var key = keys[i]; var type = typeof value[key]; var isMatching = void 0; if (type === 'string') { isMatching = _this.filterByString(filter[key])(value[key]); } else if (type === 'object') { isMatching = _this.filterByObject(filter[key])(value[key]); } else { isMatching = _this.filterDefault(filter[key])(value[key]); } if (!isMatching) { return false; } } return true; }; }; FilterPipe.prototype.transform = function (input, filter, field) { if (!filter) { return input; } var type = typeof filter; if (type === 'string') { if (field) { return input.filter(this.filterByStringAndField(filter, field)); } return input.filter(this.filterByString(filter)); } if (type === 'object') { return input.filter(this.filterByObject(filter)); } }; FilterPipe.decorators = [ { type: Pipe, args: [{ name: 'filter', pure: false },] }, ]; /** @nocollapse */ FilterPipe.ctorParameters = function () { return []; }; return FilterPipe; }());