devexpress-reporting
Version:
DevExpress Reporting provides the capability to develop a reporting application to create and customize reports.
89 lines (88 loc) • 3.68 kB
JavaScript
/**
* DevExpress HTML/JS Reporting (viewer\reportPreview.viewModel.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 { createViewModelGenerator } from '@devexpress/analytics-core/analytics-serializer-native';
export function createReportPreviewViewModel(base) {
return createViewModelGenerator(base)
.generateProperty('editingFieldsHighlighted', this.editingFieldsHighlighted)
.generateProperty('rtlReport', this.rtlReport)
.generateProperty('currentPage', this.currentPage?.getViewModel())
.generateProperty('progressBar', this.progressBar?.getViewModel())
.generateProperty('showMultipagePreview', this.showMultipagePreview)
.generateProperty('previewVisible', this.previewVisible)
.generateProperty('getSelectedContent', (mask) => this.getSelectedContent(mask))
.generateProperty('lazyImagesOptions', {
getEnabled: () => this.showMultipagePreview,
setLoadVisibleImagesCallback: (callback) => {
this._loadVisibleImages = callback;
return () => {
this._loadVisibleImages = null;
};
},
getPage: (index) => {
return this.pages[index];
},
setPageVisibility: (page, isVisible) => this.setPageVisibility(page.getModel(), isVisible)
})
.generateProperty('pages', this._getPagesViewModels())
.generateProperty('delayedInit', () => this.delayedInit())
.generateProperty('emptyDocumentCaption', this.emptyDocumentCaption)
.generateProperty('previewBrickKeyboardHelper', this.previewBrickKeyboardHelper)
.getViewModel();
}
export function updateReportPreviewViewModel(args) {
const viewModel = this.getViewModel();
if (args.propertyName === 'editingFieldsHighlighted') {
viewModel.editingFieldsHighlighted = this.editingFieldsHighlighted;
}
if (args.propertyName === 'showMultipagePreview') {
viewModel.showMultipagePreview = this.showMultipagePreview;
}
if (args.propertyName === 'rtlReport') {
viewModel.rtlReport = this.rtlReport;
}
if (args.propertyName === 'emptyDocumentCaption') {
viewModel.emptyDocumentCaption = this.emptyDocumentCaption;
}
if (args.propertyName === 'previewVisible') {
viewModel.previewVisible = this.previewVisible;
}
if (args.propertyName === 'currentPage') {
viewModel.currentPage = this.currentPage?.getViewModel();
}
if (args.propertyName === 'pages') {
if ('removed' in args) {
args.removed.forEach(removed => viewModel.pages.splice(removed.index, 1));
}
if ('added' in args) {
let array = [];
const addItems = () => {
if (array.length === 0)
return;
const items = array.map(x => x.item.getViewModel());
viewModel.pages.splice(array[0].index, 0, ...items);
};
args.added.forEach(added => {
const lastAdded = array[array.length - 1];
if (!lastAdded || added.index === lastAdded.index + 1) {
array.push(added);
}
else {
addItems();
array = [added];
}
});
addItems();
}
else {
viewModel.pages = this._getPagesViewModels();
}
}
if (args.propertyName === 'signatures') {
viewModel.signatures = this.signatures;
}
}