UNPKG

@adaptabletools/adaptable-cjs

Version:

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

101 lines (100 loc) 4.4 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.ExpressionApiImpl = void 0; const tslib_1 = require("tslib"); const ApiBase_1 = require("./ApiBase"); const parser = tslib_1.__importStar(require("../../parser/src")); const ExpressionInternalApi_1 = require("../Internal/ExpressionInternalApi"); class ExpressionApiImpl extends ApiBase_1.ApiBase { constructor(_adaptable) { super(_adaptable); this.internalApi = new ExpressionInternalApi_1.ExpressionInternalApi(_adaptable); } isValidBooleanExpression(query, module, validationErrorMessage) { const { isValid, errorMessage } = this.getAdaptableApi() .internalApi.getQueryLanguageService() .validateBoolean(query, module, { force: true }); if (!isValid && validationErrorMessage) { this.logWarn(`${validationErrorMessage} :: ${errorMessage}`); } return isValid; } isValidObservableExpression(expression, module, validationErrorMessage) { const { isValid, errorMessage } = this.getAdaptableApi() .internalApi.getQueryLanguageService() .validateObservable(expression, module); if (!isValid && validationErrorMessage) { this.logWarn(`${validationErrorMessage} :: ${errorMessage}`); } return isValid; } isValidAggregatedBooleanExpression(expression, module, validationErrorMessage) { const { isValid, errorMessage } = this.getAdaptableApi() .internalApi.getQueryLanguageService() .validateAggregatedBoolean(expression, module); if (!isValid && validationErrorMessage) { this.logWarn(`${validationErrorMessage} :: ${errorMessage}`); } return isValid; } isValidAggregatedScalarExpression(expression, module, validationErrorMessage) { const { isValid, errorMessage } = this.getAdaptableApi() .internalApi.getQueryLanguageService() .validateAggregatedScalar(expression, module); if (!isValid && validationErrorMessage) { this.logWarn(`${validationErrorMessage} :: ${errorMessage}`); } return isValid; } getASTForExpression(query) { return parser.getAbstractSyntaxTree(query); } getColumnsFromExpression(expression) { try { const columnIds = this.getAdaptableApi() .internalApi.getQueryLanguageService() .getColumnsFromExpression(expression); columnIds.forEach((columnId) => { const calculatedColumn = this.getCalculatedColumnApi().getCalculatedColumnForColumnId(columnId); if (calculatedColumn) { const transitiveColumnIds = this.getColumnsFromExpression(this.getAdaptableQueryExpression(calculatedColumn.Query)); columnIds.push(...transitiveColumnIds); } }); return Array.from(new Set(columnIds)); } catch (error) { // defensive programing, this should happen only if someone botched Initial Adaptable State this.logWarn(`QueryApi.getColumnsFromExpressionInvalid received an invalid expression: ${expression} Error: ${error}`); return []; } } isColumnQueryable(abColumn) { let queryableColumnFn = this.getExpressionOptions().isColumnQueryable; if (queryableColumnFn) { const queryableColumnContext = { column: abColumn, ...this.getAdaptableInternalApi().buildBaseContext(), }; return queryableColumnFn(queryableColumnContext); } return true; } getAdaptableQueryExpression(query) { return (query.BooleanExpression ?? query.ScalarExpression ?? query.ObservableExpression ?? query.AggregatedBooleanExpression ?? query.AggregatedScalarExpression); } getAdaptableQueryExpressionWithColumnFriendlyNames(query) { return this.getAdaptableApi() .internalApi.getQueryLanguageService() .getExpressionWithColumnFriendlyNames(this.getAdaptableQueryExpression(query)); } useCaseSensitivity() { return this.getExpressionOptions().caseSensitiveExpressions; } } exports.ExpressionApiImpl = ExpressionApiImpl;