From 085c22168fbcee4c01f718aad7a6a9f761bbdb19 Mon Sep 17 00:00:00 2001
From: Piotr Gawron <piotr.gawron@uni.lu>
Date: Fri, 2 Nov 2018 10:16:29 +0100
Subject: [PATCH] creating rows changed into promises

---
 .../src/main/js/gui/export/AbstractExportPanel.js  |  8 ++++----
 .../src/main/js/gui/export/ElementExportPanel.js   | 14 ++++++++------
 .../test/js/gui/export/ElementExportPanel-test.js  |  5 +++--
 3 files changed, 15 insertions(+), 12 deletions(-)

diff --git a/frontend-js/src/main/js/gui/export/AbstractExportPanel.js b/frontend-js/src/main/js/gui/export/AbstractExportPanel.js
index 74db8cafbb..ceb70d95de 100644
--- a/frontend-js/src/main/js/gui/export/AbstractExportPanel.js
+++ b/frontend-js/src/main/js/gui/export/AbstractExportPanel.js
@@ -361,7 +361,7 @@ AbstractExportPanel.prototype._getAllCompartments = function () {
 /**
  *
  * @returns {HTMLElement}
- * @private
+ * @protected
  */
 AbstractExportPanel.prototype._createDownloadButton = function () {
   var self = this;
@@ -445,7 +445,7 @@ AbstractExportPanel.prototype._createSelectIncludedCompartmentDiv = function ()
 /**
  *
  * @returns {Promise<HTMLElement>}
- * @private
+ * @protected
  */
 AbstractExportPanel.prototype._createSelectExcludedCompartmentDiv = function () {
   var self = this;
@@ -563,8 +563,8 @@ AbstractExportPanel.prototype.getSelectedExcludedCompartments = function () {
 /**
  *
  * @param {{name:string}[]} columns
- * @param {MiriamType[]> miriamTypes
- * @returns {string}
+ * @param {MiriamType[]} miriamTypes
+ * @returns {Promise<string>}
  */
 AbstractExportPanel.prototype.createResponseHeader = function (columns, miriamTypes) {
   var stringBuilder = [];
diff --git a/frontend-js/src/main/js/gui/export/ElementExportPanel.js b/frontend-js/src/main/js/gui/export/ElementExportPanel.js
index dc6db945ec..3bd7a1f563 100644
--- a/frontend-js/src/main/js/gui/export/ElementExportPanel.js
+++ b/frontend-js/src/main/js/gui/export/ElementExportPanel.js
@@ -112,12 +112,14 @@ ElementExportPanel.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 < elements.length; i++) {
-      rows.push(self.createResponseRow(elements[i], selectedColumns, miriamTypes));
+      rowPromises.push(self.createResponseRow(elements[i], selectedColumns, miriamTypes));
     }
-    return rows.join("\n");
+    return Promise.all(rowPromises).then(function(rows){
+      return rows.join("\n");
+    });
   });
 };
 
@@ -126,7 +128,7 @@ ElementExportPanel.prototype.createResponseString = function () {
  * @param {Alias} alias
  * @param {Array} columns
  * @param {MiriamType[]} miriamTypes
- * @returns {string}
+ * @returns {Promise<string>}
  */
 ElementExportPanel.prototype.createResponseRow = function (alias, columns, miriamTypes) {
   var stringBuilder = [];
@@ -154,7 +156,7 @@ ElementExportPanel.prototype.createResponseRow = function (alias, columns, miria
     }
     stringBuilder.push(value);
   }
-  return stringBuilder.join("\t");
+  return Promise.resolve(stringBuilder.join("\t"));
 };
 
 /**
diff --git a/frontend-js/src/test/js/gui/export/ElementExportPanel-test.js b/frontend-js/src/test/js/gui/export/ElementExportPanel-test.js
index 011f0beaa2..d77073641a 100644
--- a/frontend-js/src/test/js/gui/export/ElementExportPanel-test.js
+++ b/frontend-js/src/test/js/gui/export/ElementExportPanel-test.js
@@ -283,8 +283,9 @@ describe('ElementExportPanel', function () {
       var alias = helper.createAlias();
       var desc = "test\ntest2\n";
       alias.setDescription(desc);
-      var rowString = exportObject.createResponseRow(alias, exportObject.getAllColumns(), []);
-      assert.ok(rowString.indexOf("test\ntest2\n") === -1);
+      return exportObject.createResponseRow(alias, exportObject.getAllColumns(), []).then (function(rowString){
+        assert.ok(rowString.indexOf("test\ntest2\n") === -1);
+      });
     });
   });
 
-- 
GitLab