From 11ab323298929254f1a43f2a1b07089b77923965 Mon Sep 17 00:00:00 2001
From: Piotr Gawron <piotr.gawron@uni.lu>
Date: Mon, 30 Oct 2017 14:00:03 +0100
Subject: [PATCH] plugin proxy provides meta information about project

---
 .../src/main/js/plugin/MinervaPluginProxy.js  | 31 ++++++++++++
 .../test/js/plugin/MinervaPluginProxy-test.js | 49 +++++++++++++++++++
 2 files changed, 80 insertions(+)

diff --git a/frontend-js/src/main/js/plugin/MinervaPluginProxy.js b/frontend-js/src/main/js/plugin/MinervaPluginProxy.js
index 5e72c1e755..820bc0694b 100644
--- a/frontend-js/src/main/js/plugin/MinervaPluginProxy.js
+++ b/frontend-js/src/main/js/plugin/MinervaPluginProxy.js
@@ -1,5 +1,6 @@
 "use strict";
 
+var Annotation = require('../map/data/Annotation');
 var IdentifiedElement = require('../map/data/IdentifiedElement');
 var UserDbOverlay = require('../map/overlay/UserDbOverlay');
 var Configuration = require('../Configuration');
@@ -131,6 +132,36 @@ function createProjectData(options) {
         param = [param];
       }
       return getReactionsForElements(param, map);
+    },
+    getProjectId: function () {
+      return map.getProject().getProjectId();
+    },
+    getName: function () {
+      return map.getProject().getName();
+    },
+    getVersion: function () {
+      return map.getProject().getVersion();
+    },
+    getDisease: function () {
+      if (map.getProject().getDisease() !== undefined) {
+        return new Annotation(map.getProject().getDisease());
+      } else {
+        return null;
+      }
+    },
+    getOrganism: function () {
+      if (map.getProject().getOrganism() !== undefined) {
+        return new Annotation(map.getProject().getOrganism());
+      } else {
+        return null;
+      }
+    },
+    getModels: function () {
+      var result = [{modelId: map.getId()}];
+      for (var i = 0; i < map.getSubmaps().length; i++) {
+        result.push({modelId: map.getSubmaps()[i].getId()});
+      }
+      return result;
     }
   };
 }
diff --git a/frontend-js/src/test/js/plugin/MinervaPluginProxy-test.js b/frontend-js/src/test/js/plugin/MinervaPluginProxy-test.js
index 7d75b82467..4efd86fa13 100644
--- a/frontend-js/src/test/js/plugin/MinervaPluginProxy-test.js
+++ b/frontend-js/src/test/js/plugin/MinervaPluginProxy-test.js
@@ -300,5 +300,54 @@ describe('MinervaPluginProxy', function () {
     });
   });
 
+  it("getProjectId", function () {
+    return ServerConnector.getProject().then(function (project) {
+      var map = helper.createCustomMap(project);
+      var proxy = createProxy(map);
+      assert.equal("sample", proxy.project.data.getProjectId());
+      map.destroy();
+    });
+  });
+  it("getName", function () {
+    return ServerConnector.getProject().then(function (project) {
+      var map = helper.createCustomMap(project);
+      var proxy = createProxy(map);
+      assert.equal("UNKNOWN DISEASE MAP", proxy.project.data.getName());
+      map.destroy();
+    });
+  });
+  it("getVersion", function () {
+    return ServerConnector.getProject().then(function (project) {
+      var map = helper.createCustomMap(project);
+      var proxy = createProxy(map);
+      assert.equal("0", proxy.project.data.getVersion());
+      map.destroy();
+    });
+  });
+  it("getDisease", function () {
+    return ServerConnector.getProject().then(function (project) {
+      var map = helper.createCustomMap(project);
+      var proxy = createProxy(map);
+      assert.ok(proxy.project.data.getDisease());
+      map.destroy();
+    });
+  });
+  it("getOrganism", function () {
+    return ServerConnector.getProject().then(function (project) {
+      var map = helper.createCustomMap(project);
+      var proxy = createProxy(map);
+      assert.ok(proxy.project.data.getOrganism());
+      map.destroy();
+    });
+  });
+  it("getModels", function () {
+    return ServerConnector.getProject().then(function (project) {
+      var map = helper.createCustomMap(project);
+      var proxy = createProxy(map);
+      assert.equal(1, proxy.project.data.getModels().length);
+      map.destroy();
+    });
+  });
+
 
 });
-- 
GitLab