From b852f05bb2da5a81146d6bdf75e9bd8849eea028 Mon Sep 17 00:00:00 2001 From: Piotr Gawron <piotr.gawron@uni.lu> Date: Mon, 30 Apr 2018 10:58:31 +0200 Subject: [PATCH] iterating over overlays is improved --- frontend-js/src/main/js/map/CustomMap.js | 95 +++++++++++------------- 1 file changed, 42 insertions(+), 53 deletions(-) diff --git a/frontend-js/src/main/js/map/CustomMap.js b/frontend-js/src/main/js/map/CustomMap.js index 6c39c9cf0d..b3445cba5a 100644 --- a/frontend-js/src/main/js/map/CustomMap.js +++ b/frontend-js/src/main/js/map/CustomMap.js @@ -173,11 +173,9 @@ CustomMap.prototype.createLogo = function () { */ CustomMap.prototype.clearDbOverlays = function () { var promises = []; - for (var overlayName in this.overlayCollections) { - if (this.overlayCollections.hasOwnProperty(overlayName)) { - var collection = this.overlayCollections[overlayName]; - promises.push(collection.clear()); - } + var overlays = this.getDbOverlays(); + for (var i = 0; i < overlays.length; i++) { + promises.push(overlays[i].clear()); } return Promise.all(promises); }; @@ -371,12 +369,12 @@ CustomMap.prototype.toggleDrawing = function () { CustomMap.prototype.refreshMarkers = function () { var promises = []; logger.debug("Refresh Markers: "); - for (var overlayName in this.overlayCollections) { - if (this.overlayCollections.hasOwnProperty(overlayName)) { - var collection = this.overlayCollections[overlayName]; - promises.push(this.refreshOverlayMarkers(collection)); - } + + var overlays = this.getDbOverlays(); + for (var i = 0; i < overlays.length; i++) { + promises.push(this.refreshOverlayMarkers(overlays[i])); } + return Promise.all(promises); }; @@ -446,22 +444,14 @@ CustomMap.prototype.openSubmap = function (id) { return this.openDataOverlay(self.getMapCanvas().getBackgroundId()).then(function () { if (!wasInitialized) { // now we have to visualize overlays - var overlayIds = []; - - // get list of overlays - for (var key in self._selectedOverlays) { - if (self._selectedOverlays.hasOwnProperty(key) && self._selectedOverlays[key] === true) { - overlayIds.push(key); + return self.getVisibleDataOverlays().then(function (overlays) { + var promises = []; + // show overlays that should be visualized (resize or show them) + for (var i = 0; i < overlays.length; i++) { + promises.push(submap._showSelectedDataOverlay(overlays[i].getId(), i, overlays.length)); } - } - - var promises = []; - // show overlays that should be visualized (resize or show them) - for (var i = 0; i < overlayIds.length; i++) { - var overlayId = overlayIds[i]; - promises.push(submap._showSelectedDataOverlay(overlayId, i, overlayIds.length)); - } - return Promise.all(promises).then(function () { + return Promise.all(promises); + }).then(function () { return self.refreshMarkers(); }); } @@ -612,11 +602,11 @@ CustomMap.prototype.redrawSelectedDataOverlays = function () { } return Promise.all(promises).then(function () { // hide overlays that were visible - for (var key in self.selectedLayoutOverlays) { - if (!self._selectedOverlays.hasOwnProperty(key) || self._selectedOverlays[key] === false) { - if (self.layoutContainsOverlays(parseInt(key))) { - self.hideSelectedLayout(parseInt(key)); - } + 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 self.refreshInfoWindows(); @@ -861,19 +851,18 @@ CustomMap.prototype.retrieveOverlayDetailDataForElement = function (element, gen logger.warn("general param is undefined!"); general = {}; } - for (var overlayName in this.overlayCollections) { - if (this.overlayCollections.hasOwnProperty(overlayName)) { - var overlay = this.overlayCollections[overlayName]; - - var generalRequest = general[overlayName]; - if (generalRequest === undefined) { - logger.warn("No information about general overlay request for overlay: " + overlayName); - generalRequest = false; - } - generalRequest = generalRequest || (!overlay.allowSearchById() && overlay.allowGeneralSearch()); + var overlays = this.getDbOverlays(); + for (var i = 0; i < overlays.length; i++) { + var overlay = overlays[i]; - promises.push(overlay.getDetailDataByIdentifiedElement(element, generalRequest)); + var generalRequest = general[overlay.getName()]; + if (generalRequest === undefined) { + logger.warn("No information about general overlay request for overlay: " + overlay.getName()); + generalRequest = false; } + generalRequest = generalRequest || (!overlay.allowSearchById() && overlay.allowGeneralSearch()); + + promises.push(overlay.getDetailDataByIdentifiedElement(element, generalRequest)); } return Promise.all(promises); }; @@ -954,19 +943,19 @@ CustomMap.prototype.getOverlayDataForIdentifiedElement = function (identifiedEle } var promises = []; var overlays = []; - for (var overlayName in this.overlayCollections) { - if (this.overlayCollections.hasOwnProperty(overlayName)) { - var overlay = this.overlayCollections[overlayName]; - if (overlay.allowGeneralSearch() || overlay.allowSearchById()) { - var generalFlag = general[overlay.getName()]; - if (generalFlag === undefined) { - logger.warn("General flag for overlay: " + overlay.getName() + " is not defined, assuming false"); - generalFlag = false; - } - overlays.push(overlay); - promises.push(overlay.getDetailDataByIdentifiedElement(identifiedElement, !overlay.allowSearchById() - || generalFlag)); + var allOverlays = this.getDbOverlays(); + for (var i = 0; i < allOverlays.length; i++) { + var overlay = allOverlays[i]; + if (overlay.allowGeneralSearch() || overlay.allowSearchById()) { + var generalFlag = general[overlay.getName()]; + if (generalFlag === undefined) { + logger.warn("General flag for overlay: " + overlay.getName() + " is not defined, assuming false"); + generalFlag = false; } + overlays.push(overlay); + promises.push(overlay.getDetailDataByIdentifiedElement(identifiedElement, !overlay.allowSearchById() + || generalFlag)); + } } return Promise.all(promises).then(function (values) { -- GitLab