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