Merge pull request #1667 from umap-project/fix-querystring-feature

fix: make sure to reset feature query string parameter
This commit is contained in:
Yohan Boniface 2024-03-01 17:02:03 +01:00 committed by GitHub
commit 42129a3a45
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
3 changed files with 29 additions and 1 deletions

View file

@ -226,6 +226,8 @@ U.IframeExporter = L.Evented.extend({
const datalayers = [] const datalayers = []
if (this.options.viewCurrentFeature && this.map.currentFeature) { if (this.options.viewCurrentFeature && this.map.currentFeature) {
this.queryString.feature = this.map.currentFeature.getSlug() this.queryString.feature = this.map.currentFeature.getSlug()
} else {
delete this.queryString.feature
} }
if (this.options.keepCurrentDatalayers) { if (this.options.keepCurrentDatalayers) {
this.map.eachDataLayer((datalayer) => { this.map.eachDataLayer((datalayer) => {

View file

@ -73,3 +73,11 @@ def test_map_preview_can_change_styling_from_querystring(page, live_server, tile
markers = page.locator(".leaflet-marker-icon .icon_container") markers = page.locator(".leaflet-marker-icon .icon_container")
expect(markers).to_have_count(1) expect(markers).to_have_count(1)
expect(markers).to_have_css("background-color", "rgb(139, 0, 0)") expect(markers).to_have_css("background-color", "rgb(139, 0, 0)")
def test_can_open_feature_on_load(page, live_server, tilelayer):
page.goto(
f"{live_server.url}/map/?data={quote(json.dumps(GEOJSON))}&feature=Niagara Falls"
)
# Popup is open.
expect(page.get_by_text("Niagara Falls")).to_be_visible()

View file

@ -6,7 +6,7 @@ from playwright.sync_api import expect
pytestmark = pytest.mark.django_db pytestmark = pytest.mark.django_db
def test_iframe_code(map, live_server, datalayer, page): def test_iframe_code_can_contain_datalayers(map, live_server, datalayer, page):
page.goto(f"{live_server.url}{map.get_absolute_url()}?share") page.goto(f"{live_server.url}{map.get_absolute_url()}?share")
textarea = page.locator(".umap-share-iframe") textarea = page.locator(".umap-share-iframe")
expect(textarea).to_be_visible() expect(textarea).to_be_visible()
@ -20,3 +20,21 @@ def test_iframe_code(map, live_server, datalayer, page):
page.get_by_text("Embed and link options").click() page.get_by_text("Embed and link options").click()
page.get_by_title("Keep current visible layers").click() page.get_by_title("Keep current visible layers").click()
expect(textarea).to_have_text(re.compile(f"datalayers={datalayer.pk}")) expect(textarea).to_have_text(re.compile(f"datalayers={datalayer.pk}"))
# Now click again
page.get_by_title("Keep current visible layers").click()
expect(textarea).not_to_have_text(re.compile(f"datalayers={datalayer.pk}"))
def test_iframe_code_can_contain_feature(map, live_server, datalayer, page):
page.goto(f"{live_server.url}{map.get_absolute_url()}?share")
page.locator(".icon_container").click()
textarea = page.locator(".umap-share-iframe")
expect(textarea).to_be_visible()
expect(textarea).not_to_have_text(re.compile("feature=Here"))
# Open options
page.get_by_text("Embed and link options").click()
page.get_by_title("Open current feature on load").click()
expect(textarea).to_have_text(re.compile("feature=Here"))
# Click again to deactivate it
page.get_by_title("Open current feature on load").click()
expect(textarea).not_to_have_text(re.compile("feature=Here"))