devexpress-reporting
Version:
DevExpress Reporting provides the capability to develop a reporting application to create and customize reports.
54 lines (53 loc) • 2.39 kB
JavaScript
/**
* DevExpress HTML/JS Reporting (designer\internal\parameterLayout\_parametersLayoutItemsProvider.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 { DxDeferred, ObjectExplorerProvider } from '@devexpress/analytics-core/analytics-internal';
import * as ko from 'knockout';
import { ParameterPanelLayoutItem } from '../../dataObjects/parameters/layoutItems';
const arrayName = 'parameterPanelLayoutItems';
export class ParametersLayoutItemsProvider extends ObjectExplorerProvider {
constructor(report, member) {
super([{ model: report, name: 'Report' }], [arrayName], member, null);
this._noDragable = false;
this.getItems = (pathRequest) => {
const result = new DxDeferred();
if (!pathRequest.fullPath) {
const resultItems = [];
this.createArrayItem(report.parameterPanelLayoutItems(), resultItems, `Report.${arrayName}`);
result.resolve(resultItems);
}
else {
result.resolve(this.getObjectPropertiesForPath(report, pathRequest.fullPath, arrayName));
}
return result.promise();
};
this.getPathByMember = (model) => {
if (model instanceof ParameterPanelLayoutItem) {
return this.getPathByMember(model.parentModel()) + `.${arrayName}.` + model.parentModel().parameterPanelLayoutItems().indexOf(model);
}
else {
return 'Report';
}
};
this._noDragable = !report.parameterHelper._parameterEditingSettings.allowReorderParameters;
}
createArrayItem(currentTarget, result, propertyName) {
currentTarget.forEach((element, index) => {
element = ko.unwrap(element);
result.push({
name: propertyName ? propertyName + '.' + index.toString() : index.toString(),
displayName: ko.unwrap(element['name']),
specifics: element.className(),
isList: element[arrayName] && ko.unwrap(element[arrayName]).length > 0,
data: element,
dragData: {
noDragable: this._noDragable
}
});
});
}
}