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
JavaScript
/**
* 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]);
});
}
}
}