UNPKG

@progress/telerik-react-report-viewer

Version:

Progress® Telerik® Report Viewer for React

1,408 lines (1,393 loc) 345 kB
var $ = require("jquery"); /* * TelerikReporting v18.2.24.924 (https://www.telerik.com/products/reporting.aspx) * Copyright 2024 Progress Software EAD. All rights reserved. * * Telerik Reporting commercial licenses may be obtained at * https://www.telerik.com/purchase/license-agreement/reporting.aspx * If you do not own a commercial license, this file shall be governed by the trial license terms. */ var telerikReportViewer = (function (exports) { 'use strict'; var stringFormatRegExp = /{(\w+?)}/g; var specialKeys = { DELETE: 46, BACKSPACE: 8, TAB: 9, ESC: 27, LEFT: 37, UP: 38, RIGHT: 39, DOWN: 40, END: 35, HOME: 36 }; function isSpecialKey() { var userAgent = window.navigator.userAgent.toLowerCase(); if (userAgent.indexOf("firefox") > -1) { var specialKeysArray = Object.keys(specialKeys); var specialKeysLength = specialKeysArray.length; return function(keyCode) { for (var i = 0; i < specialKeysLength; i++) { if (specialKeys[specialKeysArray[i]] == keyCode) { return true; } } }; } return function(keyCode) { return false; }; } function toXhrErrorData(xhr, status, error) { return { xhr, status, error }; } function rectangle(left, top, width, height) { return { left, top, width, height, right: function() { return left + width; }, bottom: function() { return top + height; }, union: function(other) { var newLeft = Math.min(left, other.left); var newTop = Math.min(top, other.top); var newWidth = Math.max(this.right(), other.right()) - newLeft; var newHeight = Math.max(this.bottom(), other.bottom()) - newTop; return rectangle( newLeft, newTop, newWidth, newHeight ); } }; } function generateGuidString() { return "xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g, function(c) { var r = Math.random() * 16 | 0; var v = c == "x" ? r : r & 3 | 8; return v.toString(16); }); } function trim(s, charlist) { return rTrim(lTrim(s, charlist), charlist); } function replaceAll(str, find, replace) { return str.replace(new RegExp(find, "g"), replace); } function lTrim(s, charlist) { if (charlist === void 0) { charlist = "s"; } return s.replace(new RegExp("^[" + charlist + "]+"), ""); } function rTrim(s, charlist) { if (charlist === void 0) { charlist = "s"; } return s.replace(new RegExp("[" + charlist + "]+$"), ""); } function stringFormat(template, data) { var isArray2 = Array.isArray(data); return template.replace(stringFormatRegExp, function($0, $1) { return data[isArray2 ? parseInt($1) : $1]; }); } function escapeHtml(str) { return $("<div>").text(str).html(); } function tryParseInt(value) { if (/^(\-|\+)?([0-9]+)$/.test(value)) { return Number(value); } return NaN; } function tryParseFloat(value) { if (/^(\-|\+)?([0-9]+(\.[0-9]+)?)$/.test(value)) { return Number(value); } return NaN; } function parseToLocalDate(date) { if (date instanceof Date) return date; var isUtc = /Z|[\+\-]\d\d:?\d\d/i.test(date); if (!isUtc) { date += "Z"; } return new Date(date); } function adjustTimezone(date) { return new Date( Date.UTC( date.getFullYear(), date.getMonth(), date.getDate(), date.getHours(), date.getMinutes(), date.getSeconds(), date.getMilliseconds() ) ); } function unadjustTimezone(date) { return new Date( date.getUTCFullYear(), date.getUTCMonth(), date.getUTCDate(), date.getUTCHours(), date.getUTCMinutes(), date.getUTCSeconds(), date.getUTCMilliseconds() ); } function areEqual(v1, v2) { if (v1 instanceof Date && v2 instanceof Date) { if (v1.getTime() !== v2.getTime()) { return false; } } else if (v1 !== v2) { return false; } return true; } function reportSourcesAreEqual(rs1, rs2) { if (rs1 && rs2 && rs1.report === rs2.report) { var params1String = ""; if (rs1.parameters) { params1String = JSON.stringify(rs1.parameters); } var params2String = ""; if (rs2.parameters) { params2String = JSON.stringify(rs2.parameters); } return params1String === params2String; } return false; } function areEqualArrays(array1, array2) { if (array1 === null) { if (array2 !== null) { return false; } return true; } if (array2 === null) { return false; } if (array1.length !== array2.length) { return false; } for (var j = array1.length - 1; j >= 0; j--) { if (!areEqual(array1[j], array2[j])) { return false; } } return true; } function isSvgSupported() { var matches = /Version\/(\d+.\d+.\d+) Safari/.exec(navigator.userAgent); if (matches && matches.length > 1) { var version = parseFloat(matches[1]); return version >= 6; } return true; } function isInternalServerError(error) { if (error) { return replaceAll(error, " ", "").toLowerCase() === "internalservererror"; } return false; } function isSystemArgumentException(xhr) { var exceptionShortName = "ArgumentException"; var exceptionInstance = getExceptionInstance(xhr); return isExceptionInstanceOfType(exceptionInstance, exceptionShortName, "System." + exceptionShortName); } function isInvalidClientException(xhr) { var exceptionShortName = "InvalidClientException"; var exceptionInstance = getExceptionInstance(xhr); return isExceptionInstanceOfType(exceptionInstance, exceptionShortName, "Telerik.Reporting.Services.Engine." + exceptionShortName); } function isApplicationException(xhr) { return isApplicationExceptionInstance(getExceptionInstance(xhr)); } function isApplicationExceptionInstance(exception) { var exceptionShortName = "DrawingFactoryUnavailableException"; return isExceptionInstanceOfType(exception, exceptionShortName, "Telerik.Drawing.Contract." + exceptionShortName); } function isExceptionOfType(xhr, exceptionType) { return isExceptionInstanceOfType(getExceptionInstance(xhr), exceptionType, exceptionType); } function isExceptionInstanceOfType(exceptionInstance, exceptionTypeShortName, exceptionTypeFullName) { return exceptionInstance && exceptionInstance.exceptionType && exceptionTypeNamesMatch(exceptionInstance.exceptionType, exceptionTypeShortName, exceptionTypeFullName); } function exceptionTypeNamesMatch(instanceTypeName, exceptionTypeShortName, exceptionTypeFullName) { return instanceTypeName && (instanceTypeName === exceptionTypeFullName || instanceTypeName.endsWith(exceptionTypeShortName)); } function parseJSON(json) { try { return JSON.parse( json, function(key, value) { if (key && value) { var firstChar = key.charAt(0); if (firstChar === firstChar.toUpperCase()) { var newPropertyName = firstChar.toLowerCase() + key.slice(1); this[newPropertyName] = value; } } return value; } ); } catch (e) { return null; } } function getExceptionInstance(xhr) { if (!xhr || !xhr.responseText) { return false; } return parseJSON(xhr.responseText); } function extend() { var copy; var name; var options; var target; var i = 0; var length = arguments.length; target = length > 1 ? arguments[i++] || {} : {}; for (; i < length; i++) { if ((options = arguments[i]) != null) { for (name in options) { target[name]; copy = options[name]; if (target === copy) { continue; } if (copy !== void 0) { target[name] = copy; } } } } return target; } function each(obj, callback) { var length; var i = 0; if (isArray(obj)) { length = obj.length; for (; i < length; i++) { if (callback.call(obj[i], i, obj[i]) === false) { break; } } } else { for (i in obj) { if (callback.call(obj[i], i, obj[i]) === false) { break; } } } return obj; } function selector() { return document.querySelectorAll(arguments[0]); } function isArray(obj) { if (Array.isArray(obj)) return true; var length = Boolean(obj) && "length" in obj && obj.length; if (typeof length === "number") { return true; } return false; } function loadScriptWithCallback(src, done, version) { var js = document.createElement("script"); js.src = src; js.onload = function() { done(version); }; js.onerror = function() { logError(new Error("Failed to load script " + src)); }; document.head.appendChild(js); } function loadScript(url) { var ajaxOptions = { dataType: "script", cache: true }; return $ajax(url, ajaxOptions); } function filterUniqueLastOccurrence(array) { function onlyLastUnique(value, index, self) { return self.lastIndexOf(value) === index; } return array.filter(onlyLastUnique); } function logError(error) { var console = window.console; if (console && console.error) { console.error(error); } } function findElement(selectorChain) { if (selectorChain.constructor != Array) { selectorChain = [selectorChain]; } var $area = $(selectorChain[0]); for (var i = 1; i < selectorChain.length; i++) { $area = $area.find(selectorChain[i]); } return $area; } function toRgbColor(hexColor) { if (hexColor && hexColor.length < 6) { var index = 1; var hexParts = hexColor.split(""); if (hexParts[0] !== "#") { index = 0; } for (index; index < hexParts.length; index++) { hexParts[index] = hexParts[index] + hexParts[index]; } hexColor = hexParts.join(""); } var result = /^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(hexColor); return result ? parseInt(result[1], 16) + ", " + parseInt(result[2], 16) + ", " + parseInt(result[3], 16) : null; } function isRgbColor(color) { if (!color) { return false; } return color.indexOf(",") > -1 ? true : false; } function getColorAlphaValue(color) { if (color.toLowerCase() === "transparent") { return 0; } if (!isRgbColor(color)) { return 1; } if (color.indexOf("#") !== -1) { color = toRgbColor(color); } var colorComponents = color.split(",").map(function(c) { return c.trim(); }); var alpha = colorComponents.length === 4 ? parseFloat((parseFloat(colorComponents[3].replace(/[()]/g, "")) / 255).toFixed(2)) : 1; return alpha; } function $ajax(url, ajaxSettings) { return new Promise(function(resolve, reject) { $.ajax(url, ajaxSettings).done(function(data) { return resolve(data); }).fail(function(xhr, status, error) { reject(toXhrErrorData(xhr, status, error)); }); }); } function type(obj) { return Object.prototype.toString.call(obj).slice(8, -1); } function isEqual(a, b) { if (a === b) { return true; } if (a !== a && b !== b) { return true; } if (a !== a && b === b || a === a && b !== b) { return false; } const typeA = type(a); const typeB = type(b); if (typeA !== typeB) { return false; } if (typeA === "Array") { if (a.length !== b.length) { return false; } const length = a.length; for (let i = 0; i < length; i++) { if (!isEqual(a[i], b[i])) { return false; } } return true; } if (typeA === "Object") { const keysA = Object.keys(a); const keysB = Object.keys(b); if (keysA.length !== keysB.length) { return false; } const length = keysA.length; for (let i = 0; i < length; i++) { const key = keysA[i]; if (!isEqual(a[key], b[key])) { return false; } } return true; } if (typeA === "Date") { return a.getTime() === b.getTime(); } return false; } var utils = /*#__PURE__*/Object.freeze({ __proto__: null, isSpecialKey: isSpecialKey, rectangle: rectangle, generateGuidString: generateGuidString, trim: trim, replaceAll: replaceAll, lTrim: lTrim, rTrim: rTrim, stringFormat: stringFormat, escapeHtml: escapeHtml, tryParseInt: tryParseInt, tryParseFloat: tryParseFloat, parseToLocalDate: parseToLocalDate, adjustTimezone: adjustTimezone, unadjustTimezone: unadjustTimezone, areEqual: areEqual, reportSourcesAreEqual: reportSourcesAreEqual, areEqualArrays: areEqualArrays, isSvgSupported: isSvgSupported, isInternalServerError: isInternalServerError, isSystemArgumentException: isSystemArgumentException, isInvalidClientException: isInvalidClientException, isApplicationException: isApplicationException, isApplicationExceptionInstance: isApplicationExceptionInstance, isExceptionOfType: isExceptionOfType, exceptionTypeNamesMatch: exceptionTypeNamesMatch, parseJSON: parseJSON, getExceptionInstance: getExceptionInstance, extend: extend, each: each, selector: selector, isArray: isArray, loadScriptWithCallback: loadScriptWithCallback, loadScript: loadScript, filterUniqueLastOccurrence: filterUniqueLastOccurrence, logError: logError, findElement: findElement, toRgbColor: toRgbColor, isRgbColor: isRgbColor, getColorAlphaValue: getColorAlphaValue, $ajax: $ajax, type: type, isEqual: isEqual }); function toPixels(value) { return parseInt(value, 10) || 0; } function getMargins(dom) { var $target = $(dom); return { left: toPixels($target.css("marginLeft")), right: toPixels($target.css("marginRight")), top: toPixels($target.css("marginTop")), bottom: toPixels($target.css("marginBottom")) }; } function getPadding(dom) { var $target = $(dom); return { left: toPixels($target.css("paddingLeft")), right: toPixels($target.css("paddingRight")), top: toPixels($target.css("paddingTop")), bottom: toPixels($target.css("paddingBottom")) }; } function getBorderWidth(dom) { var $target = $(dom); return { left: toPixels($target.css("borderLeftWidth")), right: toPixels($target.css("borderRightWidth")), top: toPixels($target.css("borderTopWidth")), bottom: toPixels($target.css("borderBottomWidth")) }; } function scale(dom, scaleX, scaleY, originX, originY) { scaleX = scaleX || 1; scaleY = scaleY || 1; originX = originX || 0; originY = originY || 0; var scale2 = stringFormat("scale({0}, {1})", [scaleX, scaleY]); var origin = stringFormat("{0} {1}", [originX, originY]); $(dom).css("transform", scale2).css("transform-origin", origin); } var domUtils = /*#__PURE__*/Object.freeze({ __proto__: null, getMargins: getMargins, getPadding: getPadding, getBorderWidth: getBorderWidth, scale: scale }); var _a; var sr$1 = { // warning and error string resources controllerNotInitialized: "Controller is not initialized.", noReportInstance: "No report instance.", missingTemplate: "!obsolete resource!", noReport: "No report.", noReportDocument: "No report document.", missingOrInvalidParameter: "There are missing or invalid parameter values. Please input valid data for the following parameters:\n", invalidParameter: "Please input a valid value.", invalidDateTimeValue: "Please input a valid date.", parameterIsEmpty: "Parameter value cannot be empty.", cannotValidateType: "Cannot validate parameter of type {type}.", loadingFormats: "Loading...", loadingReport: "Loading report...", preparingDownload: "Preparing document to download. Please wait...", preparingPrint: "Preparing document to print. Please wait...", errorLoadingTemplates: "Error loading the report viewer's templates. (trvTemplateUrl = '{0}').", errorServiceUrl: "Cannot access the Reporting REST service. (serviceUrl = '{0}'). Make sure the service address is correct and enable CORS if needed. (https://enable-cors.org)", errorServiceVersion: "The version of the Report Viewer '{1}' does not match the version of the Reporting REST Service '{0}'. Please make sure both are running same version.", loadingReportPagesInProgress: "{0} pages loaded so far...", loadedReportPagesComplete: "Done. Total {0} pages loaded.", noPageToDisplay: "No page to display.", errorDeletingReportInstance: "Error deleting report instance: '{0}'.", errorRegisteringViewer: "Error registering the viewer with the service.", noServiceClient: "No serviceClient has been specified for this controller.", errorRegisteringClientInstance: "Error registering client instance.", errorCreatingReportInstance: "Error creating report instance (Report = '{0}').", errorCreatingReportDocument: "Error creating report document (Report = '{0}'; Format = '{1}').", unableToGetReportParameters: "Unable to get report parameters.", errorObtainingAuthenticationToken: "Error obtaining authentication token.", clientExpired: "Click 'Refresh' to restore client session.", promisesChainStopError: "Error shown. Throwing promises chain stop error.", renderingCanceled: "Report processing was canceled.", tryReportPreview: "The report may now be previewed.", // viewer template string resources parameterEditorSelectNone: "clear selection", parameterEditorSelectAll: "select all", parametersAreaPreviewButton: "Preview", menuNavigateBackwardText: "Navigate Backward", menuNavigateBackwardTitle: "Navigate Backward", menuNavigateForwardText: "Navigate Forward", menuNavigateForwardTitle: "Navigate Forward", menuStopRenderingText: "Stop Rendering", menuStopRenderingTitle: "Stop Rendering", menuRefreshText: "Refresh", menuRefreshTitle: "Refresh", menuFirstPageText: "First Page", menuFirstPageTitle: "First Page", menuLastPageText: "Last Page", menuLastPageTitle: "Last Page", menuPreviousPageTitle: "Previous Page", menuNextPageTitle: "Next Page", menuPageNumberTitle: "Page Number Selector", menuDocumentMapTitle: "Toggle Document Map", menuParametersAreaTitle: "Toggle Parameters Area", menuZoomInTitle: "Zoom In", menuZoomOutTitle: "Zoom Out", menuPageStateTitle: "Toggle FullPage/PageWidth", menuPrintText: "Print...", menuContinuousScrollText: "Toggle Continuous Scrolling", menuSendMailText: "Send an email", menuPrintTitle: "Print", menuContinuousScrollTitle: "Toggle Continuous Scrolling", menuSendMailTitle: "Send an email", menuExportText: "Export", menuExportTitle: "Export", menuPrintPreviewText: "Toggle Print Preview", menuPrintPreviewTitle: "Toggle Print Preview", menuSearchText: "Search", menuSearchTitle: "Toggle Search", menuSideMenuTitle: "Toggle Side Menu", sendEmailFromLabel: "From:", sendEmailToLabel: "To:", sendEmailCCLabel: "CC:", sendEmailSubjectLabel: "Subject:", sendEmailFormatLabel: "Format:", sendEmailSendLabel: "Send", sendEmailCancelLabel: "Cancel", // accessibility string resources ariaLabelPageNumberSelector: "Page number selector. Showing page {0} of {1}.", ariaLabelPageNumberEditor: "Page number editor", ariaLabelExpandable: "Expandable", ariaLabelSelected: "Selected", ariaLabelParameter: "parameter", ariaLabelErrorMessage: "Error message", ariaLabelParameterInfo: "Contains {0} options", ariaLabelMultiSelect: "Multiselect", ariaLabelMultiValue: "Multivalue", ariaLabelSingleValue: "Single value", ariaLabelParameterDateTime: "DateTime", ariaLabelParameterString: "String", ariaLabelParameterNumerical: "Numerical", ariaLabelParameterBoolean: "Boolean", ariaLabelParametersAreaPreviewButton: "Preview the report", ariaLabelMainMenu: "Main menu", ariaLabelCompactMenu: "Compact menu", ariaLabelSideMenu: "Side menu", ariaLabelDocumentMap: "Document map area", ariaLabelDocumentMapSplitter: "Document map area splitbar.", ariaLabelParametersAreaSplitter: "Parameters area splitbar.", ariaLabelPagesArea: "Report contents area", ariaLabelSearchDialogArea: "Search area", ariaLabelSendEmailDialogArea: "Send email area", ariaLabelSearchDialogStop: "Stop search", ariaLabelSearchDialogOptions: "Search options", ariaLabelSearchDialogNavigateUp: "Navigate up", ariaLabelSearchDialogNavigateDown: "Navigate down", ariaLabelSearchDialogMatchCase: "Match case", ariaLabelSearchDialogMatchWholeWord: "Match whole word", ariaLabelSearchDialogUseRegex: "Use regex", ariaLabelMenuNavigateBackward: "Navigate backward", ariaLabelMenuNavigateForward: "Navigate forward", ariaLabelMenuStopRendering: "Stop rendering", ariaLabelMenuRefresh: "Refresh", ariaLabelMenuFirstPage: "First page", ariaLabelMenuLastPage: "Last page", ariaLabelMenuPreviousPage: "Previous page", ariaLabelMenuNextPage: "Next page", ariaLabelMenuPageNumber: "Page number selector", ariaLabelMenuDocumentMap: "Toggle document map", ariaLabelMenuParametersArea: "Toggle parameters area", ariaLabelMenuZoomIn: "Zoom in", ariaLabelMenuZoomOut: "Zoom out", ariaLabelMenuPageState: "Toggle FullPage/PageWidth", ariaLabelMenuPrint: "Print", ariaLabelMenuContinuousScroll: "Continuous scrolling", ariaLabelMenuSendMail: "Send an email", ariaLabelMenuExport: "Export", ariaLabelMenuPrintPreview: "Toggle print preview", ariaLabelMenuSearch: "Search in report contents", ariaLabelMenuSideMenu: "Toggle side menu", ariaLabelSendEmailFrom: "From email address", ariaLabelSendEmailTo: "Recipient email address", ariaLabelSendEmailCC: "Carbon Copy email address", ariaLabelSendEmailSubject: "Email subject:", ariaLabelSendEmailFormat: "Report format:", ariaLabelSendEmailSend: "Send email", ariaLabelSendEmailCancel: "Cancel sending email", // search dialog resources searchDialogTitle: "Search in report contents", searchDialogSearchInProgress: "searching...", searchDialogNoResultsLabel: "No results", searchDialogResultsFormatLabel: "Result {0} of {1}", searchDialogStopTitle: "Stop Search", searchDialogNavigateUpTitle: "Navigate Up", searchDialogNavigateDownTitle: "Navigate Down", searchDialogMatchCaseTitle: "Match Case", searchDialogMatchWholeWordTitle: "Match Whole Word", searchDialogUseRegexTitle: "Use Regex", searchDialogCaptionText: "Find", searchDialogPageText: "page", // Send Email dialog resources sendEmailDialogTitle: "Send Email", sendEmailValidationEmailRequired: "Email field is required", sendEmailValidationEmailFormat: "Email format is not valid", sendEmailValidationSingleEmail: "The field accepts a single email address only", sendEmailValidationFormatRequired: "Format field is required", errorSendingDocument: "Error sending report document (Report = '{0}')." }; window.telerikReportViewer || (window.telerikReportViewer = {}); (_a = window.telerikReportViewer).sr || (_a.sr = sr$1); var sr = sr || {}; const userResources = (window.telerikReportViewer || {}).sr || {}; const stringResources = $.extend({}, sr, userResources); var defaultOptions$7 = {}; function Accessibility(options) { var controller; var pageInitialized = false; var areas; var lastArea; var keyMap = { CONFIRM_KEY: 13, // C CONTENT_AREA_KEY: 67, // D DOCUMENT_MAP_AREA_KEY: 68, // M MENU_AREA_KEY: 77, // P PARAMETERS_AREA_KEY: 80 }; options = $.extend({}, defaultOptions$7, options); controller = options.controller; if (!controller) { throw "No controller (telerikReporting.ReportViewerController) has been specified."; } controller.reportLoadComplete(function() { setAccessibilityUI(); var content = findContentArea(); if (content.length > 0) { content.focus(); } }).pageReady(function(event, page) { initPage(page); pageInitialized = true; }).error(function(e, message) { focusOnErrorMessage(); window.setTimeout(setAccessibilityUI, 500); }); controller.updateUI(function(e) { if (pageInitialized) { setPageSelector(); decorateMenuItems(); } }); function setAccessibilityUI() { if (!areas) { initAreas(); $(document.body).off("keydown", processKeyDown); $(document.body).on("keydown", processKeyDown); } } function focusOnErrorMessage() { var $errMsg = $("div.trv-pages-area div.trv-error-message"); if ($errMsg.length === 0) { return; } $errMsg.attr("tabIndex", 0); $errMsg.focus(); } function initPage(page) { if (!page) { return; } setAccessibilityUI(); var area = areas[keyMap.CONTENT_AREA_KEY]; setContentAreaKeyDown(area); } function setPageSelector() { var pagers = document.querySelectorAll(".trv-report-pager"); var pageNumber = controller.getCurrentPageNumber(); var pageCount = controller.getPageCount(); pagers.forEach((pager) => { pager.setAttribute("aria-label", stringFormat(stringResources.ariaLabelPageNumberSelector, [pageNumber, pageCount])); var pageInputs = pager.querySelectorAll("input[data-role=telerik_ReportViewer_PageNumberInput]"); pageInputs.forEach((input) => { input.setAttribute("aria-label", stringResources.ariaLabelPageNumberEditor); }); }); } function initAreas() { areas = {}; areas[keyMap.DOCUMENT_MAP_AREA_KEY] = findDocumentMapArea(); areas[keyMap.MENU_AREA_KEY] = findMenuArea(); areas[keyMap.CONTENT_AREA_KEY] = findContentArea(); var parametersArea = findParametersArea(); if (parametersArea) { areas[keyMap.PARAMETERS_AREA_KEY] = parametersArea; setParameterEditorsKeyDown(parametersArea); } } function findContentArea() { return $("div[data-role=telerik_ReportViewer_PagesArea]"); } function findDocumentMapArea() { return $("div[data-role=telerik_ReportViewer_DocumentMapArea] div[data-role=treeview]"); } function findMenuArea() { return $("ul[data-role=telerik_ReportViewer_MainMenu]"); } function findParametersArea() { return $("div[data-role=telerik_ReportViewer_ParametersArea] div.trv-parameters-area-content"); } function processKeyDown(event) { if (!areas) { return; } if (!(event.altKey && event.ctrlKey)) { return; } var currentArea = areas[event.which]; if (!currentArea) { return; } if (!IsAreaContainerVisible(currentArea.parent())) { return; } var className = "k-focus"; if (lastArea) { lastArea.removeClass(className); } currentArea.addClass(className); currentArea.focus(); lastArea = currentArea; event.preventDefault(); } function setParameterEditorsKeyDown(parametersAreaContent) { if (parametersAreaContent.length === 0) { return; } var $paramsArea = parametersAreaContent.parent("div[data-role=telerik_ReportViewer_ParametersArea]"); if (!IsAreaContainerVisible($paramsArea)) { return; } Array.from(parametersAreaContent.children()).forEach((child) => { $(child).on("keydown", (event) => { if (event.which == keyMap.CONFIRM_KEY) { var paramsButton = $paramsArea.find("button.trv-parameters-area-preview-button"); paramsButton.focus(); event.preventDefault(); } }); }); } function IsAreaContainerVisible(container) { return container && !(container.hasClass("k-collapsed") || container.hasClass("trv-hidden")); } function setContentAreaKeyDown(contentArea) { if (!contentArea) { return; } var actions = contentArea.find("div [data-reporting-action]"); if (!actions.length > 0) { return; } Array.from(actions).forEach((action) => { var $action = $(action); $action.on("keydown", (event) => { if (event.which == keyMap.CONFIRM_KEY) { $action.trigger("click"); } }); }); } function decorateMenuItems() { var menuAreas = areas[keyMap.MENU_AREA_KEY]; if (!menuAreas) { return; } Array.from(menuAreas).forEach((menu) => { var $menu = $(menu); var menuItems = $menu.children("li.k-item"); Array.from(menuItems).forEach((menuItem) => { var $menuItem = $(menuItem); if (!$menuItem.hasClass("trv-report-pager")) { var ariaLabel = $menuItem.attr("aria-label"); var expandableSr = stringFormat(". {0}", [stringResources.ariaLabelExpandable]); var expandable = $menuItem.find("ul").length > 0 && ariaLabel.indexOf(expandableSr) < 0 ? expandableSr : ""; var selectedSr = stringFormat(". {0}", [stringResources.ariaLabelSelected]); var selected = $menuItem.hasClass("k-selected") && ariaLabel.indexOf(selectedSr) < 0 ? selectedSr : ""; var label = ariaLabel + expandable + selected; $menuItem.attr("aria-label", label); if ($menuItem.hasClass("k-disabled")) { $menuItem.attr("aria-disabled", "true"); } else { $menuItem.removeAttr("aria-disabled"); } } }); }); } function setKeyMap(keyMapValues) { keyMap = keyMapValues; areas = void 0; } function getKeyMap() { return keyMap; } return { getKeyMap, setKeyMap }; } const GlobalSettings = { viewerInstances: [] }; class Binder { static bind($element, ...args) { const commands = args[0].commands; const viewerOptions = args[1]; Binder.attachCommands($element, commands, viewerOptions); var plugins = $element.find('[data-role^="telerik_ReportViewer_"]'); Array.from(plugins).forEach((element) => { var $element2 = $(element); var fn = $.fn[$element2.attr("data-role")]; if (typeof fn === "function") { fn.apply($element2, args); } }); } static attachCommands($element, commands, viewerOptions) { var elementSelector = '[data-command^="telerik_ReportViewer_"]'; var customElementSelector = "[data-target-report-viewer]" + elementSelector; $element.on("click", elementSelector, commandHandler); if (!GlobalSettings.CommandHandlerAttached) { $(document.body).on("click", customElementSelector, customCommandHandler); GlobalSettings.CommandHandlerAttached = true; } Object.entries(commands).forEach(([key, command]) => { attachCommand(key, command, viewerOptions, $element); }); function commandHandler(event) { var prefixedDataCommand = $(this).attr("data-command"); if (prefixedDataCommand) { var dataCommand = prefixedDataCommand.substring("telerik_ReportViewer_".length); var cmd = commands[dataCommand]; if (cmd && cmd.enabled()) { cmd.exec($(this).attr("data-command-parameter")); } event.preventDefault(); } } function customCommandHandler(event) { var $this = $(this); var prefixedDataCommand = $this.attr("data-command"); var reportViewerTarget = $this.attr("data-target-report-viewer"); if (prefixedDataCommand && reportViewerTarget) { var dataCommand = prefixedDataCommand.substring("telerik_ReportViewer_".length); var reportViewer = $(reportViewerTarget).data("telerik_ReportViewer"); var cmd = reportViewer.commands[dataCommand]; if (cmd.enabled()) { cmd.exec($(this).attr("data-command-parameter")); } event.preventDefault(); } } } } function attachCommand(dataCommand, cmd, viewerOptions, $element) { if (cmd) { var elementSelector = '[data-command="telerik_ReportViewer_' + dataCommand + '"]'; var customElementSelector = '[data-target-report-viewer="' + viewerOptions.selector + '"]' + elementSelector; var $defaultElement = $element.find(elementSelector); var $customElement = $(customElementSelector); $(cmd).on("enabledChanged", function(event) { (cmd.enabled() ? $.fn.removeClass : $.fn.addClass).call($defaultElement.parent("li"), "k-disabled"); (cmd.enabled() ? $.fn.removeClass : $.fn.addClass).call($customElement, viewerOptions.disabledButtonClass); }).on("checkedChanged", function(event) { var defaultTarget = $defaultElement.parent("li"); (cmd.checked() ? $.fn.addClass : $.fn.removeClass).call(defaultTarget, getSelectedClassName(defaultTarget)); (cmd.checked() ? $.fn.addClass : $.fn.removeClass).call($customElement, viewerOptions.checkedButtonClass); }); } } function getSelectedClassName($element) { return $element.hasClass("trv-menu-toggleable") ? "k-selected !k-bg-primary" : "k-selected"; } const ViewModes = { INTERACTIVE: "INTERACTIVE", PRINT_PREVIEW: "PRINT_PREVIEW" }; const PrintModes = { AUTO_SELECT: "AUTO_SELECT", FORCE_PDF_PLUGIN: "FORCE_PDF_PLUGIN", FORCE_PDF_FILE: "FORCE_PDF_FILE" }; const PageModes = { SINGLE_PAGE: "SINGLE_PAGE", CONTINUOUS_SCROLL: "CONTINUOUS_SCROLL" }; const ScaleModes = { FIT_PAGE_WIDTH: "FIT_PAGE_WIDTH", FIT_PAGE: "FIT_PAGE", SPECIFIC: "SPECIFIC" }; const ParameterTypes = { INTEGER: "System.Int64", FLOAT: "System.Double", STRING: "System.String", DATETIME: "System.DateTime", BOOLEAN: "System.Boolean" }; const ParameterEditorTypes = { COMBO_BOX: "COMBO_BOX", LIST_VIEW: "LIST_VIEW" }; const ParametersAreaPositions = { RIGHT: "RIGHT", LEFT: "LEFT", TOP: "TOP", BOTTOM: "BOTTOM" }; const DocumentMapAreaPositions = { RIGHT: "RIGHT", LEFT: "LEFT" }; function Command(execCallback) { var enabledState = true; var checkedState = false; var cmd = { enabled: function(state) { if (arguments.length === 0) { return enabledState; } var newState = Boolean(state); enabledState = newState; $(this).trigger("enabledChanged"); return cmd; }, checked: function(state) { if (arguments.length === 0) { return checkedState; } var newState = Boolean(state); checkedState = newState; $(this).trigger("checkedChanged"); return cmd; }, exec: execCallback }; return cmd; } var scaleTransitionMap = {}; scaleTransitionMap[ScaleModes.FIT_PAGE] = { scaleMode: ScaleModes.FIT_PAGE_WIDTH }; scaleTransitionMap[ScaleModes.FIT_PAGE_WIDTH] = { scaleMode: ScaleModes.SPECIFIC, scale: 1 }; scaleTransitionMap[ScaleModes.SPECIFIC] = { scaleMode: ScaleModes.FIT_PAGE }; var scaleValues = [0.1, 0.25, 0.5, 0.75, 1, 1.5, 2, 4, 8]; function CommandSet(options) { var controller = options.controller; if (!controller) { throw "No options.controller."; } var historyManager = options.history; if (!historyManager) { throw "No options.history."; } function getDocumentMapVisible() { var args = {}; controller.getDocumentMapState(args); return Boolean(args.visible); } function getParametersAreaVisible() { var args = {}; controller.getParametersAreaState(args); return Boolean(args.visible); } function getSideMenuVisible() { var args = {}; controller.getSideMenuVisible(args); return Boolean(args.visible); } function getSearchDialogVisible() { var args = {}; controller.getSearchDialogState(args); return Boolean(args.visible); } function getSendEmailDialogVisible() { var args = {}; controller.getSendEmailDialogState(args); return Boolean(args.visible); } return { "historyBack": new Command(function() { historyManager.back(); }), "historyForward": new Command(function() { historyManager.forward(); }), "stopRendering": new Command(function() { controller.stopRendering(); }), "goToPrevPage": new Command(function() { controller.navigateToPage(controller.getCurrentPageNumber() - 1); }), "goToNextPage": new Command(function() { controller.navigateToPage(controller.getCurrentPageNumber() + 1); }), "goToFirstPage": new Command(function() { controller.navigateToPage(1); }), "goToLastPage": new Command(function() { controller.navigateToPage(controller.getPageCount()); }), "goToPage": new Command(function(pageNumber) { if (!isNaN(pageNumber)) { var pageCount = controller.getPageCount(); if (pageNumber > pageCount) { pageNumber = pageCount; } else if (pageNumber < 1) { pageNumber = 1; } controller.navigateToPage(pageNumber); return pageNumber; } }), "refresh": new Command( function() { controller.refreshReport(true); } ), "export": new Command(function(format) { if (format) { controller.exportReport(format); } }), "print": new Command(function() { controller.printReport(); }), "pageMode": new Command(function() { controller.setPageMode( controller.getPageMode() === PageModes.SINGLE_PAGE ? PageModes.CONTINUOUS_SCROLL : PageModes.SINGLE_PAGE ); }), "togglePrintPreview": new Command(function() { controller.setViewMode( controller.getViewMode() === ViewModes.PRINT_PREVIEW ? ViewModes.INTERACTIVE : ViewModes.PRINT_PREVIEW ); }), "toggleDocumentMap": new Command(function() { controller.setDocumentMapVisible({ visible: !getDocumentMapVisible() }); }), "toggleParametersArea": new Command(function() { controller.setParametersAreaVisible({ visible: !getParametersAreaVisible() }); }), "zoom": new Command(function(scale) { controller.setScale(scale); }), "zoomIn": new Command(function() { zoom(1); }), "zoomOut": new Command(function() { zoom(-1); }), "toggleSideMenu": new Command(function() { controller.setSideMenuVisible({ visible: !getSideMenuVisible() }); }), "toggleZoomMode": new Command(function(e) { var scale = controller.getScale(); var scaleMode = controller.getScaleMode(); controller.setScale(scaleTransitionMap[scaleMode].scale || scale); controller.setScaleMode(scaleTransitionMap[scaleMode].scaleMode); }), "toggleSearchDialog": new Command(function() { controller.setSearchDialogVisible({ visible: !getSearchDialogVisible() }); }), "toggleSendEmailDialog": new Command(function() { controller.setSendEmailDialogVisible({ visible: !getSendEmailDialogVisible() }); }) }; function zoom(step) { controller.setScale(getZoomScale(controller.getScale(), step)); } function getZoomScale(scale, steps) { var pos = -1; var length = scaleValues.length; for (var i = 0; i < length; i++) { var value = scaleValues[i]; if (scale < value) { pos = i - 0.5; break; } if (scale === value) { pos = i; break; } } pos = pos + steps; if (steps >= 0) { pos = Math.round(pos - 0.49); } else { pos = Math.round(pos + 0.49); } if (pos < 0) { pos = 0; } else if (pos > length - 1) { pos = length - 1; } return scaleValues[pos]; } } function IEHelper() { function getPdfPlugin() { var classIds = ["AcroPDF.PDF.1", "PDF.PdfCtrl.6", "PDF.PdfCtrl.5"]; var plugin = null; $.each(classIds, function(index, classId) { try { plugin = new ActiveXObject(classId); if (plugin) { return false; } } catch (ex) { } }); return plugin; } return { hasPdfPlugin: function() { return getPdfPlugin() !== null; } }; } function FirefoxHelper() { function hasPdfPlugin2() { var matches = /Firefox[\/\s](\d+\.\d+)/.exec(navigator.userAgent); if (null !== matches && matches.length > 1) { var version = parseFloat(matches[1]); if (version >= 19) { return false; } } var pdfPlugins = navigator.mimeTypes["application/pdf"]; var pdfPlugin = pdfPlugins !== null ? pdfPlugins.enabledPlugin : null; if (pdfPlugin) { var description = pdfPlugin.description; return description.indexOf("Adobe") !== -1 && (description.indexOf("Version") === -1 || parseFloat(description.split("Version")[1]) >= 6); } return false; } return { hasPdfPlugin: function() { return hasPdfPlugin2(); } }; } function ChromiumHelper(defaultPlugin) { function hasPdfPlugin2() { var navPlugins = navigator.plugins; var found = false; $.each(navPlugins, function(key, value) { if (navPlugins[key].name === defaultPlugin || navPlugins[key].name === "Adobe Acrobat") { found = true; return false; } }); return found; } return { hasPdfPlugin: function() { return hasPdfPlugin2(); } }; } function OtherBrowserHelper() { return { hasPdfPlugin: function() { return false; } }; } function selectBrowserHelper() { if (window.navigator) { var userAgent = window.navigator.userAgent.toLowerCase(); if (userAgent.indexOf("msie") > -1 || userAgent.indexOf("mozilla") > -1 && userAgent.indexOf("trident") > -1) return IEHelper(); else if (userAgent.indexOf("firefox") > -1) return FirefoxHelper(); else if (userAgent.indexOf("edg/") > -1) return ChromiumHelper("Microsoft Edge PDF Plugin"); else if (userAgent.indexOf("chrome") > -1) return ChromiumHelper("Chrome PDF Viewer"); else if (userAgent.indexOf("safari") > -1) return ChromiumHelper("WebKit built-in PDF"); return OtherBrowserHelper(); } return null; } var helper = selectBrowserHelper(); var hasPdfPlugin = helper ? helper.hasPdfPlugin() : false; var PrintManager = function() { var iframe; function printDesktop(src) { var sameOriginUrl = null; if (!iframe) { iframe = document.createElement("iframe"); iframe.style.display = "none"; iframe.onload = function() { try { iframe.contentDocument.execCommand("print", true, null); } catch (e) { logError(e); } finally { if (sameOriginUrl) { (window.URL || window.webkitURL).revokeObjectURL(sameOriginUrl); } } }; } if (isSameOriginUrl(src) && useMsBlobHandling()) { iframe.src = src; document.body.appendChild(iframe); return; } var request = new XMLHttpRequest(); request.open("GET", src, true); request.responseType = "arraybuffer"; request.onload = function(e) { if (this.status === 200) { var localPdf = new Blob([this.response], { type: "application/pdf" }); if (useMsBlobHandling()) { window.navigator.msSaveOrOpenBlob(localPdf); } else { sameOriginUrl = (window.URL || window.webkitURL).createObjectURL(localPdf); iframe.src = sameOriginUrl; document.body.appendChild(iframe); } } else { console.log("Could not retrieve remote PDF document."); } }; request.send(); } function useMsBlobHandling() { return window.navigator && window.navigator.msSaveOrOpenBlob; } function isSameOriginUrl(url) { var location = window.location; var anchor = document.createElement("a"); anchor.setAttribute("href", url); if (anchor.host == "") { anchor.href = anchor.href; } return location.hostname === anchor.hostname && location.protocol === anchor.protocol && location.port === anchor.port; } function printMobile(src) { window.open(src, "_self"); } var isMobile = /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent); var printFunc = isMobile ? printMobile : printDesktop; return { print: function(src) { printFunc(src); }, getDirectPrintState: function() { return hasPdfPlugin; } }; }(); var ParameterValidators = function() { var validators = {}; function validateParameter(parameter, value, validatorFunc, compareFunc) { var values = [].concat(value).map(function(value1) { return checkAvailableValues(parameter, validatorFunc(value1), compareFunc); }); if (parameter.multivalue) { if (value == null || value.length == 0) { if (parameter.allowNull) { return value; } throw stringResources.invalidParameter; } return values; } return values[0]; } function isNull(parameter, value) { return parameter.allowNull && -1 != [null, "", void 0].indexOf(value); } function checkAvailableValues(parameter, value, compareFunc) { if (parameter.availableValues) { var found = Array.from(parameter.availableValues).some(function(av) { return compareFunc(value, av.value); }); if (!found) { if (parameter.allowNull && !value) { return value; } throw stringResources.invalidParameter; }