From a214736937ddbcfd176598c1f8b4bfde7be4c651 Mon Sep 17 00:00:00 2001
From: Piotr Gawron <piotr.gawron@uni.lu>
Date: Fri, 20 Jul 2018 13:36:08 +0200
Subject: [PATCH] computing colors for gradient data moved to a common function

---
 frontend-js/src/main/js/Functions.js          | 36 +++++++++++++++++
 .../src/main/js/map/surface/AliasSurface.js   | 27 +------------
 .../src/main/js/map/window/AliasInfoWindow.js | 39 +------------------
 3 files changed, 38 insertions(+), 64 deletions(-)

diff --git a/frontend-js/src/main/js/Functions.js b/frontend-js/src/main/js/Functions.js
index 94949629be..b233ee58d6 100644
--- a/frontend-js/src/main/js/Functions.js
+++ b/frontend-js/src/main/js/Functions.js
@@ -113,6 +113,42 @@ Functions.prototype.colorToRgbaString = function (color, opacity) {
   return "rgba(" + red + "," + green + "," + blue + "," + alpha + ")";
 };
 
+
+/**
+ *
+ * @param {LayoutAlias[]|LayoutReaction[]} overlayData
+ * @returns {Promise<Array>}
+ */
+Functions.prototype.overlaysToColorDataStructure = function (overlayData) {
+  var promises = [];
+  for (var i = 0; i < overlayData.length; i++) {
+    promises.push(this.overlayToColor(overlayData[i]));
+  }
+  return Promise.all(promises).then(function (colors) {
+    var countByColor = [], color;
+    for (var i = 0; i < colors.length; i++) {
+      color = colors[i];
+      if (countByColor[color] !== undefined) {
+        countByColor[color]++;
+      } else {
+        countByColor[color] = 1;
+      }
+    }
+    var result = [];
+    for (color in countByColor) {
+      if (countByColor.hasOwnProperty(color)) {
+        result.push({color: color, amount: countByColor[color]});
+      }
+    }
+    var compare = function (a, b) {
+      return a.color.localeCompare(b.color);
+    };
+    result.sort(compare);
+    return result;
+  });
+
+};
+
 /**
  * Returns stack trace.
  *
diff --git a/frontend-js/src/main/js/map/surface/AliasSurface.js b/frontend-js/src/main/js/map/surface/AliasSurface.js
index 834889a49a..b80391ef41 100644
--- a/frontend-js/src/main/js/map/surface/AliasSurface.js
+++ b/frontend-js/src/main/js/map/surface/AliasSurface.js
@@ -184,32 +184,7 @@ AliasSurface.prototype._computeColors = function () {
   if (overlayData === undefined || overlayData.length === 0) {
     return self.getColor();
   } else {
-    var promises = [];
-    for (var i = 0; i < overlayData.length; i++) {
-      promises.push(functions.overlayToColor(overlayData[i]));
-    }
-    return Promise.all(promises).then(function (colors) {
-      var countByColor = [], color;
-      for (var i = 0; i < colors.length; i++) {
-        color = colors[i];
-        if (countByColor[color] !== undefined) {
-          countByColor[color]++;
-        } else {
-          countByColor[color] = 1;
-        }
-      }
-      var result = [];
-      for (color in countByColor) {
-        if (countByColor.hasOwnProperty(color)) {
-          result.push({color: color, amount: countByColor[color]});
-        }
-      }
-      var compare = function (a, b) {
-        return a.color.localeCompare(b.color);
-      };
-      result.sort(compare);
-      return result;
-    });
+    return functions.overlaysToColorDataStructure(overlayData);
   }
 
 };
diff --git a/frontend-js/src/main/js/map/window/AliasInfoWindow.js b/frontend-js/src/main/js/map/window/AliasInfoWindow.js
index b9abc108cc..f80f8bfc7e 100644
--- a/frontend-js/src/main/js/map/window/AliasInfoWindow.js
+++ b/frontend-js/src/main/js/map/window/AliasInfoWindow.js
@@ -202,7 +202,7 @@ AliasInfoWindow.prototype.createChartDiv = function (params) {
             overlayDataOnSubmap.push(data);
           }
         }
-        return self._computeColors(overlayDataOnSubmap).then(function (colors) {
+        return Functions.overlaysToColorDataStructure(overlayDataOnSubmap).then(function (colors) {
           var rowDiv = document.createElement("div");
           rowDiv.className = "minerva-chart-row-odd";
           var nameDiv = document.createElement("div");
@@ -545,41 +545,4 @@ AliasInfoWindow.prototype.getPosition = function () {
   return new Point(alias.x + alias.width / 2, alias.y + alias.height / 2);
 };
 
-/**
- *
- * @param {LayoutAlias[]} overlayData
- * @returns {Promise<Array>}
- * @private
- */
-AliasInfoWindow.prototype._computeColors = function (overlayData) {
-  var promises = [];
-  for (var i = 0; i < overlayData.length; i++) {
-    promises.push(Functions.overlayToColor(overlayData[i]));
-  }
-  return Promise.all(promises).then(function (colors) {
-    var countByColor = [], color;
-    for (var i = 0; i < colors.length; i++) {
-      color = colors[i];
-      if (countByColor[color] !== undefined) {
-        countByColor[color]++;
-      } else {
-        countByColor[color] = 1;
-      }
-    }
-    var result = [];
-    for (color in countByColor) {
-      if (countByColor.hasOwnProperty(color)) {
-        result.push({color: color, amount: countByColor[color]});
-      }
-    }
-    var compare = function (a, b) {
-      return a.color.localeCompare(b.color);
-    };
-    result.sort(compare);
-    return result;
-  });
-
-};
-
-
 module.exports = AliasInfoWindow;
-- 
GitLab