UNPKG

devexpress-reporting

Version:

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

90 lines (89 loc) 4.86 kB
/** * DevExpress HTML/JS Reporting (designer\wizard\pages\selectLabelTypePage.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 { extend, findFirstItemMatchesCondition } from '@devexpress/analytics-core/analytics-internal'; import { getLocalization } from '@devexpress/analytics-core/analytics-utils'; import { WizardPageBase } from '@devexpress/analytics-core/analytics-wizard'; import * as ko from 'knockout'; import { ReportWizardPageId } from '../pageId'; import { GraphicsUnit } from '../reportWizardState'; import { getFormattedValueInUnits } from '../_utils'; import { initializeLabelReportWizardPromise, labelReportWizardPromise } from './_selectLabelTypePage'; import { createDeferred } from '@devexpress/analytics-core/analytics-internal-native'; export class SelectLabelTypePage extends WizardPageBase { constructor() { super(); this._selectedPaperSize = ko.computed({ read: () => { return findFirstItemMatchesCondition(this._labelData.paperKinds, item => item.id === this._selectedLabelDetails().paperKindId); }, deferEvaluation: true }); this._selectedLabelProduct = ko.observable(); this._selectedLabelDetails = ko.observable(); this._labelDetails = ko.observable(); this._width = ko.pureComputed(() => getFormattedValueInUnits(this._selectedLabelDetails().width, this._selectedPaperSize().unit) + (this._selectedPaperSize().unit === GraphicsUnit.Inch ? ' in' : ' mm')); this._height = ko.pureComputed(() => getFormattedValueInUnits(this._selectedLabelDetails().height, this._selectedPaperSize().unit) + (this._selectedPaperSize().unit === GraphicsUnit.Inch ? ' in' : ' mm')); this._paperType = ko.pureComputed(() => this._selectedPaperSize().name); this._pageSizeText = ko.pureComputed(() => getFormattedValueInUnits(this._selectedPaperSize().width, this._selectedPaperSize().unit) + ' x ' + getFormattedValueInUnits(this._selectedPaperSize().height, this._selectedPaperSize().unit) + (this._selectedPaperSize().unit === GraphicsUnit.Inch ? ' in' : ' mm')); this._disposables.push(this._selectedLabelProduct.subscribe(newProductsType => { const labelDetails = this._labelData.labelDetails.filter(item => item.productId === newProductsType.id); this._selectedLabelDetails(labelDetails[0]); this._labelDetails({ store: labelDetails, paginate: labelDetails.length > 200, pageSize: 100 }); })); this._disposables.push(this._selectedLabelDetails.subscribe(() => this._onChange())); this._disposables.push(this._selectedPaperSize, this._width, this._height, this._paperType, this._pageSizeText); } initialize(state) { initializeLabelReportWizardPromise(); return labelReportWizardPromise.done((labelData) => { this._labelData = labelData; if (state.labelDetails) { if (!this._selectedLabelProduct() || this._selectedLabelProduct().id !== state.labelDetails.productId) { this._selectedLabelProduct(findFirstItemMatchesCondition(this._labelData.labelProducts, item => item.id === state.labelDetails.productId)); } this._selectedLabelDetails(findFirstItemMatchesCondition(this._labelData.labelDetails, item => item.id === state.labelDetails.id)); } else { this._selectedLabelProduct(this._labelData.labelProducts[0]); } }); } canNext() { return !!this._selectedLabelDetails(); } canFinish() { return !!this._selectedLabelDetails(); } commit() { const labelDetails = this._selectedLabelDetails() ? extend({}, this._selectedLabelDetails()) : null; return createDeferred().resolve({ labelDetails: labelDetails }).promise(); } } export function _registerSelectLabelTypePage(factory) { factory.registerMetadata(ReportWizardPageId.SelectLabelTypePage, { setState: (data, state) => { if (data && (!state.labelDetails || data.labelDetails.id !== state.labelDetails.id)) state.labelDetails = data.labelDetails; }, getState: (state) => { return state; }, resetState: (state, defaultState) => { state.labelDetails = defaultState.labelDetails; }, create: () => { return new SelectLabelTypePage(); }, template: 'dxrd-page-selectPredefinedLabels', description: getLocalization('Select the label type.', 'ASPxReportsStringId.ReportDesigner_Wizard_SelectLabelType') }); }