From 9f74e65388e05df18c64fe33be6462a7e8ccd910 Mon Sep 17 00:00:00 2001 From: Piotr Gawron <piotr.gawron@uni.lu> Date: Wed, 23 Aug 2017 10:37:01 +0200 Subject: [PATCH] JS api for returning all elements on the map --- README.md | 6 +++++ frontend-js/src/main/js/minerva.js | 31 +++++++++++++++++++++++++ frontend-js/src/test/js/minerva-test.js | 17 ++++++++++++++ 3 files changed, 54 insertions(+) diff --git a/README.md b/README.md index 861648d99c..c8bb6d65f4 100644 --- a/README.md +++ b/README.md @@ -523,6 +523,12 @@ customMap.getProject() ``` customMap.getConfiguration().then(function(configuration){console.log(configuration);}); ``` +* `getAllBioEntities()` + * Arguments: NONE + * Example: +``` +customMap.getAllBioEntities().then(function(bioEntities){console.log(bioEntities);}); +``` * `getBioEntityById({id, modelId, type})` * Arguments: TODO * Example: diff --git a/frontend-js/src/main/js/minerva.js b/frontend-js/src/main/js/minerva.js index f84281272a..78673ae575 100644 --- a/frontend-js/src/main/js/minerva.js +++ b/frontend-js/src/main/js/minerva.js @@ -323,6 +323,37 @@ function createResult(customMap) { } }); }, + getAllBioEntities : function() { + var models = [ customMap.getModel() ]; + var result = []; + for (var i = 0; i < customMap.getModel().getSubmodels().length; i++) { + models.push(customMap.getModel().getSubmodels()[i]); + } + var promises = []; + for (var i = 0; i < models.length; i++) { + promises.push(models[i].getAliases({ + type : customMap.getConfiguration().getElementTypes(), + complete : true, + })); + } + return Promise.all(promises).then(function(aliasesByModel) { + var promises = []; + for (var i = 0; i < models.length; i++) { + promises.push(models[i].getReactionsForElements(aliasesByModel[i], true)); + for (var j = 0; j < aliasesByModel[i].length; j++) { + result.push(aliasesByModel[i][j]); + } + } + return Promise.all(promises); + }).then(function(reactionsByModel) { + for (var i = 0; i < models.length; i++) { + for (var j = 0; j < reactionsByModel[i].length; j++) { + result.push(reactionsByModel[i][j]); + } + } + return result; + }); + }, getReactionsWithElement : function(param) { if (param.length === undefined) { param = [ param ]; diff --git a/frontend-js/src/test/js/minerva-test.js b/frontend-js/src/test/js/minerva-test.js index 6d989ae493..91bcc1657e 100644 --- a/frontend-js/src/test/js/minerva-test.js +++ b/frontend-js/src/test/js/minerva-test.js @@ -496,4 +496,21 @@ describe('minerva global', function() { }); }); + it("getAllBioEntities", function() { + var options = { + projectId : "sample", + element : testDiv + }; + var globalResult; + return minerva.create(options).then(function(result) { + globalResult = result; + return result.getAllBioEntities(); + }).then(function(result) { + assert.ok(result); + assert.ok(result.length > 0); + }).then(function() { + globalResult.destroy(); + }); + }); + }); -- GitLab