UNPKG

devexpress-reporting

Version:

DevExpress Reporting provides the capability to develop a reporting application to create and customize reports.

106 lines (105 loc) 4.64 kB
/** * DevExpress HTML/JS Reporting (viewer\reportHolder.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 { DxDeferred, getErrorMessage, _addLicenseTrigger } from '@devexpress/analytics-core/analytics-internal-native'; import { BaseRenderingModel, mutable } from '@devexpress/analytics-core/analytics-serializer-native'; import { HandlerUri, MessageHandler } from './settings'; export class ReportHolder extends BaseRenderingModel { _clearReportInfo() { this.closeReport(); this.originalParametersInfo = null; } constructor(handlerUri, previewRequestWrapper, element) { super(); this.element = element; this._deferreds = []; this._closeReportRequests = {}; HandlerUri(handlerUri || HandlerUri()); this.requestWrapper = previewRequestWrapper; } onPropertyChanged(args) { } dispose() { super.dispose(); (this._deferreds || []).forEach(deferred => deferred.reject()); } closeReport() { this._openReportOperationDeferred && this._openReportOperationDeferred.reject(); this._initializeDataPromise = null; const currentReportId = this.reportId; if (!currentReportId || this._closeReportRequests[currentReportId]) { return; } this.requestWrapper.sendCloseRequest(null, currentReportId); this._closeReportRequests[currentReportId] = true; } deactivate() { this.closeReport(); this.reportId = null; this.reportUrl = null; this.originalParametersInfo = null; } openReport(reportName) { this._clearReportInfo(); const deferred = new DxDeferred(); this._deferreds.push(deferred); this._openReportOperationDeferred = deferred; this.requestWrapper.openReport(reportName).done((response) => { deferred.resolve(response); }).fail((error) => { deferred.reject(error); }); return this.initialize(deferred.promise()); } initialize(initializeDataPromise) { this.reportId = null; this.reportUrl = null; this._initializeDataPromise = initializeDataPromise; initializeDataPromise.then((previewInitialize) => { if (this._initializeDataPromise !== initializeDataPromise) return; _addLicenseTrigger(previewInitialize?._licenseOptions); if (previewInitialize && !previewInitialize.error && !previewInitialize.startBuildFaultMessage && (previewInitialize.reportId || previewInitialize.documentId)) { this.reportId = previewInitialize.reportId; this.reportUrl = previewInitialize.reportUrl; this.originalParametersInfo = previewInitialize.parametersInfo; } }); return initializeDataPromise; } _getErrorMessage(jqXHR) { const serverError = getErrorMessage(jqXHR); if (!serverError) return jqXHR && jqXHR.responseJSON && jqXHR.responseJSON.result && jqXHR.responseJSON.result.faultMessage ? jqXHR.responseJSON.result.faultMessage : serverError; return serverError; } _processError(error, jqXHR, showForUser = true, serverError) { const prefix = error + ': '; serverError = serverError || this._getErrorMessage(jqXHR); serverError && (error = prefix + serverError); MessageHandler().processError(error, showForUser, serverError && prefix, this._getToastMessageContainer()); } _getToastMessageContainer() { return this.element?.getElementsByClassName('dx-designer-viewport')[0]; } } __decorate([ mutable(null) ], ReportHolder.prototype, "originalParametersInfo", void 0); __decorate([ mutable(null) ], ReportHolder.prototype, "reportId", void 0); __decorate([ mutable(null) ], ReportHolder.prototype, "reportUrl", void 0);