mobility-toolbox-js 2.0.1-beta.13 → 2.2.0-beta.0

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 (259) hide show
  1. package/api/RealtimeAPI.d.ts +281 -0
  2. package/api/RealtimeAPI.d.ts.map +1 -0
  3. package/api/RealtimeAPI.js +490 -0
  4. package/api/RoutingAPI.d.ts +37 -0
  5. package/api/RoutingAPI.d.ts.map +1 -0
  6. package/api/RoutingAPI.js +32 -12
  7. package/api/StopsAPI.d.ts +38 -0
  8. package/api/StopsAPI.d.ts.map +1 -0
  9. package/api/StopsAPI.js +33 -9
  10. package/api/index.d.ts +4 -0
  11. package/api/index.d.ts.map +1 -0
  12. package/api/index.js +3 -3
  13. package/api/typedefs.d.ts +179 -0
  14. package/api/typedefs.d.ts.map +1 -0
  15. package/api/typedefs.js +75 -0
  16. package/common/api/HttpAPI.d.ts +31 -0
  17. package/common/api/HttpAPI.d.ts.map +1 -0
  18. package/common/api/HttpAPI.js +54 -27
  19. package/common/api/WebSocketAPI.d.ts +153 -0
  20. package/common/api/WebSocketAPI.d.ts.map +1 -0
  21. package/common/api/WebSocketAPI.js +330 -164
  22. package/common/controls/ControlCommon.d.ts +76 -0
  23. package/common/controls/ControlCommon.d.ts.map +1 -0
  24. package/common/controls/ControlCommon.js +150 -0
  25. package/common/controls/CopyrightControlCommon.d.ts +13 -0
  26. package/common/controls/CopyrightControlCommon.d.ts.map +1 -0
  27. package/common/controls/CopyrightControlCommon.js +34 -0
  28. package/common/controls/StopFinderControlCommon.d.ts +55 -0
  29. package/common/controls/StopFinderControlCommon.d.ts.map +1 -0
  30. package/common/controls/StopFinderControlCommon.js +144 -0
  31. package/common/index.d.ts +3 -0
  32. package/common/index.d.ts.map +1 -0
  33. package/common/index.js +2 -4
  34. package/common/layers/LayerCommon.d.ts +94 -0
  35. package/common/layers/LayerCommon.d.ts.map +1 -0
  36. package/common/layers/LayerCommon.js +244 -0
  37. package/common/mixins/RealtimeLayerMixin.d.ts +286 -0
  38. package/common/mixins/RealtimeLayerMixin.d.ts.map +1 -0
  39. package/common/mixins/RealtimeLayerMixin.js +779 -0
  40. package/common/mixins/UserInteractionsLayerMixin.d.ts +60 -0
  41. package/common/mixins/UserInteractionsLayerMixin.d.ts.map +1 -0
  42. package/common/mixins/UserInteractionsLayerMixin.js +241 -0
  43. package/common/styles/index.d.ts +5 -0
  44. package/common/styles/index.d.ts.map +1 -0
  45. package/common/styles/index.js +4 -4
  46. package/common/styles/realtimeDefaultStyle.d.ts +36 -0
  47. package/common/styles/realtimeDefaultStyle.d.ts.map +1 -0
  48. package/common/styles/realtimeDefaultStyle.js +275 -0
  49. package/common/styles/realtimeDelayStyle.d.ts +12 -0
  50. package/common/styles/realtimeDelayStyle.d.ts.map +1 -0
  51. package/common/styles/realtimeDelayStyle.js +13 -0
  52. package/common/styles/realtimeHeadingStyle.d.ts +12 -0
  53. package/common/styles/realtimeHeadingStyle.d.ts.map +1 -0
  54. package/common/styles/realtimeHeadingStyle.js +85 -0
  55. package/common/styles/realtimeSimpleStyle.d.ts +4 -0
  56. package/common/styles/realtimeSimpleStyle.d.ts.map +1 -0
  57. package/common/styles/realtimeSimpleStyle.js +23 -0
  58. package/common/typedefs.d.ts +111 -0
  59. package/common/typedefs.d.ts.map +1 -0
  60. package/common/typedefs.js +52 -0
  61. package/common/utils/compareDepartures.d.ts +11 -0
  62. package/common/utils/compareDepartures.d.ts.map +1 -0
  63. package/common/utils/compareDepartures.js +35 -0
  64. package/common/utils/createCanvas.d.ts +10 -0
  65. package/common/utils/createCanvas.d.ts.map +1 -0
  66. package/common/utils/createCanvas.js +27 -0
  67. package/common/utils/createRealtimeFilters.d.ts +13 -0
  68. package/common/utils/createRealtimeFilters.d.ts.map +1 -0
  69. package/common/utils/createRealtimeFilters.js +74 -0
  70. package/common/utils/debounceDeparturesMessages.d.ts +12 -0
  71. package/common/utils/debounceDeparturesMessages.d.ts.map +1 -0
  72. package/common/utils/debounceDeparturesMessages.js +24 -0
  73. package/common/utils/debounceWebsocketMessages.d.ts +11 -0
  74. package/common/utils/debounceWebsocketMessages.d.ts.map +1 -0
  75. package/common/utils/debounceWebsocketMessages.js +29 -0
  76. package/common/utils/getLayersAsFlatArray.d.ts +3 -0
  77. package/common/utils/getLayersAsFlatArray.d.ts.map +1 -0
  78. package/common/utils/getLayersAsFlatArray.js +15 -0
  79. package/common/utils/getMapboxMapCopyrights.d.ts +18 -0
  80. package/common/utils/getMapboxMapCopyrights.d.ts.map +1 -0
  81. package/common/utils/getMapboxMapCopyrights.js +26 -15
  82. package/common/utils/getMapboxRender.d.ts +7 -0
  83. package/common/utils/getMapboxRender.d.ts.map +1 -0
  84. package/common/utils/getMapboxRender.js +87 -0
  85. package/common/utils/getMaplibreRender.d.ts +7 -0
  86. package/common/utils/getMaplibreRender.d.ts.map +1 -0
  87. package/common/utils/getMaplibreRender.js +38 -0
  88. package/common/utils/getRealtimeModeSuffix.d.ts +10 -0
  89. package/common/utils/getRealtimeModeSuffix.d.ts.map +1 -0
  90. package/common/utils/getRealtimeModeSuffix.js +7 -0
  91. package/common/utils/getUrlWithParams.d.ts +9 -0
  92. package/common/utils/getUrlWithParams.d.ts.map +1 -0
  93. package/common/utils/getUrlWithParams.js +18 -0
  94. package/common/utils/getVehiclePosition.d.ts +16 -0
  95. package/common/utils/getVehiclePosition.d.ts.map +1 -0
  96. package/common/utils/getVehiclePosition.js +67 -37
  97. package/common/utils/index.d.ts +17 -0
  98. package/common/utils/index.d.ts.map +1 -0
  99. package/common/utils/index.js +17 -5
  100. package/common/utils/realtimeConfig.d.ts +49 -0
  101. package/common/utils/realtimeConfig.d.ts.map +1 -0
  102. package/common/utils/realtimeConfig.js +173 -0
  103. package/common/utils/removeDuplicate.d.ts +10 -0
  104. package/common/utils/removeDuplicate.d.ts.map +1 -0
  105. package/common/utils/removeDuplicate.js +12 -5
  106. package/common/utils/renderTrajectories.d.ts +17 -0
  107. package/common/utils/renderTrajectories.d.ts.map +1 -0
  108. package/common/utils/renderTrajectories.js +110 -0
  109. package/common/utils/sortAndFilterDepartures.d.ts +16 -0
  110. package/common/utils/sortAndFilterDepartures.d.ts.map +1 -0
  111. package/common/utils/sortAndFilterDepartures.js +58 -0
  112. package/common/utils/sortByDelay.d.ts +3 -0
  113. package/common/utils/sortByDelay.d.ts.map +1 -0
  114. package/common/utils/sortByDelay.js +17 -15
  115. package/common/utils/timeUtils.d.ts +24 -0
  116. package/common/utils/timeUtils.d.ts.map +1 -0
  117. package/common/utils/timeUtils.js +34 -15
  118. package/iife.d.ts +3 -0
  119. package/iife.d.ts.map +1 -0
  120. package/iife.js +5 -0
  121. package/index.d.ts +10 -0
  122. package/index.d.ts.map +1 -0
  123. package/index.js +8 -6
  124. package/mapbox/controls/CopyrightControl.d.ts +29 -0
  125. package/mapbox/controls/CopyrightControl.d.ts.map +1 -0
  126. package/mapbox/controls/CopyrightControl.js +44 -25
  127. package/mapbox/controls/index.d.ts +2 -0
  128. package/mapbox/controls/index.d.ts.map +1 -0
  129. package/mapbox/controls/index.js +2 -1
  130. package/mapbox/index.d.ts +6 -0
  131. package/mapbox/index.d.ts.map +1 -0
  132. package/mapbox/index.js +5 -4
  133. package/mapbox/layers/Layer.d.ts +59 -0
  134. package/mapbox/layers/Layer.d.ts.map +1 -0
  135. package/mapbox/layers/Layer.js +99 -55
  136. package/mapbox/layers/RealtimeLayer.d.ts +181 -0
  137. package/mapbox/layers/RealtimeLayer.d.ts.map +1 -0
  138. package/mapbox/layers/RealtimeLayer.js +276 -0
  139. package/mapbox/layers/index.d.ts +3 -0
  140. package/mapbox/layers/index.d.ts.map +1 -0
  141. package/mapbox/layers/index.js +2 -2
  142. package/mapbox/utils/getMercatorResolution.d.ts +9 -0
  143. package/mapbox/utils/getMercatorResolution.d.ts.map +1 -0
  144. package/mapbox/utils/getMercatorResolution.js +18 -0
  145. package/mapbox/utils/getSourceCoordinates.d.ts +9 -0
  146. package/mapbox/utils/getSourceCoordinates.d.ts.map +1 -0
  147. package/mapbox/utils/getSourceCoordinates.js +27 -0
  148. package/mapbox/utils/index.d.ts +3 -0
  149. package/mapbox/utils/index.d.ts.map +1 -0
  150. package/mapbox/utils/index.js +2 -0
  151. package/mbt.js +26074 -16501
  152. package/mbt.js.map +4 -4
  153. package/mbt.min.js +205 -126
  154. package/mbt.min.js.map +4 -4
  155. package/ol/controls/CopyrightControl.d.ts +31 -0
  156. package/ol/controls/CopyrightControl.d.ts.map +1 -0
  157. package/ol/controls/CopyrightControl.js +62 -36
  158. package/ol/controls/RoutingControl.d.ts +193 -0
  159. package/ol/controls/RoutingControl.d.ts.map +1 -0
  160. package/ol/controls/RoutingControl.js +601 -357
  161. package/ol/controls/StopFinderControl.d.ts +30 -0
  162. package/ol/controls/StopFinderControl.d.ts.map +1 -0
  163. package/ol/controls/StopFinderControl.js +30 -8
  164. package/ol/controls/index.d.ts +4 -0
  165. package/ol/controls/index.d.ts.map +1 -0
  166. package/ol/controls/index.js +3 -3
  167. package/ol/index.d.ts +6 -0
  168. package/ol/index.d.ts.map +1 -0
  169. package/ol/index.js +5 -5
  170. package/ol/layers/Layer.d.ts +86 -0
  171. package/ol/layers/Layer.d.ts.map +1 -0
  172. package/ol/layers/Layer.js +163 -77
  173. package/ol/layers/MapGlLayer.d.ts +67 -0
  174. package/ol/layers/MapGlLayer.d.ts.map +1 -0
  175. package/ol/layers/MapGlLayer.js +218 -0
  176. package/ol/layers/MapboxLayer.d.ts +50 -0
  177. package/ol/layers/MapboxLayer.d.ts.map +1 -0
  178. package/ol/layers/MapboxLayer.js +99 -193
  179. package/ol/layers/MapboxStyleLayer.d.ts +129 -0
  180. package/ol/layers/MapboxStyleLayer.d.ts.map +1 -0
  181. package/ol/layers/MapboxStyleLayer.js +362 -171
  182. package/ol/layers/MaplibreLayer.d.ts +28 -0
  183. package/ol/layers/MaplibreLayer.d.ts.map +1 -0
  184. package/ol/layers/MaplibreLayer.js +30 -135
  185. package/ol/layers/RealtimeLayer.d.ts +202 -0
  186. package/ol/layers/RealtimeLayer.d.ts.map +1 -0
  187. package/ol/layers/RealtimeLayer.js +340 -0
  188. package/ol/layers/RoutingLayer.d.ts +34 -0
  189. package/ol/layers/RoutingLayer.d.ts.map +1 -0
  190. package/ol/layers/RoutingLayer.js +72 -48
  191. package/ol/layers/VectorLayer.d.ts +25 -0
  192. package/ol/layers/VectorLayer.d.ts.map +1 -0
  193. package/ol/layers/VectorLayer.js +34 -18
  194. package/ol/layers/WMSLayer.d.ts +42 -0
  195. package/ol/layers/WMSLayer.d.ts.map +1 -0
  196. package/ol/layers/WMSLayer.js +84 -34
  197. package/ol/layers/index.d.ts +9 -0
  198. package/ol/layers/index.d.ts.map +1 -0
  199. package/ol/layers/index.js +8 -8
  200. package/ol/styles/fullTrajectoryDelayStyle.d.ts +4 -0
  201. package/ol/styles/fullTrajectoryDelayStyle.d.ts.map +1 -0
  202. package/ol/styles/fullTrajectoryDelayStyle.js +26 -24
  203. package/ol/styles/fullTrajectoryStyle.d.ts +5 -0
  204. package/ol/styles/fullTrajectoryStyle.d.ts.map +1 -0
  205. package/ol/styles/fullTrajectoryStyle.js +40 -39
  206. package/ol/styles/index.d.ts +3 -0
  207. package/ol/styles/index.d.ts.map +1 -0
  208. package/ol/styles/index.js +2 -2
  209. package/package.json +81 -133
  210. package/setupTests.d.ts +2 -0
  211. package/setupTests.d.ts.map +1 -0
  212. package/setupTests.js +26 -0
  213. package/types/common.d.ts +122 -0
  214. package/types/index.d.ts +13 -0
  215. package/types/realtime.d.ts +320 -0
  216. package/types/routing.d.ts +206 -0
  217. package/types/stops.d.ts +143 -0
  218. package/README.md +0 -23
  219. package/api/RoutingAPI.test.js +0 -25
  220. package/api/StopsAPI.test.js +0 -22
  221. package/api/TralisAPI.js +0 -359
  222. package/api/TralisAPI.test.js +0 -67
  223. package/api/TralisAPIUtils.js +0 -43
  224. package/common/Tracker.js +0 -93
  225. package/common/api/HttpAPI.test.js +0 -50
  226. package/common/api/WebSocketAPI.test.js +0 -311
  227. package/common/controls/Control.js +0 -81
  228. package/common/controls/Control.test.js +0 -87
  229. package/common/layers/Layer.js +0 -213
  230. package/common/layers/Layer.test.js +0 -526
  231. package/common/mixins/CopyrightMixin.js +0 -24
  232. package/common/mixins/SearchMixin.js +0 -110
  233. package/common/mixins/TralisLayerMixin.js +0 -479
  234. package/common/styles/trackerDefaultStyle.js +0 -197
  235. package/common/styles/trackerDelayStyle.js +0 -8
  236. package/common/styles/trackerSimpleStyle.js +0 -18
  237. package/common/trackerConfig.js +0 -152
  238. package/common/trackerConfig.test.js +0 -23
  239. package/common/utils/createTrackerFilters.js +0 -56
  240. package/common/utils/createTrackerFilters.test.js +0 -79
  241. package/common/utils/getMapboxMapCopyrights.test.js +0 -40
  242. package/common/utils/getMapboxStyleUrl.js +0 -22
  243. package/common/utils/removeDuplicate.test.js +0 -19
  244. package/common/utils/timeUtils.test.js +0 -10
  245. package/mapbox/layers/Layer.test.js +0 -182
  246. package/mapbox/layers/TralisLayer.js +0 -182
  247. package/mapbox/layers/TralisLayer.test.js +0 -38
  248. package/mapbox/utils.js +0 -32
  249. package/ol/controls/CopyrightControl.test.js +0 -165
  250. package/ol/controls/RoutingControl.test.js +0 -151
  251. package/ol/controls/StopFinderControl.test.js +0 -48
  252. package/ol/layers/Layer.test.js +0 -174
  253. package/ol/layers/MapboxLayer.test.js +0 -160
  254. package/ol/layers/MapboxStyleLayer.test.js +0 -231
  255. package/ol/layers/RoutingLayer.test.js +0 -40
  256. package/ol/layers/TralisLayer.js +0 -185
  257. package/ol/layers/TralisLayer.test.js +0 -79
  258. package/ol/layers/VectorLayer.test.js +0 -87
  259. package/ol/layers/WMSLayer.test.js +0 -76
