(closes#3663)
* Add Nuclear Explosion Site and Military Office presets
* Add Bunker Type field
* Improve styling rules for preset icons
* Improve search terms for all military presets
* Nest military presets under `landuse=military`
* Add ref, iata, icao fields to Military Airfield
* Don't set area pattern fills on buildings
(closes#3678)
Also:
* changed Plant Nursery to be area geometry only, not point
* added "plant" field to Plant Nursery preset
* added "operator" field to this and other related presets
* added search terms for this and other related presets
* Support move, rotate, reflect, delete post paste on multiselection
* Improve text and error msgs for singular vs multi selections
* Move `disabled` checks from actions to operations
* Reproject center of rotation (closes#3667)
* Cleanup tests
(closes#3661)
This one was a little complicated because they are generally tagged along
with landuse=industrial, and we want to make sure the power=plant is
the tag used for matching.
* Having separate presets for Surveillance and Surveillance Camera means
we can show the camera related fields only if `surveillance:type=camera`
* Generally use Upper Case for labels and keep it short
* if list of values is really fixed, use options strings to make them translateable
* if list of values is not fixed, avoid adding placeholder, iD will fetch from taginfo
* Seems like value "ALPR" is preferred over "alpr"
* if 509 Bandwidth Exceeded / 429 Too Many Requests, prompt for login
(closes#2262)
* if 400 Bad Request / 401 Unauthorized / 403 Forbidden - logout and retry
(closes#3546)
(closes#3557)
For the icons:
* use open circle for traversable features (turning_circle, mini-roundabout)
* use closed circle for non-traversable features (turning_loop, island)
(closes#3218)
* Allow traffic calmings on vertex and line geometry where appropriate
* Add parallel_direction field to tag forward/backward
* Add generic traffic calming preset and type field
* Add traffic calming to defaults.json for "vertex" geometry
* Add a bunch of types that we didn't have before (island, dip, choker, etc)
* Add some search terms
(closes#3324)
Previously we allowed devs to swap out services that they didn't need.
This became difficult now that ES6 exports are immutable bindings.
But we can wrap the immutable bindings themselves in a live object,
to get back the flexibility that we used to have.
This change also drops the `taginfo` accessor on Context, since devs who want
to swap out taginfo service with something else can now do so through the live
binding. `iD.services.taginfo = myTaginfo()`