brouter-web/README.md
Henrik Fehlauer eeb1c5bde3
Emit console warning when using an unsupported BRouter version
abrensch/brouter@c9ae7c8681 changed indexing of voice hint ids, because
some new hints were inserted in the middle instead of strictly at the
end, changing the numbering of existing ids. For example, now id `12`
was sent to indicate a right u-turn, while we still assume the old
meaning of `12`, i.e. "off route". This clearly was an API break.

This leads us to abort exporting with the Gpsies turn instructions
style, since `OFFR` has an `undefined` symbol assigned, as well as
emitting wrong voice hints for ids after `9`. Another unwelcome side
effect is showing negative exit numbers for roundabouts.

This breakage in the GeoJSON HTTP API has been shipping in BRouter 1.7.0
and 1.7.1 and finally got fixed with abrensch/brouter@82fecf9 contained
in BRouter 1.7.2 or later. Earlier releases like 1.6.3 are also
unaffected. To avoid emitting incorrect voice hints in BRouter-Web,
running with broken versions of BRouter should be avoided.

By checking the "Creator" field after receiving the first response from
BRouter, we can now emit a warning if the version of BRouter used is
unsupported. The warning mostly targets administrators and power users,
i.e. those responsible for choosing the software versions used, and it
is also only shown once per session.

Note that the version check is compatible with the common "SemVer"
scheme, so the check should continue working and even support more
complex version compatibility scenarios as long as BRouter stays
SemVer-compliant.

Ref #751

Test Plan:
  - Run with BRouter 1.6.3 and 1.7.2, no warnings shown.
  - Run with BRouter 1.7.0 and 1.7.1, warnings shown only for the first
  segment.
2023-07-06 09:46:47 +00:00

152 lines
12 KiB
Markdown

