diff --git a/frontend-js/src/main/js/map/data/MapModel.js b/frontend-js/src/main/js/map/data/MapModel.js index b6137d4703392ac7de95740252311d301a3b6d6c..b9927e770ffcd451ee51cacb8ef13f7fad35f6dd 100644 --- a/frontend-js/src/main/js/map/data/MapModel.js +++ b/frontend-js/src/main/js/map/data/MapModel.js @@ -194,18 +194,10 @@ MapModel.prototype.getCompleteReactionById = function(id) { return Promise.resolve(self._reactions[id]); } else { var result; - return ServerConnector.getReactions({ - ids : [ id ] - }).then( - function(reactions) { - if (self._reactions[id] === undefined) { - self._reactions[id] = reactions[0]; - } else { - self._reactions[id].update(reactions[0]); - } + return self.getReactionById(id).then( + function(result) { var ids = []; var i; - result = self._reactions[id]; for (i = 0; i < result.getReactants().length; i++) { if (!(result.getReactants()[i] instanceof Alias)) { if (self._aliases[result.getReactants()[i]] === undefined @@ -304,7 +296,8 @@ MapModel.prototype.getMissingElements = function(elements) { var reactionPromise = null; if (reactionIds.length > 0) { reactionPromise = ServerConnector.getReactions({ - ids : reactionIds + ids : reactionIds, + complete : elements.complete }); } @@ -674,7 +667,7 @@ MapModel.prototype.getByIdentifiedElements = function(identifiedElements, comple }).then(function() { var promises = []; for (var i = 0; i < identifiedElements.length; i++) { - promises.push(self.getByIdentifiedElement(identifiedElements[i])); + promises.push(self.getByIdentifiedElement(identifiedElements[i], complete)); } return Promise.all(promises); }); diff --git a/frontend-js/src/main/js/map/data/Reaction.js b/frontend-js/src/main/js/map/data/Reaction.js index e0ace636e0d9ad37347505230b35420c185c7f1c..2bf32c40817b50f13eb7571db202e0b6341df132 100644 --- a/frontend-js/src/main/js/map/data/Reaction.js +++ b/frontend-js/src/main/js/map/data/Reaction.js @@ -1,5 +1,7 @@ "use strict"; +var Alias = require('./Alias'); + /** * Class representing reaction data. * @@ -129,7 +131,17 @@ Reaction.prototype.update = function(javaObject) { }; Reaction.prototype.isComplete = function() { - return this._complete; + var self = this; + var result = self._complete; + var reactants = self.getReactants(); + if (reactants.length === 0) { + result = false; + } else { + if (!(self.getReactants()[0] instanceof Alias)) { + result = false; + } + } + return result; }; Reaction.prototype.setIsComplete = function(complete) { @@ -290,4 +302,4 @@ Reaction.prototype.setHierarchyVisibilityLevel = function(hierarchyVisibilityLev this._hierarchyVisibilityLevel = hierarchyVisibilityLevel; }; -module.exports = Reaction; +module.exports = Reaction; \ No newline at end of file diff --git a/frontend-js/src/main/js/map/overlay/AbstractDbOverlay.js b/frontend-js/src/main/js/map/overlay/AbstractDbOverlay.js index fe99bfc0a4737d0d037af2e4bce4de427bf0a910..da502fc881d6384feb96f32c9509c7de19a487eb 100644 --- a/frontend-js/src/main/js/map/overlay/AbstractDbOverlay.js +++ b/frontend-js/src/main/js/map/overlay/AbstractDbOverlay.js @@ -92,8 +92,8 @@ AbstractDbOverlay.prototype.searchByQuery = function(originalQuery, perfect, fit var encodedQueries = []; var promises = []; for (var i = 0; i < queries.length; i++) { - encodedQueries.push(self.encodeQuery(AbstractDbOverlay.QueryType.SEARCH_BY_QUERY, queries[i])); - promises.push(self.searchBySingleQuery(queries[i])); + encodedQueries.push(self.encodeQuery(AbstractDbOverlay.QueryType.SEARCH_BY_QUERY, queries[i], perfect)); + promises.push(self.searchBySingleQuery(queries[i], perfect)); } self.setQueries(encodedQueries); @@ -170,7 +170,7 @@ AbstractDbOverlay.prototype.searchByEncodedQuery = function(originalQuery, fitBo } else if (query.type === AbstractDbOverlay.QueryType.SEARCH_BY_TARGET) { return this.searchNamesByTarget(query.target); } else if (query.type === AbstractDbOverlay.QueryType.SEARCH_BY_COORDINATES) { - query.coordinates = new google.maps.Point(query.coordinates.x,query.coordinates.y); + query.coordinates = new google.maps.Point(query.coordinates.x, query.coordinates.y); return this.searchByCoordinates(query); } else { throw new Error("Unknown type of query: " + query.type); diff --git a/frontend-js/src/test/js/map/overlay/SearchDbOverlay-test.js b/frontend-js/src/test/js/map/overlay/SearchDbOverlay-test.js index 0b2c0291ec5a92e217ff22da5ca21f17b91d1654..127812170abd136f50a883d629ddd618dbe8dbcf 100644 --- a/frontend-js/src/test/js/map/overlay/SearchDbOverlay-test.js +++ b/frontend-js/src/test/js/map/overlay/SearchDbOverlay-test.js @@ -45,6 +45,19 @@ describe('SearchDbOverlay', function() { }); }); + it("searchByQuery with perfectMatch", function() { + return ServerConnector.getProject().then(function(project) { + var map = helper.createCustomMap(project); + map.getModel().setId(15781); + var searchDb = helper.createSearchDbOverlay(map); + + return searchDb.searchByQuery("s1",true); + }).then(function(result) { + assert.equal(result.length, 1); + assert.equal(result[0].length, 1); + }); + }); + it("searchByEncodedQuery", function() { return ServerConnector.getProject().then( function(project) { diff --git a/frontend-js/src/test/js/minerva-test.js b/frontend-js/src/test/js/minerva-test.js index a784b8635460b2ee4ef45da847210c66c76d4cfb..a12b0aa3d24bbff44247714da8a08e3c60a7f058 100644 --- a/frontend-js/src/test/js/minerva-test.js +++ b/frontend-js/src/test/js/minerva-test.js @@ -4,6 +4,7 @@ var Helper = require('./helper'); require("./mocha-config.js"); +var Alias = require('../../main/js/map/data/Alias'); var minerva = require('../../main/js/minerva'); var Project = require('../../main/js/map/data/Project'); var GuiConnectorMock = require('./GuiConnector-mock'); @@ -281,6 +282,27 @@ describe('minerva global', function() { }); }); + it("getBioEntityById for reaction", function() { + var options = { + projectId : "sample", + element : testDiv + }; + var globalResult; + return minerva.create(options).then(function(result) { + globalResult = result; + return result.getBioEntityById({ + id : 153508, + modelId : 15781, + type : "REACTION" + }); + }).then(function(result) { + assert.ok(result); + assert.ok(result.getReactants()[0] instanceof Alias); + }).then(function() { + globalResult.destroy(); + }); + }); + it("showElement", function() { var options = { projectId : "sample", diff --git a/frontend-js/testFiles/apiCalls/projects/sample/models/all/bioEntities.search/perfectMatch=true&query=s1&token=MOCK_TOKEN_ID& b/frontend-js/testFiles/apiCalls/projects/sample/models/all/bioEntities.search/perfectMatch=true&query=s1&token=MOCK_TOKEN_ID& new file mode 100644 index 0000000000000000000000000000000000000000..410f869e59ea4b0f4729f2cc68d0713359041200 --- /dev/null +++ b/frontend-js/testFiles/apiCalls/projects/sample/models/all/bioEntities.search/perfectMatch=true&query=s1&token=MOCK_TOKEN_ID& @@ -0,0 +1 @@ +[{"modelId":15781,"id":329173,"type":"ALIAS"}] \ No newline at end of file diff --git a/frontend-js/testFiles/apiCalls/projects/sample/models/all/bioEntities/elements/id=329167,329168&token=MOCK_TOKEN_ID& b/frontend-js/testFiles/apiCalls/projects/sample/models/all/bioEntities/elements/id=329167,329168&token=MOCK_TOKEN_ID& new file mode 100644 index 0000000000000000000000000000000000000000..4f5e996668735f845d0cd7970acda13173095c03 --- /dev/null +++ b/frontend-js/testFiles/apiCalls/projects/sample/models/all/bioEntities/elements/id=329167,329168&token=MOCK_TOKEN_ID& @@ -0,0 +1 @@ +[{"symbol":null,"formerSymbols":[],"references":[],"modelId":15781,"synonyms":[],"description":"","fullName":null,"complexId":null,"type":"Antisense RNA","abbreviation":null,"compartmentId":null,"name":"s6","bounds":{"x":101.0,"width":90.0,"y":129.5,"height":25.0},"formula":null,"id":329167,"hierarchyVisibilityLevel":0},{"symbol":null,"formerSymbols":[],"references":[],"modelId":15781,"synonyms":[],"description":"","fullName":null,"complexId":null,"type":"RNA","abbreviation":null,"compartmentId":null,"name":"s5","bounds":{"x":0.0,"width":90.0,"y":118.5,"height":25.0},"formula":null,"id":329168,"hierarchyVisibilityLevel":0}] \ No newline at end of file diff --git a/frontend-js/testFiles/apiCalls/projects/sample/models/all/bioEntities/elements/id=329167,329169&token=MOCK_TOKEN_ID& b/frontend-js/testFiles/apiCalls/projects/sample/models/all/bioEntities/elements/id=329167,329169&token=MOCK_TOKEN_ID& new file mode 100644 index 0000000000000000000000000000000000000000..1442772f362a3aa390a671d73f060b12406e1741 --- /dev/null +++ b/frontend-js/testFiles/apiCalls/projects/sample/models/all/bioEntities/elements/id=329167,329169&token=MOCK_TOKEN_ID& @@ -0,0 +1 @@ +[{"symbol":null,"formerSymbols":[],"references":[],"modelId":15781,"synonyms":[],"description":"","fullName":null,"complexId":null,"type":"Antisense RNA","abbreviation":null,"compartmentId":null,"name":"s6","bounds":{"x":101.0,"width":90.0,"y":129.5,"height":25.0},"formula":null,"id":329167,"hierarchyVisibilityLevel":0},{"symbol":null,"formerSymbols":[],"references":[],"modelId":15781,"synonyms":[],"description":"","fullName":null,"complexId":null,"type":"Unknown","abbreviation":null,"compartmentId":null,"name":"s11","bounds":{"x":105.0,"width":70.0,"y":203.5,"height":25.0},"formula":null,"id":329169,"hierarchyVisibilityLevel":0}] \ No newline at end of file diff --git a/frontend-js/testFiles/apiCalls/projects/sample/models/all/bioEntities/elements/id=329167,329172&token=MOCK_TOKEN_ID& b/frontend-js/testFiles/apiCalls/projects/sample/models/all/bioEntities/elements/id=329167,329172&token=MOCK_TOKEN_ID& new file mode 100644 index 0000000000000000000000000000000000000000..3ae84c4067e2680a7b614ce23091816d40352469 --- /dev/null +++ b/frontend-js/testFiles/apiCalls/projects/sample/models/all/bioEntities/elements/id=329167,329172&token=MOCK_TOKEN_ID& @@ -0,0 +1 @@ +[{"symbol":null,"formerSymbols":[],"references":[],"modelId":15781,"synonyms":[],"description":"","fullName":null,"complexId":null,"type":"Antisense RNA","abbreviation":null,"compartmentId":null,"name":"s6","bounds":{"x":101.0,"width":90.0,"y":129.5,"height":25.0},"formula":null,"id":329167,"hierarchyVisibilityLevel":0},{"symbol":null,"formerSymbols":[],"references":[],"modelId":15781,"synonyms":[],"description":"","fullName":null,"complexId":null,"type":"Phenotype","abbreviation":null,"compartmentId":null,"name":"s7","bounds":{"x":213.0,"width":80.0,"y":128.0,"height":30.0},"formula":null,"id":329172,"hierarchyVisibilityLevel":0}] \ No newline at end of file