From 69eec0009c90cfb9fd691de8c25ae01670a54e07 Mon Sep 17 00:00:00 2001
From: Piotr Gawron <piotr.gawron@uni.lu>
Date: Mon, 30 Apr 2018 17:29:43 +0200
Subject: [PATCH] missing promise passed further

---
 .../src/main/js/gui/leftPanel/OverlayPanel.js |  4 +--
 .../src/main/js/map/AbstractCustomMap.js      | 10 +++++--
 frontend-js/src/main/js/map/CustomMap.js      | 28 +++++++++++--------
 3 files changed, 27 insertions(+), 15 deletions(-)

diff --git a/frontend-js/src/main/js/gui/leftPanel/OverlayPanel.js b/frontend-js/src/main/js/gui/leftPanel/OverlayPanel.js
index 47d2804b85..c538683bfd 100644
--- a/frontend-js/src/main/js/gui/leftPanel/OverlayPanel.js
+++ b/frontend-js/src/main/js/gui/leftPanel/OverlayPanel.js
@@ -44,13 +44,13 @@ function OverlayPanel(params) {
       toggleOverlayPromise = self.getMap().hideDataOverlay(overlayId);
     }
     $(thisCheckbox).prop("disabled", true);
-    return toggleOverlayPromise.then(null, GuiConnector.alert).finally(function () {
+    return toggleOverlayPromise.catch(GuiConnector.alert).finally(function () {
       $(thisCheckbox).prop("disabled", false);
     });
   });
   $(self.getElement()).on("click", "[name='overlayLink']", function () {
     var overlayId = $(this).attr("data");
-    self.getMap().openDataOverlay(overlayId);
+    return self.getMap().openDataOverlay(overlayId);
   });
   self.getMap().addListener("onBackgroundOverlayChange", function (e) {
     var overlayId = e.arg.toString();
diff --git a/frontend-js/src/main/js/map/AbstractCustomMap.js b/frontend-js/src/main/js/map/AbstractCustomMap.js
index 3536c8e6d7..1e9b6aeb68 100644
--- a/frontend-js/src/main/js/map/AbstractCustomMap.js
+++ b/frontend-js/src/main/js/map/AbstractCustomMap.js
@@ -51,6 +51,7 @@ function AbstractCustomMap(model, options) {
   // this array contains elements that are presented on a specific overlay (set
   // of google map object representing lines/areas that are associated with
   // overlay)
+  // @type {Array<AbstractSurface[]>}
   this.selectedLayoutOverlays = [];
 
   // array with info windows for Marker pointing to aliases
@@ -425,17 +426,22 @@ AbstractCustomMap.prototype._showSelectedDataOverlay = function (overlayId, inde
  *
  * @param {number} overlayId
  *          identifier of a overlay
+ *
+ * @returns {Promise}
  */
 AbstractCustomMap.prototype._hideSelectedLayout = function (overlayId) {
   // if map is not initialized then don't perform this operation
   if (!this.isInitialized()) {
     logger.debug("Model " + this.getId() + " not initialized");
-    return;
+    return Promise.resolve();
   }
+
+  var promises =[];
   for (var i = 0; i < this.selectedLayoutOverlays[overlayId].length; i++) {
-    this.selectedLayoutOverlays[overlayId][i].hide();
+    promises.push(this.selectedLayoutOverlays[overlayId][i].hide());
   }
   this.selectedLayoutOverlays[overlayId] = [];
+  return Promise.all(promises);
 };
 
 /**
diff --git a/frontend-js/src/main/js/map/CustomMap.js b/frontend-js/src/main/js/map/CustomMap.js
index 9fa139d1c0..2d6db63d2b 100644
--- a/frontend-js/src/main/js/map/CustomMap.js
+++ b/frontend-js/src/main/js/map/CustomMap.js
@@ -600,16 +600,18 @@ CustomMap.prototype.redrawSelectedDataOverlays = function () {
         promises.push(self.showSelectedDataOverlay(overlayId, i, visibleDataOverlays.length));
       }
     }
-    return Promise.all(promises).then(function () {
-      // hide overlays that were visible
-      var overlays = self.getProject().getDataOverlays();
-      for (var i = 0; i < overlays.length; i++) {
-        var id = overlays[i].getId();
-        if (!self._selectedOverlays[id] && self.layoutContainsOverlays(id)) {
-          self.hideSelectedLayout(id);
-        }
+    return Promise.all(promises);
+  }).then(function () {
+    var promises = [];
+    // hide overlays that were visible
+    var overlays = self.getProject().getDataOverlays();
+    for (var i = 0; i < overlays.length; i++) {
+      var id = overlays[i].getId();
+      if (!self._selectedOverlays[id] && self.layoutContainsOverlays(id)) {
+        promises.push(self.hideSelectedLayout(id));
       }
-    });
+    }
+    return Promise.all(promises);
   });
 };
 
@@ -618,12 +620,16 @@ CustomMap.prototype.redrawSelectedDataOverlays = function () {
  *
  * @param {number} overlayId
  *          identifier of a overlay to hide
+ *
+ * @returns {Promise}
  */
 CustomMap.prototype.hideSelectedLayout = function (overlayId) {
-  this._hideSelectedLayout(overlayId);
+  var promises = [];
+  promises.push(this._hideSelectedLayout(overlayId));
   for (var i = 0; i < this.submaps.length; i++) {
-    this.submaps[i]._hideSelectedLayout(overlayId);
+    promises.push(this.submaps[i]._hideSelectedLayout(overlayId));
   }
+  return Promise.all(promises);
 };
 
 /**
-- 
GitLab