devexpress-reporting
Version:
DevExpress Reporting provides the capability to develop a reporting application to create and customize reports.
116 lines (115 loc) • 5.54 kB
JavaScript
/**
* DevExpress HTML/JS Reporting (designer\dataObjects\parameters\lookupSettings.js)
* Version: 26.1.3
* Build date: Jun 16, 2026
* Copyright (c) 2012 - 2026 Developer Express Inc. ALL RIGHTS RESERVED
* License: https://www.devexpress.com/Support/EULAs/universal.xml
*/
import { DxDeferred, extend, getFullPath } from '@devexpress/analytics-core/analytics-internal';
import { deserializeArray } from '@devexpress/analytics-core/analytics-utils';
import { FilterStringOptions } from '@devexpress/analytics-core/analytics-widgets';
import * as ko from 'knockout';
import { filterString, filterStringEditable } from '../../controls/metadata/properties/metadata';
import { dynamicListLookUpSettingsInfoBase, editedStaticListLookUpSettingsInfo, readonlyStaticListLookUpSettingsInfo } from '../metadata/parameters/lookUpSettings';
import { collectAvailableParameters } from '../metadata/_parameterUtils';
import { ObjectItem } from '../objectStorageItem';
import { LookUpValue } from './lookUpValue';
import { GroupLayoutItem, ParameterLayoutItem } from './layoutItems';
export class LookUpSettings extends ObjectItem {
_getFlatParametersOrderedList(layoutItems) {
let parameters = [];
layoutItems.forEach(layoutItem => {
if (layoutItem instanceof ParameterLayoutItem)
parameters.push(layoutItem.parameter());
else if (layoutItem instanceof GroupLayoutItem) {
const paramsInGroup = this._getFlatParametersOrderedList(layoutItem.parameterPanelLayoutItems());
if (paramsInGroup.length > 0)
parameters = [...parameters, ...paramsInGroup];
}
});
return parameters;
}
getInfo() {
return super.getInfo().concat([filterString, filterStringEditable]);
}
updateFilter(parameter, report) {
this.filterString.helper.parameters = ko.pureComputed({
read: () => {
const orderedParameters = this._getFlatParametersOrderedList(report.parameterPanelLayoutItems());
const currentIndex = orderedParameters.indexOf(parameter);
const filteredParameters = currentIndex == -1 ? orderedParameters : (currentIndex > 0 ? orderedParameters.slice(0, currentIndex) : []);
return collectAvailableParameters(filteredParameters);
},
deferEvaluation: true
});
this._disposables.push(this.filterString.helper.parameters);
}
constructor(model, dsHelperProvider, serializer) {
super(model, dsHelperProvider, serializer);
}
}
export class StaticListLookUpSettings extends LookUpSettings {
getInfo() {
return super.getInfo().concat(this._isEditing() ? editedStaticListLookUpSettingsInfo : readonlyStaticListLookUpSettingsInfo);
}
preInitProperties(model, helper, serializer) {
super.preInitProperties(model, helper, serializer);
this._isEditing = ko.observable(false);
}
afterDeserialization(model, serializer) {
this.lookUpValues = deserializeArray(model.LookUpValues || [], (item) => { return new LookUpValue(item, serializer); });
super.afterDeserialization(model, serializer);
}
updateFilter(parameter, report) {
this.filterString.itemsProvider({
getItems(pathRequest) {
const result = new DxDeferred();
result.resolve([
{
displayName: 'Description',
isList: false,
name: 'Description',
specifics: 'String'
},
{
displayName: 'Value',
isList: false,
name: 'Value',
specifics: parameter.specifics
}
]);
return result.promise();
}
});
super.updateFilter(parameter, report);
}
constructor(model, dsHelperProvider, serializer) {
super(extend({ '@ObjectType': 'DevExpress.XtraReports.Parameters.StaticListLookUpSettings' }, model), dsHelperProvider, serializer);
this.filterString = new FilterStringOptions(this._filterString);
this.filterString.helper.canChoiceParameters = true;
this.filterString.itemsProvider = ko.observable(null);
}
}
export class DynamicListLookUpSettings extends LookUpSettings {
getInfo() {
return super.getInfo().concat(dynamicListLookUpSettingsInfoBase);
}
constructor(model, dsHelperProvider, serializer) {
super(extend({ '@ObjectType': 'DevExpress.XtraReports.Parameters.DynamicListLookUpSettings' }, model), dsHelperProvider, serializer);
this.dsHelperProvider = dsHelperProvider;
this.filterString = new FilterStringOptions(this._filterString, ko.pureComputed(() => { return this.getPath('valueMember'); }), ko.pureComputed(() => !this.dataSource()));
}
getPath(propertyName) {
if (propertyName === 'dataMember') {
return this.dsHelperProvider() && this.dsHelperProvider().getDataSourcePath(this.dataSource());
}
else if (propertyName === 'displayMember' || propertyName === 'valueMember' || propertyName === 'sortMember') {
return getFullPath(this.getPath('dataMember'), this.dataMember());
}
return '';
}
isPropertyDisabled(name) {
if (name != 'dataSource')
return this.dataSource() === null;
}
}