UNPKG

@catull/igniteui-angular

Version:

Ignite UI for Angular is a dependency-free Angular toolkit for building modern web apps

79 lines 11.8 kB
import { FilteringLogic } from './filtering-expression.interface'; import { FilteringExpressionsTree } from './filtering-expressions-tree'; export class NoopFilteringStrategy { constructor() { } static instance() { return this._instance || (this._instance = new NoopFilteringStrategy()); } filter(data, expressionsTree, advancedExpressionsTree) { return data; } } NoopFilteringStrategy._instance = null; export class BaseFilteringStrategy { findMatchByExpression(rec, expr) { const cond = expr.condition; const val = this.getFieldValue(rec, expr.fieldName); return cond.logic(val, expr.searchVal, expr.ignoreCase); } matchRecord(rec, expressions) { if (expressions) { if (expressions instanceof FilteringExpressionsTree) { const expressionsTree = expressions; const operator = expressionsTree.operator; let matchOperand, operand; if (expressionsTree.filteringOperands && expressionsTree.filteringOperands.length) { for (let i = 0; i < expressionsTree.filteringOperands.length; i++) { operand = expressionsTree.filteringOperands[i]; matchOperand = this.matchRecord(rec, operand); // Return false if at least one operand does not match and the filtering logic is And if (!matchOperand && operator === FilteringLogic.And) { return false; } // Return true if at least one operand matches and the filtering logic is Or if (matchOperand && operator === FilteringLogic.Or) { return true; } } return matchOperand; } return true; } else { const expression = expressions; return this.findMatchByExpression(rec, expression); } } return true; } } export class FilteringStrategy extends BaseFilteringStrategy { constructor() { super(); } static instance() { return this._instace || (this._instace = new this()); } filter(data, expressionsTree, advancedExpressionsTree) { let i; let rec; const len = data.length; const res = []; if ((FilteringExpressionsTree.empty(expressionsTree) && FilteringExpressionsTree.empty(advancedExpressionsTree)) || !len) { return data; } for (i = 0; i < len; i++) { rec = data[i]; if (this.matchRecord(rec, expressionsTree) && this.matchRecord(rec, advancedExpressionsTree)) { res.push(rec); } } return res; } getFieldValue(rec, fieldName) { return rec[fieldName]; } } FilteringStrategy._instace = null; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsdGVyaW5nLXN0cmF0ZWd5LmpzIiwic291cmNlUm9vdCI6Im5nOi8vaWduaXRldWktYW5ndWxhci8iLCJzb3VyY2VzIjpbImxpYi9kYXRhLW9wZXJhdGlvbnMvZmlsdGVyaW5nLXN0cmF0ZWd5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxjQUFjLEVBQXdCLE1BQU0sa0NBQWtDLENBQUM7QUFDeEYsT0FBTyxFQUFFLHdCQUF3QixFQUE2QixNQUFNLDhCQUE4QixDQUFDO0FBTW5HLE1BQU0sT0FBTyxxQkFBcUI7SUFHOUI7SUFBeUIsQ0FBQztJQUVuQixNQUFNLENBQUMsUUFBUTtRQUNsQixPQUFPLElBQUksQ0FBQyxTQUFTLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUkscUJBQXFCLEVBQUUsQ0FBQyxDQUFDO0lBQzVFLENBQUM7SUFFTSxNQUFNLENBQUMsSUFBVyxFQUFFLGVBQTBDLEVBQUUsdUJBQW1EO1FBQ3RILE9BQU8sSUFBSSxDQUFDO0lBQ2hCLENBQUM7O0FBVmMsK0JBQVMsR0FBMEIsSUFBSSxDQUFDO0FBYTNELE1BQU0sT0FBZ0IscUJBQXFCO0lBTWhDLHFCQUFxQixDQUFDLEdBQVcsRUFBRSxJQUEwQjtRQUNoRSxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDO1FBQzVCLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUNwRCxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQzVELENBQUM7SUFFTSxXQUFXLENBQUMsR0FBVyxFQUFFLFdBQTZEO1FBQ3pGLElBQUksV0FBVyxFQUFFO1lBQ2IsSUFBSSxXQUFXLFlBQVksd0JBQXdCLEVBQUU7Z0JBQ2pELE1BQU0sZUFBZSxHQUFHLFdBQXdDLENBQUM7Z0JBQ2pFLE1BQU0sUUFBUSxHQUFHLGVBQWUsQ0FBQyxRQUEwQixDQUFDO2dCQUM1RCxJQUFJLFlBQVksRUFBRSxPQUFPLENBQUM7Z0JBRTFCLElBQUksZUFBZSxDQUFDLGlCQUFpQixJQUFJLGVBQWUsQ0FBQyxpQkFBaUIsQ0FBQyxNQUFNLEVBQUU7b0JBQy9FLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxlQUFlLENBQUMsaUJBQWlCLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFO3dCQUMvRCxPQUFPLEdBQUcsZUFBZSxDQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxDQUFDO3dCQUMvQyxZQUFZLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLEVBQUUsT0FBTyxDQUFDLENBQUM7d0JBRTlDLHFGQUFxRjt3QkFDckYsSUFBSSxDQUFDLFlBQVksSUFBSSxRQUFRLEtBQUssY0FBYyxDQUFDLEdBQUcsRUFBRTs0QkFDbEQsT0FBTyxLQUFLLENBQUM7eUJBQ2hCO3dCQUVELDRFQUE0RTt3QkFDNUUsSUFBSSxZQUFZLElBQUksUUFBUSxLQUFLLGNBQWMsQ0FBQyxFQUFFLEVBQUU7NEJBQ2hELE9BQU8sSUFBSSxDQUFDO3lCQUNmO3FCQUNKO29CQUVELE9BQU8sWUFBWSxDQUFDO2lCQUN2QjtnQkFFRCxPQUFPLElBQUksQ0FBQzthQUNmO2lCQUFNO2dCQUNILE1BQU0sVUFBVSxHQUFHLFdBQW1DLENBQUM7Z0JBQ3ZELE9BQU8sSUFBSSxDQUFDLHFCQUFxQixDQUFDLEdBQUcsRUFBRSxVQUFVLENBQUMsQ0FBQzthQUN0RDtTQUNKO1FBRUQsT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQztDQUNKO0FBRUQsTUFBTSxPQUFPLGlCQUFrQixTQUFRLHFCQUFxQjtJQUd4RDtRQUF1QixLQUFLLEVBQUUsQ0FBQztJQUFDLENBQUM7SUFFMUIsTUFBTSxDQUFDLFFBQVE7UUFDbEIsT0FBTyxJQUFJLENBQUMsUUFBUSxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLElBQUksRUFBRSxDQUFDLENBQUM7SUFDekQsQ0FBQztJQUVNLE1BQU0sQ0FBSSxJQUFTLEVBQUUsZUFBMEMsRUFBRSx1QkFBbUQ7UUFDdkgsSUFBSSxDQUFDLENBQUM7UUFDTixJQUFJLEdBQUcsQ0FBQztRQUNSLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUM7UUFDeEIsTUFBTSxHQUFHLEdBQVEsRUFBRSxDQUFDO1FBQ3BCLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxLQUFLLENBQUMsZUFBZSxDQUFDLElBQUksd0JBQXdCLENBQUMsS0FBSyxDQUFDLHVCQUF1QixDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRTtZQUN0SCxPQUFPLElBQUksQ0FBQztTQUNmO1FBQ0QsS0FBSyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxHQUFHLEVBQUUsQ0FBQyxFQUFFLEVBQUU7WUFDdEIsR0FBRyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNkLElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLEVBQUUsZUFBZSxDQUFDLElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLEVBQUUsdUJBQXVCLENBQUMsRUFBRTtnQkFDMUYsR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQzthQUNqQjtTQUNKO1FBQ0QsT0FBTyxHQUFHLENBQUM7SUFDZixDQUFDO0lBRVMsYUFBYSxDQUFDLEdBQVcsRUFBRSxTQUFpQjtRQUNsRCxPQUFPLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUMxQixDQUFDOztBQTNCYywwQkFBUSxHQUFzQixJQUFJLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBGaWx0ZXJpbmdMb2dpYywgSUZpbHRlcmluZ0V4cHJlc3Npb24gfSBmcm9tICcuL2ZpbHRlcmluZy1leHByZXNzaW9uLmludGVyZmFjZSc7XG5pbXBvcnQgeyBGaWx0ZXJpbmdFeHByZXNzaW9uc1RyZWUsIElGaWx0ZXJpbmdFeHByZXNzaW9uc1RyZWUgfSBmcm9tICcuL2ZpbHRlcmluZy1leHByZXNzaW9ucy10cmVlJztcblxuZXhwb3J0IGludGVyZmFjZSBJRmlsdGVyaW5nU3RyYXRlZ3kge1xuICAgIGZpbHRlcihkYXRhOiBhbnlbXSwgZXhwcmVzc2lvbnNUcmVlOiBJRmlsdGVyaW5nRXhwcmVzc2lvbnNUcmVlLCBhZHZhbmNlZEV4cHJlc3Npb25zVHJlZT86IElGaWx0ZXJpbmdFeHByZXNzaW9uc1RyZWUpOiBhbnlbXTtcbn1cblxuZXhwb3J0IGNsYXNzIE5vb3BGaWx0ZXJpbmdTdHJhdGVneSBpbXBsZW1lbnRzIElGaWx0ZXJpbmdTdHJhdGVneSB7XG4gICAgcHJpdmF0ZSBzdGF0aWMgX2luc3RhbmNlOiBOb29wRmlsdGVyaW5nU3RyYXRlZ3kgPSBudWxsO1xuXG4gICAgcHJpdmF0ZSBjb25zdHJ1Y3RvcigpIHsgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgaW5zdGFuY2UoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9pbnN0YW5jZSB8fCAodGhpcy5faW5zdGFuY2UgPSBuZXcgTm9vcEZpbHRlcmluZ1N0cmF0ZWd5KCkpO1xuICAgIH1cblxuICAgIHB1YmxpYyBmaWx0ZXIoZGF0YTogYW55W10sIGV4cHJlc3Npb25zVHJlZTogSUZpbHRlcmluZ0V4cHJlc3Npb25zVHJlZSwgYWR2YW5jZWRFeHByZXNzaW9uc1RyZWU/OiBJRmlsdGVyaW5nRXhwcmVzc2lvbnNUcmVlKTogYW55W10ge1xuICAgICAgICByZXR1cm4gZGF0YTtcbiAgICB9XG59XG5cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBCYXNlRmlsdGVyaW5nU3RyYXRlZ3kgaW1wbGVtZW50cyBJRmlsdGVyaW5nU3RyYXRlZ3kgIHtcbiAgICBwdWJsaWMgYWJzdHJhY3QgZmlsdGVyKGRhdGE6IGFueVtdLCBleHByZXNzaW9uc1RyZWU6IElGaWx0ZXJpbmdFeHByZXNzaW9uc1RyZWUsXG4gICAgICAgIGFkdmFuY2VkRXhwcmVzc2lvbnNUcmVlPzogSUZpbHRlcmluZ0V4cHJlc3Npb25zVHJlZSk6IGFueVtdO1xuXG4gICAgcHJvdGVjdGVkIGFic3RyYWN0IGdldEZpZWxkVmFsdWUocmVjOiBvYmplY3QsIGZpZWxkTmFtZTogc3RyaW5nKTogYW55O1xuXG4gICAgcHVibGljIGZpbmRNYXRjaEJ5RXhwcmVzc2lvbihyZWM6IG9iamVjdCwgZXhwcjogSUZpbHRlcmluZ0V4cHJlc3Npb24pOiBib29sZWFuIHtcbiAgICAgICAgY29uc3QgY29uZCA9IGV4cHIuY29uZGl0aW9uO1xuICAgICAgICBjb25zdCB2YWwgPSB0aGlzLmdldEZpZWxkVmFsdWUocmVjLCBleHByLmZpZWxkTmFtZSk7XG4gICAgICAgIHJldHVybiBjb25kLmxvZ2ljKHZhbCwgZXhwci5zZWFyY2hWYWwsIGV4cHIuaWdub3JlQ2FzZSk7XG4gICAgfVxuXG4gICAgcHVibGljIG1hdGNoUmVjb3JkKHJlYzogb2JqZWN0LCBleHByZXNzaW9uczogSUZpbHRlcmluZ0V4cHJlc3Npb25zVHJlZSB8IElGaWx0ZXJpbmdFeHByZXNzaW9uKTogYm9vbGVhbiB7XG4gICAgICAgIGlmIChleHByZXNzaW9ucykge1xuICAgICAgICAgICAgaWYgKGV4cHJlc3Npb25zIGluc3RhbmNlb2YgRmlsdGVyaW5nRXhwcmVzc2lvbnNUcmVlKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgZXhwcmVzc2lvbnNUcmVlID0gZXhwcmVzc2lvbnMgYXMgSUZpbHRlcmluZ0V4cHJlc3Npb25zVHJlZTtcbiAgICAgICAgICAgICAgICBjb25zdCBvcGVyYXRvciA9IGV4cHJlc3Npb25zVHJlZS5vcGVyYXRvciBhcyBGaWx0ZXJpbmdMb2dpYztcbiAgICAgICAgICAgICAgICBsZXQgbWF0Y2hPcGVyYW5kLCBvcGVyYW5kO1xuXG4gICAgICAgICAgICAgICAgaWYgKGV4cHJlc3Npb25zVHJlZS5maWx0ZXJpbmdPcGVyYW5kcyAmJiBleHByZXNzaW9uc1RyZWUuZmlsdGVyaW5nT3BlcmFuZHMubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZXhwcmVzc2lvbnNUcmVlLmZpbHRlcmluZ09wZXJhbmRzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBvcGVyYW5kID0gZXhwcmVzc2lvbnNUcmVlLmZpbHRlcmluZ09wZXJhbmRzW2ldO1xuICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2hPcGVyYW5kID0gdGhpcy5tYXRjaFJlY29yZChyZWMsIG9wZXJhbmQpO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBSZXR1cm4gZmFsc2UgaWYgYXQgbGVhc3Qgb25lIG9wZXJhbmQgZG9lcyBub3QgbWF0Y2ggYW5kIHRoZSBmaWx0ZXJpbmcgbG9naWMgaXMgQW5kXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIW1hdGNoT3BlcmFuZCAmJiBvcGVyYXRvciA9PT0gRmlsdGVyaW5nTG9naWMuQW5kKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBSZXR1cm4gdHJ1ZSBpZiBhdCBsZWFzdCBvbmUgb3BlcmFuZCBtYXRjaGVzIGFuZCB0aGUgZmlsdGVyaW5nIGxvZ2ljIGlzIE9yXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAobWF0Y2hPcGVyYW5kICYmIG9wZXJhdG9yID09PSBGaWx0ZXJpbmdMb2dpYy5Pcikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG1hdGNoT3BlcmFuZDtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgY29uc3QgZXhwcmVzc2lvbiA9IGV4cHJlc3Npb25zIGFzIElGaWx0ZXJpbmdFeHByZXNzaW9uO1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmZpbmRNYXRjaEJ5RXhwcmVzc2lvbihyZWMsIGV4cHJlc3Npb24pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgRmlsdGVyaW5nU3RyYXRlZ3kgZXh0ZW5kcyBCYXNlRmlsdGVyaW5nU3RyYXRlZ3kge1xuICAgIHByaXZhdGUgc3RhdGljIF9pbnN0YWNlOiBGaWx0ZXJpbmdTdHJhdGVneSA9IG51bGw7XG5cbiAgICBwdWJsaWMgY29uc3RydWN0b3IoKSB7IHN1cGVyKCk7IH1cblxuICAgIHB1YmxpYyBzdGF0aWMgaW5zdGFuY2UoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9pbnN0YWNlIHx8ICh0aGlzLl9pbnN0YWNlID0gbmV3IHRoaXMoKSk7XG4gICAgfVxuXG4gICAgcHVibGljIGZpbHRlcjxUPihkYXRhOiBUW10sIGV4cHJlc3Npb25zVHJlZTogSUZpbHRlcmluZ0V4cHJlc3Npb25zVHJlZSwgYWR2YW5jZWRFeHByZXNzaW9uc1RyZWU/OiBJRmlsdGVyaW5nRXhwcmVzc2lvbnNUcmVlKTogVFtdIHtcbiAgICAgICAgbGV0IGk7XG4gICAgICAgIGxldCByZWM7XG4gICAgICAgIGNvbnN0IGxlbiA9IGRhdGEubGVuZ3RoO1xuICAgICAgICBjb25zdCByZXM6IFRbXSA9IFtdO1xuICAgICAgICBpZiAoKEZpbHRlcmluZ0V4cHJlc3Npb25zVHJlZS5lbXB0eShleHByZXNzaW9uc1RyZWUpICYmIEZpbHRlcmluZ0V4cHJlc3Npb25zVHJlZS5lbXB0eShhZHZhbmNlZEV4cHJlc3Npb25zVHJlZSkpIHx8ICFsZW4pIHtcbiAgICAgICAgICAgIHJldHVybiBkYXRhO1xuICAgICAgICB9XG4gICAgICAgIGZvciAoaSA9IDA7IGkgPCBsZW47IGkrKykge1xuICAgICAgICAgICAgcmVjID0gZGF0YVtpXTtcbiAgICAgICAgICAgIGlmICh0aGlzLm1hdGNoUmVjb3JkKHJlYywgZXhwcmVzc2lvbnNUcmVlKSAmJiB0aGlzLm1hdGNoUmVjb3JkKHJlYywgYWR2YW5jZWRFeHByZXNzaW9uc1RyZWUpKSB7XG4gICAgICAgICAgICAgICAgcmVzLnB1c2gocmVjKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmVzO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBnZXRGaWVsZFZhbHVlKHJlYzogb2JqZWN0LCBmaWVsZE5hbWU6IHN0cmluZyk6IGFueSB7XG4gICAgICAgIHJldHVybiByZWNbZmllbGROYW1lXTtcbiAgICB9XG59XG4iXX0=