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
JavaScript
/**
* 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;
}