devexpress-reporting
Version:
DevExpress Reporting provides the capability to develop a reporting application to create and customize reports.
63 lines (62 loc) • 2.97 kB
JavaScript
/**
* DevExpress HTML/JS Reporting (designer\dataObjects\parameters\parameterExpressionBinding.js)
* Version: 24.2.6
* Build date: Mar 18, 2025
* Copyright (c) 2012 - 2025 Developer Express Inc. ALL RIGHTS RESERVED
* License: https://www.devexpress.com/Support/EULAs/universal.xml
*/
import { ModelSerializer } from '@devexpress/analytics-core/analytics-utils';
import * as ko from 'knockout';
import { reportFunctionDisplay } from '../../widgets/customFunctions';
import { WrappedExpressionOptions } from '../expressions/_wrappedExpressionOptions';
import { parameterExpressionBindingSerializationsInfo } from '../metadata/parameters/parameterExpressionBinding';
export function createExpressionProperty(object, propertyName, suffix = 'ExpressionObj') {
if (!object.expressionBindings().filter(binding => binding.propertyName() === propertyName)[0]) {
const newExpression = new ParameterExpressionBinding({});
newExpression.propertyName(propertyName);
object.expressionBindings.push(newExpression);
}
const propertyExpression = object.expressionBindings().filter(binding => binding.propertyName() === propertyName)[0];
const expressionProperty = {
value: propertyExpression.expression,
customizeCategories: propertyName !== 'Value' ? () => { } : (tool, categories) => {
const fields = categories.filter(item => item.content.name == 'dx-expressioneditor-fields')[0];
if (fields)
categories.splice(categories.indexOf(fields), 1);
},
functions: reportFunctionDisplay.filter(cat => cat.category != 'Summary' && cat.category != 'Aggregate')
};
const wrappedExpressionOptions = new WrappedExpressionOptions(expressionProperty, {
addExpression: (value) => {
if (object.expressionBindings().indexOf(propertyExpression) === -1)
object.expressionBindings.push(propertyExpression);
propertyExpression.expression(value);
},
removeExpression: (expression) => {
object.expressionBindings.remove(propertyExpression);
wrappedExpressionOptions.isValid(true);
}
});
object._disposables.push(ko.computed(() => {
if (object.expressionBindings().indexOf(propertyExpression) !== -1) {
wrappedExpressionOptions.expression(propertyExpression);
}
else
wrappedExpressionOptions.expression(null);
}), wrappedExpressionOptions);
object[propertyName + suffix] = wrappedExpressionOptions;
return wrappedExpressionOptions;
}
export class ParameterExpressionBinding {
getInfo() {
return parameterExpressionBindingSerializationsInfo;
}
constructor(model, serializer) {
serializer = serializer || new ModelSerializer();
serializer.deserialize(this, model);
}
isEmpty() {
return !this.expression();
}
}
ParameterExpressionBinding.expressionSuff = 'ExpressionObj';