diff --git a/frontend-js/src/main/js/gui/leftPanel/Footer.js b/frontend-js/src/main/js/gui/leftPanel/Footer.js index a673ff93ad312c61b6be76d528c7e8cc7f9f5ea3..7b4c454803140f38699bafe81ecb9dc9a3e59368 100644 --- a/frontend-js/src/main/js/gui/leftPanel/Footer.js +++ b/frontend-js/src/main/js/gui/leftPanel/Footer.js @@ -87,7 +87,7 @@ Footer.prototype.removeLoadMessage = function(message) { if (index > -1) { self._loadMessages.splice(index, 1); } else { - logger.warn("Removing message that is not there: " + message); + logger.debug("Removing message that is not there: " + message); } }; diff --git a/frontend-js/src/main/js/map/AbstractCustomMap.js b/frontend-js/src/main/js/map/AbstractCustomMap.js index be0c59335fbf9e55a9035eafc80d9027fe4aeb7b..f4d354085a74fef80b2d835275f8e666fe5da162 100644 --- a/frontend-js/src/main/js/map/AbstractCustomMap.js +++ b/frontend-js/src/main/js/map/AbstractCustomMap.js @@ -604,7 +604,13 @@ AbstractCustomMap.prototype._showSelectedLayout = function(layoutId, index, leng return Promise.each(layoutReactions, function(layoutReaction) { if (layoutReaction.getModelId() === self.getId()) { return self.getModel().getReactionById(layoutReaction.getId()).then(function(reactionData) { - var reactionOverlay = new ReactionOverlay(layoutReaction, reactionData, self, length === 1); + var reactionOverlay = new ReactionOverlay({ + layoutReaction : layoutReaction, + reaction : reactionData, + map : self, + customized : (length === 1) + }); + self.selectedLayoutOverlays[layoutId].push(reactionOverlay); reactionOverlay.show(); }); diff --git a/frontend-js/src/main/js/map/CustomMap.js b/frontend-js/src/main/js/map/CustomMap.js index 366dc77be1d9d56af8886afb4754b4d2a3aa5900..32c404ef813e45233670fb63ef0aa6a28d88970f 100644 --- a/frontend-js/src/main/js/map/CustomMap.js +++ b/frontend-js/src/main/js/map/CustomMap.js @@ -1260,12 +1260,17 @@ CustomMap.prototype.createMapOverlayForDbOverlay = function(element, dbOverlay) return Promise.resolve(null); } - var model = self.getSubmapById(element.getModelId()); + var map = self.getSubmapById(element.getModelId()); if (element.getType() === "ALIAS") { return AliasOverlay.createFromIdentifiedElement(element, self); } else if (element.getType() === "REACTION") { - return model.getModel().getReactionById(element.getId()).then(function(reactionData) { - var reactionOverlay = new ReactionOverlay(null, reactionData, model, false, element.getId()); + return map.getModel().getReactionById(element.getId()).then(function(reactionData) { + var reactionOverlay = new ReactionOverlay({ + reaction : reactionData, + map : map, + customized : false, + color : element.getColor(), + }); reactionOverlay.show(); return reactionOverlay; }); diff --git a/frontend-js/src/main/js/map/overlay/ReactionOverlay.js b/frontend-js/src/main/js/map/overlay/ReactionOverlay.js index 4993c514edcefe9cf55fac236303503a32026d91..b679c379dbca2377b7e052fc4580e546bc483d6d 100644 --- a/frontend-js/src/main/js/map/overlay/ReactionOverlay.js +++ b/frontend-js/src/main/js/map/overlay/ReactionOverlay.js @@ -21,33 +21,33 @@ var AbstractOverlayElement = require('./AbstractOverlayElement'); * visualized (there is no simple way to visualize few layouts at the * same time) */ -function ReactionOverlay(layoutReaction, reactionData, map, customized) { +function ReactionOverlay(params) { // call super constructor AbstractOverlayElement.call(); - this.color = "#FF0000"; + var overlayData = params.layoutReaction; + this.setReactionData(params.reaction); + this.setCustomMap(params.map); + this.setCustomized(params.customized); + + var color = params.color; this.width = 5.0; // list of google map objects associated with the reaction (like lines) this.gmapObjects = []; - // AbstractCustomMap where the reaction is located - this.customMap = map; - // original data - this.reactionData = reactionData; - - this.customized = customized; - if (reactionData === undefined || reactionData === null) { - throw new Error("Reaction must be defined"); - } - - if (layoutReaction !== undefined && layoutReaction !== null) { - if (layoutReaction.width) { - this.width = layoutReaction.width; + if (overlayData !== undefined && overlayData !== null) { + if (overlayData.width) { + this.width = overlayData.width; } - this.color = functions.overlayToColor(layoutReaction); + color = functions.overlayToColor(overlayData); + } + if (color === undefined) { + color = "#FF0000"; } + + this.setColor(color); + this.init(); - this._id = reactionData.getId(); } ReactionOverlay.prototype = Object.create(AbstractOverlayElement.prototype); @@ -84,6 +84,10 @@ ReactionOverlay.prototype.setMap = function(map) { } }; +ReactionOverlay.prototype.setCustomized = function(customized) { + this.customized = customized; +}; + /** * Returns <code>true</code> if the object is visible on the map, * <code>false</code> otherwise. @@ -269,12 +273,24 @@ ReactionOverlay.prototype.getCustomMap = function() { return this.customMap; }; +ReactionOverlay.prototype.setCustomMap = function(customMap) { + this.customMap = customMap; +}; + ReactionOverlay.prototype.getId = function() { return this._id; }; +ReactionOverlay.prototype.setId = function(id) { + this._id = id; +}; + ReactionOverlay.prototype.setReactionData = function(value) { + if (value === undefined || value === null) { + throw new Error("Reaction must be defined"); + } this.reactionData = value; + this.setId(value.getId()); }; ReactionOverlay.prototype.isCustomized = function() { diff --git a/frontend-js/src/main/js/minerva.js b/frontend-js/src/main/js/minerva.js index 5efacbec7526c7e265faca8645997860a2241d6d..78d17fc44152d1ef04825feebe187e3b343003d6 100644 --- a/frontend-js/src/main/js/minerva.js +++ b/frontend-js/src/main/js/minerva.js @@ -167,25 +167,28 @@ function getOverlayByName(customMap, dbOverlayName) { } } -function createMarkerElements(params, type, isDefault) { +function createMarkerElements(options) { + var params = options.params; + var filteredType = options.filteredType; + var isDefault = options.isDefault; + var markerElements = []; if (params.length === undefined) { params = [ params ]; } for (var i = 0; i < params.length; i++) { var elementParam = params[i]; - if (elementParam.options === undefined && isDefault) { + if (elementParam.type === undefined && isDefault) { markerElements.push({ element : elementParam.element, }); - } else if (elementParam.options.type === type) { + } else if (elementParam.type === filteredType) { markerElements.push({ element : elementParam.element, - icon : elementParam.options.icon, - color : elementParam.options.color, + options : elementParam.options, }); - } else if (elementParam.options.type !== "ICON" && elementParam.options.type !== "SURFACE") { - throw new Error("Unknown type:" + elementParam.options.type); + } else if (elementParam.type !== "ICON" && elementParam.type !== "SURFACE") { + throw new Error("Unknown type:" + elementParam.type); } } return markerElements; @@ -235,15 +238,31 @@ function createResult(customMap) { }); }, showBioEntity : function(params) { - var iconElements = createMarkerElements(params, "ICON", true); - var surfaceElements = createMarkerElements(params, "SURFACE", false); + var iconElements = createMarkerElements({ + params : params, + filteredType : "ICON", + isDefault : true + }); + var surfaceElements = createMarkerElements({ + params : params, + filteredType : "SURFACE", + isDefault : false + }); return customMap.getOverlayByName("user").addMarker(iconElements).then(function() { return customMap.getOverlayByName("user").addSurface(surfaceElements); }); }, hideBioEntity : function(params) { - var iconElements = createMarkerElements(params, "ICON", true); - var surfaceElements = createMarkerElements(params, "SURFACE", false); + var iconElements = createMarkerElements({ + params : params, + filteredType : "ICON", + isDefault : true + }); + var surfaceElements = createMarkerElements({ + params : params, + filteredType : "SURFACE", + isDefault : false + }); return customMap.getOverlayByName("user").removeMarker(iconElements).then(function() { return customMap.getOverlayByName("user").removeSurface(surfaceElements); }); @@ -330,8 +349,8 @@ function create(params) { params.getElement().innerHTML = "<div style='vertical-align:middle;display:table-cell;text-align: center'>" + "<img src='resources/images/icons/ajax-loader.gif'/>" + "</div>"; - //make sure that we are logged in - return ServerConnector.getToken().then(function(){ + // make sure that we are logged in + return ServerConnector.getToken().then(function() { return getProject(params); }).then(function(project) { params.setProject(project); diff --git a/frontend-js/src/test/js/map/overlay/ReactionOverlay-test.js b/frontend-js/src/test/js/map/overlay/ReactionOverlay-test.js index 09e2e7664f4641a96710fc738b918712a6c85981..b653166955e8e165332451430a46da2d09cb2210 100644 --- a/frontend-js/src/test/js/map/overlay/ReactionOverlay-test.js +++ b/frontend-js/src/test/js/map/overlay/ReactionOverlay-test.js @@ -20,7 +20,12 @@ describe('ReactionOverlay', function() { var reaction = helper.createReaction(map); var layoutReaction = helper.createLayoutReaction(reaction); - var reactionOverlay = new ReactionOverlay(layoutReaction, reaction, map, false); + var reactionOverlay = new ReactionOverlay({ + overlayData : layoutReaction, + reaction : reaction, + map : map, + customized : false + }); assert.ok(reactionOverlay.gmapObjects); assert.ok(reactionOverlay.getColor()); @@ -37,7 +42,12 @@ describe('ReactionOverlay', function() { var reaction = helper.createReaction(map); var layoutReaction = helper.createLayoutReaction(reaction); - var reactionOverlay = new ReactionOverlay(layoutReaction, reaction, map, false); + var reactionOverlay = new ReactionOverlay({ + overlayData : layoutReaction, + reaction : reaction, + map : map, + customized : false + }); reactionOverlay.hide(); assert.equal(reactionOverlay.isShown(), false); diff --git a/frontend-js/src/test/js/minerva-test.js b/frontend-js/src/test/js/minerva-test.js index 989a7079ea881f764b0d9907b6d5581e0aa2623c..45cc2be4320167df928f201754910e613f4fcde3 100644 --- a/frontend-js/src/test/js/minerva-test.js +++ b/frontend-js/src/test/js/minerva-test.js @@ -281,9 +281,7 @@ describe('minerva global', function() { modelId : 15781, type : "ALIAS" }, - options : { - type : "ICON" - } + type : "ICON", }; var elementToShow2 = { @@ -292,8 +290,9 @@ describe('minerva global', function() { modelId : 15781, type : "ALIAS" }, + type : "SURFACE", options : { - type : "SURFACE" + color : "#FF0000", } }; return minerva.create(options).then(function(result) {