private setFilterPredicate()

in frontend/src/app/modules/migration-mapper/components/migration-mapper/migration-mapper.component.ts [393:440]


  private setFilterPredicate(): any {
    return this.dataSource.filterPredicate = (
      data: { is_configured: boolean, wave_id: number },
      filterValue: string
    ) => {
      let searchTerms = JSON.parse(filterValue);
      let isFilterSet = false;
      for (const col in searchTerms) {
        if (searchTerms[col].toString() !== '') {
          isFilterSet = true;
        } else {
          delete searchTerms[col];
        }
      }

      let search = () => {
        let found = false;
        let filterStatus = false;
        let filterForLabel = false;

        if (isFilterSet) {
          if (Object.keys(searchTerms).length > 1) {
            Object.keys(searchTerms).forEach((val: any) => {
              if (val === 'status') {
                filterStatus = this.filterForStatus(searchTerms[val].toLowerCase(), data);
              }

              if (val === 'label') {
                filterForLabel = this.filterForLabel(searchTerms[val], data);
              }
            });

            found = filterStatus && filterForLabel;
          } else {
            if (Object.keys(searchTerms)[0] === 'status') {
              found = this.filterForStatus(searchTerms.status.toLowerCase(), data);
            } else {
              found = this.filterForLabel(searchTerms.label, data);
            }
          }
          return found;
        } else {
          return true;
        }
      }
      return search();
    }
  }