UNPKG

w-ng5

Version:
164 lines (157 loc) 4.28 kB
import { Pipe, NgModule } from '@angular/core'; /** * @fileoverview added by tsickle * @suppress {checkTypes} checked by tsc */ /** * @record */ class FilterPipe { /** * @param {?} values * @param {?} filter * @return {?} */ transform(values, filter) { if (filter instanceof Array) { return this.checkComplexType(values, filter); } else { return this.checkSimpleType(values, filter); } } /** * @param {?} values * @param {?} filter * @return {?} */ checkSimpleType(values, filter) { if (!values || !filter) { return values; } return values.filter(item => item.toString().toLowerCase().indexOf(filter.toString().toLowerCase()) !== -1); } /** * @param {?} values * @param {?} filter * @return {?} */ checkComplexType(values, filter) { if (!values || !filter || filter.length === 0) { return values; } const /** @type {?} */ result = []; // find in all records values.forEach(row => { let /** @type {?} */ match = false; // find in all filters in the array of filters filter.forEach(field => { match = match || this.checkValue(row, field); }); if (match) { result.push(row); // add row in return } }); return result; } /** * @param {?} item * @param {?} filter * @return {?} */ checkValue(item, filter) { if (!filter || !filter.field || !filter.value || filter.value === '') { return true; } if (this.existDot(filter.field)) { return this.parseValue(item, filter.value, filter.field); // return false; } else { if (item[filter.field]) { return item[filter.field].toString().toLowerCase().indexOf(filter.value.toString().toLowerCase()) !== -1; } else { return false; } } } /** * @param {?} reference * @param {?} search * @param {?} filter * @return {?} */ parseValue(reference, search, filter) { const /** @type {?} */ fields = filter.split('.'); return this.existFieldValue(reference, search, fields, 0); } /** * @param {?} path * @return {?} */ existDot(path) { return path.indexOf('.') > -1; } /** * @param {?} obj * @param {?} search * @param {?} fieldFind * @param {?} indexFind * @return {?} */ existFieldValue(obj, search, fieldFind, indexFind) { // Lê o valor da propriedade const /** @type {?} */ ref = obj[fieldFind[indexFind]]; // Se estiver no último nível... if (indexFind === fieldFind.length - 1) { // Se tiver valor, confere se contém o que está procurando... if (ref) { return ref.toString().toLowerCase().indexOf(search.toString().toLowerCase()) !== -1; } else { return false; } // Não está no último nível mas há valor na referência } else if (ref) { return this.existFieldValue(ref, search, fieldFind, ++indexFind); // Não está no último nível e não há valor na referência (null) } else { return false; } } } FilterPipe.decorators = [ { type: Pipe, args: [{ name: 'filter', pure: true },] }, ]; /** * @fileoverview added by tsickle * @suppress {checkTypes} checked by tsc */ class PipesModule { } PipesModule.decorators = [ { type: NgModule, args: [{ declarations: [FilterPipe], exports: [FilterPipe], providers: [FilterPipe] },] }, ]; /** * @fileoverview added by tsickle * @suppress {checkTypes} checked by tsc */ /** * @fileoverview added by tsickle * @suppress {checkTypes} checked by tsc */ /** * Generated bundle index. Do not edit. */ export { FilterPipe, PipesModule }; //# sourceMappingURL=w-ng5.js.map