- can't reliably use sinon.spy to tell whether a thing has been called,
so we listen for events instead and check server.requests()
- make sure to request the next page before dispatching `loadedImages` so
we can `server.respond()` to the request in the event handler if we want to
- also moves `localeDateString` in the openstreetcam service from parsing
code to display code, because it's very slow (we can just do this for the
images we look at, instead of all images we fetch)
Root cause was the `select` mode removing the "selected" class from all
elements upon `exit()`. Easy fix is to use a different class (here
"currentView") for street imagery elements.
Fixes:
- Selecting a bubble then enabling a second imagery layer removes the hovered and selected highlighting
- If multiple imagery layers are enabled and you select a bubble it only temporarily becomes highlighted
- If multiple imagery layers are enabled and a bubble is highlighted, hovering over another imagery layer's bubble will remove the selected and hovered highlighting
Basically these all came down to style updates resetting all layers for
cases other than when the viewport was changed (where doing so makes
sense because the selected bubble/sequence needs to update as a result).
See #5494
(closes#4297)
The previous approach split the viewport up by pixels, but each time the view
moved, the pixels would change, so it was not a stable selection of the
streetview data, and the markers would fight for position as the user moved
around.
This approach uses utilTiler to partition the view into stable tiles.
(closes#4536)
This avoids binding the viewer to an image key that might not be
fully processed, which gets the viewer into a bad state.
Instead, we initialize the viewer with a `null` image key and
issue `moveToKey` immediately.
This commit also adds exception handling for moveToKey.
(closes#4526)
What we were doing before was d3.selecting the attribution line and
inserting the capture date into it. This was confusing the viewer
(which updates asynchronously) so that the sitelink would never update.
To make things easier, we'll just hide the viewer's built in attribution
and construct the attribution line the way we want it.