- I made the buttons work like GitHub comment-on-issue buttons
before typing: "Close Note" / "Comment" (disabled)
after typing: "Close and Comment" / "Comment" (enabled)
- I removed a bunch of the event dispatches. These are useful for sending
events to listeners/observers outside of the module. In this case I think
we can handle most of the things from within the uiNoteEditor. We can still
dispatch an 'update' event so that modeSelectNote can reselect and redraw
the note after some change happens to it.
TODO - make the buttons work / check the OSM API stuff.
(closes#4841)
Before, first/last keyboard shortcuts only worked if you had a vertex selected.
Now you can navigate to the first/last vertices even if you have the way selected.
Trying to eliminate the minimum 10m distance for replacing the original
junction vertex - this is a small threshold. When _not_ replacing this
vertex, the unzorro code will wreck havok on a traffic circle.
(If there is no suitable vertex to use, it will snap to a point between
the nearest vertices, see #4146)
(closes#4669)
Now instead of creating MultiLineString targets, we just create a bunch of
LineString targets. This makes the code simpler, and anyway the entity is
still there in `properties` for drawing code to decide what to do with the target.
Incidentally, this change allows iD to support an extrusion operation.
(Because each way segment has its own unique GeoJSON target now)
- Attempt fast save first, only perform conflict resolution if necessary (re: #3056)
- Block reentry of save, and dont keep focus on save button (closes#4641)
- Refactor modeSave() for code clarity (avoid shared state in closure variables)
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
The goal here is that the code that draws the targets should know better
what parts of the lines/vertices are targetable, rather than just
relying on CSS to ignore the pointer events on the whole line.
e.g. when drawing a line, it's ok for it to loop back and connect
to itself, just not on a segment or vertex adjacent to the active
node.