From d035cdf2d36f42a3ac3453ec551861a1b31b0b2a Mon Sep 17 00:00:00 2001 From: Piotr Gawron <piotr.gawron@uni.lu> Date: Mon, 9 Apr 2018 10:51:37 +0200 Subject: [PATCH] listener for changing background data overlay added --- frontend-js/src/main/js/map/CustomMap.js | 17 +++++++---- frontend-js/src/test/js/map/CustomMap-test.js | 29 +++++++++++++++++++ 2 files changed, 40 insertions(+), 6 deletions(-) diff --git a/frontend-js/src/main/js/map/CustomMap.js b/frontend-js/src/main/js/map/CustomMap.js index 882a665b97..26824f4642 100644 --- a/frontend-js/src/main/js/map/CustomMap.js +++ b/frontend-js/src/main/js/map/CustomMap.js @@ -37,6 +37,7 @@ function CustomMap(options) { this.registerListenerType("onBioEntityClick"); this.registerListenerType("onShowOverlay"); this.registerListenerType("onHideOverlay"); + this.registerListenerType("onBackgroundOverlayChange"); this._selectedOverlays = []; @@ -230,14 +231,18 @@ CustomMap.prototype.openDataOverlay = function (param) { }); } } else { - self.getGoogleMap().setMapTypeId(identifier.toString()); + if (identifier.toString() === self.getGoogleMap().getMapTypeId()) { + return Promise.resolve(); + } else { + self.getGoogleMap().setMapTypeId(identifier.toString()); - var submaps = self.getSubmaps(); - for (var i = 0; i < submaps.length; i++) { - var submap = submaps[i]; - submap.openDataOverlay(identifier); + var submaps = self.getSubmaps(); + for (var i = 0; i < submaps.length; i++) { + var submap = submaps[i]; + submap.openDataOverlay(identifier); + } + return self.callListeners("onBackgroundOverlayChange", identifier); } - return Promise.resolve(); } }).then(function () { return self.callListeners("onShowOverlay", overlayToOpen); diff --git a/frontend-js/src/test/js/map/CustomMap-test.js b/frontend-js/src/test/js/map/CustomMap-test.js index 6c14e03b7a..f2aac9e96c 100644 --- a/frontend-js/src/test/js/map/CustomMap-test.js +++ b/frontend-js/src/test/js/map/CustomMap-test.js @@ -132,6 +132,35 @@ describe('CustomMap', function () { }); }); + it("check backgroundChangeListener", function () { + var map = helper.createCustomMap(); + var overlay = helper.createOverlay(); + overlay.setInitialized(true); + overlay.setInputDataAvailable(true); + map.getProject().addDataOverlay(overlay); + var overlay2 = helper.createOverlay(); + overlay2.setInitialized(true); + overlay2.setInputDataAvailable(true); + map.getProject().addDataOverlay(overlay2); + + var emptyBackground = helper.createOverlay(); + emptyBackground.setInputDataAvailable(false); + emptyBackground.setName("Empty"); + map.getProject().addDataOverlay(emptyBackground); + + var counter = 0; + map.addListener("onBackgroundOverlayChange", function () { + counter++; + }); + + return map.openDataOverlay(overlay.getId()).then(function () { + assert.equal(1, counter, "listener wasn't fired"); + return map.openDataOverlay(overlay2.getId()); + }).then(function () { + assert.equal(1, counter, "listener shouldn't be fired again because nothing changed"); + }); + }); + it("simple", function () { var map = helper.createCustomMap(); var alias = helper.createAlias(map); -- GitLab