devexpress-reporting
Version:
DevExpress Reporting provides the capability to develop a reporting application to create and customize reports.
45 lines (44 loc) • 2.75 kB
JavaScript
/**
* DevExpress HTML/JS Reporting (chart\components\_diagram.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 { SerializableModel } from '@devexpress/analytics-core/analytics-elements';
import { extend } from '@devexpress/analytics-core/analytics-internal-native';
import { ModelSerializer } from '@devexpress/analytics-core/analytics-utils';
import * as ko from 'knockout';
import { diagramMapper, panes, secondaryAxesX } from '../internal/meta/_diagram';
import { deserializeModelArray } from '../_utils';
import { SecondaryAxisViewModel } from './axis/_secondaryAxisViewModel';
import { AdditionalPaneViewModel } from './models/_additionalPane';
export class DiagramViewModel extends SerializableModel {
getChildComponents() {
return [
{ component: this.axisX, path: 'AxisX' },
{ component: this.axisY, path: 'AxisY' },
{ component: ko.unwrap(this.secondaryAxesX), path: 'SecondaryAxesX' },
{ component: ko.unwrap(this.secondaryAxesY), path: 'SecondaryAxesY' },
{ component: ko.unwrap(this.panes), path: 'Panes' },
{ component: this.defaultPane?.title, path: 'DefaultPane.Title' }
];
}
static toJson(value, serializer, refs) {
return serializer.serialize(value, null, refs);
}
constructor(model, type, serializer = new ModelSerializer()) {
const info = diagramMapper[type].info;
model = extend(model, { '@TypeNameSerializable': diagramMapper[type].type });
super(model, serializer, diagramMapper[type].info);
if (info.filter(x => { return x.propertyName === secondaryAxesX.propertyName; }).length > 0) {
const createAxes = (item, parent) => { return new SecondaryAxisViewModel(item, parent, serializer); };
this.secondaryAxesX = deserializeModelArray(model && model['SecondaryAxesX'], createAxes, SecondaryAxisViewModel.xPrefix);
this.secondaryAxesY = deserializeModelArray(model && model['SecondaryAxesY'], createAxes, SecondaryAxisViewModel.yPrefix);
}
if (info.filter(x => { return x.propertyName === panes.propertyName; }).length > 0) {
this.panes = deserializeModelArray(model && model['Panes'], (item, parent) => { return new AdditionalPaneViewModel(item, parent, serializer); }, AdditionalPaneViewModel.prefix);
}
}
}
export const diagram = { propertyName: 'diagram', modelName: 'Diagram', displayName: 'Diagram', from: (val) => { return ko.observable(val); }, toJsonObject: DiagramViewModel.toJson, localizationId: 'DevExpress.XtraReports.UI.XRChart.Diagram' };