UNPKG

devexpress-reporting

Version:

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

156 lines (155 loc) 9.07 kB
/** * DevExpress HTML/JS Reporting (viewer\mobile\utils\_mobileInitializer.js) * Version: 20.2.13 * Build date: Apr 10, 2023 * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED * License: https://www.devexpress.com/Support/EULAs/universal.xml */ "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var mobilePreview_1 = require("../mobilePreview"); var _mobileSearch_1 = require("../internal/_mobileSearch"); var _galleryModel_1 = require("../internal/gallery/_galleryModel"); var _paginator_1 = require("../internal/_paginator"); var previewParametersViewModel_1 = require("../../parameters/previewParametersViewModel"); var _previewRequestWrapper_1 = require("../../internal/_previewRequestWrapper"); var _sizeUtils_1 = require("../internal/_sizeUtils"); var _mobilePreviewParameterHelper_1 = require("../internal/_mobilePreviewParameterHelper"); var exportOptionsModel_1 = require("../../exportOptions/exportOptionsModel"); var constants_1 = require("../../constants"); var _mobileActionList_1 = require("./_mobileActionList"); var _mobilePreviewModel_1 = require("../internal/_mobilePreviewModel"); var _parametersPopup_1 = require("../internal/_parametersPopup"); var constants_2 = require("../constants"); var _progressBarUtils_1 = require("../../internal/_progressBarUtils"); var _sizeUtils_2 = require("../../internal/_sizeUtils"); var analytics_internal_1 = require("@devexpress/analytics-core/analytics-internal"); var ko = require("knockout"); var $ = require("jquery"); function createMobilePreview(bindingSettings) { var callbacks = bindingSettings.callbacks; var bindingModel = bindingSettings.model; var bindingElement = bindingSettings.element; var previewWrapper = new _previewRequestWrapper_1.PreviewRequestWrapper(null, callbacks), reportPreview = new mobilePreview_1.MobileReportPreview(bindingModel.handlerUri, previewWrapper, undefined, callbacks, undefined, bindingModel.mobileModeSettings); var $root = $(bindingElement); var updatePreviewContentSize_ = _sizeUtils_1.updatePreviewContentSizeMobile(reportPreview.previewWrapperSize, $root); updatePreviewContentSize_(); var gallery = new _galleryModel_1.GalleryModel(reportPreview, reportPreview.previewWrapperSize); var searchModel = new _mobileSearch_1.MobileSearchViewModel(reportPreview, gallery); var parametersModel = new previewParametersViewModel_1.PreviewParametersViewModel(reportPreview, new _mobilePreviewParameterHelper_1.MobilePreviewParameterHelper(bindingModel.parametersInfo && bindingModel.parametersInfo.knownEnums, callbacks)); var exportModel = new exportOptionsModel_1.ExportOptionsModel(reportPreview); reportPreview.allowURLsWithJSContent = bindingModel.allowURLsWithJSContent; previewWrapper.initialize(reportPreview, parametersModel, searchModel); var exportTypes = ko.observableArray([ constants_1.ExportFormatID.PDF, constants_1.ExportFormatID.XLS, constants_1.ExportFormatID.XLSX, constants_1.ExportFormatID.RTF, constants_1.ExportFormatID.DOCX, constants_1.ExportFormatID.HTML, constants_1.ExportFormatID.Text, constants_1.ExportFormatID.CSV, constants_1.ExportFormatID.Image ]); var mobileActions = _mobileActionList_1.getPreviewActionsMobile({ reportPreview: reportPreview, exportModel: exportModel, parametersModel: parametersModel, searchModel: searchModel, exportTypes: exportTypes, callbacks: callbacks }); reportPreview.pageIndex.subscribe(function (newVal) { mobileActions.visible(false); }); reportPreview.actionsVisible = mobileActions.visible; var designerModelOptions = { rootStyle: 'dxrd-preview dxrdp-mobile dxd-back-primary', reportPreview: reportPreview, parametersModel: parametersModel, exportModel: exportModel, searchModel: searchModel, rtl: reportPreview.rtlViewer, brickEventsDisabled: ko.observable(false), gallery: gallery, paginator: new _paginator_1.MobilePaginator(reportPreview, gallery), availableFormats: exportTypes }; var designerModel = new _mobilePreviewModel_1.MobilePreviewModel(designerModelOptions); designerModel.slideOptions = { dispose: function () { var model = designerModel.slideOptions; if (ko.isComputed(model.swipeEnabled)) model.swipeEnabled.dispose(); if (ko.isComputed(model.scrollAvailable)) model.scrollAvailable.dispose(); }, readerMode: reportPreview.readerMode, animationSettings: reportPreview.animationSettings, searchPanel: searchModel, topOffset: reportPreview.topOffset, previewWrapperSize: reportPreview.previewWrapperSize, reachedTop: reportPreview.scrollReachedTop, reachedLeft: reportPreview.scrollReachedLeft, reachedRight: reportPreview.scrollReachedRight, scrollAvailable: ko.computed(function () { return !(reportPreview.scrollReachedTop() && reportPreview.scrollReachedLeft() && reportPreview.scrollReachedRight() && reportPreview.scrollReachedBottom()); }), disabled: reportPreview.interactionDisabled, swipeEnabled: ko.computed(function () { if (reportPreview.zoomUpdating()) { return false; } if (searchModel.height() > 0 && !searchModel.editorVisible()) { return false; } if (!reportPreview.scrollReachedLeft() && !reportPreview.scrollReachedRight()) { return false; } return true; }), autoFitBy: reportPreview.autoFitBy, galleryIsAnimated: gallery.isAnimated, repaintTimeout: gallery.repaintTimeout, zoomUpdating: reportPreview.zoomUpdating, brickEventsDisabled: designerModel.brickEventsDisabled }; var parametersPopup = new _parametersPopup_1.ParametersPopupModel(parametersModel, reportPreview); designerModel.parts = [ { id: constants_2.MobilePreviewElements.Surface, templateName: constants_2.MobilePreviewElements.Surface, model: designerModel.reportPreview }, { id: constants_2.MobilePreviewElements.Search, templateName: constants_2.MobilePreviewElements.Search, model: designerModel.searchModel }, { id: constants_2.MobilePreviewElements.Pages, templateName: constants_2.MobilePreviewElements.Pages, model: designerModel.paginator }, { id: constants_2.MobilePreviewElements.MobileActions, templateName: constants_2.MobilePreviewElements.MobileActions, model: mobileActions }, { id: constants_2.MobilePreviewElements.Parameters, templateName: constants_2.MobilePreviewElements.Parameters, model: parametersPopup } ]; callbacks && callbacks.customizeParts && callbacks.customizeParts(designerModel.parts); var $actions = $root.find('.dxrdp-mobile-actions'); var $window = $(window); var updateProgressPosition = _progressBarUtils_1.getUpdateProgressBarCallback(bindingModel.progressBarSettings, designerModel, reportPreview, bindingElement, $window); var updateMobilePreviewActionsPosition_ = _sizeUtils_2.getUpdatePreviewElementPositionCallback($actions, $root, $window, '.dxrdp-mobile-actions'); var updateSizesCallback = function () { updatePreviewContentSize_ && updatePreviewContentSize_(); updateProgressPosition && updateProgressPosition(); }; designerModel.updateSurfaceSize = updateSizesCallback; designerModel.resizeCallback = function () { if (parametersModel.popupInfo.visible()) { parametersPopup.initVisibilityIcons(); } updateSizesCallback(); if (reportPreview.actionsVisible()) updateMobilePreviewActionsPosition_(bindingElement); }; window.addEventListener('resize', designerModel.resizeCallback); var onScroll = function () { if (reportPreview.actionsVisible()) updateMobilePreviewActionsPosition_(bindingElement); }; window.addEventListener('scroll', onScroll); designerModel._addDisposable({ dispose: function () { window.removeEventListener('resize', designerModel.resizeCallback); window.removeEventListener('scroll', onScroll); designerModel.slideOptions.dispose(); mobileActions.dispose(); } }); designerModel._addDisposable(reportPreview.actionsVisible.subscribe(function (newValue) { if (newValue) updateMobilePreviewActionsPosition_(bindingElement); })); analytics_internal_1.appendStaticContextToRootViewModel(designerModel, analytics_internal_1.staticContext); if (bindingElement && !reportPreview.canSwitchToDesigner && bindingSettings.applyBindings) { callbacks.beforeRender && callbacks.beforeRender(designerModel); $(bindingElement).children().remove(); ko.applyBindings(designerModel, bindingElement); } return designerModel; } exports.createMobilePreview = createMobilePreview;