UNPKG

devexpress-reporting

Version:

DevExpress Reporting provides the capability to develop a reporting application to create and customize reports.

64 lines (63 loc) 2.66 kB
/** * DevExpress HTML/JS Reporting (designer\controls\properties\controlParameter.js) * Version: 25.1.3 * Build date: Jun 26, 2025 * Copyright (c) 2012 - 2025 Developer Express Inc. ALL RIGHTS RESERVED * License: https://www.devexpress.com/Support/EULAs/universal.xml */ import { PathRequest } from '@devexpress/analytics-core/analytics-utils'; import * as ko from 'knockout'; import { DataBindingBase } from '../../dataObjects/dataBinding'; import { controlParameterInfos } from '../metadata/properties/controlParameter'; export class ControlParameter extends DataBindingBase { static createNew() { return new ControlParameter({}, null); } getInfo() { return controlParameterInfos; } isEmpty() { return false; } constructor(model, serializer, _dataSourceHelper, _dataBindingsProvider) { super(model, serializer); this._dataSourceHelper = _dataSourceHelper; this._dataBindingsProvider = _dataBindingsProvider; this.visible = ko.observable(true); this.dataMemberInfo = ko.observable(); this.fakeBinding = this; } setDataMemberInfo(dataMemberInfo) { this.dataMemberInfo(dataMemberInfo); } get dataType() { return this.dataMemberInfo()?.dataType; } get specifics() { if (this.parameter()) return this.parameter().specifics; return this.dataMemberInfo()?.specifics; } get name() { return this.parameterName(); } generateValue(undoEngine, dataSourceHelper, dataSources, dataBindingsProvider) { const value = super.generateValue(undoEngine, dataSourceHelper, dataSources); this.initDataMemberInfo(dataSourceHelper, dataBindingsProvider); return value; } initDataMemberInfo(dataSourceHelper, dataBindingsProvider) { dataSourceHelper = dataSourceHelper || this._dataSourceHelper(); dataBindingsProvider = dataBindingsProvider || this._dataBindingsProvider(); if (dataSourceHelper && dataBindingsProvider && this.dataSource() && !this.dataMemberInfo()) { const dataSourcePath = dataSourceHelper.getDataSourcePath(this.dataSource()); const dataMemberParts = (this.dataMember() || '').split('.'); const valueMember = dataMemberParts.pop(); const dataMember = dataMemberParts.join('.'); const request = new PathRequest(dataSourcePath + (dataMember ? '.' + dataMember : '')); dataBindingsProvider.getItems(request).done(result => { this.dataMemberInfo(result.filter(x => x.name === valueMember)[0]); }); } } }