mobility-toolbox-js 2.0.0-beta.3 → 2.0.0-beta.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (248) hide show
  1. package/.babelrc +6 -0
  2. package/.esdoc.json +17 -0
  3. package/.eslintignore +1 -0
  4. package/.github/workflows/conventional-pr-title.yml +21 -0
  5. package/.github/workflows/cypress.yml +29 -0
  6. package/.github/workflows/nodejs.yml +28 -0
  7. package/.husky/commit-msg +4 -0
  8. package/.husky/post-checkout +4 -0
  9. package/.husky/post-merge +4 -0
  10. package/.husky/post-rebase +4 -0
  11. package/.husky/pre-commit +4 -0
  12. package/.neutrinorc.js +176 -0
  13. package/.nvmrc +1 -0
  14. package/CHANGELOG.md +10 -0
  15. package/LICENSE +21 -0
  16. package/README.md +4 -1
  17. package/__mocks__/mapbox-gl.js +81 -0
  18. package/__mocks__/maplibre-gl.js +81 -0
  19. package/commitlint.config.js +1 -0
  20. package/cypress/fixtures/example.json +5 -0
  21. package/cypress/integration/examples/api.spec.js +7 -0
  22. package/cypress/integration/examples/examples.spec.js +7 -0
  23. package/cypress/integration/examples/navigation.spec.js +29 -0
  24. package/cypress/plugins/index.js +21 -0
  25. package/cypress/support/commands.js +25 -0
  26. package/cypress/support/index.js +20 -0
  27. package/cypress.json +4 -0
  28. package/data/fetchRoute.json +292 -0
  29. package/data/fetchTrajectories.json +18 -0
  30. package/data/fetchTrajectoryById.json +3 -0
  31. package/data/fetchTrajectoryStations.json +18 -0
  32. package/data/stopsSearch.json +15 -0
  33. package/documentation.yml +4 -0
  34. package/esdoc/README.md +27 -0
  35. package/esdoc/plugins/MyPlugin.js +69 -0
  36. package/esdoc/plugins/dynamic-property-plugin/Plugin.js +50 -0
  37. package/esdoc/plugins/externals-plugin/Plugin.js +45 -0
  38. package/esdoc/plugins/externals-plugin/externals.js +96 -0
  39. package/global-setup.js +3 -0
  40. package/{ol/README.md → index.html} +0 -0
  41. package/indexweb.html +49 -0
  42. package/jest.config.js +5 -0
  43. package/package.json +29 -9
  44. package/pull_request_template.md +17 -0
  45. package/renovate.json +4 -0
  46. package/scripts/read-pkg-json.js +22 -0
  47. package/{api → src/api}/index.js +0 -0
  48. package/{api → src/api}/routing/RoutingAPI.js +0 -0
  49. package/{api → src/api}/routing/RoutingAPI.test.js +0 -0
  50. package/{api → src/api}/stops/StopsAPI.js +0 -0
  51. package/{api → src/api}/stops/StopsAPI.test.js +0 -0
  52. package/{api → src/api}/tralis/TralisAPI.js +0 -0
  53. package/{api → src/api}/tralis/TralisAPI.test.js +0 -0
  54. package/{api → src/api}/tralis/TralisAPIUtils.js +0 -0
  55. package/{api → src/api}/tralis/WebSocketConnector.js +0 -0
  56. package/{api → src/api}/tralis/WebSocketConnector.test.js +0 -0
  57. package/{api → src/api}/tralis/typedefs.js +0 -0
  58. package/src/assets/Lato-Black.ttf +0 -0
  59. package/src/assets/Lato-BlackItalic.ttf +0 -0
  60. package/src/assets/Lato-Bold.ttf +0 -0
  61. package/src/assets/Lato-BoldItalic.ttf +0 -0
  62. package/src/assets/Lato-Italic.ttf +0 -0
  63. package/src/assets/Lato-Light.ttf +0 -0
  64. package/src/assets/Lato-LightItalic.ttf +0 -0
  65. package/src/assets/Lato-Regular.ttf +0 -0
  66. package/src/assets/Lato-Thin.ttf +0 -0
  67. package/src/assets/Lato-ThinItalic.ttf +0 -0
  68. package/src/assets/OFL.txt +93 -0
  69. package/{common → src/common}/Tracker.js +0 -0
  70. package/{common → src/common}/api/api.js +0 -0
  71. package/{common → src/common}/api/api.test.js +0 -0
  72. package/{common → src/common}/controls/Control.js +0 -0
  73. package/{common → src/common}/controls/Control.test.js +0 -0
  74. package/src/common/index.js +5 -0
  75. package/{common → src/common}/layers/Layer.js +0 -0
  76. package/{common → src/common}/layers/Layer.test.js +0 -0
  77. package/{common → src/common}/mixins/CopyrightMixin.js +0 -0
  78. package/{common → src/common}/mixins/SearchMixin.js +0 -0
  79. package/{common → src/common}/mixins/TralisLayerMixin.js +0 -0
  80. package/{common → src/common}/styles/index.js +1 -1
  81. package/{common → src/common}/styles/trackerDefaultStyle.js +8 -8
  82. package/{common → src/common}/styles/trackerDelayStyle.js +0 -0
  83. package/{common → src/common}/styles/trackerSimpleStyle.js +0 -0
  84. package/{common → src/common}/trackerConfig.js +0 -0
  85. package/{common → src/common}/trackerConfig.test.js +0 -0
  86. package/{common → src/common}/typedefs.js +0 -0
  87. package/{common → src/common}/utils/createTrackerFilters.js +0 -0
  88. package/{common → src/common}/utils/createTrackerFilters.test.js +0 -0
  89. package/{common → src/common}/utils/getMapboxMapCopyrights.js +0 -0
  90. package/{common → src/common}/utils/getMapboxMapCopyrights.test.js +0 -0
  91. package/{common → src/common}/utils/getMapboxStyleUrl.js +0 -0
  92. package/{common → src/common}/utils/getVehiclePosition.js +0 -0
  93. package/{common → src/common}/utils/index.js +0 -1
  94. package/{common → src/common}/utils/removeDuplicate.js +0 -0
  95. package/{common → src/common}/utils/removeDuplicate.test.js +0 -0
  96. package/{common → src/common}/utils/sortByDelay.js +0 -0
  97. package/{common → src/common}/utils/timeUtils.js +0 -0
  98. package/{common → src/common}/utils/timeUtils.test.js +0 -0
  99. package/src/doc/App.js +116 -0
  100. package/src/doc/App.scss +51 -0
  101. package/src/doc/_redirects +2 -0
  102. package/src/doc/components/CodeSandboxButton.js +103 -0
  103. package/src/doc/components/Documentation.js +40 -0
  104. package/src/doc/components/Esdoc/Anchor.js +57 -0
  105. package/src/doc/components/Esdoc/ClassDoc.js +272 -0
  106. package/src/doc/components/Esdoc/DeprecatedHTML.js +16 -0
  107. package/src/doc/components/Esdoc/DetailDocs.js +281 -0
  108. package/src/doc/components/Esdoc/DetailHTML.js +33 -0
  109. package/src/doc/components/Esdoc/DirectSubclassHTML.js +30 -0
  110. package/src/doc/components/Esdoc/DocBuilderUtils.js +694 -0
  111. package/src/doc/components/Esdoc/DocLinkHTML.js +62 -0
  112. package/src/doc/components/Esdoc/DocsLinkHTML.js +38 -0
  113. package/src/doc/components/Esdoc/Esdoc.js +63 -0
  114. package/src/doc/components/Esdoc/EsdocContent.js +51 -0
  115. package/src/doc/components/Esdoc/EsdocNavigation.js +13 -0
  116. package/src/doc/components/Esdoc/EsdocSearch.js +81 -0
  117. package/src/doc/components/Esdoc/ExperimentalHTML.js +17 -0
  118. package/src/doc/components/Esdoc/ExtendsChainHTML.js +32 -0
  119. package/src/doc/components/Esdoc/FileDocLinkHTML.js +60 -0
  120. package/src/doc/components/Esdoc/IdentifiersDoc.js +113 -0
  121. package/src/doc/components/Esdoc/IndirectSubclassHTML.js +30 -0
  122. package/src/doc/components/Esdoc/InheritedSummaryDoc.js +70 -0
  123. package/src/doc/components/Esdoc/InheritedSummaryHTML.js +38 -0
  124. package/src/doc/components/Esdoc/MixinClassesHTML.js +29 -0
  125. package/src/doc/components/Esdoc/NavDoc.js +112 -0
  126. package/src/doc/components/Esdoc/OverrideMethod.js +44 -0
  127. package/src/doc/components/Esdoc/OverrideMethodDescription.js +35 -0
  128. package/src/doc/components/Esdoc/Properties.js +89 -0
  129. package/src/doc/components/Esdoc/README.md +45 -0
  130. package/src/doc/components/Esdoc/SignatureHTML.js +123 -0
  131. package/src/doc/components/Esdoc/SingleDoc.js +31 -0
  132. package/src/doc/components/Esdoc/SummaryDoc.js +160 -0
  133. package/src/doc/components/Esdoc/SummaryHTML.js +96 -0
  134. package/src/doc/components/Esdoc/TypeDocLinkHTML.js +249 -0
  135. package/src/doc/components/Esdoc/css/identifiers.css +38 -0
  136. package/src/doc/components/Esdoc/css/search.css +76 -0
  137. package/src/doc/components/Esdoc/css/style.css +603 -0
  138. package/src/doc/components/Esdoc/index.js +7 -0
  139. package/src/doc/components/Example.js +153 -0
  140. package/src/doc/components/Examples.js +183 -0
  141. package/src/doc/components/Home.js +106 -0
  142. package/src/doc/components/TrackerExample.js +38 -0
  143. package/src/doc/examples/assets/tralis-live-map/index.js +11 -0
  144. package/src/doc/examples/assets/tralis-live-map/s1kreis.svg +105 -0
  145. package/src/doc/examples/assets/tralis-live-map/s20kreis.svg +101 -0
  146. package/src/doc/examples/assets/tralis-live-map/s2kreis.svg +95 -0
  147. package/src/doc/examples/assets/tralis-live-map/s3kreis.svg +95 -0
  148. package/src/doc/examples/assets/tralis-live-map/s4kreis.svg +95 -0
  149. package/src/doc/examples/assets/tralis-live-map/s6kreis.svg +95 -0
  150. package/src/doc/examples/assets/tralis-live-map/s7kreis.svg +95 -0
  151. package/src/doc/examples/assets/tralis-live-map/s8kreis.svg +93 -0
  152. package/src/doc/examples/assets/tralis-live-map/unknown.svg +107 -0
  153. package/src/doc/examples/mb-copyright.html +26 -0
  154. package/src/doc/examples/mb-copyright.js +37 -0
  155. package/src/doc/examples/mb-tracker.html +1 -0
  156. package/src/doc/examples/mb-tracker.js +39 -0
  157. package/src/doc/examples/mb-tracker.md +1 -0
  158. package/src/doc/examples/mb-tralis.html +1 -0
  159. package/src/doc/examples/mb-tralis.js +34 -0
  160. package/src/doc/examples/ol-copyright.html +26 -0
  161. package/src/doc/examples/ol-copyright.js +43 -0
  162. package/src/doc/examples/ol-mapbox-layer.html +1 -0
  163. package/src/doc/examples/ol-mapbox-layer.js +28 -0
  164. package/src/doc/examples/ol-mapbox-layer.md +0 -0
  165. package/src/doc/examples/ol-mapbox-style-layer.html +12 -0
  166. package/src/doc/examples/ol-mapbox-style-layer.js +44 -0
  167. package/src/doc/examples/ol-query.html +32 -0
  168. package/src/doc/examples/ol-query.js +83 -0
  169. package/src/doc/examples/ol-routing.html +26 -0
  170. package/src/doc/examples/ol-routing.js +59 -0
  171. package/src/doc/examples/ol-routing.md +1 -0
  172. package/src/doc/examples/ol-stop-finder.html +15 -0
  173. package/src/doc/examples/ol-stop-finder.js +31 -0
  174. package/src/doc/examples/ol-stop-finder.md +1 -0
  175. package/src/doc/examples/ol-tracker.html +1 -0
  176. package/src/doc/examples/ol-tracker.js +44 -0
  177. package/src/doc/examples/ol-tracker.md +1 -0
  178. package/src/doc/examples/ol-tralis.html +5 -0
  179. package/src/doc/examples/ol-tralis.js +57 -0
  180. package/src/doc/examples/tralis-live-map.html +1 -0
  181. package/src/doc/examples/tralis-live-map.js +51 -0
  182. package/src/doc/examples/tralis-live-map.md +3 -0
  183. package/src/doc/examples.js +107 -0
  184. package/src/doc/img/examples/live_tracker_mb.jpg +0 -0
  185. package/src/doc/img/examples/live_tracker_munich.jpg +0 -0
  186. package/src/doc/img/examples/live_tracker_ol.jpg +0 -0
  187. package/src/doc/img/examples/mapbox.jpg +0 -0
  188. package/src/doc/img/examples/mapbox_style.jpg +0 -0
  189. package/src/doc/img/examples/ol-copyright.png +0 -0
  190. package/src/doc/img/examples/query_objects.jpg +0 -0
  191. package/src/doc/img/examples/routing.jpg +0 -0
  192. package/src/doc/img/examples/simple_map.jpg +0 -0
  193. package/src/doc/img/examples/stops.jpg +0 -0
  194. package/src/doc/img/favico.ico +0 -0
  195. package/src/doc/index.js +21 -0
  196. package/src/iife.js +7 -0
  197. package/src/index.js +10 -0
  198. package/{mapbox → src/mapbox}/controls/CopyrightControl.js +0 -0
  199. package/src/mapbox/controls/index.js +2 -0
  200. package/src/mapbox/index.js +4 -0
  201. package/{mapbox → src/mapbox}/layers/Layer.js +0 -0
  202. package/{mapbox → src/mapbox}/layers/Layer.test.js +0 -0
  203. package/{mapbox → src/mapbox}/layers/TralisLayer.js +0 -0
  204. package/{mapbox → src/mapbox}/layers/TralisLayer.test.js +0 -0
  205. package/src/mapbox/layers/index.js +2 -0
  206. package/{mapbox → src/mapbox}/utils.js +0 -0
  207. package/src/ol/README.md +0 -0
  208. package/{ol → src/ol}/controls/CopyrightControl.js +0 -0
  209. package/{ol → src/ol}/controls/CopyrightControl.test.js +0 -0
  210. package/{ol → src/ol}/controls/RoutingControl.js +0 -0
  211. package/{ol → src/ol}/controls/RoutingControl.test.js +0 -0
  212. package/{ol → src/ol}/controls/StopFinderControl.js +0 -0
  213. package/{ol → src/ol}/controls/StopFinderControl.test.js +0 -0
  214. package/src/ol/controls/index.js +3 -0
  215. package/{ol → src/ol}/controls/snapshots/RoutingControlRouteGen10.json +0 -0
  216. package/{ol → src/ol}/controls/snapshots/RoutingControlRouteGen100.json +0 -0
  217. package/{ol → src/ol}/controls/snapshots/RoutingControlRouteGen30.json +0 -0
  218. package/{ol → src/ol}/controls/snapshots/RoutingControlRouteGen5.json +0 -0
  219. package/{ol → src/ol}/controls/snapshots/RoutingControlRouteOSM.json +0 -0
  220. package/{ol → src/ol}/controls/snapshots/RoutingControlStation1.json +0 -0
  221. package/{ol → src/ol}/controls/snapshots/RoutingControlStation2.json +0 -0
  222. package/src/ol/index.js +5 -0
  223. package/{ol → src/ol}/layers/Layer.js +0 -0
  224. package/{ol → src/ol}/layers/Layer.test.js +0 -0
  225. package/{ol → src/ol}/layers/MapboxLayer.js +0 -0
  226. package/{ol → src/ol}/layers/MapboxLayer.test.js +0 -0
  227. package/{ol → src/ol}/layers/MapboxStyleLayer.js +0 -0
  228. package/{ol → src/ol}/layers/MapboxStyleLayer.test.js +0 -0
  229. package/{ol → src/ol}/layers/MaplibreLayer.js +0 -0
  230. package/{ol → src/ol}/layers/RoutingLayer.js +0 -0
  231. package/{ol → src/ol}/layers/RoutingLayer.test.js +0 -0
  232. package/{ol → src/ol}/layers/TralisLayer.js +0 -0
  233. package/{ol → src/ol}/layers/TralisLayer.test.js +0 -0
  234. package/{ol → src/ol}/layers/VectorLayer.js +0 -0
  235. package/{ol → src/ol}/layers/VectorLayer.test.js +0 -0
  236. package/{ol → src/ol}/layers/WMSLayer.js +0 -0
  237. package/{ol → src/ol}/layers/WMSLayer.test.js +0 -0
  238. package/src/ol/layers/index.js +8 -0
  239. package/{ol → src/ol}/styles/fullTrajectoryDelayStyle.js +0 -0
  240. package/{ol → src/ol}/styles/fullTrajectoryStyle.js +0 -0
  241. package/{ol → src/ol}/styles/index.js +0 -0
  242. package/src/setupTests.js +15 -0
  243. package/webpack.config.js +6 -0
  244. package/index.js +0 -2
  245. package/index.js.map +0 -1
  246. package/mapbox/index.js +0 -3
  247. package/module.js +0 -23
  248. package/ol/index.js +0 -13
