From 0b1e7419b70f601b4e4c346bb61f95a696df0bf3 Mon Sep 17 00:00:00 2001
From: Piotr Gawron <piotr.gawron@uni.lu>
Date: Fri, 2 Nov 2018 11:45:20 +0100
Subject: [PATCH] create response row returns a promise

---
 .../src/main/js/gui/export/AbstractExportPanel.js    |  2 +-
 .../src/main/js/gui/export/NetworkExportPanel.js     | 12 +++++++-----
 2 files changed, 8 insertions(+), 6 deletions(-)

diff --git a/frontend-js/src/main/js/gui/export/AbstractExportPanel.js b/frontend-js/src/main/js/gui/export/AbstractExportPanel.js
index 4f41b6942b..d389e00115 100644
--- a/frontend-js/src/main/js/gui/export/AbstractExportPanel.js
+++ b/frontend-js/src/main/js/gui/export/AbstractExportPanel.js
@@ -585,7 +585,7 @@ AbstractExportPanel.prototype.createResponseHeader = function (columns, miriamTy
     var miriamType = miriamTypes[i];
     stringBuilder.push(miriamType.getCommonName());
   }
-  return stringBuilder.join("\t");
+  return Promise.resolve(stringBuilder.join("\t"));
 
 };
 
diff --git a/frontend-js/src/main/js/gui/export/NetworkExportPanel.js b/frontend-js/src/main/js/gui/export/NetworkExportPanel.js
index b4c178bc10..67be353d05 100644
--- a/frontend-js/src/main/js/gui/export/NetworkExportPanel.js
+++ b/frontend-js/src/main/js/gui/export/NetworkExportPanel.js
@@ -237,11 +237,13 @@ NetworkExportPanel.prototype.createResponseString = function () {
       return Promise.reject(new GuiMessageError("You must select at least one column"));
     }
 
-    var rows = [];
-    rows.push(self.createResponseHeader(selectedColumns, miriamTypes));
+    var rowPromises = [];
+    rowPromises.push(self.createResponseHeader(selectedColumns, miriamTypes));
     for (var i = 0; i < reactions.length; i++) {
-      rows.push(self.createResponseRow(reactions[i], selectedColumns, miriamTypes, elementIds));
+      rowPromises.push(self.createResponseRow(reactions[i], selectedColumns, miriamTypes, elementIds));
     }
+    return Promise.all(rowPromises);
+  }).then(function (rows) {
     return rows.join("\n");
   });
 };
@@ -252,7 +254,7 @@ NetworkExportPanel.prototype.createResponseString = function () {
  * @param {Object} columns
  * @param {MiriamType[]} miriamTypes
  * @param {Object<string,boolean>} elementIds
- * @returns {string}
+ * @returns {Promise<string>}
  */
 NetworkExportPanel.prototype.createResponseRow = function (reaction, columns, miriamTypes, elementIds) {
   var stringBuilder = [];
@@ -280,7 +282,7 @@ NetworkExportPanel.prototype.createResponseRow = function (reaction, columns, mi
     }
     stringBuilder.push(value);
   }
-  return stringBuilder.join("\t");
+  return Promise.resolve(stringBuilder.join("\t"));
 };
 
 module.exports = NetworkExportPanel;
-- 
GitLab