in src/panel/resultTableStore.ts [53:76]
protected get filter() {
const {keywords, filtersRow} = this.filtersSource;
const {columns} = this;
const mapToList = (record: Record<string, Visibility>) => Object.entries(record)
.filter(([, value]) => value)
.map(([label,]) => label.toLowerCase());
const levels = mapToList(filtersRow.Level);
const baselines = mapToList(filtersRow.Baseline);
const suppressions = mapToList(filtersRow.Suppression);
const filterKeywords = keywords.toLowerCase().split(/\s+/).filter(part => part);
return (result: Result) => {
if (!levels.includes(result.level ?? '')) return false;
if (!baselines.includes(result.baselineState ?? '')) return false;
if (!suppressions.includes(result._suppression ?? '')) return false;
return columns.some(col => {
const isMatch = (field: string, keywords: string[]) => !keywords.length || keywords.some(keyword => field.includes(keyword));
const {toString} = col;
const field = toString(result).toLowerCase();
return isMatch(field, filterKeywords);
});
};
}