@progress/telerik-react-report-viewer
Version:
Progress® Telerik® Report Viewer for React
1,408 lines (1,393 loc) • 345 kB
JavaScript
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;
}