@progress/telerik-jquery-report-viewer
Version:
Progress® Telerik® Report Viewer for jQuery
139 lines (135 loc) • 4.28 kB
JavaScript
Object.defineProperty(exports, '__esModule', { value: true });
function PerspectiveManager(dom, controller) {
var smallMenu = dom.querySelectorAll ? dom.querySelectorAll(".trv-menu-small")[0] : false;
var perspectives = {
"small": {
documentMapVisible: false,
parametersAreaVisible: false,
onDocumentMapVisibleChanged: function(e, args) {
if (args.visible) {
controller.setParametersAreaVisible({ visible: false });
}
},
onParameterAreaVisibleChanged: function(e, args) {
if (args.visible) {
controller.setDocumentMapVisible({ visible: false });
}
},
onBeforeLoadReport: function() {
controller.setParametersAreaVisible({ visible: false });
controller.setDocumentMapVisible({ visible: false });
},
onNavigateToPage: function() {
controller.setParametersAreaVisible({ visible: false });
controller.setDocumentMapVisible({ visible: false });
}
},
"large": {
documentMapVisible: true,
parametersAreaVisible: true
}
};
var currentPerspective;
function init() {
currentPerspective = getPerspective();
initStateFromController(perspectives["large"]);
}
function setPerspective(beforeApplyState) {
var perspective = getPerspective();
if (perspective !== currentPerspective) {
var oldState = perspectives[currentPerspective];
var newState = perspectives[perspective];
currentPerspective = perspective;
if (beforeApplyState) {
beforeApplyState.call(void 0, oldState, newState);
}
applyState(newState);
}
}
function onDocumentMapVisibleChanged(e, args) {
dispatch("onDocumentMapVisibleChanged", arguments);
}
function onParameterAreaVisibleChanged(e, args) {
dispatch("onParameterAreaVisibleChanged", arguments);
}
function onBeforeLoadReport() {
dispatch("onBeforeLoadReport", arguments);
}
function onNavigateToPage() {
dispatch("onNavigateToPage", arguments);
}
function onReportLoadComplete() {
dispatch("onReportLoadComplete", arguments);
}
function onWindowResize() {
setPerspective(
function(oldState, newState) {
initStateFromController(oldState);
}
);
}
function onCssLoaded() {
setPerspective(null);
}
function dispatch(func, args) {
var activePerspective = perspectives[currentPerspective];
var handler = activePerspective[func];
if (typeof handler === "function") {
handler.apply(activePerspective, args);
}
}
function attach() {
window.addEventListener("resize", onWindowResize);
controller.setDocumentMapVisible(onDocumentMapVisibleChanged);
controller.setParametersAreaVisible(onParameterAreaVisibleChanged);
controller.beforeLoadReport(onBeforeLoadReport);
controller.navigateToPage(onNavigateToPage);
controller.reportLoadComplete(onReportLoadComplete);
controller.cssLoaded(onCssLoaded);
}
function dispose() {
window.removeEventListener("resize", onWindowResize);
}
function getPerspective() {
var windowWidthInEm = $(window).width() / parseFloat($("body").css("font-size"));
var windowMinWidth = 40.5;
return smallMenu && windowWidthInEm <= windowMinWidth ? "small" : "large";
}
function initStateFromController(state) {
state.documentMapVisible = documentMapVisible();
state.parametersAreaVisible = parametersAreaVisible();
}
function applyState(state) {
documentMapVisible(state.documentMapVisible);
parametersAreaVisible(state.parametersAreaVisible);
}
function documentMapVisible() {
if (arguments.length === 0) {
var args1 = {};
controller.getDocumentMapState(args1);
return args1.visible;
}
controller.setDocumentMapVisible({
visible: Boolean(arguments[0])
});
return this;
}
function parametersAreaVisible() {
if (arguments.length === 0) {
var args1 = {};
controller.getParametersAreaState(args1);
return args1.visible;
}
controller.setParametersAreaVisible({
visible: Boolean(arguments[0])
});
return this;
}
init();
return {
attach,
dispose
};
}
exports.PerspectiveManager = PerspectiveManager;
;