# brouter-web
Web client (by [@nrenner](https://github.com/nrenner) and [contributors](https://github.com/nrenner/brouter-web/graphs/contributors)) for the BRouter routing engine (by [@abrensch](https://github.com/abrensch)).
![demo](https://user-images.githubusercontent.com/1451988/83979926-1f6d8c80-a912-11ea-8f21-b2ed60963501.gif)
Instances:
- [brouter.de/brouter-web](https://brouter.de/brouter-web/) _(provided by [@abrensch](https://github.com/abrensch))_
- [brouter.damsy.net](https://brouter.damsy.net) _(provided by [@bagage](https://github.com/bagage))_
**This repository is only about the frontend**.
For the server/backend, BRouter routing engine, Android app, profiles, [brouter.de](https://brouter.de) site, see:
https://github.com/abrensch/brouter
More information:
https://brouter.de
## Contact
General BRouter discussions/questions, support:
- [Google Group](https://groups.google.com/group/osm-android-bikerouting)
- [`#brouter` on Matrix](https://matrix.to/#/#_oftc_#brouter:matrix.org) ([Element](https://app.element.io/#/room/#_oftc_#brouter:matrix.org)).
## Translating
Translations are managed using the
[Transifex](https://www.transifex.com/openstreetmap/brouter-web/) platform. After
signing up, you can go to [BRouter's project
page](https://www.transifex.com/openstreetmap/brouter-web/dashboard/), select a language and
click **Translate** to start translating.
## Installation
See [INSTALL.md](INSTALL.md) for guidance on installation.
## Build
See [CONTRIBUTING.md](CONTRIBUTING.md) for development documentation.
## License
Copyright (c) 2018 Norbert Renner and [contributors](https://github.com/nrenner/brouter-web/graphs/contributors), licensed under the [MIT License (MIT)](LICENSE)
### Credits and Licenses
- [BRouter](https://github.com/abrensch/brouter) (not included)
by abrensch; [MIT License](https://github.com/abrensch/brouter/blob/master/LICENSE)
- [Leaflet](https://leafletjs.com/)
Copyright (c) 2010-2014, Vladimir Agafonkin; Copyright (c) 2010-2011, CloudMade; [2-clause BSD License](https://github.com/Leaflet/Leaflet/blob/master/LICENSE)
- [leaflet-routing](https://github.com/Turistforeningen/leaflet-routing)
Copyright (c) 2013, Turistforeningen, Hans Kristian Flaatten. All rights reserved. [2-clause BSD License](https://github.com/Turistforeningen/leaflet-routing/blob/gh-pages/LICENSE)
- [Leaflet.Elevation](https://github.com/MrMufflon/Leaflet.Elevation)
Copyright (c) 2013 Felix Bache; [MIT License](https://github.com/MrMufflon/Leaflet.Elevation/blob/master/LICENSE)
- [D3.js](https://github.com/mbostock/d3)
Copyright (c) 2013, Michael Bostock. All rights reserved.; [3-clause BSD License](https://github.com/mbostock/d3/blob/master/LICENSE)
- [Leaflet.Editable](https://github.com/Leaflet/Leaflet.Editable)
Yohan Boniface; WTFPL licence
- [Leaflet Control Geocoder](https://github.com/perliedman/leaflet-control-geocoder)
Copyright (c) 2012 [sa3m](https://github.com/sa3m), Copyright (c) 2013 Per Liedman; [2-clause BSD License](https://github.com/perliedman/leaflet-control-geocoder/blob/master/LICENSE)
- [leaflet-plugins](https://github.com/shramov/leaflet-plugins)
Copyright (c) 2011-2012, Pavel Shramov; [2-clause BSD License](https://github.com/shramov/leaflet-plugins/blob/master/LICENSE)
- [Async.js](https://github.com/caolan/async)
Copyright (c) 2010-2014 Caolan McMahon; [MIT License](https://github.com/caolan/async/blob/master/LICENSE)
- [Bootstrap](https://getbootstrap.com/)
Copyright (c) 2011-2014 Twitter, Inc; [MIT License](https://github.com/twbs/bootstrap/blob/master/LICENSE)
- [jQuery](https://github.com/jquery/jquery)
Copyright 2005, 2014 jQuery Foundation and other contributors; [MIT License](https://github.com/jquery/jquery/blob/master/LICENSE.txt)
- [DataTables](https://github.com/DataTables/DataTables)
Copyright (C) 2008-2014, SpryMedia Ltd.; [MIT License](https://www.datatables.net/license/MIT-LICENCE)
- [Leaflet.EasyButton](https://github.com/CliffCloud/Leaflet.EasyButton)
Copyright (C) 2014 Daniel Montague; [MIT License](https://github.com/CliffCloud/Leaflet.EasyButton/blob/master/LICENSE)
- [Bootbox](https://github.com/makeusabrew/bootbox)
Copyright (C) 2011-2014 by Nick Payne; [MIT License](https://github.com/makeusabrew/bootbox/blob/master/LICENSE.md)
- [bootstrap-slider](https://github.com/seiyria/bootstrap-slider)
Copyright (c) 2015 Kyle Kemp, Rohit Kalkur, and contributors; [MIT License](https://github.com/seiyria/bootstrap-slider/blob/master/LICENSE.md)
- [Leaflet.RestoreView](https://github.com/makinacorpus/Leaflet.RestoreView)
Copyright (c) 2012 Makina Corpus, [MIT License](https://github.com/makinacorpus/Leaflet.RestoreView/blob/master/LICENSE)
- [Leaflet.Locate](https://github.com/domoritz/leaflet-locatecontrol)
Copyright (c) 2014 Dominik Moritz, [MIT License](https://github.com/domoritz/leaflet-locatecontrol/blob/gh-pages/LICENSE)
- [Font Awesome](https://fontawesome.com/v4.7.0/license/)
by Dave Gandy; [SIL OFL 1.1](https://scripts.sil.org/OFL) (Font), MIT License (Code), CC BY 3.0 (Documentation)
- [url-search-params](https://github.com/WebReflection/url-search-params)
Copyright (C) 2015-2017 Andrea Giammarchi - @WebReflection; [MIT License](https://github.com/WebReflection/url-search-params/blob/master/LICENSE.txt)
- [bootstrap-select](https://github.com/snapappointments/bootstrap-select)
Copyright (c) 2012-2018 SnapAppointments, LLC; [MIT License](https://github.com/snapappointments/bootstrap-select/blob/v1.13.0-dev/LICENSE)
- [leaflet-sidebar-v2](https://github.com/nickpeihl/leaflet-sidebar-v2)
Copyright (c) 2013 Tobias Bieniek; [MIT License](https://github.com/nickpeihl/leaflet-sidebar-v2/blob/master/LICENSE)
- [CodeMirror](https://github.com/codemirror/CodeMirror)
Copyright (C) 2017 by Marijn Haverbeke <marijnh@gmail.com> and others; [MIT License](https://github.com/codemirror/CodeMirror/blob/master/LICENSE)
- [Map BBCode](https://github.com/MapBBCode/mapbbcode)
Ilya Zverev; [Do What The F\*ck You Want To Public License](https://github.com/MapBBCode/mapbbcode/blob/master/LICENSE)
- [Leafet.StravaSegments](https://gitlab.com/bagage/leaflet.stravasegments)
Copyright (c) 2018 Gautier Pelloux-Prayer; [MIT License](https://gitlab.com/bagage/leaflet.stravasegments/blob/master/LICENSE)
- [polyline](https://github.com/mapbox/polyline)
Copyright (c), Development Seed; [BSD 3-Clause License](https://github.com/mapbox/polyline/blob/master/LICENSE)
- [leaflet-fullHash](https://github.com/KoGor/leaflet-fullHash)
Copyright (c) 2014 KoGor; [MIT License](https://github.com/KoGor/leaflet-fullHash/blob/master/LICENSE)
- [Turf.js](https://github.com/Turfjs/turf)
Copyright (c) 2019 Morgan Herlocker; [MIT License](https://github.com/Turfjs/turf/blob/master/LICENSE)
- [i18next](https://github.com/i18next/i18next), [i18next-browser-languageDetector](https://github.com/i18next/i18next-browser-languageDetector), [i18next-xhr-backend](https://github.com/i18next/i18next-xhr-backend), [jquery-i18next](https://github.com/i18next/jquery-i18next/blob/master/LICENSE)
Copyright (c) 2017 i18next; [MIT License](https://github.com/i18next/i18next/blob/master/LICENSE)
- [Leaflet TriangleMarker](https://github.com/themeler/leaflet-triangle-marker)
Copyright (c) 2018 Przemysław Melnarowicz; [MIT License](https://github.com/themeler/leaflet-triangle-marker/blob/master/LICENSE)
- [jsTree](https://github.com/vakata/jstree)
Copyright (c) 2014 Ivan Bozhanov; [MIT License](https://github.com/vakata/jstree/blob/master/LICENSE-MIT)
- [Leaflet.snogylop](https://github.com/ebrelsford/leaflet.snogylop)
Copyright (c) 2014 Eric Brelsford; [MIT License](https://github.com/ebrelsford/Leaflet.snogylop/blob/master/LICENSE)
- [JOSM maps](https://josm.openstreetmap.de/wiki/Maps)
imagery database is licensed under [CC-BY-SA](https://creativecommons.org/licenses/by-sa/3.0/)
- [LayersCollection](https://github.com/Edward17/LayersCollection/tree/gh-pages)
Copyright (c) 2016 Eduard &lt;edward17&gt;; [MIT License](https://github.com/Edward17/LayersCollection/blob/gh-pages/LICENSE.md)
- [Leaflet-providers](https://github.com/leaflet-extras/leaflet-providers)
Copyright (c) 2013 Leaflet Providers contributors All rights reserved.; [2-clause BSD License](https://github.com/leaflet-extras/leaflet-providers/blob/master/license.md)
- [Leaflet.FileLayer](https://github.com/makinacorpus/Leaflet.FileLayer)
Copyright (c) 2012 Makina Corpus; [MIT License](https://github.com/makinacorpus/Leaflet.FileLayer/blob/master/LICENSE)
- [togeojson](https://github.com/mapbox/togeojson)
Copyright (c) 2016 Mapbox All rights reserved.; [2-clause BSD License](https://github.com/mapbox/togeojson/blob/master/LICENSE)
- [Leaflet.GeometryUtil](https://github.com/makinacorpus/Leaflet.GeometryUtil)
Copyright (c) 2013, Makina Corpus; [BSD 3-Clause License](https://github.com/makinacorpus/Leaflet.GeometryUtil/blob/master/LICENSE)
- [leaflet-distance-markers](https://github.com/adoroszlai/leaflet-distance-markers)
Copyright (c) 2014- Doroszlai Attila, 2016- Phil Whitehurst; [MIT License](https://github.com/adoroszlai/leaflet-distance-markers/blob/master/LICENSE.md)
- [Leaflet.hotline](https://github.com/iosphere/Leaflet.hotline)
Copyright (c) 2015, iosphere GmbH, Jonas Coch; [3-clause BSD License](https://github.com/iosphere/Leaflet.hotline/blob/master/LICENSE)
- [Babel](https://github.com/babel/babel)
Copyright (c) 2014-present Sebastian McKenzie and other contributors; [MIT License](https://github.com/babel/babel/blob/main/LICENSE)
- [core-js](https://github.com/zloirock/core-js)
Copyright (c) 2014-2021 Denis Pushkarev; [MIT License](https://github.com/zloirock/core-js/blob/master/LICENSE)
- [regenerator-runtime](https://github.com/facebook/regenerator/tree/master/packages/regenerator-runtime)
Copyright (c) 2014-present, Facebook, Inc.; [MIT License](https://github.com/facebook/regenerator/blob/master/packages/regenerator-runtime/LICENSE)
- [tokml](https://github.com/mapbox/tokml)
Copyright (c) 2015, Mapbox All rights reserved; [BSD-2-Clause License](https://github.com/mapbox/tokml/blob/master/LICENSE.md)
- [Jest](https://github.com/facebook/jest)
Copyright (c) Facebook, Inc. and its affiliates; [MIT License](https://github.com/facebook/jest/blob/master/LICENSE)
- [overpass-layer](https://github.com/plepe/overpass-layer)
Copyright (c) 2020 Stephan Bösch-Plepelits; [MIT License](https://github.com/plepe/overpass-layer/blob/master/LICENSE)
- [maki](https://github.com/mapbox/maki)
[CC0-1.0 License](https://github.com/mapbox/maki/blob/master/LICENSE.txt)
- [temaki](https://github.com/ideditor/temaki)
[CC0-1.0 License](https://github.com/ideditor/temaki/blob/main/LICENSE.md)
- [leaflet-osm-notes](https://github.com/osmlab/leaflet-osm-notes)
[The Unlicense](https://github.com/osmlab/leaflet-osm-notes/blob/gh-pages/LICENSE)
- [Fetch polyfill](https://github.com/Github/fetch)
Copyright (c) 2014-2016 GitHub, Inc.; [MIT License](https://github.com/github/fetch/blob/master/LICENSE)
- [qrcodejs](https://github.com/llyys/qrcodejs)
Copyright (c) 2012 davidshimjs [The MIT License](https://github.com/llyys/qrcodejs/blob/master/LICENSE)
- [Bootstrap Icons](https://github.com/twbs/icons)
Copyright (c) 2019-2023 The Bootstrap Authors [The MIT License](https://github.com/twbs/icons/blob/main/LICENSE)
- [compare-versions](https://github.com/omichelsen/compare-versions)
Copyright (c) 2015-2021 Ole Michelsen [The MIT License](https://github.com/omichelsen/compare-versions/blob/main/LICENSE)