@@ -1,174 +0,0 @@
1
- import VectorLayer from "ol/layer/Vector";
2
- import VectorSource from "ol/source/Vector";
3
- import Map from "ol/Map";
4
- import Group from "ol/layer/Group";
5
- import Layer from "./Layer";
6
- let olLayer;
7
- let map;
8
- describe("Layer", () => {
9
- beforeEach(() => {
10
- map = new Map({});
11
- olLayer = new VectorLayer({ source: new VectorSource() });
12
- });
13
- test("should initialize.", () => {
14
- const layer = new Layer({ name: "Layer", olLayer });
15
- expect(layer).toBeInstanceOf(Layer);
16
- });
17
- test("should be visible by default.", () => {
18
- const layer = new Layer({ name: "Layer", olLayer });
19
- expect(layer.visible).toBe(true);
20
- });
21
- test("should be invisible if defined.", () => {
22
- const layer = new Layer({ name: "Layer", visible: false, olLayer });
23
- expect(layer.visible).toBe(false);
24
- });
25
- test("should be invisible if set.", () => {
26
- const layer = new Layer({ name: "Layer", olLayer });
27
- layer.setVisible(false);
28
- expect(layer.visible).toBe(false);
29
- });
30
- test("should visibility stay unchanged", () => {
31
- const layer = new Layer({ name: "Layer", visible: false, olLayer });
32
- layer.setVisible(false);
33
- expect(layer.visible).toBe(false);
34
- });
35
- test("should return its name.", () => {
36
- const layer = new Layer({ name: "Layer", visible: false, olLayer });
37
- expect(layer.name).toEqual("Layer");
38
- });
39
- test("should call terminate on initialization.", () => {
40
- const layer = new Layer({ name: "Layer", olLayer });
41
- const spy = jest.spyOn(layer, "detachFromMap");
42
- layer.attachToMap();
43
- expect(spy).toHaveBeenCalledTimes(1);
44
- });
45
- test("should remove the layer when we call terminate.", () => {
46
- const layer = new Layer({ name: "Layer", olLayer });
47
- const spy = jest.spyOn(layer, "detachFromMap");
48
- layer.attachToMap(map);
49
- expect(spy).toHaveBeenCalledTimes(1);
50
- layer.detachFromMap(map);
51
- expect(spy).toHaveBeenCalledTimes(2);
52
- });
53
- test("should manage copyrights as string.", () => {
54
- const spy = jest.spyOn(VectorSource.prototype, "setAttributions");
55
- const layer = new Layer({ name: "Layer", copyrights: "foo", olLayer });
56
- layer.attachToMap(map);
57
- expect(spy).toHaveBeenCalledWith(["foo"]);
58
- });
59
- test("should manage copyrights as array.", () => {
60
- const spy = jest.spyOn(VectorSource.prototype, "setAttributions");
61
- const layer = new Layer({ name: "Layer", copyrights: ["bar"], olLayer });
62
- layer.attachToMap(map);
63
- expect(spy).toHaveBeenCalledWith(["bar"]);
64
- });
65
- test("should set attributions for Group.", () => {
66
- const spy = jest.spyOn(VectorSource.prototype, "setAttributions");
67
- const layer = new Layer({
68
- name: "Layer",
69
- copyrights: ["bar"],
70
- olLayer: new Group({ layers: [olLayer] })
71
- });
72
- layer.attachToMap(map);
73
- expect(spy).toHaveBeenCalledWith(["bar"]);
74
- });
75
- test("should listen for click/hover events when layer is visible by default then should not when hidden.", async () => {
76
- global.console.error = jest.fn();
77
- const layer = new Layer({ name: "Layer", olLayer });
78
- expect(layer.visible).toBe(true);
79
- const spy = jest.fn();
80
- const spy2 = jest.fn();
81
- layer.attachToMap(map);
82
- layer.onHover(spy);
83
- layer.onClick(spy2);
84
- expect(spy).toHaveBeenCalledTimes(0);
85
- expect(spy2).toHaveBeenCalledTimes(0);
86
- await map.dispatchEvent({ type: "pointermove", map, coordinate: [0, 0] });
87
- await map.dispatchEvent({ type: "singleclick", map, coordinate: [0, 0] });
88
- expect(spy).toHaveBeenCalledTimes(1);
89
- expect(spy2).toHaveBeenCalledTimes(1);
90
- spy.mockReset();
91
- spy2.mockReset();
92
- layer.setVisible(false);
93
- await map.dispatchEvent({ type: "pointermove", map, coordinate: [0, 0] });
94
- await map.dispatchEvent({ type: "singleclick", map, coordinate: [0, 0] });
95
- expect(spy).toHaveBeenCalledTimes(0);
96
- expect(spy2).toHaveBeenCalledTimes(0);
97
- global.console.error.mockRestore();
98
- });
99
- test("should not listen for click/hover events when layer is not visible by default then should not when visible.", async () => {
100
- global.console.error = jest.fn();
101
- const layer = new Layer({ name: "Layer", olLayer, visible: false });
102
- expect(layer.visible).toBe(false);
103
- const spy = jest.fn();
104
- const spy2 = jest.fn();
105
- layer.attachToMap(map);
106
- layer.onHover(spy);
107
- layer.onClick(spy2);
108
- expect(spy).toHaveBeenCalledTimes(0);
109
- expect(spy2).toHaveBeenCalledTimes(0);
110
- await map.dispatchEvent({ type: "pointermove", map, coordinate: [0, 0] });
111
- await map.dispatchEvent({ type: "singleclick", map, coordinate: [0, 0] });
112
- expect(spy).toHaveBeenCalledTimes(0);
113
- expect(spy2).toHaveBeenCalledTimes(0);
114
- spy.mockReset();
115
- spy2.mockReset();
116
- layer.setVisible(true);
117
- await map.dispatchEvent({ type: "pointermove", map, coordinate: [0, 0] });
118
- await map.dispatchEvent({ type: "singleclick", map, coordinate: [0, 0] });
119
- expect(spy).toHaveBeenCalledTimes(1);
120
- expect(spy2).toHaveBeenCalledTimes(1);
121
- global.console.error.mockRestore();
122
- });
123
- test("should not listen for click/hover events after layer.detachFromMap()", async () => {
124
- global.console.error = jest.fn();
125
- const layer = new Layer({ name: "Layer", olLayer, visible: true });
126
- expect(layer.visible).toBe(true);
127
- const spy = jest.fn();
128
- const spy2 = jest.fn();
129
- layer.attachToMap(map);
130
- layer.onHover(spy);
131
- layer.onClick(spy2);
132
- expect(spy).toHaveBeenCalledTimes(0);
133
- expect(spy2).toHaveBeenCalledTimes(0);
134
- await map.dispatchEvent({
135
- type: "pointermove",
136
- map,
137
- coordinate: [0, 0]
138
- });
139
- await map.dispatchEvent({
140
- type: "singleclick",
141
- map,
142
- coordinate: [0, 0]
143
- });
144
- expect(spy).toHaveBeenCalledTimes(1);
145
- expect(spy2).toHaveBeenCalledTimes(1);
146
- spy.mockReset();
147
- spy2.mockReset();
148
- layer.detachFromMap(map);
149
- await map.dispatchEvent({
150
- type: "pointermove",
151
- map,
152
- coordinate: [0, 0]
153
- });
154
- await map.dispatchEvent({
155
- type: "singleclick",
156
- map,
157
- coordinate: [0, 0]
158
- });
159
- expect(spy).toHaveBeenCalledTimes(0);
160
- expect(spy2).toHaveBeenCalledTimes(0);
161
- global.console.error.mockRestore();
162
- });
163
- test("should clone", () => {
164
- const layer = new Layer({
165
- name: "Layer",
166
- copyrights: ["bar"],
167
- olLayer: new Group({ layers: [olLayer] })
168
- });
169
- const clone = layer.clone({ name: "clone" });
170
- expect(clone).not.toBe(layer);
171
- expect(clone.name).toBe("clone");
172
- expect(clone).toBeInstanceOf(Layer);
173
- });
174
- });
@@ -1,160 +0,0 @@
1
- import OlMap from "ol/Map";
2
- import View from "ol/View";
3
- import gllib from "mapbox-gl";
4
- import MapboxLayer from "./MapboxLayer";
5
- let layer;
6
- let map;
7
- let consoleOutput;
8
- const styleUrl = "foo.com/styles";
9
- describe("MapboxLayer", () => {
10
- describe("without apiKey", () => {
11
- beforeEach(() => {
12
- consoleOutput = [];
13
- console.warn = (message) => consoleOutput.push(message);
14
- layer = new MapboxLayer({
15
- name: "Layer",
16
- url: styleUrl
17
- });
18
- map = new OlMap({
19
- target: document.createElement("div"),
20
- view: new View({ center: [0, 0] })
21
- });
22
- });
23
- test("should be instanced.", () => {
24
- expect(layer).toBeInstanceOf(MapboxLayer);
25
- expect(layer.styleUrl).toBe(styleUrl);
26
- });
27
- test("should not initalized mapbox map.", () => {
28
- layer.attachToMap();
29
- expect(layer.mbMap).toBe();
30
- });
31
- test("should initalized mapbox map and warn the user if there is no api key defined.", () => {
32
- layer.attachToMap(map);
33
- expect(layer.mbMap).toBeInstanceOf(gllib.Map);
34
- expect(consoleOutput[0]).toBe("No apiKey is defined for request to foo.com/styles");
35
- });
36
- test("should called terminate on initalization.", () => {
37
- const spy = jest.spyOn(layer, "detachFromMap");
38
- layer.attachToMap();
39
- expect(spy).toHaveBeenCalledTimes(1);
40
- });
41
- test("should clone", () => {
42
- const clone = layer.clone({ name: "clone" });
43
- expect(clone).not.toBe(layer);
44
- expect(clone.name).toBe("clone");
45
- expect(clone).toBeInstanceOf(MapboxLayer);
46
- });
47
- });
48
- describe("with apiKey", () => {
49
- beforeEach(() => {
50
- layer = new MapboxLayer({
51
- name: "Layer",
52
- url: styleUrl,
53
- apiKey: "apiKey"
54
- });
55
- map = new OlMap({
56
- target: document.createElement("div"),
57
- view: new View({ center: [0, 0] })
58
- });
59
- });
60
- test("should be instanced with apiKey.", () => {
61
- expect(layer).toBeInstanceOf(MapboxLayer);
62
- expect(layer.styleUrl).toBe(styleUrl);
63
- });
64
- test("should not initalized mapbox map.", () => {
65
- layer.attachToMap();
66
- expect(layer.mbMap).toBe();
67
- });
68
- test("should initalized mapbox map, with 'apiKey' prop", () => {
69
- const layer1 = new MapboxLayer({
70
- name: "Layer",
71
- url: styleUrl,
72
- apiKey: "apiKeyVal"
73
- });
74
- layer1.attachToMap(map);
75
- expect(layer1.mbMap.options.style).toBe("foo.com/styles?key=apiKeyVal");
76
- });
77
- test("should initalized mapbox map, with 'apiKeyName' prop", () => {
78
- const layer1 = new MapboxLayer({
79
- name: "Layer",
80
- url: styleUrl,
81
- apiKey: "test",
82
- apiKeyName: "apiKey"
83
- });
84
- layer1.attachToMap(map);
85
- expect(layer1.mbMap.options.style).toBe("foo.com/styles?apiKey=test");
86
- });
87
- });
88
- describe("#getFeatureInfoAtCoordinate()", () => {
89
- let layer1;
90
- beforeEach(() => {
91
- layer1 = new MapboxLayer({
92
- name: "Layer",
93
- url: styleUrl,
94
- apiKey: "test",
95
- apiKeyName: "apiKey"
96
- });
97
- layer1.attachToMap(map);
98
- layer1.mbMap.isStyleLoaded = jest.fn(() => true);
99
- layer1.mbMap.getSource = jest.fn(() => true);
100
- });
101
- afterEach(() => {
102
- layer1.mbMap.getSource.mockRestore();
103
- layer1.mbMap.isStyleLoaded.mockRestore();
104
- });
105
- test("should set the mapboxFeature as a property", (done) => {
106
- const mapboxFeature = {
107
- id: "2",
108
- type: "Feature",
109
- properties: {
110
- foo: "bar"
111
- },
112
- source: "barr",
113
- sourceLayer: "fooo"
114
- };
115
- layer1.mbMap.project = jest.fn((coord) => ({ x: coord[0], y: coord[1] }));
116
- layer1.mbMap.queryRenderedFeatures = jest.fn(() => [mapboxFeature]);
117
- layer1.getFeatureInfoAtCoordinate([0, 0], {}).then((featureInfo) => {
118
- expect(featureInfo.features[0].get("mapboxFeature")).toBe(mapboxFeature);
119
- done();
120
- });
121
- layer1.mbMap.project.mockRestore();
122
- layer1.mbMap.queryRenderedFeatures.mockRestore();
123
- });
124
- describe("should use hitTolerance property", () => {
125
- beforeEach(() => {
126
- layer1.mbMap.project = jest.fn((coord) => ({
127
- x: coord[0],
128
- y: coord[1]
129
- }));
130
- });
131
- afterEach(() => {
132
- layer1.mbMap.project.mockRestore();
133
- layer1.mbMap.queryRenderedFeatures.mockRestore();
134
- });
135
- test("when hitTolerance is not set", (done) => {
136
- layer1.mbMap.queryRenderedFeatures = jest.fn((pixelBounds) => {
137
- expect(pixelBounds).toEqual([
138
- { x: -5, y: -5 },
139
- { x: 5, y: 5 }
140
- ]);
141
- done();
142
- return [];
143
- });
144
- layer1.getFeatureInfoAtCoordinate([0, 0], {});
145
- });
146
- test("when hitTolerance is set to 10", (done) => {
147
- layer1.hitTolerance = 10;
148
- layer1.mbMap.queryRenderedFeatures = jest.fn((pixelBounds) => {
149
- expect(pixelBounds).toEqual([
150
- { x: -10, y: -10 },
151
- { x: 10, y: 10 }
152
- ]);
153
- done();
154
- return [];
155
- });
156
- layer1.getFeatureInfoAtCoordinate([0, 0], {});
157
- });
158
- });
159
- });
160
- });
@@ -1,231 +0,0 @@
1
- import OlMap from "ol/Map";
2
- import View from "ol/View";
3
- import gllib from "maplibre-gl";
4
- import Layer from "./Layer";
5
- import MaplibreLayer from "./MaplibreLayer";
6
- import MapboxStyleLayer from "./MapboxStyleLayer";
7
- let source;
8
- let layer;
9
- let map;
10
- let onClick;
11
- const styleLayer = {
12
- id: "layer"
13
- };
14
- describe("MapboxStyleLayer", () => {
15
- beforeEach(() => {
16
- onClick = jest.fn();
17
- source = new MaplibreLayer({
18
- name: "Layer",
19
- apiKey: false
20
- });
21
- layer = new MapboxStyleLayer({
22
- name: "mapbox layer",
23
- visible: true,
24
- mapboxLayer: source,
25
- styleLayer,
26
- onClick
27
- });
28
- map = new OlMap({
29
- target: document.createElement("div"),
30
- view: new View({ center: [0, 0] })
31
- });
32
- });
33
- afterEach(() => {
34
- if (layer.map) {
35
- layer.detachFromMap(map);
36
- }
37
- if (source.map) {
38
- source.detachFromMap(map);
39
- }
40
- });
41
- test("should be instanced.", () => {
42
- expect(layer).toBeInstanceOf(MapboxStyleLayer);
43
- expect(layer.styleLayers[0]).toBe(styleLayer);
44
- expect(layer.clickCallbacks[0]).toBe(onClick);
45
- });
46
- test("should not initalized mapbox map.", () => {
47
- layer.attachToMap();
48
- expect(layer.mbMap).toBe();
49
- layer.detachFromMap();
50
- });
51
- test("should initalized mapbox map.", () => {
52
- source.attachToMap(map);
53
- layer.attachToMap(map);
54
- expect(layer.mapboxLayer.mbMap).toBeInstanceOf(gllib.Map);
55
- layer.detachFromMap();
56
- source.detachFromMap();
57
- });
58
- test("should add onClick callback.", () => {
59
- const onClick2 = jest.fn();
60
- layer.onClick(onClick2);
61
- expect(layer.clickCallbacks[1]).toBe(onClick2);
62
- });
63
- test("should called terminate on initalization.", () => {
64
- const spy = jest.spyOn(layer, "detachFromMap");
65
- layer.attachToMap();
66
- expect(spy).toHaveBeenCalledTimes(1);
67
- layer.detachFromMap(map);
68
- });
69
- test("should return coordinates, features and a layer instance.", async () => {
70
- source.attachToMap(map);
71
- layer.attachToMap(map);
72
- const data = await layer.getFeatureInfoAtCoordinate([50, 50]);
73
- expect(data.coordinate).toEqual([50, 50]);
74
- expect(data.features).toEqual([]);
75
- expect(data.layer).toBeInstanceOf(MapboxStyleLayer);
76
- layer.detachFromMap(map);
77
- source.detachFromMap(map);
78
- });
79
- test("should call onClick callback", async () => {
80
- const coordinate = [500, 500];
81
- const features = [];
82
- const evt = { type: "singleclick", map, coordinate };
83
- layer.attachToMap(map);
84
- expect(onClick).toHaveBeenCalledTimes(0);
85
- await map.dispatchEvent(evt);
86
- expect(onClick).toHaveBeenCalledTimes(1);
87
- expect(onClick).toHaveBeenCalledWith(features, layer, coordinate);
88
- layer.detachFromMap();
89
- });
90
- test("should call super class terminate function.", () => {
91
- layer.attachToMap(map);
92
- const spy = jest.spyOn(Layer.prototype, "detachFromMap");
93
- layer.detachFromMap(map);
94
- expect(spy).toHaveBeenCalledTimes(1);
95
- spy.mockRestore();
96
- });
97
- test("should call super class terminate if the mapboxLayer associated has been terminated before.", () => {
98
- layer.attachToMap(map);
99
- source.detachFromMap(map);
100
- const spy = jest.spyOn(Layer.prototype, "detachFromMap");
101
- layer.detachFromMap(map);
102
- expect(spy).toHaveBeenCalledTimes(1);
103
- spy.mockRestore();
104
- });
105
- test("should clone", () => {
106
- const clone = layer.clone({ name: "clone" });
107
- expect(clone).not.toBe(layer);
108
- expect(clone.name).toBe("clone");
109
- expect(clone).toBeInstanceOf(MapboxStyleLayer);
110
- });
111
- test("should add layer on load", () => {
112
- const style = { layers: [] };
113
- layer.mapboxLayer.mbMap = {
114
- getStyle: () => style,
115
- getSource: () => ({}),
116
- getLayer: () => null,
117
- setLayoutProperty: () => null,
118
- addLayer: (styleLayerr) => style.layers.push(styleLayerr)
119
- };
120
- layer.onLoad();
121
- expect(style.layers[0]).toBe(styleLayer);
122
- });
123
- describe("should set disabled property to false on load", () => {
124
- test("when layer uses styleLayer property", () => {
125
- const styles = { layers: [] };
126
- layer.mapboxLayer.mbMap = {
127
- getStyle: () => styles,
128
- getSource: () => ({}),
129
- getLayer: () => null,
130
- setLayoutProperty: () => null,
131
- addLayer: (styleLayerr) => styles.layers.push(styleLayerr)
132
- };
133
- expect(layer).toBeInstanceOf(MapboxStyleLayer);
134
- layer.onLoad();
135
- expect(layer.disabled).toBe(false);
136
- });
137
- });
138
- describe("should set disabled property to true on load", () => {
139
- test("when layer uses styleLayersFilter property", () => {
140
- const styles = { layers: [styleLayer] };
141
- const layer2 = new MapboxStyleLayer({
142
- name: "mapbox layer",
143
- mapboxLayer: source,
144
- styleLayersFilter: () => false
145
- });
146
- layer2.mapboxLayer.mbMap = {
147
- getStyle: () => styles,
148
- getSource: () => ({}),
149
- getLayer: () => null,
150
- setLayoutProperty: () => null,
151
- addLayer: () => ({})
152
- };
153
- layer2.onLoad();
154
- expect(layer2.disabled).toBe(true);
155
- });
156
- });
157
- describe("#getFeatureInfoAtCoordinate()", () => {
158
- beforeEach(() => {
159
- source.attachToMap(map);
160
- source.mbMap.isStyleLoaded = jest.fn(() => true);
161
- source.mbMap.getSource = jest.fn(() => true);
162
- });
163
- afterEach(() => {
164
- source.mbMap.getSource.mockRestore();
165
- source.mbMap.isStyleLoaded.mockRestore();
166
- });
167
- test("should request features on layers ids from styleLayers property", () => {
168
- source.mbMap.getStyle = jest.fn(() => ({
169
- layers: [{ id: "foo" }, { id: "layer" }, { id: "bar" }]
170
- }));
171
- layer.attachToMap(map);
172
- layer.mapboxLayer.getFeatureInfoAtCoordinate = jest.fn(() => Promise.resolve({ features: [] }));
173
- layer.getFeatureInfoAtCoordinate([0, 0]).then(() => {
174
- });
175
- expect(layer.mapboxLayer.getFeatureInfoAtCoordinate).toHaveBeenCalledWith([0, 0], { layers: ["layer"], validate: false });
176
- layer.mapboxLayer.getFeatureInfoAtCoordinate.mockRestore();
177
- source.mbMap.getStyle.mockRestore();
178
- });
179
- test("should request features on layers ids from styleLayersFilter property", () => {
180
- source.mbMap.getStyle = jest.fn(() => ({
181
- layers: [{ id: "foo" }, { id: "layer" }, { id: "bar" }, { id: "foo2" }]
182
- }));
183
- const layer2 = new MapboxStyleLayer({
184
- name: "mapbox layer",
185
- visible: true,
186
- mapboxLayer: source,
187
- styleLayer,
188
- styleLayersFilter: ({ id }) => /foo/.test(id)
189
- });
190
- layer2.attachToMap(map);
191
- layer2.mapboxLayer.getFeatureInfoAtCoordinate = jest.fn(() => Promise.resolve({ features: [] }));
192
- layer2.getFeatureInfoAtCoordinate([0, 0]).then(() => {
193
- });
194
- expect(layer2.mapboxLayer.getFeatureInfoAtCoordinate).toHaveBeenCalledWith([0, 0], {
195
- layers: ["foo", "foo2"],
196
- validate: false
197
- });
198
- layer2.mapboxLayer.getFeatureInfoAtCoordinate.mockRestore();
199
- source.mbMap.getStyle.mockRestore();
200
- });
201
- test("should request features on layers ids from queryRenderedLayersFilter property", () => {
202
- source.mbMap.getStyle = jest.fn(() => ({
203
- layers: [
204
- { id: "foo" },
205
- { id: "bar2" },
206
- { id: "layer" },
207
- { id: "bar" },
208
- { id: "foo2" }
209
- ]
210
- }));
211
- const layer2 = new MapboxStyleLayer({
212
- name: "mapbox layer",
213
- visible: true,
214
- mapboxLayer: source,
215
- styleLayer,
216
- styleLayersFilter: ({ id }) => /foo/.test(id),
217
- queryRenderedLayersFilter: ({ id }) => /bar/.test(id)
218
- });
219
- layer2.attachToMap(map);
220
- layer2.mapboxLayer.getFeatureInfoAtCoordinate = jest.fn(() => Promise.resolve({ features: [] }));
221
- layer2.getFeatureInfoAtCoordinate([0, 0]).then(() => {
222
- });
223
- expect(layer2.mapboxLayer.getFeatureInfoAtCoordinate).toHaveBeenCalledWith([0, 0], {
224
- layers: ["bar2", "bar"],
225
- validate: false
226
- });
227
- layer2.mapboxLayer.getFeatureInfoAtCoordinate.mockRestore();
228
- source.mbMap.getStyle.mockRestore();
229
- });
230
- });
231
- });
@@ -1,40 +0,0 @@
1
- import fetch from "jest-fetch-mock";
2
- import Map from "ol/Map";
3
- import View from "ol/View";
4
- import RoutingLayer from "./RoutingLayer";
5
- let layer;
6
- let onClick;
7
- let olMap;
8
- describe("RoutingLayer", () => {
9
- beforeEach(() => {
10
- global.fetch = fetch;
11
- fetch.resetMocks();
12
- onClick = jest.fn();
13
- layer = new RoutingLayer({
14
- onClick,
15
- apiKey: "apiKey"
16
- });
17
- olMap = new Map({
18
- view: new View({
19
- center: [831634, 5933959],
20
- zoom: 9
21
- })
22
- });
23
- });
24
- test("should be instanced.", () => {
25
- expect(layer).toBeInstanceOf(RoutingLayer);
26
- expect(layer.clickCallbacks[0]).toBe(onClick);
27
- });
28
- test("should called terminate on initalization.", () => {
29
- const spy = jest.spyOn(layer, "detachFromMap");
30
- fetch.mockResponseOnce(JSON.stringify(global.fetchTrajectoriesResponse));
31
- layer.attachToMap(olMap);
32
- expect(spy).toHaveBeenCalledTimes(1);
33
- });
34
- test("should clone", () => {
35
- const clone = layer.clone({ name: "clone" });
36
- expect(clone).not.toBe(layer);
37
- expect(clone.name).toBe("clone");
38
- expect(clone).toBeInstanceOf(RoutingLayer);
39
- });
40
- });