From f89a55cbabab9984a58170184df7d82a3e7cf812 Mon Sep 17 00:00:00 2001
From: Piotr Gawron <piotr.gawron@uni.lu>
Date: Tue, 13 Feb 2018 12:38:11 +0100
Subject: [PATCH] reaction window with kinetics provides info about species
 role

---
 .../main/js/map/window/ReactionInfoWindow.js  | 30 ++++++++++++++-----
 1 file changed, 23 insertions(+), 7 deletions(-)

diff --git a/frontend-js/src/main/js/map/window/ReactionInfoWindow.js b/frontend-js/src/main/js/map/window/ReactionInfoWindow.js
index cd95953aba..d92d32e4fb 100644
--- a/frontend-js/src/main/js/map/window/ReactionInfoWindow.js
+++ b/frontend-js/src/main/js/map/window/ReactionInfoWindow.js
@@ -69,7 +69,11 @@ ReactionInfoWindow.prototype.createContentDiv = function () {
       result.appendChild(Functions.createElement({type: "h4", content: "Kinetic law"}));
 
       if (kineticLaw.getMathMlPresentation() !== undefined) {
-        result.appendChild(Functions.createElement({type: "div", content: kineticLaw.getMathMlPresentation()}));
+        result.appendChild(Functions.createElement({
+          type: "div",
+          content: kineticLaw.getMathMlPresentation(),
+          xss: false
+        }));
       } else {
 
         result.appendChild(Functions.createElement({
@@ -93,7 +97,7 @@ ReactionInfoWindow.prototype.createContentDiv = function () {
       return Promise.all(promises);
     }).then(function (parameters) {
       result.appendChild(self.createSbmlParameterDiv(parameters));
-      result.appendChild(self.createKineticsElementsDiv(reaction.getElements()));
+      result.appendChild(self.createKineticsElementsDiv(reaction));
     }).then(function () {
       return Promise.resolve(result);
     });
@@ -141,15 +145,27 @@ ReactionInfoWindow.prototype.createSbmlParameterDiv = function (parameters) {
   return result;
 };
 
-ReactionInfoWindow.prototype.createKineticsElementsDiv = function (elements) {
+ReactionInfoWindow.prototype.createKineticsElementsDiv = function (reaction) {
   var result = Functions.createElement({type: "div"});
   result.appendChild(Functions.createElement({type: "h5", content: "Elements: "}));
   var guiUtils = new GuiUtils();
   var table = Functions.createElement({type: "div", style: "display: table;", className: "borderTable"});
-  table.appendChild(guiUtils.createTableRow(["Name", "elementId", "Constant", "Boundary condition", "Initial concentration", "Initial amount"]));
-  for (var i = 0; i < elements.length; i++) {
-    var element = elements[i];
-    table.appendChild(guiUtils.createTableRow([element.getName(), element.getElementId(), element.getConstant(), element.getBoundaryCondition(), element.getInitialConcentration(), element.getInitialAmount()]));
+  table.appendChild(guiUtils.createTableRow(["Name", "Role", "elementId", "Constant", "Boundary condition", "Initial concentration", "Initial amount"]));
+  var elements = reaction.getReactants();
+  var i, element;
+  for (i = 0; i < elements.length; i++) {
+    element = elements[i];
+    table.appendChild(guiUtils.createTableRow([element.getName(), "Reactant", element.getElementId(), element.getConstant(), element.getBoundaryCondition(), element.getInitialConcentration(), element.getInitialAmount()]));
+  }
+  elements = reaction.getProducts();
+  for (i = 0; i < elements.length; i++) {
+    element = elements[i];
+    table.appendChild(guiUtils.createTableRow([element.getName(), "Product", element.getElementId(), element.getConstant(), element.getBoundaryCondition(), element.getInitialConcentration(), element.getInitialAmount()]));
+  }
+  elements = reaction.getModifiers();
+  for (i = 0; i < elements.length; i++) {
+    element = elements[i];
+    table.appendChild(guiUtils.createTableRow([element.getName(), "Modifier", element.getElementId(), element.getConstant(), element.getBoundaryCondition(), element.getInitialConcentration(), element.getInitialAmount()]));
   }
   result.appendChild(table);
   return result;
-- 
GitLab