Advertisement
Ahlushko

Untitled

Jun 10th, 2020
1,186
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. import { Pipe, PipeTransform } from '@angular/core';
  2.  
  3. @Pipe({
  4.     name: 'search'
  5. })
  6. export class SearchPipe implements PipeTransform {
  7.     private c = 0;
  8.     transform(given: any, s?:any, f?:any, l?:any, i?:any, reload?:any): any {
  9.         if(!s){
  10.             return given;
  11.         }
  12.         if(typeof f == 'number'){
  13.             l = f;
  14.             f = null;
  15.         }
  16.         if(i || !s){
  17.             if(l && Array.isArray(given)) return given.slice(0, l);
  18.             else return given||[];
  19.         }
  20.         let _arr = [], _check = {};
  21.         if(!Array.isArray(s)&&typeof s == 'object'){
  22.             let _s = [];
  23.             for(let key in s){
  24.                 if(s[key]) _s.push(key);
  25.             }
  26.             s = _s;
  27.         }
  28.         if(typeof s == 'string'){
  29.             s = [s];
  30.         }
  31.         if(!f) f = ['name'];
  32.         if(typeof f == 'string') f = f.split(' ');
  33.         let sub_test = function(obj, _f, initObj, check){
  34.             if(!obj) return;
  35.             if(_f.indexOf('.')>-1){
  36.                 let sub = _f.split('.');
  37.                 let nsub = sub.shift();
  38.                 if(Array.isArray(obj[nsub])){
  39.                     for(let s = 0; s < obj[nsub].length; s++){
  40.                         sub_test(obj[nsub][s], sub.join('.'), initObj, check);
  41.                     }
  42.                     return;
  43.                 }else{
  44.                     return sub_test(obj[nsub], sub.join('.'), initObj, check);
  45.                 }
  46.             }
  47.             for (let j = 0; j < s.length; j++) {
  48.                 let b = false;
  49.                 if((typeof obj[_f] == 'string' || typeof obj[_f] == 'number') && typeof s[j] == 'string' &&
  50.                     (obj[_f].toString().toLowerCase().indexOf(s[j].toLowerCase())>-1 ||
  51.                      s[j].toLowerCase().indexOf(obj[_f].toString().toLowerCase())>-1)){
  52.                     if(!_check[check]) _arr.push(initObj);
  53.                     _check[check] = true;
  54.                     b = true;
  55.                     break;
  56.                 }
  57.                 if(b) break;
  58.             }
  59.         }
  60.         let test = function(obj, check) {
  61.             for (let i = 0; i < f.length; i++) {
  62.                 sub_test(obj, f[i], obj, check);
  63.             }
  64.         }
  65.         if (Array.isArray(given)) {
  66.             for (let i = 0; i < given.length; i++) {
  67.                 test(given[i], i);
  68.             }
  69.         } else if (typeof given == 'object') {
  70.             for (let key in given) {
  71.                 test(given[key], key);
  72.             }
  73.         }
  74.         if(l) return _arr.splice(0, l);
  75.         return _arr;
  76.     }
  77. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement