(closes#4761)
This improves the usability of the combobox when it appears over
other rows of fields (e.g. raw tag editor)
1. shrink size on left/right to provide more separation from content beneath
2. adjust box shadow for slightly more visibility
3. shrink size of first option by one pixel, so that the combobox
options will never perfectly line up with rows that they cover
- includes in the message the names of the streets
- also highlights related segments and nodes along the path
The messages are currently a bit rough:
U-Turns FROM Black Horse Pike IS allowed...
VIA Main Street TO Black Horse Pike
This makes the code a bit more consistent and lets us avoid some
hacky and probably non-performant things:
- abusing CSS classes in the draw/drag datum functions (classed `.target`)
(is this thing target? just check d.properties)
- regexing the id for `-nope$`
(is this thing a nope target? just check d.properties)
- using context.hasEntity to get a the real entity
(is this thing a real osmEntity? just check d.properties)
- fixes code like the restriction editor which uses fake ids for split ways
Some highlights
- `getSiblingAndChildVertices` are expensive, so they're saved and called less frequently
- draw touch targets for all the visible vertices
- remove redundant css classes and `setClass` function
This is more work to further isolate the layers that entities draw to.
It makes it easier to debug what is going on, and can eventually lead to
deferred drawing, if each draw function is in its own place and not dependant
on anything else.
I've started to replace the vertex-hover with an explicit layer for touch
targets.
Also had to change a lot of the svg tests, which are really brittle.
Things would happen like - the surface would be created, it would kick of a
deferred redraw, which would notice that the zoom was 0 and call
editOff, which would remove the osm layers that were just created and
that the tests were trying to draw to. These tests need proper zoom and
projection otherwise nothing works.
(re: #4271, #3636)
- better classification of "interesting" vertices
(include tagged, selected, or child of selected)
- now we can draw labels on selected lines again (revert #3636)
because the labels will avoid the vertices
- if debugging is on, draw a collision box for the mouse