UNPKG

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