@@ -0,0 +1,59 @@
1
+ import View from 'ol/View';
2
+ import Map from 'ol/Map';
3
+ import { MaplibreLayer, CopyrightControl, RoutingControl } from '../../ol';
4
+ import 'ol/ol.css';
5
+
6
+ export default () => {
7
+ const map = new Map({
8
+ target: 'map',
9
+ view: new View({
10
+ center: [950690.34, 6003962.67],
11
+ zoom: 15,
12
+ }),
13
+ controls: [],
14
+ });
15
+
16
+ const mapboxLayer = new MaplibreLayer({
17
+ url: `https://maps.geops.io/styles/travic_v2/style.json?key=${window.apiKey}`,
18
+ });
19
+ mapboxLayer.init(map);
20
+
21
+ const copyright = new CopyrightControl();
22
+ copyright.map = map;
23
+
24
+ const control = new RoutingControl({
25
+ element: document.createElement('div'),
26
+ apiKey: `${window.apiKey}`,
27
+ });
28
+ control.map = map;
29
+
30
+ control.addViaPoint([950476.4055933182, 6003322.253698345]);
31
+ control.addViaPoint([950389.0813034325, 6003656.659274571]);
32
+ control.addViaPoint('29563461696e881d');
33
+
34
+ // Add example button to toggle the RoutingControl.
35
+ document.getElementById('control-button').addEventListener('click', (e) => {
36
+ e.target.innerHTML = control.active
37
+ ? 'Activate RoutingControl'
38
+ : 'Deactivate RoutingControl';
39
+ if (control.active) {
40
+ control.active = false;
41
+ } else {
42
+ control.active = true;
43
+ }
44
+ });
45
+
46
+ // Add example button to toggle the RoutingControl mot.
47
+ document.getElementById('mot-button').addEventListener('click', (e) => {
48
+ e.target.innerHTML =
49
+ control.mot === 'bus'
50
+ ? 'Switch to bus routing'
51
+ : 'Switch to foot routing';
52
+ control.mot = control.mot === 'bus' ? 'foot' : 'bus';
53
+ });
54
+
55
+ // Add example button to toggle the RoutingControl mot.
56
+ document.getElementById('reset-button').addEventListener('click', () => {
57
+ control.reset();
58
+ });
59
+ };
@@ -0,0 +1 @@
1
+ Follow [this link](https://developer.geops.io/) to get information about the API and how to get an API key.
@@ -0,0 +1,15 @@
1
+ <style>
2
+
3
+ #mbt-search > div > div:hover {
4
+ background-color: lightgray;
5
+ }
6
+
7
+ #mbt-search {
8
+ max-height: 90%;
9
+ }
10
+
11
+ </style>
12
+
13
+ <div style="width: 100%; height: 100%; position: relative;">
14
+ <div id="map" style="width: 100%; height: 100%;"></div>
15
+ </div>
@@ -0,0 +1,31 @@
1
+ import View from 'ol/View';
2
+ import Map from 'ol/Map';
3
+ import { MapboxLayer, CopyrightControl, StopFinderControl } from '../../ol';
4
+ import 'ol/ol.css';
5
+
6
+ export default () => {
7
+ const map = new Map({
8
+ target: 'map',
9
+ view: new View({
10
+ center: [950690.34, 6003962.67],
11
+ zoom: 15,
12
+ }),
13
+ controls: [],
14
+ });
15
+
16
+ const copyright = new CopyrightControl();
17
+ copyright.map = map;
18
+
19
+ const stopFinder = new StopFinderControl({
20
+ apiKey: window.apiKey,
21
+ });
22
+ stopFinder.map = map;
23
+
24
+ const mapboxLayer = new MapboxLayer({
25
+ url: 'https://maps.geops.io/styles/travic_v2/style.json',
26
+ apiKey: window.apiKey,
27
+ });
28
+ mapboxLayer.init(map);
29
+
30
+ map.on('singleclick', () => stopFinder.clear());
31
+ };
@@ -0,0 +1 @@
1
+ Follow [this link](https://developer.geops.io/) to get information about the API and how to get an API key.
@@ -0,0 +1 @@
1
+ <div id="map" style="width: 100%; height: 100%;"></div>
@@ -0,0 +1,44 @@
1
+ import { Map, View } from 'ol';
2
+ import {
3
+ TralisLayer,
4
+ MaplibreLayer,
5
+ CopyrightControl,
6
+ trackerDelayStyle,
7
+ } from '../../ol';
8
+ import { sortByDelay } from '../../common/utils';
9
+ import 'ol/ol.css';
10
+
11
+ export default () => {
12
+ const map = new Map({
13
+ target: 'map',
14
+ view: new View({
15
+ center: [831634, 5933959],
16
+ zoom: 13,
17
+ }),
18
+ controls: [],
19
+ });
20
+
21
+ const control = new CopyrightControl();
22
+ control.map = map;
23
+
24
+ const layer = new MaplibreLayer({
25
+ url: 'https://maps.geops.io/styles/travic_v2/style.json',
26
+ apiKey: window.apiKey,
27
+ });
28
+ layer.init(map);
29
+
30
+ const tracker = new TralisLayer({
31
+ url: 'wss://api.geops.io/tracker-ws/v1/',
32
+ apiKey: window.apiKey,
33
+ style: trackerDelayStyle,
34
+ sort: sortByDelay,
35
+ });
36
+ tracker.init(map);
37
+
38
+ tracker.onClick(([feature]) => {
39
+ if (feature) {
40
+ // eslint-disable-next-line no-console
41
+ console.log(feature.getProperties());
42
+ }
43
+ });
44
+ };
@@ -0,0 +1 @@
1
+ Follow [this link](https://developer.geops.io/) to get information about the API and how to get an API key.
@@ -0,0 +1,5 @@
1
+ <div id="map" style="width: 100%; height: 100%;"></div>
2
+ <button id="button">Show/hide</button>
3
+ <button id="close">Kill</button>
4
+ <button id="bbox">Send same bbox</button>
5
+ <button id="terminate">terminate</button>
@@ -0,0 +1,57 @@
1
+ import View from 'ol/View';
2
+ import Map from 'ol/Map';
3
+ import { TralisLayer, MapboxLayer, CopyrightControl } from '../../ol';
4
+
5
+ export default () => {
6
+ const map = new Map({
7
+ target: 'map',
8
+ view: new View({
9
+ // center: max,
10
+ center: [831634, 5933959],
11
+ zoom: 13,
12
+ // center: fromLonLat([7.841148, 47.996542]), // freiburg
13
+ // center: fromLonLat([11.55, 48.14]), // munich
14
+ }),
15
+ controls: [],
16
+ });
17
+
18
+ const control = new CopyrightControl();
19
+ control.map = map;
20
+
21
+ const layer = new MapboxLayer({
22
+ url: 'https://maps.geops.io/styles/travic_v2/style.json',
23
+ apiKey: window.apiKey,
24
+ });
25
+ layer.init(map);
26
+
27
+ const tracker = new TralisLayer({
28
+ url: 'wss://api.geops.io/tracker-ws/v1/',
29
+ apiKey: window.apiKey,
30
+ // bbox: [1152072, 6048052, 1433666, 6205578],
31
+ isUpdateBboxOnMoveEnd: true,
32
+ visible: true,
33
+ tenant: 'sbb',
34
+ // projection: 'EPSG:3857',
35
+ // regexPublishedLineName: '^(S|R$|RE|PE|D|IRE|RB|TER)',
36
+ });
37
+ tracker.init(map);
38
+ tracker.onClick(([feature]) => {
39
+ if (feature) {
40
+ // eslint-disable-next-line no-console
41
+ console.log(feature.getProperties());
42
+ }
43
+ });
44
+ document.getElementById('button').onclick = () => {
45
+ tracker.setVisible(!tracker.visible);
46
+ };
47
+ document.getElementById('close').onclick = () => {
48
+ tracker.api.conn.websocket.close();
49
+ window.lastWs = tracker.api.conn.websocket;
50
+ };
51
+ document.getElementById('bbox').onclick = () => {
52
+ tracker.api.conn.websocket.send(`BBOX ${tracker.api.bbox.join(' ')}`);
53
+ };
54
+ document.getElementById('terminate').onclick = () => {
55
+ tracker.api.conn.websocket.terminate();
56
+ };
57
+ };
@@ -0,0 +1 @@
1
+ <div id="map" style="width: 100%; height: 100%;"></div>
@@ -0,0 +1,51 @@
1
+ import { Map } from 'mapbox-gl';
2
+ import { TralisLayer, CopyrightControl } from '../../mapbox';
3
+ import 'maplibre-gl/dist/maplibre-gl.css';
4
+ import LINE_IMAGES from './assets/tralis-live-map';
5
+
6
+ export default () => {
7
+ const map = new Map({
8
+ container: 'map',
9
+ style: 'https://maps.geops.io/styles/travic_v2/style.json',
10
+ apiKey: window.apiKey,
11
+ center: [11.55, 48.14],
12
+ zoom: 10,
13
+ touchPitch: false,
14
+ pitchWithRotate: false,
15
+ attributionControl: false,
16
+ });
17
+
18
+ const control = new CopyrightControl();
19
+ control.map = map;
20
+
21
+ const cache = {};
22
+ const tracker = new TralisLayer({
23
+ url: 'wss://api.geops.io/realtime-ws/v1/',
24
+ isUpdateBboxOnMoveEnd: false,
25
+ apiKey: window.apiKey,
26
+ bbox: [1152072, 6048052, 1433666, 6205578],
27
+ style: (props) => {
28
+ let { name } = props.line || {};
29
+ if (!name || !LINE_IMAGES[name]) {
30
+ name = 'unknown';
31
+ }
32
+ if (!cache[name]) {
33
+ const img = new Image();
34
+ img.src = LINE_IMAGES[name];
35
+ img.width = 25 * window.devicePixelRatio;
36
+ img.height = 25 * window.devicePixelRatio;
37
+ cache[name] = img;
38
+ }
39
+ return cache[name];
40
+ },
41
+ });
42
+
43
+ tracker.onClick(([feature]) => {
44
+ if (feature) {
45
+ // eslint-disable-next-line no-console
46
+ console.log(feature.getProperties());
47
+ }
48
+ });
49
+
50
+ tracker.init(map);
51
+ };
@@ -0,0 +1,3 @@
1
+ This example uses the [geOps Realtime API](https://developer.geops.io/).
2
+
3
+ Follow [this link](https://developer.geops.io/) to get information about the API and how to get an API key.
@@ -0,0 +1,107 @@
1
+ import liveTrackerOLImg from './img/examples/live_tracker_ol.jpg';
2
+ import liveTrackerMBImg from './img/examples/live_tracker_mb.jpg';
3
+ // import liveTrackerMunichImg from './img/examples/live_tracker_munich.jpg';
4
+ import mapboxImg from './img/examples/mapbox.jpg';
5
+ import mapboxStyleImg from './img/examples/mapbox_style.jpg';
6
+ import queryObjectsImg from './img/examples/query_objects.jpg';
7
+ import olCopyrightImg from './img/examples/ol-copyright.png';
8
+ import stopsImg from './img/examples/stops.jpg';
9
+ import routingImg from './img/examples/routing.jpg';
10
+
11
+ // const munichAssets = require('./examples/assets/tralis-live-map').default;
12
+
13
+ // To make redirect works properly on netlify it's important that the key
14
+ // are differents from the name of js and html files.
15
+ export default [
16
+ {
17
+ name: 'Live tracker with OpenLayers',
18
+ key: 'ol-tracker',
19
+ description:
20
+ 'Use the [geOps Realtime API](https://developer.geops.io/apis/realtime/) to show moving trains in a Mapbox map.',
21
+ img: liveTrackerOLImg,
22
+ },
23
+ {
24
+ name: 'Live tracker with Mapbox',
25
+ key: 'mb-tracker',
26
+ description:
27
+ 'Use the [geOps Realtime API](https://developer.geops.io/apis/realtime/) to show moving trains in a Mapbox map.',
28
+ img: liveTrackerMBImg,
29
+ },
30
+ {
31
+ name: 'Stop finder',
32
+ key: 'ol-stop-finder',
33
+ description:
34
+ 'Use the [geOps Stops API](https://developer.geops.io/apis/stops/) for finding public transport stops.',
35
+ img: stopsImg,
36
+ },
37
+ {
38
+ name: 'Routing',
39
+ key: 'routing-control',
40
+ description:
41
+ 'Use the [geOps Routing API](https://developer.geops.io/apis/routing/) to find the shortest route between 2 points.',
42
+ img: routingImg,
43
+ files: {
44
+ html: 'ol-routing.html',
45
+ js: 'ol-routing.js',
46
+ },
47
+ },
48
+ // {
49
+ // name: 'Live train positions for Munich',
50
+ // key: 'tralis-live-map',
51
+ // description:
52
+ // 'Realtime vehicle positions and prognosis data based on scheduled times, realtime updates and GPS locations.',
53
+ // img: liveTrackerMunichImg,
54
+ // extraFiles: {
55
+ // 'assets/tralis-live-map/index.js': {
56
+ // content: `export default ${JSON.stringify(munichAssets)};`,
57
+ // },
58
+ // },
59
+ // },
60
+ // These examples are used for the dbug of TralisLayer don't remove them pls.
61
+ // {
62
+ // name: 'Tralis tracker with OpenLayers',
63
+ // key: 'ol-tralis',
64
+ // description: 'Show moving tramway in an OpenLayers map.',
65
+ // img: liveTrackerOLImg,
66
+ // },
67
+ // {
68
+ // name: 'Tralis tracker with Mapbox',
69
+ // key: 'mapbox-tralis',
70
+ // description: 'Show moving tramway in an Mapbox map.',
71
+ // img: liveTrackerOLImg,
72
+ // },
73
+ {
74
+ name: 'Mapbox layer',
75
+ key: 'ol-mapbox-layer',
76
+ description: 'Display a Mapbox style on an OpenLayers map.',
77
+ img: mapboxImg,
78
+ },
79
+ {
80
+ name: 'Mapbox Style layer',
81
+ key: 'ol-mapbox-style-layer',
82
+ description:
83
+ 'Display/hide a set of layers of a Mapbox style on an OpenLayers map.',
84
+ img: mapboxStyleImg,
85
+ },
86
+ {
87
+ name: 'Querying objects',
88
+ key: 'ol-query',
89
+ description:
90
+ 'This example shows how to query objects in different kinds of layers.',
91
+ img: queryObjectsImg,
92
+ },
93
+ {
94
+ name: 'Copyrights with OpenLayers',
95
+ key: 'ol-copyright',
96
+ description:
97
+ 'This example shows how to use the CopyrightControl component.',
98
+ img: olCopyrightImg,
99
+ },
100
+ {
101
+ name: 'Copyrights with Mapbox',
102
+ key: 'mb-copyright',
103
+ description:
104
+ 'This example shows how to use the CopyrightControl component.',
105
+ img: olCopyrightImg,
106
+ },
107
+ ];
Binary file
Binary file
Binary file
Binary file
@@ -0,0 +1,21 @@
1
+ import 'react-app-polyfill/stable';
2
+ // import { createRoot } from 'react-dom/client';
3
+ import React from 'react';
4
+ import { BrowserRouter } from 'react-router-dom';
5
+ import { createRoot } from 'react-dom/client';
6
+ import App from './App';
7
+
8
+ // render(
9
+ // <BrowserRouter>
10
+ // <App />
11
+ // </BrowserRouter>,
12
+ // document.getElementById('root'),
13
+ // );
14
+
15
+ const container = document.getElementById('root');
16
+ const root = createRoot(container); // createRoot(container!) if you use TypeScript
17
+ root.render(
18
+ <BrowserRouter>
19
+ <App />
20
+ </BrowserRouter>,
21
+ );
package/src/iife.js ADDED
@@ -0,0 +1,7 @@
1
+ import mbt from './index';
2
+
3
+ if (typeof window !== 'undefined') {
4
+ window.mbt = mbt;
5
+ }
6
+
7
+ export default mbt;
package/src/index.js ADDED
@@ -0,0 +1,10 @@
1
+ import * as ol from './ol';
2
+ import * as mapbox from './mapbox';
3
+
4
+ export * as ol from './ol';
5
+ export * as mapbox from './mapbox';
6
+
7
+ export default {
8
+ ol,
9
+ mapbox,
10
+ };
@@ -0,0 +1,2 @@
1
+ // eslint-disable-next-line import/prefer-default-export
2
+ export { default as CopyrightControl } from './CopyrightControl';
@@ -0,0 +1,4 @@
1
+ export * from '../api';
2
+ export * from '../common';
3
+ export * from './controls';
4
+ export * from './layers';
File without changes
File without changes
File without changes
@@ -0,0 +1,2 @@
1
+ export { default as Layer } from './Layer';
2
+ export { default as TralisLayer } from './TralisLayer';
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
@@ -0,0 +1,3 @@
1
+ export { default as CopyrightControl } from './CopyrightControl';
2
+ export { default as RoutingControl } from './RoutingControl';
3
+ export { default as StopFinderControl } from './StopFinderControl';
@@ -0,0 +1,5 @@
1
+ export * from '../api';
2
+ export * from '../common';
3
+ export * from './controls';
4
+ export * from './layers';
5
+ export * from './styles';
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
@@ -0,0 +1,8 @@
1
+ export { default as Layer } from './Layer';
2
+ export { default as MapboxLayer } from './MapboxLayer';
3
+ export { default as MaplibreLayer } from './MaplibreLayer';
4
+ export { default as MapboxStyleLayer } from './MapboxStyleLayer';
5
+ export { default as RoutingLayer } from './RoutingLayer';
6
+ export { default as TralisLayer } from './TralisLayer';
7
+ export { default as VectorLayer } from './VectorLayer';
8
+ export { default as WMSLayer } from './WMSLayer';
File without changes
File without changes
@@ -0,0 +1,15 @@
1
+ /* eslint-disable import/no-extraneous-dependencies */
2
+ import 'jest-canvas-mock';
3
+ import fetchTrajectoryByIdResponse from '../data/fetchTrajectoryById.json';
4
+ import fetchTrajectoriesResponse from '../data/fetchTrajectories.json';
5
+ import fetchTrajectoryStationsResponse from '../data/fetchTrajectoryStations.json';
6
+ import stopsSearchResponse from '../data/stopsSearch.json';
7
+ import fetchRouteResponse from '../data/fetchRoute.json';
8
+
9
+ global.fetchTrajectoryByIdResponse = fetchTrajectoryByIdResponse;
10
+ global.fetchTrajectoriesResponse = fetchTrajectoriesResponse;
11
+ global.fetchTrajectoryStationsResponse = fetchTrajectoryStationsResponse;
12
+ global.stopsSearchResponse = stopsSearchResponse;
13
+ global.fetchRouteResponse = fetchRouteResponse;
14
+
15
+ global.URL.createObjectURL = jest.fn(() => 'fooblob');
@@ -0,0 +1,6 @@
1
+ // Whilst the configuration object can be modified here, the recommended way of making
2
+ // changes is via the presets' options or Neutrino's API in `.neutrinorc.js` instead.
3
+ // Neutrino's inspect feature can be used to view/export the generated configuration.
4
+ const neutrino = require('neutrino');
5
+
6
+ module.exports = neutrino().webpack();