-
Piotr Gawron authoredPiotr Gawron authored
Code owners
Assign users and groups as approvers for specific file changes. Learn more.
GuiConnector.js 5.13 KiB
"use strict";
var logger = require('./logger');
var Functions = require('./Functions');
var SecurityError = require('./SecurityError');
var GuiMessageError = require('./gui/GuiMessageError');
/**
* This static global object contains set of functions that returns/set data in
* the Gui (html).
*/
var GuiConnector = {};
/**
* X coordinate of the mouse in a browser.
*/
GuiConnector.xPos = 0;
/**
* Y coordinate of the mouse in a browser.
*/
GuiConnector.yPos = 0;
/**
* List of GET params passed via url.
*/
GuiConnector.init = function() {
var self = this;
if (!String.prototype.endsWith) {
String.prototype.endsWith = function(pattern) {
var d = this.length - pattern.length;
return d >= 0 && this.lastIndexOf(pattern) === d;
};
}
var isIE = /* @cc_on!@ */false || !!document.documentMode;
if (isIE) {
alert("This webpage works well with Chrome, Firefox and Safari.");
}
// bootstrap tab initialization
$("ul.nav-tabs a").click(function(e) {
e.preventDefault();
$(this).tab('show');
});
self.getParams = [];
// find GuiConnector.getParams
window.location.search.replace(/\??(?:([^=]+)=([^&]*)&?)/g, function() {
function decode(s) {
return decodeURIComponent(s.split("+").join(" "));
}
GuiConnector.getParams[decode(arguments[1])] = decode(arguments[2]);
});
// forser browser to update mouse coordinates whenever mouse move
jQuery(document).ready(function() {
$(document).mousemove(function(e) {
GuiConnector.updateMouseCoordinates(e.pageX, e.pageY);
});
});
if (self._windowResizeEvents === undefined) {
self._windowResizeEvents = [];
if (window.onresize !== null && window.onresize !== undefined) {
self.addWindowResizeEvent(window.onresize);
}
window.onresize = function() {
for (var i = 0; i < self._windowResizeEvents.length; i++) {
self._windowResizeEvents[i]();
}
};
}
};
GuiConnector.addWindowResizeEvent = function(handler) {
this._windowResizeEvents.push(handler);
};
/**
* Returns name of the file with LCSB logo.
*
* @param bigLogo
* {@link Boolean} value determining if we want to have big logo or
* small one
*/
GuiConnector.getLcsbLogoImg = function(bigLogo) {
if (bigLogo) {
return 'lcsb_logo_mid.png';
} else {
return 'lcsb_logo.png';
}
};
/**
* Returns name of the file with image that should be presented when we are
* wainting for data to be loaded.
*/
GuiConnector.getLoadingImg = function() {
return "icons/ajax-loader.gif";
};
/**
* Returns home directory for images in the application.
*/
GuiConnector.getImgPrefix = function() {
return "resources/images/";
};
/**
* Updates coordinates of the mouse in the browser.
*/
GuiConnector.updateMouseCoordinates = function(x, y) {
this.xPos = x;
this.yPos = y;
};
GuiConnector.showProcessing = function(messageText) {
var self = GuiConnector;
if (self._processingDialog === undefined) {
self._processingDialog = document.createElement("div");
self._errorDialogContent = document.createElement("div");
self._processingDialog.appendChild(self._errorDialogContent);
document.body.appendChild(self._processingDialog);
$(self._processingDialog).dialog({
modal : true,
title : "PROCESSING",
width : "150px",
closeOnEscape : false,
dialogClass: 'minerva-no-close',
});
}
if (messageText === undefined) {
messageText = "PROCESSING";
}
var messageImg = Functions.createElement({
type : "img",
src : 'resources/images/icons/ajax-loader.gif',
});
self._errorDialogContent.innerHTML = "";
self._errorDialogContent.style.textAlign = "center";
self._errorDialogContent.appendChild(messageImg);
$(self._processingDialog).dialog("option", "title", messageText);
$(self._processingDialog).dialog("open");
};
GuiConnector.hideProcessing = function() {
var self = GuiConnector;
$(self._processingDialog).dialog("close");
};
GuiConnector.alert = function(error) {
var self = GuiConnector;
logger.error(error);
if (self._errorDialog === undefined) {
self._errorDialog = document.createElement("div");
self._errorDialogContent = document.createElement("div");
self._errorDialog.appendChild(self._errorDialogContent);
document.body.appendChild(self._errorDialog);
$(self._errorDialog).dialog({
classes : {
"ui-dialog" : "ui-state-error"
},
modal : true,
title : "ERROR"
}).siblings('.ui-dialog-titlebar').css("background", "red");
}
var message = error;
if (message instanceof SecurityError) {
message = error.message + "<p>Please <a href=\"login.xhtml\">login</a> to access this resuorce</p>";
} else if (message instanceof GuiMessageError) {
message = error.message;
} else if (message instanceof Error) {
message = "Unexpected error occured:<p>" + error.message + "</p>";
}
self._errorDialogContent.innerHTML = message;
$(self._errorDialog).dialog("open");
};
module.exports = GuiConnector;