From d54843bbe277153150aafd48a4b314e10ca69e55 Mon Sep 17 00:00:00 2001 From: Yohan Boniface Date: Mon, 22 Jul 2024 10:41:46 +0200 Subject: [PATCH] feat: add {layer} as popup variable (aka extended properties) fix #2007 --- umap/static/umap/js/umap.features.js | 1 + umap/tests/integration/test_view_marker.py | 25 ++++++++++++++++++++++ 2 files changed, 26 insertions(+) diff --git a/umap/static/umap/js/umap.features.js b/umap/static/umap/js/umap.features.js index 9bfc9853..4d3a17a8 100644 --- a/umap/static/umap/js/umap.features.js +++ b/umap/static/umap/js/umap.features.js @@ -602,6 +602,7 @@ U.FeatureMixin = { if (locale) properties.locale = locale if (L.lang) properties.lang = L.lang properties.rank = this.getRank() + 1 + properties.layer = this.datalayer.getName() if (this._map && this.hasGeom()) { center = this.getCenter() properties.lat = center.lat diff --git a/umap/tests/integration/test_view_marker.py b/umap/tests/integration/test_view_marker.py index 45f7e648..bc689183 100644 --- a/umap/tests/integration/test_view_marker.py +++ b/umap/tests/integration/test_view_marker.py @@ -79,3 +79,28 @@ def test_should_open_popup_panel_on_click(live_server, map, page, bootstrap): # Close popup page.locator("#map").click() expect(panel).to_be_hidden() + + +def test_extended_properties_in_popup(live_server, map, page, bootstrap): + map.settings["properties"]["popupContentTemplate"] = """ + Rank: {rank} + Locale: {locale} + Lang: {lang} + Lat: {lat} + Lon: {lon} + Zoom: {zoom} + Layer: {layer} + """ + map.save() + page.goto(f"{live_server.url}{map.get_absolute_url()}") + expect(page.locator(".umap-icon-active")).to_be_hidden() + page.locator(".leaflet-marker-icon").click() + expect(page.locator(".umap-icon-active")).to_be_visible() + expect(page.locator(".leaflet-popup-content-wrapper")).to_be_visible() + expect(page.get_by_text("Rank: 1")).to_be_visible() + expect(page.get_by_text("Locale: en")).to_be_visible() + expect(page.get_by_text("Lang: en")).to_be_visible() + expect(page.get_by_text("Lat: 48.5529")).to_be_visible() + expect(page.get_by_text("Lon: 14.6889")).to_be_visible() + expect(page.get_by_text("Zoom: 7")).to_be_visible() + expect(page.get_by_text("Layer: test datalayer")).to_be_visible()