UNPKG

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