UNPKG

devexpress-reporting

Version:

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

34 lines (33 loc) 1.8 kB
/** * DevExpress HTML/JS Reporting (viewer\internal\_progressBarUtils.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 { stringToPosition, getDockedElementCallback } from './_sizeUtils'; import { $dx } from '@devexpress/analytics-core/analytics-internal-native'; export function getUpdateProgressBarCallback(progressBarSettings, designerModel, reportPreview, rootElement, $window = window) { const keepProgressBarVisible = !progressBarSettings || progressBarSettings.keepOnVisibleArea !== false; const position = stringToPosition(progressBarSettings && progressBarSettings.position); reportPreview.progressBar.setPosition(position); if (!keepProgressBarVisible) return void (0); const $root = $dx(rootElement); const $progress = $root.find('.dxrd-preview-progress'); const updateProgressBarPosition = getDockedElementCallback($progress, $root, $window, '.dxrd-preview-progress', position); const progressBar = reportPreview.progressBar; const unsubscribe = progressBar && progressBar.events.on('inProgressChanged', (args) => { setTimeout(() => { progressBar.inProgress && updateProgressBarPosition(rootElement); }); }); designerModel.addDisposable(unsubscribe); const wrappedUpdateProgressPosition = () => { if (reportPreview.progressBar && reportPreview.progressBar.inProgress) updateProgressBarPosition(rootElement); }; window.addEventListener('scroll', wrappedUpdateProgressPosition); designerModel.addDisposable(() => window.removeEventListener('scroll', wrappedUpdateProgressPosition)); return wrappedUpdateProgressPosition; }