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();
}
}