UNPKG

devexpress-reporting

Version:

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

69 lines (68 loc) 3.78 kB
/** * DevExpress HTML/JS Reporting (designer\services\_reportWizardService.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 { DxDeferred, sendRequest } from '@devexpress/analytics-core/analytics-internal'; import { DataSourceType, _restoreJsonDataSourceFromState } from '@devexpress/analytics-core/analytics-wizard'; import { createNewObjectItem } from '../dataObjects/objectItemCreation'; import { QBRequestWrapper } from '../tools/generator/_qBRequestWrapper'; import { HandlerUri } from '../utils/settings'; import { _convertToStateDataSource } from '../wizard/pages/chooseAvailableDataSourcePage'; import { ReportStorageWeb } from './reportStorageWeb'; export class ReportWizardService { static createNewWizardRequest(reportWizardState, requestType, state, customizeWizardModelAction, oldReportInfo) { let dataSourceJSON = null; let dataSources = []; reportWizardState.dataSource = reportWizardState.dataSource || reportWizardState.newDataSource; if (reportWizardState.dataSource) { if (reportWizardState.dataSourceType === DataSourceType.Federation) { const federationModel = (JSON.parse(JSON.parse(reportWizardState.dataSource).data)); dataSourceJSON = JSON.stringify(federationModel.dataSource); dataSources = Object.keys(federationModel.dataSources).map(key => JSON.stringify(federationModel.dataSources[key])); } else { dataSourceJSON = JSON.parse(reportWizardState.dataSource).data; } } const wizardModel = new requestType(reportWizardState); customizeWizardModelAction && customizeWizardModelAction(wizardModel); const requestJson = JSON.stringify({ reportModel: wizardModel, dataSource: dataSourceJSON, dataSources: dataSources, oldReport: oldReportInfo?.json, useInitialDataSource: oldReportInfo?.useInitialDataSource, state: state, colorScheme: reportWizardState.colorScheme && (reportWizardState.colorScheme.name === 'Custom' ? reportWizardState.colorScheme.baseColor : reportWizardState.colorScheme.name), customData: { data: reportWizardState.customData, reportTemplateID: reportWizardState.reportTemplateID } }); return requestJson; } static generateReportFromWizardState(reportWizardState, requestType, state, customizeWizardModelAction, oldReportInfo) { return sendRequest(HandlerUri(), 'generateReportFromWizardModel', this.createNewWizardRequest(reportWizardState, requestType, state, customizeWizardModelAction, oldReportInfo), ReportStorageWeb.getErrorMessageHandler()); } static getLabelReportWizardData() { return sendRequest(HandlerUri(), 'labelReportWizardData', ''); } static createNewJsonDataSource(state, createJsonCallback) { const jsonDataSource = _restoreJsonDataSourceFromState(state); const deferred = new DxDeferred(); QBRequestWrapper().saveJsonSource(state.newConnectionName, jsonDataSource).done((connectionName) => { state.jsonSource = null; state.connectionName = connectionName; createJsonCallback(_restoreJsonDataSourceFromState(state)) .done(result => { result.data = createNewObjectItem(result.data); deferred.resolve(_convertToStateDataSource(result)); }) .fail(() => deferred.reject()); }).fail(() => deferred.reject()); return deferred.promise(); } }