diff --git a/frontend-js/src/main/js/gui/MapContextMenu.js b/frontend-js/src/main/js/gui/MapContextMenu.js index 9aeb8274f61eae0c6671ad4bf309baedb0c428a7..52207e7c18f929745c3cc0312257e55206fd3c0b 100644 --- a/frontend-js/src/main/js/gui/MapContextMenu.js +++ b/frontend-js/src/main/js/gui/MapContextMenu.js @@ -22,7 +22,9 @@ MapContextMenu.prototype._createMapContextMenuGui = function() { self.addOption("Add comment", function() { return self.getMap().openCommentDialog(); }); - self.addOption("Select mode"); + self.addOption("Select mode", function() { + return self.getMap().turnOnOffDrawing(); + }); }; module.exports = MapContextMenu; diff --git a/frontend-js/src/main/js/map/AbstractCustomMap.js b/frontend-js/src/main/js/map/AbstractCustomMap.js index 500caf5a98e3a13478feb0a3a88100afc344cd3a..668bfaadbc9d6898d286a8af389cb94fe3b961f5 100644 --- a/frontend-js/src/main/js/map/AbstractCustomMap.js +++ b/frontend-js/src/main/js/map/AbstractCustomMap.js @@ -25,6 +25,8 @@ function AbstractCustomMap(model, options) { if (model === undefined) { throw Error("Model must be defined"); } + + this.setElement(options.getMapDiv()); this.setModel(model); @@ -959,4 +961,12 @@ AbstractCustomMap.prototype.getBottomRightLatLng = function() { return this.getModel().getBottomRightLatLng(); }; +AbstractCustomMap.prototype.getElement = function() { + return this._element; +}; +AbstractCustomMap.prototype.setElement = function(element) { + this._element= element; +}; + + module.exports = AbstractCustomMap; diff --git a/frontend-js/src/main/js/map/CustomMap.js b/frontend-js/src/main/js/map/CustomMap.js index 5bc690d92fea8fb41f83874554b52f2bbcc97861..e29c9cf1bf091da2d276d319a5b2183b1854472b 100644 --- a/frontend-js/src/main/js/map/CustomMap.js +++ b/frontend-js/src/main/js/map/CustomMap.js @@ -3,6 +3,7 @@ var Promise = require("bluebird"); var logger = require('../logger'); +var Functions = require('../Functions'); var AbstractCustomMap = require('./AbstractCustomMap'); var AbstractDbOverlay = require('./overlay/AbstractDbOverlay'); @@ -1333,7 +1334,9 @@ CustomMap.prototype.openCommentDialog = function() { return ServerConnector.getClosestElementsByCoordinates({modelId:this.getActiveSubmapId(), coordinates:this.getActiveSubmapClickCoordinates()}).then(function(elements){ var commentDialog = self.getCommentDialog(); if (commentDialog===undefined) { - commentDialog = new CommentDialog({element:document.getElementById("feedbackContent"), customMap:self}); + var div = Functions.createElement({type: "div"}); + self.getElement().appendChild(div); + commentDialog = new CommentDialog({element:div, customMap:self}); self.setCommentDialog(commentDialog); } self.setCommentDialog(commentDialog); diff --git a/frontend-js/src/test/js/gui/MapContextMentu-test.js b/frontend-js/src/test/js/gui/MapContextMentu-test.js index f75bf60fbfb9347b40eb45b67697b2efbb8d9f29..f172642dfe01cbe480bbf5264d645f59e36dfa42 100644 --- a/frontend-js/src/test/js/gui/MapContextMentu-test.js +++ b/frontend-js/src/test/js/gui/MapContextMentu-test.js @@ -49,4 +49,24 @@ describe('MapContextMenu', function() { }); }); + it('start select mode', function() { + var map; + return ServerConnector.getProject().then(function(project) { + map = helper.createCustomMap(project); + + var contextMenu = new MapContextMenu({ + element : testDiv, + customMap : map + }); + map.setActiveSubmapId(map.getProject().getModel().getId()); + map.setActiveSubmapClickCoordinates(new google.maps.Point(2, 12)); + + assert.ok(!map.isDrawingOn()); + var handler = $($("a:contains('Select mode')", $(testDiv))[0]).data("handler"); + return handler(); + }).then(function() { + assert.ok(map.isDrawingOn()); + }); + }); + }); diff --git a/frontend-js/src/test/js/mocha-config.js b/frontend-js/src/test/js/mocha-config.js index 3be5a057ec45cdb7c80e3b2d8c45fff69ba8bcbf..30ec3f6f2cdb0df05bd5180e08805cc6696dc995 100644 --- a/frontend-js/src/test/js/mocha-config.js +++ b/frontend-js/src/test/js/mocha-config.js @@ -77,14 +77,9 @@ beforeEach(function() { global.testDiv.id = "test"; document.body.appendChild(testDiv); - global.dialogDiv = document.createElement("div"); - global.dialogDiv.id = "feedbackContent"; - document.body.appendChild(global.dialogDiv); - }); afterEach(function() { document.body.removeChild(global.testDiv); - document.body.removeChild(global.dialogDiv); delete global.testDiv; }); diff --git a/frontend-js/testFiles/apiCalls/project/getClosestElementsByCoordinates/coordinates=2.00,12.00&modelId=15781&projectId=sample&token=MOCK_TOKEN_ID& b/frontend-js/testFiles/apiCalls/project/getClosestElementsByCoordinates/coordinates=2.00,12.00&modelId=15781&projectId=sample&token=MOCK_TOKEN_ID& new file mode 100644 index 0000000000000000000000000000000000000000..74af28b2d648a64715c1d3a1741bdb9e36d6801a --- /dev/null +++ b/frontend-js/testFiles/apiCalls/project/getClosestElementsByCoordinates/coordinates=2.00,12.00&modelId=15781&projectId=sample&token=MOCK_TOKEN_ID& @@ -0,0 +1 @@ +[{"modelId":15781,"id":329173,"type":"ALIAS"},{"modelId":15781,"id":153511,"type":"REACTION"},{"modelId":15781,"id":153510,"type":"REACTION"},{"modelId":15781,"id":329168,"type":"ALIAS"},{"modelId":15781,"id":153519,"type":"REACTION"}] \ No newline at end of file diff --git a/frontend-js/testFiles/apiCalls/project/getElements/columns=&id=329167,329173,329179&projectId=sample&token=MOCK_TOKEN_ID& b/frontend-js/testFiles/apiCalls/project/getElements/columns=&id=329167,329173,329179&projectId=sample&token=MOCK_TOKEN_ID& new file mode 100644 index 0000000000000000000000000000000000000000..d795e98950db159005d1bb009236e0d0df2a3162 --- /dev/null +++ b/frontend-js/testFiles/apiCalls/project/getElements/columns=&id=329167,329173,329179&projectId=sample&token=MOCK_TOKEN_ID& @@ -0,0 +1 @@ +[{"formerSymbols":[],"references":[],"modelId":15781,"synonyms":[],"description":"description of S1\r\nthird line","type":"Protein","name":"s1","bounds":{"x":12.0,"y":6.0,"width":80.0,"height":40.0},"id":329173},{"formerSymbols":[],"references":[],"modelId":15781,"synonyms":[],"description":"","type":"Protein","name":"s2","bounds":{"x":165.0,"y":43.0,"width":80.0,"height":50.0},"id":329179},{"formerSymbols":[],"references":[],"modelId":15781,"synonyms":[],"description":"","type":"Antisense RNA","name":"s6","bounds":{"x":101.0,"y":129.5,"width":90.0,"height":25.0},"id":329167}] \ No newline at end of file diff --git a/frontend-js/testFiles/apiCalls/project/getElements/columns=&id=329167,329179&projectId=sample&token=MOCK_TOKEN_ID& b/frontend-js/testFiles/apiCalls/project/getElements/columns=&id=329167,329179&projectId=sample&token=MOCK_TOKEN_ID& new file mode 100644 index 0000000000000000000000000000000000000000..2b555cf42bb19d4675ca1091285bbd7a17b9a300 --- /dev/null +++ b/frontend-js/testFiles/apiCalls/project/getElements/columns=&id=329167,329179&projectId=sample&token=MOCK_TOKEN_ID& @@ -0,0 +1 @@ +[{"formerSymbols":[],"references":[],"modelId":15781,"synonyms":[],"description":"","type":"Protein","name":"s2","bounds":{"x":165.0,"y":43.0,"width":80.0,"height":50.0},"id":329179},{"formerSymbols":[],"references":[],"modelId":15781,"synonyms":[],"description":"","type":"Antisense RNA","name":"s6","bounds":{"x":101.0,"y":129.5,"width":90.0,"height":25.0},"id":329167}] \ No newline at end of file diff --git a/frontend-js/testFiles/apiCalls/project/getElements/columns=&id=329168,329177&projectId=sample&token=MOCK_TOKEN_ID& b/frontend-js/testFiles/apiCalls/project/getElements/columns=&id=329168,329177&projectId=sample&token=MOCK_TOKEN_ID& new file mode 100644 index 0000000000000000000000000000000000000000..833d9c445d8850998691c33208f748369719e1a2 --- /dev/null +++ b/frontend-js/testFiles/apiCalls/project/getElements/columns=&id=329168,329177&projectId=sample&token=MOCK_TOKEN_ID& @@ -0,0 +1 @@ +[{"formerSymbols":[],"references":[],"modelId":15781,"synonyms":[],"description":"","type":"Drug","name":"s10","bounds":{"x":0.0,"y":186.0,"width":80.0,"height":30.0},"id":329177},{"formerSymbols":[],"references":[],"modelId":15781,"synonyms":[],"description":"","type":"RNA","name":"s5","bounds":{"x":0.0,"y":118.5,"width":90.0,"height":25.0},"id":329168}] \ No newline at end of file diff --git a/frontend-js/testFiles/apiCalls/project/getElements/columns=&id=329177&projectId=sample&token=MOCK_TOKEN_ID& b/frontend-js/testFiles/apiCalls/project/getElements/columns=&id=329177&projectId=sample&token=MOCK_TOKEN_ID& new file mode 100644 index 0000000000000000000000000000000000000000..cd4ce90074603eb3ab95cc6e7994ce184dd7b4fb --- /dev/null +++ b/frontend-js/testFiles/apiCalls/project/getElements/columns=&id=329177&projectId=sample&token=MOCK_TOKEN_ID& @@ -0,0 +1 @@ +[{"formerSymbols":[],"references":[],"modelId":15781,"synonyms":[],"description":"","type":"Drug","name":"s10","bounds":{"x":0.0,"y":186.0,"width":80.0,"height":30.0},"id":329177}] \ No newline at end of file diff --git a/frontend-js/testFiles/apiCalls/project/getReactions/columns=&id=153510&projectId=sample&token=MOCK_TOKEN_ID& b/frontend-js/testFiles/apiCalls/project/getReactions/columns=&id=153510&projectId=sample&token=MOCK_TOKEN_ID& new file mode 100644 index 0000000000000000000000000000000000000000..e7ac5892a98792a9c28c37ab5273a7c27c7422b2 --- /dev/null +++ b/frontend-js/testFiles/apiCalls/project/getReactions/columns=&id=153510&projectId=sample&token=MOCK_TOKEN_ID& @@ -0,0 +1 @@ +[{"modelId":15781,"reactants":"329173","reactionId":"re5","id":153510,"type":"State transition","lines":[{"start":{"x":92.0,"y":36.98039215686274},"end":{"x":124.64269540833152,"y":45.94113207287532},"type":"START"},{"start":{"x":132.35730459166848,"y":48.05886792712468},"end":{"x":165.0,"y":57.01960784313726},"type":"END"},{"start":{"x":144.03021943732247,"y":129.5},"end":{"x":131.99804583067973,"y":53.145215648491444},"type":"MIDDLE"}],"modifiers":"329167","centerPoint":{"x":128.5,"y":47.0},"products":"329179"}] \ No newline at end of file diff --git a/frontend-js/testFiles/apiCalls/project/getReactions/columns=&id=153519&projectId=sample&token=MOCK_TOKEN_ID& b/frontend-js/testFiles/apiCalls/project/getReactions/columns=&id=153519&projectId=sample&token=MOCK_TOKEN_ID& new file mode 100644 index 0000000000000000000000000000000000000000..94a7e358a00236f95387822fb427caa0f85aefe7 --- /dev/null +++ b/frontend-js/testFiles/apiCalls/project/getReactions/columns=&id=153519&projectId=sample&token=MOCK_TOKEN_ID& @@ -0,0 +1 @@ +[{"modelId":15781,"reactants":"329177","reactionId":"re1","id":153519,"type":"State transition","lines":[{"start":{"x":41.07142857142857,"y":186.0},"end":{"x":42.30429751433407,"y":168.73983479932295},"type":"START"},{"start":{"x":42.87427391423735,"y":160.76016520067705},"end":{"x":44.107142857142854,"y":143.5},"type":"END"}],"modifiers":"","centerPoint":{"x":42.58928571428571,"y":164.75},"products":"329168"}] \ No newline at end of file