UNPKG

devexpress-reporting

Version:

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

126 lines (125 loc) 5.28 kB
/** * DevExpress HTML/JS Reporting (designer\dataObjects\parameters\layoutItems.js) * Version: 24.2.6 * Build date: Mar 18, 2025 * Copyright (c) 2012 - 2025 Developer Express Inc. ALL RIGHTS RESERVED * License: https://www.devexpress.com/Support/EULAs/universal.xml */ import { ElementViewModel } from '@devexpress/analytics-core/analytics-elements'; import { deserializeArray } from '@devexpress/analytics-core/analytics-utils'; import * as ko from 'knockout'; import { controlsFactory } from '../../utils/settings'; import { groupLayoutItemInfo, parameterLayoutItemInfo, separatorLayoutItemInfo } from '../metadata/parameters/layoutItems'; import { DefaultLocalizationProvider } from '../../controls/utils/_localizationUtils'; var ParameterPanelLayoutItemTypes; (function (ParameterPanelLayoutItemTypes) { ParameterPanelLayoutItemTypes[ParameterPanelLayoutItemTypes["Parameter"] = 0] = "Parameter"; ParameterPanelLayoutItemTypes[ParameterPanelLayoutItemTypes["Group"] = 1] = "Group"; ParameterPanelLayoutItemTypes[ParameterPanelLayoutItemTypes["Separator"] = 2] = "Separator"; })(ParameterPanelLayoutItemTypes || (ParameterPanelLayoutItemTypes = {})); export class ParameterPanelLayoutItem extends ElementViewModel { static createLayoutItem(model, parent, serializer) { return new ParameterPanelMapper[model['@LayoutItemType']](model, parent, serializer); } constructor(model, parent, serializer) { super(model, parent, serializer); this._canRemove = true; this.name = ko.observable(null); const parameterHelper = this.root.parameterHelper; if (parameterHelper) { this._parameterHelper = parameterHelper; this._parameterHelper.addParameterPanelLayoutItem(this); } } delete() { this.parentModel().parameterPanelLayoutItems.remove(this); } getControlFactory() { return controlsFactory(); } className() { return ''; } get canRemove() { return this._canRemove; } } export class GroupLayoutItem extends ParameterPanelLayoutItem { constructor(model, parent, serializer) { super(model, parent, serializer); this.layoutItemType(ParameterPanelLayoutItemTypes[ParameterPanelLayoutItemTypes.Group]); this.name = this.title; this.parameterPanelLayoutItems = deserializeArray(model.Items, (item) => { return ParameterPanelLayoutItem.createLayoutItem(item, this, serializer); }); } getInfo() { const info = groupLayoutItemInfo.map(i => ({ ...i })); this._parameterHelper && this._parameterHelper.customizeParameterProperties(this, info, { layoutItemType: 'Group', name: ko.unwrap(this.name) }); return info; } className() { return 'parametergroup'; } isPropertyDisabled(name) { return name === 'expanded' && !this.showExpandButton(); } get _localizationProvider() { if (!this.__localizationProvider) { this.__localizationProvider = new DefaultLocalizationProvider(this); } return this.__localizationProvider; } getLocalizationProperty(propertyName) { return this._localizationProvider.getLocalizationProperty(propertyName); } getLocalizationProperties() { return this._localizationProvider.getLocalizationProperties(); } applyLocalization(propertyName, propertyValue) { this._localizationProvider.applyLocalization(propertyName, propertyValue); } } export class SeparatorLayoutItem extends ParameterPanelLayoutItem { constructor() { super(...arguments); this.layoutItemType = ko.observable(ParameterPanelLayoutItemTypes[ParameterPanelLayoutItemTypes.Separator]); this.name = ko.observable(this.layoutItemType()); } getInfo() { const info = separatorLayoutItemInfo.map(i => ({ ...i })); this._parameterHelper && this._parameterHelper.customizeParameterProperties(this, info, { layoutItemType: 'Separator', name: ko.unwrap(this.name) }); return info; } className() { return 'parameterseparator'; } } export class ParameterLayoutItem extends ParameterPanelLayoutItem { constructor(model, parent, serializer, parameter) { super(model, parent, serializer); this.layoutItemType(ParameterPanelLayoutItemTypes[ParameterPanelLayoutItemTypes.Parameter]); parameter = parameter || this.parameter(); if (model['@Name']) { parameter = this.root.parameters().filter(x => x.name === model['@Name'])[0]; } if (parameter) { this.parameter(parameter); this.name = parameter.parameterName; parameter.labelOrientation() === 'Vertical' && this.labelOrientation('Vertical'); parameter.labelOrientation = this.labelOrientation; } } className() { return this.parameter() && this.parameter().specifics; } getInfo() { return parameterLayoutItemInfo; } get canRemove() { return ko.unwrap(this.parameter) ? ko.unwrap(this.parameter).canRemove : true; } } export const ParameterPanelMapper = { Group: GroupLayoutItem, Separator: SeparatorLayoutItem, Parameter: ParameterLayoutItem };