summaryrefslogtreecommitdiffstats
path: root/vid-webpack-master/src/app/shared/pipes
diff options
context:
space:
mode:
Diffstat (limited to 'vid-webpack-master/src/app/shared/pipes')
-rw-r--r--vid-webpack-master/src/app/shared/pipes/searchFilter/search-filter.pipe.spec.ts2
-rw-r--r--vid-webpack-master/src/app/shared/pipes/searchFilter/search-filter.pipe.ts37
2 files changed, 34 insertions, 5 deletions
diff --git a/vid-webpack-master/src/app/shared/pipes/searchFilter/search-filter.pipe.spec.ts b/vid-webpack-master/src/app/shared/pipes/searchFilter/search-filter.pipe.spec.ts
index cbf7324ac..2567cbf27 100644
--- a/vid-webpack-master/src/app/shared/pipes/searchFilter/search-filter.pipe.spec.ts
+++ b/vid-webpack-master/src/app/shared/pipes/searchFilter/search-filter.pipe.spec.ts
@@ -5,7 +5,7 @@ describe('Search filter pipe', () => {
const items= [{'id':1, 'name': 'aaa'},
{'id':12, 'name': 'bbb', 'children':{'first': 155, 'second': 2, 'third': 3}},
- {'id':3, 'name': 'ccc', 'children':{'first': 1, 'BbB': '3', 'third': 3}},
+ {'id':3, 'name': 'ccc', 'children':{'first': 1, 'BbB': 'BbB', 'third': 3}},
{'id':4, 'name': 'aad', 'children':{'first': 1, 'second': 2, 'third': 3}}];
test('should return items contains substring bb', () => {
diff --git a/vid-webpack-master/src/app/shared/pipes/searchFilter/search-filter.pipe.ts b/vid-webpack-master/src/app/shared/pipes/searchFilter/search-filter.pipe.ts
index 725eacb53..6e5cfc667 100644
--- a/vid-webpack-master/src/app/shared/pipes/searchFilter/search-filter.pipe.ts
+++ b/vid-webpack-master/src/app/shared/pipes/searchFilter/search-filter.pipe.ts
@@ -1,14 +1,43 @@
import {Pipe, PipeTransform} from '@angular/core';
+import * as _ from 'lodash';
@Pipe({
name: 'searchFilter'
})
export class SearchFilterPipe implements PipeTransform {
transform(items: Object[], searchText: string): any[] {
- if(!items) return [];
- if(!searchText) return items;
- return items.filter( item => {
- return JSON.stringify(item).toLowerCase().includes(searchText.toLowerCase());
+ if (!items) return [];
+ if (!searchText) return items;
+ return items.filter((item: object) => {
+
+ const deepFlatObject = this.flatten(item);
+
+ const values = _.values(deepFlatObject).map((item: string) => {
+ return item.toString().toLowerCase()
+ });
+
+ return _.some(values, _.method('includes', searchText.toLowerCase()));
});
}
+
+ flatten = object => {
+ return Object.assign(
+ {},
+ ...(function _flatten(objectBit, path = '') {
+ //spread the result into our return object
+ if(objectBit === null) return [];
+ return [].concat(
+ //concat everything into one level
+
+ ...Object.keys(objectBit).map(
+ //iterate over object
+ key =>
+ typeof objectBit[key] === 'object' //check if there is a nested object
+ ? _flatten(objectBit[key], `${path}/${key}`) //call itself if there is
+ : { [`${path}/${key}`]: objectBit[key] } //append object with it’s path as key
+ )
+ );
+ })(object)
+ );
+ };
}