UNPKG

@progress/telerik-jquery-report-viewer

Version:

Progress® Telerik® Report Viewer for jQuery

156 lines (149 loc) 6.42 kB
'use strict'; Object.defineProperty(exports, '__esModule', { value: true }); var RCV = require('@progress/telerik-common-report-viewer'); function _interopNamespace(e) { if (e && e.__esModule) return e; var n = Object.create(null); if (e) { Object.keys(e).forEach(function (k) { if (k !== 'default') { var d = Object.getOwnPropertyDescriptor(e, k); Object.defineProperty(n, k, d.get ? d : { enumerable: true, get: function () { return e[k]; } }); } }); } n["default"] = e; return Object.freeze(n); } var RCV__namespace = /*#__PURE__*/_interopNamespace(RCV); function UIController(options) { var stateFlags = { ExportInProgress: 1 << 0, PrintInProgress: 1 << 1, RenderInProgress: 1 << 2 }; function getState(flags) { return (state & flags) != 0; } function setState(flags, value) { if (value) { state |= flags; } else { state &= ~flags; } } var controller = options.controller; var notificationService = options.notificationService; var historyManager = options.history; var state = 0; var refreshUI; var commands = options.commands; if (!controller) { throw "No controller (telerikReporting.ReportViewerController) has been specified."; } if (!notificationService) { throw "No notificationService (telerikReporting.NotificationService) has been specified."; } function getDocumentMapState() { var args = {}; notificationService.getDocumentMapState(args); return args; } function getParametersAreaState() { var args = {}; notificationService.getParametersAreaState(args); return args; } function getSendEmailDialogState() { var args = {}; notificationService.getSendEmailDialogState(args); return args; } function updateUI() { if (!refreshUI) { refreshUI = true; window.setTimeout(() => { try { updateUICore(); } finally { refreshUI = false; } }, 10); } } function updateUICore() { var rs = controller.getReportSource(); var pageCount = controller.getPageCount(); var currentPageNumber = controller.getCurrentPageNumber(); var hasReport = rs && rs.report; var hasPages = hasReport && pageCount > 0; var nextPage = hasPages && currentPageNumber < pageCount; var prevPage = hasPages && currentPageNumber > 1; var hasPage = hasPages && currentPageNumber; var documentMapState = getDocumentMapState(); var parametersAreaState = getParametersAreaState(); var sendEmailDialogState = getSendEmailDialogState(); var searchInitiated = controller.getSearchInitiated(); var aiPromptInitiated = controller.getAiPromptInitiated(); var renderInProgress = getState(stateFlags.RenderInProgress); var printInProgress = getState(stateFlags.PrintInProgress); var exportInProgress = getState(stateFlags.ExportInProgress); commands.goToFirstPage.setEnabled(prevPage); commands.goToPrevPage.setEnabled(prevPage); commands.stopRendering.setEnabled(hasReport && renderInProgress); commands.goToLastPage.setEnabled(nextPage); commands.goToNextPage.setEnabled(nextPage); commands.goToPage.setEnabled(hasPages); commands.print.setEnabled(hasPages && !renderInProgress && !printInProgress); commands.export.setEnabled(hasPages && !renderInProgress && !exportInProgress); commands.refresh.setEnabled(hasReport); commands.historyBack.setEnabled(historyManager && historyManager.canMoveBack()); commands.historyForward.setEnabled(historyManager && historyManager.canMoveForward()); commands.toggleDocumentMap.setEnabled(hasReport && documentMapState.enabled); commands.toggleDocumentMap.setChecked(documentMapState.enabled && documentMapState.visible); commands.toggleParametersArea.setEnabled(hasReport && parametersAreaState.enabled); commands.toggleParametersArea.setChecked(parametersAreaState.enabled && parametersAreaState.visible); commands.togglePrintPreview.setEnabled(hasPages).setChecked(controller.getViewMode() == RCV__namespace.ViewMode.PrintPreview); commands.pageMode.setEnabled(hasPages).setChecked(controller.getPageMode() == RCV__namespace.PageMode.ContinuousScroll); commands.zoom.setEnabled(hasPage); commands.zoomIn.setEnabled(hasPage); commands.zoomOut.setEnabled(hasPage); commands.toggleZoomMode.setEnabled(hasPage).setChecked(controller.getScaleMode() == RCV__namespace.ScaleMode.FitPage || controller.getScaleMode() == RCV__namespace.ScaleMode.FitPageWidth); commands.toggleSearchDialog.setEnabled(hasPages).setChecked(searchInitiated); commands.toggleSendEmailDialog.setEnabled(hasPages).setChecked(sendEmailDialogState.visible); commands.toggleAiPromptDialog.setEnabled(hasPages).setChecked(aiPromptInitiated); notificationService.updateUI(null); notificationService.pageNumberChange(currentPageNumber); notificationService.pageCountChange(pageCount); } notificationService.setParametersAreaVisible(updateUI); notificationService.setDocumentMapVisible(updateUI); notificationService.updateUIInternal(updateUI); notificationService.setSearchDialogVisible(updateUI); notificationService.setSendEmailDialogVisible(updateUI); controller.on("scaleModeChanged", (scaleMode) => { commands.toggleZoomMode.setChecked(scaleMode == RCV__namespace.ScaleMode.FitPage || scaleMode === RCV__namespace.ScaleMode.FitPageWidth); }).on("currentPageChanged", updateUI).onAsync("beforeLoadReport", async () => { setState(stateFlags.RenderInProgress, true); updateUI(); }).on("reportLoadProgress", updateUI).onAsync("reportLoadComplete", async () => { setState(stateFlags.RenderInProgress, false); updateUI(); }).on("reportSourceChanged", updateUI).on("viewModeChanged", updateUI).on("pageModeChanged", updateUI).on("setUIState", (args) => { setState(stateFlags[args.operationName], args.inProgress); updateUI(); }).on("error", () => { setState(stateFlags.ExportInProgress, false); setState(stateFlags.PrintInProgress, false); setState(stateFlags.RenderInProgress, false); updateUI(); }).on("renderingStopped", () => { setState(stateFlags.RenderInProgress, false); updateUI(); }); updateUI(); } exports.UIController = UIController;