diff --git a/frontend-js/src/main/js/gui/leftPanel/OverlayPanel.js b/frontend-js/src/main/js/gui/leftPanel/OverlayPanel.js index 47d2804b852b922fab276515773c6f834517ca60..c538683bfd90e4d0d46cc0ac57b47951fc427bd8 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 3536c8e6d74c9cf13abc442f1fcb61a7cb0381cd..1e9b6aeb682cfad34e265f3fc260f044ab50da2a 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 9fa139d1c02941adcb69e0cf55eeb21d73702b73..2d6db63d2b6955af99c3baa2c1a1e21451105999 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); }; /**