diff --git a/frontend-js/src/main/js/map/AbstractCustomMap.js b/frontend-js/src/main/js/map/AbstractCustomMap.js index 56f8556095638ff3dfabc34674263fa64d46c9f3..1ce26116786354b940fa788969cf7725888c63cd 100644 --- a/frontend-js/src/main/js/map/AbstractCustomMap.js +++ b/frontend-js/src/main/js/map/AbstractCustomMap.js @@ -583,24 +583,28 @@ AbstractCustomMap.prototype._showSelectedLayout = function(layoutId, index, leng var layoutAliases; var layoutReactions; - return self.getModel().getLayoutDataById(layoutId).then(function(layout) { + return self.getTopMap().getModel().getLayoutDataById(layoutId).then(function(layout) { layoutAliases = layout.getAliases(); layoutReactions = layout.getReactions(); return Promise.each(layoutAliases,function(layoutAlias){ - return self.getModel().getAliasById(layoutAlias.getId()).then(function(aliasData) { - return AliasOverlay.create(layoutAlias, aliasData, self, startX, endX); - }).then(function(overlay){ - self.selectedLayoutOverlays[layoutId].push(overlay); - }); + if (layoutAlias.getModelId()===self.getId()) { + return self.getModel().getAliasById(layoutAlias.getId()).then(function(aliasData) { + return AliasOverlay.create(layoutAlias, aliasData, self, startX, endX); + }).then(function(overlay){ + self.selectedLayoutOverlays[layoutId].push(overlay); + }); + } }); }).then(function(){ return Promise.each(layoutReactions,function(layoutReaction){ - return self.getModel().getReactionById(layoutReaction.getId()).then(function(reactionData) { - var reactionOverlay = new ReactionOverlay(layoutReaction, reactionData, self, length === 1); - self.selectedLayoutOverlays[layoutId].push(reactionOverlay); - reactionOverlay.show(); - }); + if (layoutReaction.getModelId()===self.getId()) { + return self.getModel().getReactionById(layoutReaction.getId()).then(function(reactionData) { + var reactionOverlay = new ReactionOverlay(layoutReaction, reactionData, self, length === 1); + self.selectedLayoutOverlays[layoutId].push(reactionOverlay); + reactionOverlay.show(); + }); + } }); }).then(function(){ resolve(); diff --git a/frontend-js/src/main/js/map/data/LayoutReaction.js b/frontend-js/src/main/js/map/data/LayoutReaction.js index 18c369ae6db04d543b6a504acc683c76bc9bc8d6..f7cca0fdf303e4d50b5aa2444753360b3c4179ff 100644 --- a/frontend-js/src/main/js/map/data/LayoutReaction.js +++ b/frontend-js/src/main/js/map/data/LayoutReaction.js @@ -8,6 +8,7 @@ */ function LayoutReaction(javaObject) { this.setId(javaObject.idObject); + this.setModelId(javaObject.modelId); this.setWidth(javaObject.width); this.setColor(javaObject.color); this.setReverse(javaObject.reverse); @@ -21,6 +22,14 @@ LayoutReaction.prototype.setId = function(id) { this.id = parseInt(id); }; +LayoutReaction.prototype.getModelId = function() { + return this._modelId; +}; + +LayoutReaction.prototype.setModelId = function(modelId) { + this._modelId = parseInt(modelId); +}; + LayoutReaction.prototype.setWidth = function(width) { this.width = width; }; diff --git a/frontend-js/src/test/js/map/CustomMap-test.js b/frontend-js/src/test/js/map/CustomMap-test.js index 93dd5140e0b31a583bf16a11f1d7bcb854f10ad1..207032f16bee515e44462e09ff469af7df7b2ca2 100644 --- a/frontend-js/src/test/js/map/CustomMap-test.js +++ b/frontend-js/src/test/js/map/CustomMap-test.js @@ -126,23 +126,6 @@ describe('CustomMap', function() { }); }); - it("addSelectedLayout with data download", function() { - var map = helper.createCustomMap(); - var layout = helper.createLayout(); - layout.setId(102); - map.getModel().addLayout(layout); - - return map.addSelectedLayout(layout.getId()).then(function() { - var vLayouts = ServerConnector.getSessionData(map.getProject()).getVisibleOverlays(); - assert.equal(1, vLayouts.length); - assert.equal(layout.getId(), vLayouts[0]); - - var overlays = map.getSelectedLayoutOverlays()[layout.getId()]; - assert.equal(overlays.length, 1); - assert.ok(overlays[0] instanceof AliasOverlay); - }); - }); - it("_showSelectedLayout", function() { var map = helper.createCustomMap(); var alias = helper.createAlias(); @@ -156,10 +139,12 @@ describe('CustomMap', function() { layout.setInitialized(true); var layoutAlias = helper.createLayoutAlias(); layoutAlias.setId(alias.getId()); + layoutAlias.setModelId(map.getId()); layout.addAlias(layoutAlias); var layoutReaction = helper.createLayoutReaction(); layoutReaction.setId(reaction.getId()); + layoutReaction.setModelId(map.getId()); layout.addReaction(layoutReaction); map.getModel().addLayout(layout); @@ -179,6 +164,41 @@ describe('CustomMap', function() { }); }); + + it("addSelectedLayout with submaps", function() { + var projectId = "complex_model_with_submaps"; + helper.setUrl("http://test/?id=" + projectId); + GuiConnector.getParams["id"] = projectId; + return ServerConnector.getProject(projectId).then(function(project) { + var options = helper.createCustomMapOptions(project); + var customMap = new CustomMap(options); + var overlayId = 18083; + + var emptySubmodelId = 16730; + var filledSubmodelId = 16731; + + customMap.openSubmap(emptySubmodelId); + customMap.openSubmap(filledSubmodelId); + + var emptySubmap = customMap.getSubmapById(emptySubmodelId); + var filledSubmap = customMap.getSubmapById(filledSubmodelId); + + return customMap.addSelectedLayout(overlayId).then(function() { + + assert.equal(1, customMap.selectedLayoutOverlays[overlayId].length); + assert.equal(1, filledSubmap.selectedLayoutOverlays[overlayId].length); + assert.equal(0, emptySubmap.selectedLayoutOverlays[overlayId].length); + + // now hide the layout + customMap.hideSelectedLayout(overlayId); + assert.equal(0, customMap.selectedLayoutOverlays[overlayId].length); + assert.equal(0, filledSubmap.selectedLayoutOverlays[overlayId].length); + assert.equal(0, emptySubmap.selectedLayoutOverlays[overlayId].length); + }); + + }); + }); + it("openInfoWindowForAlias", function() { var map = helper.createCustomMap(); var layout = helper.createLayout(); diff --git a/frontend-js/testFiles/apiCalls/overlay/getOverlayById/overlayId=18083&projectId=complex_model_with_submaps&token=MOCK_TOKEN_ID& b/frontend-js/testFiles/apiCalls/overlay/getOverlayById/overlayId=18083&projectId=complex_model_with_submaps&token=MOCK_TOKEN_ID& new file mode 100644 index 0000000000000000000000000000000000000000..bca5c59148a1f0b759d1e25fed28055b8e2fec31 --- /dev/null +++ b/frontend-js/testFiles/apiCalls/overlay/getOverlayById/overlayId=18083&projectId=complex_model_with_submaps&token=MOCK_TOKEN_ID& @@ -0,0 +1 @@ +{"modelId":16728,"name":"C:\\fakepath\\a.txt","description":"","status":"OK","progress":"0.00","directory":"0e6072e4c8d73a05d8bd8ec873761725/.18083","creator":"","inputDataAvailable":"true","idObject":18083} \ No newline at end of file diff --git a/frontend-js/testFiles/apiCalls/overlay/getOverlayElements/overlayId=18083&projectId=complex_model_with_submaps&token=MOCK_TOKEN_ID& b/frontend-js/testFiles/apiCalls/overlay/getOverlayElements/overlayId=18083&projectId=complex_model_with_submaps&token=MOCK_TOKEN_ID& new file mode 100644 index 0000000000000000000000000000000000000000..a2194e211054a9cebc5183e28af5ea8a337d2d35 --- /dev/null +++ b/frontend-js/testFiles/apiCalls/overlay/getOverlayElements/overlayId=18083&projectId=complex_model_with_submaps&token=MOCK_TOKEN_ID& @@ -0,0 +1 @@ +[{"type":"ALIAS","overlayContent":{"value":1.0,"modelId":16728,"idObject":"345331"}},{"type":"ALIAS","overlayContent":{"value":1.0,"modelId":16729,"idObject":"345330"}},{"type":"ALIAS","overlayContent":{"value":1.0,"modelId":16731,"idObject":"345337"}}] \ No newline at end of file diff --git a/frontend-js/testFiles/apiCalls/overlay/getOverlayList/projectId=complex_model_with_submaps&token=MOCK_TOKEN_ID& b/frontend-js/testFiles/apiCalls/overlay/getOverlayList/projectId=complex_model_with_submaps&token=MOCK_TOKEN_ID& new file mode 100644 index 0000000000000000000000000000000000000000..0637a088a01e8ddab3bf3fa98dbe804cbde1a0dc --- /dev/null +++ b/frontend-js/testFiles/apiCalls/overlay/getOverlayList/projectId=complex_model_with_submaps&token=MOCK_TOKEN_ID& @@ -0,0 +1 @@ +[] \ No newline at end of file diff --git a/frontend-js/testFiles/apiCalls/project/getElements/columns=id,bounds,modelId&id=345330,345331,345337&projectId=complex_model_with_submaps&token=MOCK_TOKEN_ID& b/frontend-js/testFiles/apiCalls/project/getElements/columns=id,bounds,modelId&id=345330,345331,345337&projectId=complex_model_with_submaps&token=MOCK_TOKEN_ID& new file mode 100644 index 0000000000000000000000000000000000000000..0534e69e0259a430bb3bd844338b91eccb5fc5a6 --- /dev/null +++ b/frontend-js/testFiles/apiCalls/project/getElements/columns=id,bounds,modelId&id=345330,345331,345337&projectId=complex_model_with_submaps&token=MOCK_TOKEN_ID& @@ -0,0 +1 @@ +[{"modelId":16731,"bounds":{"x":190.0,"y":44.0,"width":80.0,"height":40.0},"id":345337},{"modelId":16729,"bounds":{"x":65.0,"y":64.0,"width":80.0,"height":40.0},"id":345330},{"modelId":16728,"bounds":{"x":59.0,"y":73.0,"width":80.0,"height":40.0},"id":345331}] \ No newline at end of file diff --git a/frontend-js/testFiles/apiCalls/project/getElements/columns=id,bounds,modelId&id=345337&projectId=complex_model_with_submaps&token=MOCK_TOKEN_ID& b/frontend-js/testFiles/apiCalls/project/getElements/columns=id,bounds,modelId&id=345337&projectId=complex_model_with_submaps&token=MOCK_TOKEN_ID& new file mode 100644 index 0000000000000000000000000000000000000000..0845b7dc0ff7356be96c9de63580a817defee6b5 --- /dev/null +++ b/frontend-js/testFiles/apiCalls/project/getElements/columns=id,bounds,modelId&id=345337&projectId=complex_model_with_submaps&token=MOCK_TOKEN_ID& @@ -0,0 +1 @@ +[{"modelId":16731,"bounds":{"x":190.0,"y":44.0,"width":80.0,"height":40.0},"id":345337}] \ No newline at end of file diff --git a/frontend-js/testFiles/apiCalls/project/getMetaData/projectId=complex_model_with_submaps&token=MOCK_TOKEN_ID& b/frontend-js/testFiles/apiCalls/project/getMetaData/projectId=complex_model_with_submaps&token=MOCK_TOKEN_ID& new file mode 100644 index 0000000000000000000000000000000000000000..bb1433fb340137ed9c9a37f0140f17f5a6ea0527 --- /dev/null +++ b/frontend-js/testFiles/apiCalls/project/getMetaData/projectId=complex_model_with_submaps&token=MOCK_TOKEN_ID& @@ -0,0 +1 @@ +{"version":"0","idObject":15763,"name":"UNKNOWN DISEASE MAP","projectId":"complex_model_with_submaps","description":"","map":{"name":"main","idObject":16728,"tileSize":256,"width":515,"height":362,"minZoom":2,"maxZoom":4,"layouts":[{"modelId":16728,"name":"Pathways and compartments","status":"Not available","progress":"0.00","directory":"0e6072e4c8d73a05d8bd8ec873761725/_nested0","creator":"","inputDataAvailable":"false","idObject":14959},{"modelId":16728,"name":"Network","status":"Not available","progress":"0.00","directory":"0e6072e4c8d73a05d8bd8ec873761725/_normal0","creator":"","inputDataAvailable":"false","idObject":14960},{"modelId":16728,"name":"Empty","status":"Not available","progress":"0.00","directory":"0e6072e4c8d73a05d8bd8ec873761725/_empty0","creator":"","inputDataAvailable":"false","idObject":14961},{"modelId":16728,"name":"C:\\fakepath\\a.txt","description":"","status":"OK","progress":"0.00","directory":"0e6072e4c8d73a05d8bd8ec873761725/.18083","creator":"","inputDataAvailable":"true","idObject":18083}],"submodels":[{"name":"s3","idObject":16730,"tileSize":256,"width":421,"height":315,"minZoom":2,"maxZoom":3,"layouts":[{"modelId":16730,"name":"Pathways and compartments","status":"Not available","progress":"0.00","directory":"0e6072e4c8d73a05d8bd8ec873761725/_nested2","creator":"","inputDataAvailable":"false","idObject":14950},{"modelId":16730,"name":"Network","status":"Not available","progress":"0.00","directory":"0e6072e4c8d73a05d8bd8ec873761725/_normal2","creator":"","inputDataAvailable":"false","idObject":14951},{"modelId":16730,"name":"Empty","status":"Not available","progress":"0.00","directory":"0e6072e4c8d73a05d8bd8ec873761725/_empty2","creator":"","inputDataAvailable":"false","idObject":14952}],"submodels":[],"centerLatLng":{"lat":79.19139766235872,"lng":-135.10688836104512},"topLeftLatLng":{"lat":85.05112877980659,"lng":-180.0},"bottomRightLatLng":{"lat":74.06362505154212,"lng":-90.0}},{"name":"s2","idObject":16731,"tileSize":256,"width":451,"height":253,"minZoom":2,"maxZoom":3,"layouts":[{"modelId":16731,"name":"Pathways and compartments","status":"Not available","progress":"0.00","directory":"0e6072e4c8d73a05d8bd8ec873761725/_nested1","creator":"","inputDataAvailable":"false","idObject":14956},{"modelId":16731,"name":"Network","status":"Not available","progress":"0.00","directory":"0e6072e4c8d73a05d8bd8ec873761725/_normal1","creator":"","inputDataAvailable":"false","idObject":14957},{"modelId":16731,"name":"Empty","status":"Not available","progress":"0.00","directory":"0e6072e4c8d73a05d8bd8ec873761725/_empty1","creator":"","inputDataAvailable":"false","idObject":14958}],"submodels":[],"centerLatLng":{"lat":79.19006423440219,"lng":-135.09977827050997},"topLeftLatLng":{"lat":85.05112877980659,"lng":-180.0},"bottomRightLatLng":{"lat":78.0903352323621,"lng":-90.0}},{"name":"s1","idObject":16729,"tileSize":256,"width":571,"height":276,"minZoom":2,"maxZoom":4,"layouts":[{"modelId":16729,"name":"Pathways and compartments","status":"Not available","progress":"0.00","directory":"0e6072e4c8d73a05d8bd8ec873761725/_nested3","creator":"","inputDataAvailable":"false","idObject":14953},{"modelId":16729,"name":"Network","status":"Not available","progress":"0.00","directory":"0e6072e4c8d73a05d8bd8ec873761725/_normal3","creator":"","inputDataAvailable":"false","idObject":14954},{"modelId":16729,"name":"Empty","status":"Not available","progress":"0.00","directory":"0e6072e4c8d73a05d8bd8ec873761725/_empty3","creator":"","inputDataAvailable":"false","idObject":14955}],"submodels":[],"centerLatLng":{"lat":79.18613072613702,"lng":-135.07880910683014},"topLeftLatLng":{"lat":85.05112877980659,"lng":-180.0},"bottomRightLatLng":{"lat":79.44906929997262,"lng":-90.0}}],"centerLatLng":{"lat":79.18773841616675,"lng":-135.0873786407767},"topLeftLatLng":{"lat":85.05112877980659,"lng":-180.0},"bottomRightLatLng":{"lat":75.1456787592211,"lng":-90.0}},"publicationCount":0,"overviewImageViews":[]} \ No newline at end of file