protected get filter()

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