UNPKG

@guramrit/ngx-filter-pipe

Version:
1 lines 8.25 kB
{"version":3,"file":"guramrit-ngx-filter-pipe.mjs","sources":["../../src/app/shared/ngx-filter-pipe/ngx-filter.pipe.ts","../../src/app/shared/ngx-filter-pipe/ngx-filter.module.ts","../../guramrit-ngx-filter-pipe.ts"],"sourcesContent":["/**\n * Created by vadimdez on 28/06/16.\n */\nimport { Pipe, Injectable, PipeTransform } from '@angular/core';\n\n@Pipe({\n name: 'filterBy',\n pure: false\n})\n@Injectable()\nexport class FilterPipe implements PipeTransform {\n static isFoundOnWalking(value, key) {\n let walker = value;\n let found = false;\n do {\n if (\n walker.hasOwnProperty(key) ||\n Object.getOwnPropertyDescriptor(walker, key)\n ) {\n found = true;\n break;\n }\n } while ((walker = Object.getPrototypeOf(walker)));\n\n return found;\n }\n\n static isNumber(value) {\n return !isNaN(parseInt(value, 10)) && isFinite(value);\n }\n\n /**\n * Checks function's value if type is function otherwise same value\n */\n static getValue(value: any): any {\n return typeof value === 'function' ? value() : value;\n }\n\n private filterByString(filter) {\n if (filter) {\n filter = filter.toLowerCase();\n }\n return value =>\n !filter ||\n (value ? ('' + value).toLowerCase().indexOf(filter) !== -1 : false);\n }\n\n private filterByBoolean(filter) {\n return value => Boolean(value) === filter;\n }\n\n private filterByObject(filter) {\n return value => {\n for (const key in filter) {\n if (key === '$or') {\n if (!this.filterByOr(filter.$or)(FilterPipe.getValue(value))) {\n return false;\n }\n continue;\n }\n\n if (!value || !FilterPipe.isFoundOnWalking(value, key)) {\n return false;\n }\n\n if (!this.isMatching(filter[key], FilterPipe.getValue(value[key]))) {\n return false;\n }\n }\n\n return true;\n };\n }\n\n private isMatching(filter, val) {\n switch (typeof filter) {\n case 'boolean':\n return this.filterByBoolean(filter)(val);\n case 'string':\n return this.filterByString(filter)(val);\n case 'object':\n return this.filterByObject(filter)(val);\n }\n return this.filterDefault(filter)(val);\n }\n\n /**\n * Filter value by $or\n */\n private filterByOr(filter: any[]): (value: any) => boolean {\n return (value: any) => {\n const length = filter.length;\n\n const arrayComparison = i => value.indexOf(filter[i]) !== -1;\n const otherComparison = i => this.isMatching(filter[i], value);\n const comparison = Array.isArray(value)\n ? arrayComparison\n : otherComparison;\n\n for (let i = 0; i < length; i++) {\n if (comparison(i)) {\n return true;\n }\n }\n\n return false;\n };\n }\n\n /**\n * Default filterDefault function\n */\n private filterDefault(filter: any): (value: any) => boolean {\n return (value: any) => filter === undefined || filter == value;\n }\n\n transform(array: any[], filter: any): any {\n if (!array) {\n return array;\n }\n\n switch (typeof filter) {\n case 'boolean':\n return array.filter(this.filterByBoolean(filter));\n case 'string':\n if (FilterPipe.isNumber(filter)) {\n return array.filter(this.filterDefault(filter));\n }\n return array.filter(this.filterByString(filter));\n case 'object':\n return array.filter(this.filterByObject(filter));\n case 'function':\n return array.filter(filter);\n }\n return array.filter(this.filterDefault(filter));\n }\n}\n","/**\n * Created by vadimdez on 28/11/2016.\n */\nimport { NgModule } from '@angular/core';\nimport { FilterPipe } from './ngx-filter.pipe';\n\n@NgModule({\n declarations: [FilterPipe],\n providers: [FilterPipe],\n exports: [FilterPipe]\n})\nexport class FilterPipeModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}