From c16309f6702cb4a805d87ff76ecc12e67bb19646 Mon Sep 17 00:00:00 2001 From: Xen0Xys Date: Fri, 9 Aug 2024 09:43:32 +0200 Subject: [PATCH] :sparkles: Add removeOverlayByName function --- CHANGELOG.md | 4 ++++ src/js/Aladin.js | 11 +++++++---- src/js/View.js | 13 +++++++++++-- 3 files changed, 22 insertions(+), 6 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 79df648b..81935858 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,9 @@ # Changelogs +## [Unreleased] + +* [feat] Add support for name removing in `removeOverlay` method + ## 3.4.5-beta * [feat] add `layerChanged` event when a layer is added or removed diff --git a/src/js/Aladin.js b/src/js/Aladin.js index a1d44645..365dcfc7 100644 --- a/src/js/Aladin.js +++ b/src/js/Aladin.js @@ -1485,13 +1485,16 @@ export let Aladin = (function () { Aladin.prototype.removeLayers = Aladin.prototype.removeOverlays; /** - * Remove a overlay by its layer name - * + * Remove an overlay by its layer name + * * @memberof Aladin - * @param {string} layer + * @param {string|Layer} layer - The name of the layer to remove or the layer object itself */ Aladin.prototype.removeOverlay = function (layer) { - this.view.removeLayer(layer); + if(layer instanceof String) + this.view.removeOverlayByName(layer); + else + this.view.removeOverlay(layer); }; /** diff --git a/src/js/View.js b/src/js/View.js index d5e2ae10..b8dcbe8d 100644 --- a/src/js/View.js +++ b/src/js/View.js @@ -2064,13 +2064,13 @@ export let View = (function () { this.requestRedraw(); }; - View.prototype.removeLayer = function (layer) { + View.prototype.removeOverlay = function (layer) { let indexToDelete = this.allOverlayLayers.indexOf(layer); this.allOverlayLayers.splice(indexToDelete, 1); if (layer.type == 'catalog' || layer.type == 'progressivecat') { indexToDelete = this.catalogs.indexOf(layer); - + this.catalogs.splice(indexToDelete, 1); this.unselectObjects(); @@ -2093,6 +2093,15 @@ export let View = (function () { this.requestRedraw(); }; + View.prototype.removeOverlayByName = function (layerName) { + let layer = this.allOverlayLayers.find(l => l.name === layerName); + if (!layer) { + console.error(`Layer with name "${layerName}" not found.`); + return; + } + this.removeOverlay(layer); + }; + View.prototype.addCatalog = function (catalog) { catalog.name = this.makeUniqLayerName(catalog.name); this.allOverlayLayers.push(catalog);