UNPKG

@adaptabletools/adaptable-cjs

Version:

Powerful data-agnostic HTML5 AG Grid extension which provides advanced, cutting-edge functionality to meet all DataGrid requirements

131 lines (130 loc) 5.71 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.mapColumnFilterToQlPredicate = exports.isPredicateEmpty = exports.qlPredicateToString = exports.mapQlPredicateToAdaptablePredicate = exports.mapAdaptablePredicateToQlPredicate = exports.mapAdaptablePredicateDefToQlPredicateDef = void 0; const tslib_1 = require("tslib"); const react_1 = tslib_1.__importDefault(require("react")); const Icon_1 = require("../../../components/Icon"); const AdaptableIconComponent_1 = require("../AdaptableIconComponent"); const mapAdaptablePredicateDefToQlPredicateDef = (adaptablePredicateDef, // used to determine values type dataType) => { let icon = null; if ((0, Icon_1.isAdaptableIcon)(adaptablePredicateDef.icon)) { icon = react_1.default.createElement(AdaptableIconComponent_1.AdaptableIconComponent, { icon: adaptablePredicateDef.icon }); } else if (adaptablePredicateDef.icon && 'text' in adaptablePredicateDef.icon) { icon = react_1.default.createElement('div', { children: adaptablePredicateDef.icon.text }); } const inputs = (adaptablePredicateDef?.inputs ?? [])?.map((input) => { return input.type; }); if ((adaptablePredicateDef.id === 'In' || adaptablePredicateDef.id === 'NotIn') && ['text', 'number', 'date'].includes(dataType)) { // add array type inputs.push(`${dataType}[]`); } const qlPredicateDef = { operator: adaptablePredicateDef.id, label: adaptablePredicateDef.label ?? adaptablePredicateDef.id, icon, inputs, toString: (params) => adaptablePredicateDef.label, }; if (adaptablePredicateDef.hasOwnProperty('toString')) { qlPredicateDef.toString = adaptablePredicateDef.toString; } return qlPredicateDef; }; exports.mapAdaptablePredicateDefToQlPredicateDef = mapAdaptablePredicateDefToQlPredicateDef; const mapAdaptablePredicateToQlPredicate = (adaptablePredicate) => { return { operator: adaptablePredicate.PredicateId, // make sure all predicates are in qal args: adaptablePredicate.Inputs, }; }; exports.mapAdaptablePredicateToQlPredicate = mapAdaptablePredicateToQlPredicate; const mapQlPredicateToAdaptablePredicate = (qlPredicate) => { return { PredicateId: qlPredicate.operator, Inputs: qlPredicate.args, }; }; exports.mapQlPredicateToAdaptablePredicate = mapQlPredicateToAdaptablePredicate; const qlPredicateToString = (qlPredicate, predicateDefs) => { if (typeof qlPredicate === 'object' && 'operator' in qlPredicate && (qlPredicate.operator === 'AND' || qlPredicate.operator === 'OR')) { // save to join args because there is no extra nesting return qlPredicate.args .filter((str) => str) .map((arg) => (0, exports.qlPredicateToString)(arg, predicateDefs)) .join(` ${qlPredicate.operator} `); } const predicateDef = predicateDefs.find((predicateDef) => predicateDef.operator === qlPredicate.operator); if (!predicateDef) { return qlPredicate.operator; } if (!predicateDef) { return qlPredicate.operator; } if (!predicateDef.hasOwnProperty('toString')) { return predicateDef.label; } const str = predicateDef.toString({ inputs: (qlPredicate.args || []).filter((arg) => arg != undefined), }); return str; }; exports.qlPredicateToString = qlPredicateToString; const isPredicateEmpty = (predicate, predicateDef) => { if (!predicateDef?.inputs || predicateDef.inputs.length === 0) { return false; } return (!predicate || !predicate.args || predicate.args.length === 0 || predicate.args.every((arg) => arg == undefined)); }; exports.isPredicateEmpty = isPredicateEmpty; const mapColumnFilterToQlPredicate = (columnFilter, abColumn, qlPredicateDefs, columnFilterOptions) => { const combinator = columnFilter?.PredicatesOperator ?? 'AND'; const qlPredicate = { operator: combinator, args: (columnFilter?.Predicates ?? []).map?.(exports.mapAdaptablePredicateToQlPredicate), }; if (qlPredicate.args.length === 0) { // used when none is defined let defaultQlPredicate = null; switch (abColumn.dataType) { case 'number': defaultQlPredicate = columnFilterOptions.defaultNumericColumnFilter ? { operator: columnFilterOptions.defaultNumericColumnFilter, args: [] } : { operator: 'Equals', args: [] }; break; case 'text': defaultQlPredicate = columnFilterOptions.defaultTextColumnFilter ? { operator: columnFilterOptions.defaultTextColumnFilter, args: [] } : { operator: 'Contains', args: [] }; break; case 'date': defaultQlPredicate = columnFilterOptions.defaultDateColumnFilter ? { operator: columnFilterOptions.defaultDateColumnFilter, args: [] } : { operator: 'On', args: [] }; break; case 'boolean': defaultQlPredicate = { operator: 'BooleanToggle', args: [] }; break; } if (defaultQlPredicate === null) { // take the firstavailable one if (qlPredicateDefs.length > 0) { defaultQlPredicate = { operator: qlPredicateDefs[0].operator, args: [] }; } } if (defaultQlPredicate) { qlPredicate.args = [defaultQlPredicate]; } } return qlPredicate; }; exports.mapColumnFilterToQlPredicate = mapColumnFilterToQlPredicate;