UNPKG

devexpress-reporting

Version:

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

104 lines (103 loc) 4.65 kB
/** * DevExpress HTML/JS Reporting (designer\wizard\pages\chooseAvailableDataSourcePage.js) * Version: 25.2.3 * Build date: Dec 15, 2025 * Copyright (c) 2012 - 2025 Developer Express Inc. ALL RIGHTS RESERVED * License: https://www.devexpress.com/Support/EULAs/universal.xml */ import { createDeferred, extend } from '@devexpress/analytics-core/analytics-internal-native'; import { getLocalization, ModelSerializer } from '@devexpress/analytics-core/analytics-utils'; import { ChooseAvailableItemPage, DataSourceType } from '@devexpress/analytics-core/analytics-wizard'; import { DataFederationDataSource, SerializableDataFederationDataSource } from '../../dataObjects/dataFederation'; import { createNewObjectItem } from '../../dataObjects/objectItemCreation'; import { ReportWizardPageId } from '../pageId'; function getDataSourceType(dataSource) { if (dataSource.isSqlDataSource) return DataSourceType.Sql; if (dataSource.isJsonDataSource) return DataSourceType.Json; if (dataSource.isObjectDataSource) return DataSourceType.Object; if (dataSource.isFederationDataSource) return DataSourceType.Federation; if (dataSource.isMongoDBDataSource) return DataSourceType.MongoDB; return; } export function _convertToStateDataSource(dataSource) { let objStorageItem; if (dataSource.data instanceof DataFederationDataSource) { objStorageItem = dataSource.data.getSerializableModel().serialize(); } else { objStorageItem = new ModelSerializer().serialize(dataSource.data); } return JSON.stringify(extend(true, {}, dataSource, { data: JSON.stringify(objStorageItem) })); } export function _restoreDataSourceFromState(serializedDataSource) { const dataSource = JSON.parse(serializedDataSource); if (dataSource) { const parsedData = JSON.parse(dataSource.data); if (parsedData.dataSources) { const serializableModel = new SerializableDataFederationDataSource(null, parsedData); dataSource.data = serializableModel.dataSource; serializableModel.dispose(); } else { dataSource.data = createNewObjectItem(JSON.parse(dataSource.data)); } } return dataSource; } export class ChooseAvailableDataSourcePage extends ChooseAvailableItemPage { commit() { const selectedItem = this.selectedItems()[0]; const isNewDataSource = this.selectedOperation().createNew; return createDeferred().resolve({ sqlDataSourceWizard: {}, jsonDataSourceWizard: {}, dataSource: isNewDataSource ? null : _convertToStateDataSource(selectedItem), dataSourceType: isNewDataSource ? undefined : getDataSourceType(selectedItem) }).promise(); } _getSelectedItem(state) { const availableDataSources = this.items() || []; if (state.dataSource) { const dataSource = _restoreDataSourceFromState(state.dataSource); return availableDataSources.filter(x => x.id === dataSource.id || x.ref === dataSource.ref)[0]; } else if (availableDataSources.length === 0) { return null; } else { return availableDataSources[0]; } } get createNewOperationText() { return getLocalization("No, I'd like to create a new data source", 'AnalyticsCoreStringId.Wizard_CreateNewDataSource'); } } export function _registerChooseAvailableDataSourcePage(factory, reportWizardOptions) { factory.registerMetadata(ReportWizardPageId.ChooseAvailableDataSourcePage, { setState: (data, state) => { state.dataSource = data.dataSource; state.sqlDataSourceWizard = data.sqlDataSourceWizard; state.jsonDataSourceWizard = data.jsonDataSourceWizard; state.dataSourceType = data.dataSourceType; }, getState: (state) => { return state; }, resetState: (state, defaultState) => { state.sqlDataSourceWizard = defaultState.sqlDataSourceWizard; state.jsonDataSourceWizard = defaultState.jsonDataSourceWizard; state.dataSource = defaultState.dataSource; state.dataSourceType = defaultState.dataSourceType; }, create: () => { return new ChooseAvailableDataSourcePage(reportWizardOptions.dataSources, reportWizardOptions.canCreateDataSource); }, template: 'dxrd-page-selectitems', description: getLocalization('Do you want to use an existing data source?', 'AnalyticsCoreStringId.Wizard_UseExisting_DataSource') }); }