devexpress-reporting
Version:
DevExpress Reporting provides the capability to develop a reporting application to create and customize reports.
47 lines (46 loc) • 2.18 kB
JavaScript
/**
* DevExpress HTML/JS Reporting (designer\internal\serialization\_serializer.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 { ModelSerializer } from '@devexpress/analytics-core/analytics-utils';
import { defaultCulture } from '../../../common/defaultCulture';
import { localizationItems } from '../../controls/metadata/xrReport';
import { cultureInfo } from '../../localization/localizationMetadata';
export class ReportModelSerializer extends ModelSerializer {
constructor(reportModel, options) {
super(options);
this.reportModel = reportModel;
this.isLocalized = false;
}
serialize(viewModel, serializationsInfo, refs) {
const isInitialize = !viewModel;
viewModel = viewModel || this.reportModel;
refs = refs || { linkObjTable: [], objects: [] };
const model = super.serialize(viewModel, serializationsInfo, refs);
if (isInitialize) {
model['@Ref'] = (refs.objects.push(viewModel) - 1).toString();
this.setLinks(refs);
}
return model;
}
serializeProperty(modelPropertyInfo, viewModel, serializationsInfo, refs, result) {
if (!modelPropertyInfo.localizable || !this.reportModel.isLocalized()) {
return super.serializeProperty(modelPropertyInfo, viewModel, serializationsInfo, refs, result);
}
}
deserialize(viewModel, model, serializationsInfo) {
if (viewModel.controlType === 'DevExpress.XtraReports.UI.XtraReport') {
if (!this.reportModel)
this.reportModel = viewModel;
const currentLocalizationItems = model[localizationItems.modelName];
if (currentLocalizationItems) {
this.isLocalized = true;
this.localizationJsonObj = Object.keys(currentLocalizationItems).map(key => currentLocalizationItems[key]).filter(a => a[cultureInfo.modelName] === defaultCulture);
}
}
return super.deserialize(viewModel, model, serializationsInfo);
}
}