diff --git a/frontend-js/src/main/js/ConfigurationType.js b/frontend-js/src/main/js/ConfigurationType.js index 59a19146abf9109dc49dc3f7e0cd038277c22e93..bb4cc6b271011fa703430c6cf220b7a0980d8dc6 100644 --- a/frontend-js/src/main/js/ConfigurationType.js +++ b/frontend-js/src/main/js/ConfigurationType.js @@ -1,6 +1,7 @@ "use strict"; var ConfigurationType = { + DEFAULT_MAP : "DEFAULT_MAP", GOOGLE_ANALYTICS_IDENTIFIER : "GOOGLE_ANALYTICS_IDENTIFIER", LOGO_IMG : "LOGO_IMG", @@ -8,6 +9,7 @@ var ConfigurationType = { LEGEND_FILES : "LEGEND_FILES", MIN_COLOR_VAL : "MIN_COLOR_VAL", MAX_COLOR_VAL : "MAX_COLOR_VAL", + USER_MANUAL_FILE : "USER_MANUAL_FILE", }; module.exports = ConfigurationType; diff --git a/frontend-js/src/main/js/gui/Footer.js b/frontend-js/src/main/js/gui/Footer.js new file mode 100644 index 0000000000000000000000000000000000000000..c4da8a5433f16c221c22a6d206263f1e1c8eccbd --- /dev/null +++ b/frontend-js/src/main/js/gui/Footer.js @@ -0,0 +1,59 @@ +"use strict"; + +/* exported logger */ + +var AbstractGuiElement = require('./AbstractGuiElement'); +var ConfigurationType = require('../ConfigurationType'); +var Functions = require('../Functions'); + +var logger = require('../logger'); + +function Footer(params) { + AbstractGuiElement.call(this, params); + var self = this; + + self._createFooterGui(); +} + +Footer.prototype = Object.create(AbstractGuiElement.prototype); +Footer.prototype.constructor = Footer; + +Footer.prototype._createFooterGui = function(message) { + var self = this; + var projectId = self.getMap().getProject().getProjectId(); + + var link = Functions.createElement({ + type : "a", + name : "footerAdminLink", + style : "float:left; padding-left:25px;", + content : '<i class="fa fa-lock" style="font-size:17px"></i> ADMIN', + }); + link.href = ServerConnector.getServerBaseUrl() + "/admin.xhtml?id=" + projectId; + self.getElement().appendChild(link); + + link = Functions.createElement({ + type : "a", + name : "footerManualLink", + style : "float:left; padding-left:25px;", + content : '<i class="fa fa-lock" style="font-size:17px"></i> MANUAL', + }); + link.href = "#"; + link.onclick = function() { + return ServerConnector.getConfigurationParam(ConfigurationType.USER_MANUAL_FILE).then(function(manualFileUrl){ + var win = window.open(manualFileUrl, '_user_manual_'); + win.focus(); + }); + } + self.getElement().appendChild(link); + + link = Functions.createElement({ + type : "a", + name : "footerAdminLink", + style : "float:right; padding-right:25px;", + content : 'EXPORT <i class="fa fa-mail-forward" style="font-size:17px"></i>', + }); + link.href = ServerConnector.getServerBaseUrl() + "/export.xhtml?id=" + projectId; + self.getElement().appendChild(link); +}; + +module.exports = Footer; diff --git a/frontend-js/src/test/js/gui/Footer-test.js b/frontend-js/src/test/js/gui/Footer-test.js new file mode 100644 index 0000000000000000000000000000000000000000..935d4bc502f5ac57029b14357af55ebe912b3b67 --- /dev/null +++ b/frontend-js/src/test/js/gui/Footer-test.js @@ -0,0 +1,60 @@ +"use strict"; + +/* exported logger */ + +var Helper = require('../helper'); + +require("../mocha-config.js"); + +var Footer = require('../../../main/js/gui/Footer'); + +var chai = require('chai'); +var assert = chai.assert; +var logger = require('../logger'); + +describe('Footer', function() { + + var helper; + before(function() { + helper = new Helper(); + }); + + it('constructor', function() { + var div = helper.createSearchTab(); + + var map = helper.createCustomMap(); + + new Footer({ + element : div, + customMap : map + }); + + assert.equal(logger.getWarnings().length, 0); + + }); + + it('link clicks', function() { + var div = helper.createSearchTab(); + + var map = helper.createCustomMap(); + + new Footer({ + element : div, + customMap : map + }); + + var promises = []; + $("a", div).each(function(index, element) { + promises.push(new Promise(function(resolve, reject) { + var fun = element.onclick; + if (fun) { + resolve(fun()); + } else { + resolve(null); + } + }) + )}); + return Promise.all(promises); + }); + +}); diff --git a/frontend-js/src/test/js/mocha-config.js b/frontend-js/src/test/js/mocha-config.js index 00fea2820eb4afaa1d4857f9fe458e7f561b0ff9..91c6b7e1d43c1591fb9adcaa8bb20b4b812937af 100644 --- a/frontend-js/src/test/js/mocha-config.js +++ b/frontend-js/src/test/js/mocha-config.js @@ -16,7 +16,16 @@ global.$ = require('jQuery'); global.jQuery = $; global.window.$ = $; +//additions to jsdom implementations: global.Option = window.Option; +window.open = function(){ + var result = {}; + result.focus = function(){ + + }; + return result; +} +//--- require('jquery-ui-dist/jquery-ui.js');