UNPKG

devexpress-reporting

Version:

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

116 lines (115 loc) 4.68 kB
/** * DevExpress HTML/JS Reporting (designer\wizard\pages\legacy\selectColumnsPage.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 { createDeferred } from '@devexpress/analytics-core/analytics-internal-native'; import { getLocalization, PathRequest } from '@devexpress/analytics-core/analytics-utils'; import { WizardPageBase } from '@devexpress/analytics-core/analytics-wizard'; import { LegacyReportWizardPageId } from '../../pageId'; import { ListViewModel } from '../../_utils'; import { _restoreDataSourceFromState } from '../chooseAvailableDataSourcePage'; export class LegacySelectColumnsPage extends WizardPageBase { constructor(getFieldListItems) { super(); this._selectedPath = null; this._fields = []; this.select = () => { this.selectedFields.add(this.availableFields.activeItem); this.availableFields.removeActiveItem(); }; this.selectAll = () => { this.selectedFields.setItems(this._fields.slice(0)); this.availableFields.removeAll(); }; this.unselect = () => { this.availableFields.add(this.selectedFields.activeItem); this.selectedFields.removeActiveItem(); }; this.unselectAll = () => { this.availableFields.setItems(this._fields.slice(0)); this.selectedFields.removeAll(); }; this.availableFieldDblClick = (field) => { this.availableFields.activeItem = field; this.select(); }; this.availableFieldClick = (e) => { this.availableFields.activeItem = e.itemData; }; this.selectedFieldDblClick = (field) => { this.selectedFields.activeItem = field; this.unselect(); }; this.selectedFieldClick = (e) => { this.selectedFields.activeItem = e.itemData; }; this.availableFields = new ListViewModel(getLocalization('Available fields', 'ASPxReportsStringId.ReportDesigner_Wizard_AvailableFields')); this.selectedFields = new ListViewModel(getLocalization('Selected fields', 'ASPxReportsStringId.ReportDesigner_Wizard_SelectedFields')); this._fieldListsCallback = getFieldListItems; } canFinish() { return true; } canNext() { return !this.selectedFields.isEmpty; } selectedPath() { return this._selectedPath; } reset() { this._selectedPath = null; } initialize(state) { this.selectedFields.setItems(state.fields || []); if (this._selectedPath != state.dataMemberPath) { return this._fieldListsCallback(new PathRequest(state.dataMemberPath), _restoreDataSourceFromState(state.newDataSource || state.dataSource)) .done((fields) => { this._fields = fields.filter((item) => { return (item.specifics !== 'List' && item.specifics !== 'ListSource' && item.isList !== true); }); this._selectedPath = state.dataMemberPath; this.availableFields.setItems(this._fields.filter((value) => { return this.selectedFields.items.indexOf(value) === -1; })); }); } else { this.availableFields.setItems(this._fields.filter((value) => { return this.selectedFields.items.indexOf(value) === -1; })); return createDeferred().resolve().promise(); } } commit() { return createDeferred().resolve({ fields: this.selectedFields.items }).promise(); } isSelectEnable() { return !!this.availableFields.activeItem; } isUnselectEnable() { return !!this.selectedFields.activeItem; } } export function _registerLegacySelectColumnsPage(factory, fieldListItemsCallback) { factory.registerMetadata(LegacyReportWizardPageId.SelectColumnsPage, { setState: (data, state) => { state.fields = data.fields; }, getState: (state) => { return state; }, resetState: (state, defaultState) => { state.fields = defaultState.fields; }, create: () => { return new LegacySelectColumnsPage(fieldListItemsCallback); }, template: 'dxrd-page-columns', description: getLocalization('Select the columns you want to display within your report.', 'ASPxReportsStringId.ReportDesigner_Wizard_ChooseColumns') }); }