From 3c97e2751780f525859d50507779d734b9c5f05d Mon Sep 17 00:00:00 2001 From: Ahmad Ayubi Date: Fri, 12 Nov 2021 11:44:48 -0500 Subject: [PATCH 1/2] Auto issue query on moveend, add test --- src/mapml/layers/Crosshair.js | 12 ++++++++++++ test/e2e/layers/queryLink.test.js | 18 ++++++++++++++++++ 2 files changed, 30 insertions(+) diff --git a/src/mapml/layers/Crosshair.js b/src/mapml/layers/Crosshair.js index b63ae5a54..90218e05f 100644 --- a/src/mapml/layers/Crosshair.js +++ b/src/mapml/layers/Crosshair.js @@ -35,6 +35,7 @@ export var Crosshair = L.Layer.extend({ map.on("layerchange layeradd layerremove overlayremove", this._toggleEvents, this); map.on("popupopen", this._isMapFocused, this); + map.on("moveend", this._moveEndQuery, this); L.DomEvent.on(map._container, "keydown keyup mousedown", this._isMapFocused, this); this._addOrRemoveCrosshair(); @@ -43,6 +44,7 @@ export var Crosshair = L.Layer.extend({ onRemove: function (map) { map.off("layerchange layeradd layerremove overlayremove", this._toggleEvents); map.off("popupopen", this._isMapFocused); + map.off("moveend", this._moveEndQuery); L.DomEvent.off(map._container, "keydown keyup mousedown", this._isMapFocused); }, @@ -55,6 +57,16 @@ export var Crosshair = L.Layer.extend({ this._addOrRemoveCrosshair(); }, + _moveEndQuery: function (e) { + if (this._hasQueryableLayer() && this._map.isFocused) { + this._map.fire('click', { + latlng: this._map.getCenter(), + layerPoint: this._map.latLngToLayerPoint(this._map.getCenter()), + containerPoint: this._map.latLngToContainerPoint(this._map.getCenter()) + }); + } + }, + _addOrRemoveCrosshair: function (e) { if (this._hasQueryableLayer()) { this._container.style.visibility = null; diff --git a/test/e2e/layers/queryLink.test.js b/test/e2e/layers/queryLink.test.js index 008f250be..c5f6aeeb1 100644 --- a/test/e2e/layers/queryLink.test.js +++ b/test/e2e/layers/queryLink.test.js @@ -73,6 +73,24 @@ jest.setTimeout(50000); expect(popupNumLeft).toEqual(0); expect(popupNumTop).toEqual(0); }); + test("[" + browserType + "]" + " Auto query on moveend", async () => { + await page.reload() + await page.click("div"); + + await page.keyboard.press("Escape"); + await page.waitForTimeout(500); + await page.keyboard.press("ArrowUp"); + await page.waitForSelector("div > div.leaflet-pane.leaflet-map-pane > div.leaflet-pane.leaflet-popup-pane > div"); + const popupNum = await page.$eval("div > div.leaflet-pane.leaflet-map-pane > div.leaflet-pane.leaflet-popup-pane", (div) => div.childElementCount); + expect(popupNum).toEqual(1); + + await page.keyboard.press("Escape"); + await page.waitForTimeout(1000); + await page.keyboard.press("ArrowDown"); + await page.waitForSelector("div > div.leaflet-pane.leaflet-map-pane > div.leaflet-pane.leaflet-popup-pane > div"); + const popupNumTwo = await page.$eval("div > div.leaflet-pane.leaflet-map-pane > div.leaflet-pane.leaflet-popup-pane", (div) => div.childElementCount); + expect(popupNumTwo).toEqual(1); + }); }); describe("Queried Feature Tests in " + browserType, () => { test("[" + browserType + "]" + " First feature added + popup content updated ", async () => { From e9ab89e34749884db3b374a4a97b1d9161777a91 Mon Sep 17 00:00:00 2001 From: Ahmad Ayubi Date: Fri, 12 Nov 2021 12:11:12 -0500 Subject: [PATCH 2/2] Remove test for crosshair remaining on arrow key presses --- test/e2e/core/keyboardInteraction.test.js | 13 ------------- 1 file changed, 13 deletions(-) diff --git a/test/e2e/core/keyboardInteraction.test.js b/test/e2e/core/keyboardInteraction.test.js index b842f2b59..ad8c6393f 100644 --- a/test/e2e/core/keyboardInteraction.test.js +++ b/test/e2e/core/keyboardInteraction.test.js @@ -30,19 +30,6 @@ jest.setTimeout(50000); expect(afterTab).toEqual(""); }); - test("[" + browserType + "]" + " Crosshair remains on map move with arrow keys", async () => { - await page.keyboard.press("ArrowUp"); - await page.waitForTimeout(1000); - await page.keyboard.press("ArrowDown"); - await page.waitForTimeout(1000); - await page.keyboard.press("ArrowLeft"); - await page.waitForTimeout(1000); - await page.keyboard.press("ArrowRight"); - await page.waitForTimeout(1000); - const afterMove = await page.$eval("div > div.mapml-crosshair", (div) => div.style.visibility); - expect(afterMove).toEqual(""); - }); - test("[" + browserType + "]" + " Crosshair shows on esc but hidden on tab out", async () => { await page.keyboard.press("Escape"); const afterEsc = await page.$eval("div > div.mapml-crosshair", (div) => div.style.visibility);