diff --git a/frontend-js/src/main/js/gui/leftPanel/OverlayPanel.js b/frontend-js/src/main/js/gui/leftPanel/OverlayPanel.js index 651c3cfa10ea436008b0dfb66c6582d2cd9f78d6..704c9a051e4db1e415e5942c8515633905315958 100644 --- a/frontend-js/src/main/js/gui/leftPanel/OverlayPanel.js +++ b/frontend-js/src/main/js/gui/leftPanel/OverlayPanel.js @@ -468,12 +468,9 @@ OverlayPanel.prototype.refresh = function (showDefault) { selectedOverlay[visibleDataOverlays[j].getId()] = true; } - return self.getServerConnector().getOverlays({ - publicOverlay: false, - creator: user.getLogin() - }); - }).then(function (customOverlays) { - self.getProject().addOrUpdateDataOverlays(customOverlays); + return self.getServerConnector().getOverlays(); + }).then(function (overlaysFromServer) { + self.getProject().addOrUpdateDataOverlays(overlaysFromServer); if (!showDefault) { var id = self.getMap().getBackgroundDataOverlay().getId(); @@ -486,15 +483,22 @@ OverlayPanel.prototype.refresh = function (showDefault) { var overlay; var overlays = self.getProject().getDataOverlays(); + var customOverlays = []; + var defaultOverlay = null; for (var i = 0; i < overlays.length; i++) { overlay = overlays[i]; if (overlay.getCreator() === undefined || overlay.getCreator() === "") { generalOverlays.push(overlay); if (showDefault && overlay.isDefaultOverlay()) { - selectedOverlay[overlay.getId()] = true; + defaultOverlay = overlay; } + } else { + customOverlays.push(overlay); } } + if (defaultOverlay !== null) { + selectedOverlay[defaultOverlay.getId()] = true; + } var table = self.getControlElement(PanelControlElementType.OVERLAY_GENERAL_OVERLAY_TABLE); table.appendChild(self.createTableHeader()); @@ -578,6 +582,8 @@ OverlayPanel.prototype.refresh = function (showDefault) { } } return Promise.all(promises); + }).then(function () { + return self.getMap().redrawSelectedDataOverlays(); }); }; diff --git a/frontend-js/src/main/js/map/data/DataOverlay.js b/frontend-js/src/main/js/map/data/DataOverlay.js index 8e5a78f53b94ebf74836b88f7a77a635f1b7790a..5eab884b4a3b7d9d33bf66026b08b83fbc52b51a 100644 --- a/frontend-js/src/main/js/map/data/DataOverlay.js +++ b/frontend-js/src/main/js/map/data/DataOverlay.js @@ -414,6 +414,9 @@ DataOverlay.prototype.isGoogleLicenseConsent = function () { * @param {DataOverlay} overlay */ DataOverlay.prototype.update = function (overlay) { + this.setPublicOverlay(overlay.getPublicOverlay()); + this.setOrder(overlay.getOrder()); + this.setCreator(overlay.getCreator()); this.setName(overlay.getName()); this.setDescription(overlay.getDescription()); }; diff --git a/frontend-js/src/main/js/map/data/Project.js b/frontend-js/src/main/js/map/data/Project.js index e01d1bffb3c1bbb63bab94e3ea3854cc0e9754f3..8e86530b1b17f1fa0ac904f3b8f50be6754983ca 100644 --- a/frontend-js/src/main/js/map/data/Project.js +++ b/frontend-js/src/main/js/map/data/Project.js @@ -32,6 +32,10 @@ function Project(data) { ObjectWithListeners.call(this); this.registerListenerType("onreload"); + /** + * @type {Array<DataOverlay>} + * @private + */ this._dataOverlays = []; this._models = []; this._elementsPointingToSubmap = []; diff --git a/frontend-js/src/test/js/gui/leftPanel/OverlayPanel-test.js b/frontend-js/src/test/js/gui/leftPanel/OverlayPanel-test.js index 690b906124bece411b8db6e68c6f9aeee2cc3d7c..08034713bc88ef6a1fe9944337adfedecd97645b 100644 --- a/frontend-js/src/test/js/gui/leftPanel/OverlayPanel-test.js +++ b/frontend-js/src/test/js/gui/leftPanel/OverlayPanel-test.js @@ -39,6 +39,7 @@ describe('OverlayPanel', function () { describe('refresh', function () { it('anonymous', function () { var map = helper.createCustomMap(); + map.getProject().addDataOverlay(helper.createBackgroundOverlay()); var panel = new OverlayPanel({ element: testDiv, @@ -55,6 +56,7 @@ describe('OverlayPanel', function () { it('admin', function () { helper.loginAsAdmin(); var map = helper.createCustomMap(); + map.getProject().addDataOverlay(helper.createBackgroundOverlay()); var panel = new OverlayPanel({ element: testDiv, @@ -119,9 +121,7 @@ describe('OverlayPanel', function () { it('download', function () { var map = helper.createCustomMap(); - var overlay = helper.createOverlay(); - overlay.setInputDataAvailable(true); - map.getProject().addDataOverlay(overlay); + map.getProject().addDataOverlay(helper.createBackgroundOverlay()); var panel = new OverlayPanel({ element: testDiv, diff --git a/frontend-js/src/test/js/helper.js b/frontend-js/src/test/js/helper.js index fe698c7ae711d4f0638ac69997b22f819cf29588..2f850abaa0ef24bed2de3d72d82f329036e3908a 100644 --- a/frontend-js/src/test/js/helper.js +++ b/frontend-js/src/test/js/helper.js @@ -434,6 +434,19 @@ Helper.prototype.createOverlay = function (model) { }); }; +/** + * + * @param {MapModel} [model] + * @returns {DataOverlay} + */ +Helper.prototype.createBackgroundOverlay = function (model) { + var result = this.createOverlay(model); + result.setInputDataAvailable(true); + result.setDefaultOverlay(true); + result.setName("empty"); + return result; +}; + /** * * @param {Project} [project] diff --git a/frontend-js/testFiles/apiCalls/projects/complex_model_with_images/overlays/token=MOCK_TOKEN_ID& b/frontend-js/testFiles/apiCalls/projects/complex_model_with_images/overlays/token=MOCK_TOKEN_ID& new file mode 100644 index 0000000000000000000000000000000000000000..b9254627b7ed1bdc5b5e83ae2da2e221f928c6ef --- /dev/null +++ b/frontend-js/testFiles/apiCalls/projects/complex_model_with_images/overlays/token=MOCK_TOKEN_ID& @@ -0,0 +1 @@ +[{"defaultOverlay":false,"deprecatedColumns":[],"description":null,"googleLicenseConsent":false,"idObject":17987,"images":[{"modelId":19397,"path":"_nested0"},{"modelId":19399,"path":"_nested3"},{"modelId":19398,"path":"_nested1"},{"modelId":19400,"path":"_nested2"}],"inputDataAvailable":false,"name":"Pathways and compartments","order":1,"publicOverlay":true},{"defaultOverlay":false,"deprecatedColumns":[],"description":null,"googleLicenseConsent":false,"idObject":17988,"images":[{"modelId":19397,"path":"_normal0"},{"modelId":19399,"path":"_normal3"},{"modelId":19398,"path":"_normal1"},{"modelId":19400,"path":"_normal2"}],"inputDataAvailable":false,"name":"Network","order":1,"publicOverlay":true},{"defaultOverlay":false,"deprecatedColumns":[],"description":null,"googleLicenseConsent":false,"idObject":17989,"images":[{"modelId":19397,"path":"_empty0"},{"modelId":19399,"path":"_empty3"},{"modelId":19398,"path":"_empty1"},{"modelId":19400,"path":"_empty2"}],"inputDataAvailable":false,"name":"Empty","order":1,"publicOverlay":true}] \ No newline at end of file