diff --git a/frontend-js/package.json b/frontend-js/package.json index fb763594ffc833684eec66bee236a7010f94cb02..31599e759c8b10395e9e7f4bbaff4109817b9842 100644 --- a/frontend-js/package.json +++ b/frontend-js/package.json @@ -4,9 +4,13 @@ "description": "frontentd for minerva google maps interface", "main": "minerva.js", "scripts": { - "build": "rm -rf dist & rmdir /q /s dist & mkdir dist & browserify --debug --standalone minerva src/main/js/minerva.js | exorcist dist/minerva.js.map > dist/minerva.js ", + "build:css": "cleancss -o dist/minerva.css src/main/css/*.css node_modules/dual-listbox/dist/*.css ", + "build:js": "browserify --debug --standalone minerva src/main/js/minerva.js | exorcist dist/minerva.js.map > dist/minerva.js ", "//": "rm -rf dist & rmdir /q /s dist & mkdir dist & browserify --debug --standalone minerva src/main/js/minerva.js | exorcist dist/minerva.js.map > dist/minerva.js & uglifyjs --compress --mangle --in-source-map dist/minerva.js.map --source-map-include-sources --source-map dist/minerva.min.js.map -o dist/minerva.min.js dist/minerva.js", - "build-deploy": "rm -rf dist & rmdir /q /s dist & mkdir dist & browserify --debug --standalone minerva src/main/js/minerva.js | exorcist dist/minerva.js.map > dist/minerva.js & copy /Y \"dist\\*\" \"C:/Program Files/apache-tomcat-7.0.72/webapps/minerva/resources/js\" ", + "build-deploy": "npm run build && npm run deploy", + "build": "npm run clean && npm run build:css && npm run build:js", + "clean": "rm -rf dist & rmdir /q /s dist & mkdir dist", + "deploy": "copy /Y \"dist\\*.js*\" \"C:/Program Files/apache-tomcat-7.0.72/webapps/minerva/resources/js\" && copy /Y \"dist\\*.css\" \"C:/Program Files/apache-tomcat-7.0.72/webapps/minerva/resources/css\" ", "lint": "jshint src/.", "test": "istanbul cover node_modules/mocha/bin/_mocha -- --recursive src/test/js" }, @@ -17,6 +21,7 @@ "bootstrap": "^3.3.7", "browserify": "^13.1.1", "chai": "^3.5.0", + "clean-css-cli": "^4.1.6", "datatables.net": "^1.10.13", "exorcist": "^0.4.0", "file-url": "^2.0.0", diff --git a/web/src/main/webapp/resources/css/global.css b/frontend-js/src/main/css/global.css similarity index 100% rename from web/src/main/webapp/resources/css/global.css rename to frontend-js/src/main/css/global.css diff --git a/frontend-js/src/main/js/gui/export/ElementExportPanel.js b/frontend-js/src/main/js/gui/export/ElementExportPanel.js index e8e7fee8f104b5cb609122210af6fa200ecafc62..9f649ecaf72e7c50789c73baa80687e9abe07270 100644 --- a/frontend-js/src/main/js/gui/export/ElementExportPanel.js +++ b/frontend-js/src/main/js/gui/export/ElementExportPanel.js @@ -4,6 +4,7 @@ var Panel = require('../Panel'); +var DualListbox = require('dual-listbox').DualListbox; var GuiConnector = require('../../GuiConnector'); var logger = require('../../logger'); var Functions = require('../../Functions'); @@ -29,10 +30,18 @@ ElementExportPanel.prototype._createGui = function() { ElementExportPanel.prototype.init = function() { var self = this; var element = self.getElement(); - return ServerConnector.getConfiguration().then(function(configuration) { + var configuration; + return ServerConnector.getConfiguration().then(function(result) { + configuration = result; var typeDiv = self._createSelectTypeDiv(configuration.getElementTypes()); element.appendChild(typeDiv); element.appendChild(self._createSelectColumnDiv()); + return ServerConnector.getProjectStatistics(self.getProject().getProjectId()); + }).then(function(statistics) { + var miriamDiv = self._createMiriamTypeDiv(statistics); + element.appendChild(miriamDiv); + new DualListbox(".minerva-multi-select"); + $(window).trigger('resize'); }); } @@ -66,6 +75,33 @@ ElementExportPanel.prototype._createSelectTypeDiv = function(elementTypes) { return typeDiv; } +ElementExportPanel.prototype._createMiriamTypeDiv = function(statistics) { + var typeDiv = Functions.createElement({ + type : "div", + name : "miriamSelectDiv", + }); + + var annotations = statistics.getElementAnnotations(); + + var selectElement = Functions.createElement({ + type : "select", + className : "minerva-multi-select" + }); + typeDiv.appendChild(selectElement); + + for (var i = 0; i < annotations.length; i++) { + var miriamType = annotations[i].miriamType; + var count = annotations[i].count; + + var option = new Option(); + option.value = miriamType.getName(); + option.text = miriamType.getName() + " " + count; + selectElement.appendChild(option); + } + logger.debug(DualListbox); + return typeDiv; +}; + ElementExportPanel.prototype._createSelectColumnDiv = function() { var self = this; var columnDiv = Functions.createElement({ diff --git a/frontend-js/src/main/js/map/data/ProjectStatistics.js b/frontend-js/src/main/js/map/data/ProjectStatistics.js index f564b27d3ec2b00a987791cc1b149a09e4b3732d..53e10ae5a5c8e1d172be63df88456e26572018f6 100644 --- a/frontend-js/src/main/js/map/data/ProjectStatistics.js +++ b/frontend-js/src/main/js/map/data/ProjectStatistics.js @@ -8,8 +8,6 @@ function ProjectStatistics(data, configuration) { // call super constructor ObjectWithListeners.call(this); - logger.debug(data); - this.setReactionAnnotations(data.reactionAnnotations, configuration); this.setElementAnnotations(data.elementAnnotations, configuration); } @@ -45,4 +43,8 @@ ProjectStatistics.prototype.setElementAnnotations = function(elementAnnotations, } }; +ProjectStatistics.prototype.getElementAnnotations = function() { + return this._elementAnnotations; +}; + module.exports = ProjectStatistics; diff --git a/frontend-js/src/main/js/minerva.js b/frontend-js/src/main/js/minerva.js index f493a638f4cd545b611441341c611917fcd160b8..f277b51de57127eb9fea2e50897b6e764902101d 100644 --- a/frontend-js/src/main/js/minerva.js +++ b/frontend-js/src/main/js/minerva.js @@ -585,6 +585,7 @@ var minerva = { createExport : createExport, ServerConnector : OriginalServerConnector, GuiConnector : OriginalGuiConnector, + DualListbox : require('dual-listbox').DualListbox, }; module.exports = minerva; diff --git a/frontend-js/src/test/js/mocha-config.js b/frontend-js/src/test/js/mocha-config.js index fb5d5db5011b06efbc23c2758ce600f22a05597f..cd7a02fc0ccdd7b4b7e9c9552ecef55e27518d8e 100644 --- a/frontend-js/src/test/js/mocha-config.js +++ b/frontend-js/src/test/js/mocha-config.js @@ -24,6 +24,17 @@ global.window.$ = $; // additions to jsdom implementations: global.Option = window.Option; + +var originalCreateElement = document.createElement; +document.createElement = function(arg) { + var result = originalCreateElement.call(this, arg); + //woraround for: https://github.com/tmpvar/jsdom/issues/961 + if ("li" === arg) { + result.dataset = []; + } + return result; +}; + window.open = function() { var result = {}; result.focus = function() { diff --git a/web/src/main/webapp/WEB-INF/components/admin/header.xhtml b/web/src/main/webapp/WEB-INF/components/admin/header.xhtml index 7361ab78ee149d75a73cf319fc0b98a6bd62164e..3f4bf95ce2fd7a0df3814e6ac9ac802808ca0da0 100644 --- a/web/src/main/webapp/WEB-INF/components/admin/header.xhtml +++ b/web/src/main/webapp/WEB-INF/components/admin/header.xhtml @@ -4,7 +4,7 @@ xmlns:ui="http://java.sun.com/jsf/facelets" xmlns:p="http://primefaces.org/ui"> - <h:outputStylesheet library="css" name="global.css" /> + <h:outputStylesheet library="css" name="minerva.css" /> <div class="minerva-header"> <a href="#{request.contextPath}/?id=#{mapMB.currentMapId}" class="mainTitle"><i class="fa fa-home" style="font-size:17px"></i> #{mapMB.currentProject.name}</a> diff --git a/web/src/main/webapp/export-new.xhtml b/web/src/main/webapp/export-new.xhtml index 81120e167905084774f44c3c4e426992fcae26db..e84a149b5e2969e49651600830450d5271be382b 100644 --- a/web/src/main/webapp/export-new.xhtml +++ b/web/src/main/webapp/export-new.xhtml @@ -45,7 +45,7 @@ function initMap(){ </h:head> <h:body onload="initMap();" > <h:outputStylesheet library="css" name="style.css"/> -<h:outputStylesheet library="css" name="global.css" /> +<h:outputStylesheet library="css" name="minerva.css" /> <h:outputStylesheet library="css" name="pileup.css"/> <h:outputStylesheet library="css" name="bootstrap.min.css"/> diff --git a/web/src/main/webapp/index.xhtml b/web/src/main/webapp/index.xhtml index ee5341d581deae5af4a8e02902ff9e71c5ceb1f2..f950f192d10f51a8dfaa31c11052bdc16080fdc7 100644 --- a/web/src/main/webapp/index.xhtml +++ b/web/src/main/webapp/index.xhtml @@ -48,7 +48,7 @@ function initMap(){ </h:head> <h:body onload="initMap();" > <h:outputStylesheet library="css" name="style.css"/> -<h:outputStylesheet library="css" name="global.css" /> +<h:outputStylesheet library="css" name="minerva.css" /> <h:outputStylesheet library="css" name="pileup.css"/> <h:outputStylesheet library="css" name="bootstrap.min.css"/>