UNPKG

devexpress-reporting

Version:

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

109 lines (108 loc) 4.85 kB
/** * DevExpress HTML/JS Reporting (designer\wizard\pages\legacy\selectDataMemberPage.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 { FieldListProvider, getFullPath } from '@devexpress/analytics-core/analytics-internal'; import { getLocalization, PathRequest } from '@devexpress/analytics-core/analytics-utils'; import { DataMemberTreeListController } from '@devexpress/analytics-core/analytics-widgets-internal'; import { WizardPageBase } from '@devexpress/analytics-core/analytics-wizard'; import * as ko from 'knockout'; import { _masterDetailScrollViewHeight } from '../../internal/_utils'; import { LegacyReportWizardPageId } from '../../pageId'; import { _restoreDataSourceFromState } from '../chooseAvailableDataSourcePage'; import { createDeferred } from '@devexpress/analytics-core/analytics-internal-native'; class DataMemberPageTreeListController extends DataMemberTreeListController { canSelect(value) { return (this.hasItems(value.data) && !!value.path) || value.data.specifics === 'none'; } } export class LegacyChooseDataMemberPage extends WizardPageBase { _wrapFieldListCallback(itemsCallback) { return (pathRequest) => { if (this._hideDataMemberSubItems) { const deferred = createDeferred(); deferred.resolve([]); return deferred.promise(); } else { return itemsCallback(new PathRequest(this.dataSourcePath + '.' + pathRequest.fullPath), this._dataSource); } }; } get dataSourcePath() { return (this._dataSource.id || this._dataSource.ref); } _beginInternal(state) { this._dataSource = _restoreDataSourceFromState(state.newDataSource || state.dataSource); if (!state.dataMemberPath) { return this._fieldListCallBack(new PathRequest(this.dataSourcePath), this._dataSource).done((fields) => { this._selectedPath(null); this._rootItems(fields.map((value) => { return { name: value.displayName, id: value.name, specifics: 'List', dataSerializer: null, data: {} }; })); }); } else { this._selectedPath(state.dataMemberPath.replace(this.dataSourcePath + '.', '')); return createDeferred().resolve().promise(); } } constructor(reportWizardOptions) { super(); this._rootItems = ko.observableArray([]); this._selectedPath = ko.observable(null); this._fieldListCallBack = reportWizardOptions.callbacks.fieldListsCallback; this._createSqlDataSourceInfo = reportWizardOptions.callbacks.createSqlDataSourceInfo; this._hideDataMemberSubItems = reportWizardOptions.hideDataMemberSubItems; this.scrollViewHeight = _masterDetailScrollViewHeight; this.fieldListModel = { itemsProvider: new FieldListProvider(this._wrapFieldListCallback(this._fieldListCallBack), this._rootItems), selectedPath: this._selectedPath, treeListController: new DataMemberPageTreeListController() }; } canNext() { return !!this._selectedPath(); } canFinish() { return !!this._selectedPath(); } initialize(state) { return this._beginInternal(state); } commit() { return createDeferred().resolve({ dataMemberPath: getFullPath(this.dataSourcePath, this._selectedPath()), dataMemberInfo: this.fieldListModel.treeListController.selectedItem && this.fieldListModel.treeListController.selectedItem.data }).promise(); } } export function _registerLegacyChooseDataMemberPage(factory, reportWizardOptions) { factory.registerMetadata(LegacyReportWizardPageId.ChooseDataMemberPage, { setState: (data, state) => { state.dataMemberInfo = data.dataMemberInfo; state.dataMemberPath = data.dataMemberPath; }, getState: (state) => { return state; }, resetState: (state, defaultState) => { state.dataMemberInfo = defaultState.dataMemberInfo; state.dataMemberPath = defaultState.dataMemberPath; }, create: () => { return new LegacyChooseDataMemberPage(reportWizardOptions); }, template: 'dxrd-page-dataMember', description: getLocalization('The table or view you choose determines wich columns will be available in your report.', 'ASPxReportsStringId.ReportDesigner_Wizard_ChooseDataMember') }); }