devexpress-reporting
Version:
DevExpress Reporting provides the capability to develop a reporting application to create and customize reports.
85 lines (84 loc) • 3.57 kB
JavaScript
/**
* DevExpress HTML/JS Reporting (viewer\internal\_previewModelBase.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
*/
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
return c > 3 && r && Object.defineProperty(target, key, r), r;
};
import { appendStaticContextToRootViewModel, staticContext } from '@devexpress/analytics-core/analytics-internal-native';
import { BaseRenderingModel, createViewModelGenerator, mutable, ViewModelChangedEvent } from '@devexpress/analytics-core/analytics-serializer-native';
import { formatSearchResult } from '../search/_utils';
export class PreviewDisposableModelBase extends BaseRenderingModel {
constructor(options, viewPortCss) {
super();
this.rootStyle = options.rootStyle;
this.reportPreview = options.reportPreview;
this.parametersModel = options.parametersModel;
this.rtl = options.rtl;
this.viewPortCss = viewPortCss;
this._disposables.push(options.reportPreview);
this._disposables.push(options.parametersModel);
}
onPropertyChanged(args) { }
createViewModel() {
const viewModel = createViewModelGenerator(super.createViewModel())
.generateProperty('parts', this.parts)
.generateProperty('rootStyle', this.rootStyle)
.generateProperty('rtl', this.rtl)
.getViewModel();
appendStaticContextToRootViewModel(viewModel, {
_static: {
...staticContext._static,
formatSearchResult: formatSearchResult
}
}, this.viewPortCss);
return viewModel;
}
updateViewModel(args) {
const viewModel = this.getViewModel();
if (args.propertyName === 'parts')
viewModel.parts = this.parts;
}
subscribeViewModelToDesignerParts() {
const viewModel = this.getViewModel();
const viewModelEventManager = viewModel;
viewModel
.parts
.filter(part => part.viewModel)
.forEach(part => {
const disposeCallback = part.viewModel._viewModelEvents?.on(ViewModelChangedEvent, args => {
const eventArgs = {
...args,
propertyName: `parts.${part.id}.${args.propertyName}`
};
viewModelEventManager._viewModelEvents.call(ViewModelChangedEvent, eventArgs);
});
this._disposables.push({ dispose: disposeCallback });
});
}
OpenReport(reportName) {
return this.reportPreview.openReport(reportName);
}
GetParametersModel() {
return this.parametersModel;
}
ResetParameters() {
this.parametersModel && this.parametersModel.restore();
}
Close() {
this.reportPreview.deactivate();
}
dispose() {
super.dispose();
this.removeProperties();
}
}
__decorate([
mutable(() => [])
], PreviewDisposableModelBase.prototype, "parts", void 0);