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