mobility-toolbox-js 2.0.1-beta.13 → 2.1.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 +279 -0
  2. package/api/RealtimeAPI.d.ts.map +1 -0
  3. package/api/RealtimeAPI.js +466 -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 +776 -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 +26061 -16500
  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 +11 -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,526 +0,0 @@
1
- import VectorLayer from "ol/layer/Vector";
2
- import VectorSource from "ol/source/Vector";
3
- import Layer from "./Layer";
4
- const olLayer = new VectorLayer({ source: new VectorSource() });
5
- describe("Layer", () => {
6
- test("should initialize.", () => {
7
- const layer = new Layer({ name: "Layer", olLayer });
8
- expect(layer).toBeInstanceOf(Layer);
9
- });
10
- test("should define default properties.", () => {
11
- const options = {
12
- name: "Layer",
13
- olLayer
14
- };
15
- const layer = new Layer(options);
16
- expect(layer).toBeInstanceOf(Layer);
17
- expect(layer.options).toEqual(options);
18
- expect(layer.name).toEqual(options.name);
19
- expect(layer.key).toEqual("layer");
20
- expect(layer.isBaseLayer).toBe(false);
21
- expect(layer.isBaseLayer).toBe(false);
22
- expect(layer.isQueryable).toBe(true);
23
- expect(layer.isClickActive).toBe(true);
24
- expect(layer.isHoverActive).toBe(true);
25
- expect(layer.hitTolerance).toBe(5);
26
- expect(layer.isMobilityLayer).toBe(true);
27
- expect(layer.copyrights).toBe();
28
- expect(layer.visible).toBe(true);
29
- expect(layer.properties).toEqual({});
30
- expect(layer.map).toBe(void 0);
31
- expect(layer.clickCallbacks).toEqual([]);
32
- expect(layer.hoverCallbacks).toEqual([]);
33
- });
34
- test("should be visible by default.", () => {
35
- const layer = new Layer({ name: "Layer", olLayer });
36
- expect(layer.visible).toBe(true);
37
- });
38
- test("should be hidden using constructor.", () => {
39
- const layer = new Layer({ name: "Layer", visible: false, olLayer });
40
- expect(layer.visible).toBe(false);
41
- });
42
- test("should be hidden using setter.", () => {
43
- const layer = new Layer({ name: "Layer", olLayer });
44
- layer.setVisible(false);
45
- expect(layer.visible).toBe(false);
46
- });
47
- test("should visibility stay unchanged", () => {
48
- const layer = new Layer({ name: "Layer", visible: false, olLayer });
49
- layer.setVisible(false);
50
- expect(layer.visible).toBe(false);
51
- });
52
- test("should return its name.", () => {
53
- const layer = new Layer({ name: "Layer", visible: false, olLayer });
54
- expect(layer.name).toEqual("Layer");
55
- });
56
- test("should set isClickActive and isHoverActive to false if isQueryable is set to false.", () => {
57
- const options = {
58
- name: "Layer",
59
- isQueryable: false,
60
- isClickActive: true,
61
- isHoverActive: true,
62
- olLayer
63
- };
64
- const layer = new Layer(options);
65
- expect(layer).toBeInstanceOf(Layer);
66
- expect(layer.isQueryable).toBe(false);
67
- expect(layer.isClickActive).toBe(false);
68
- expect(layer.isHoverActive).toBe(false);
69
- });
70
- test("should called terminate on initialization.", () => {
71
- const layer = new Layer({ name: "Layer", olLayer });
72
- const spy = jest.spyOn(layer, "detachFromMap");
73
- layer.attachToMap();
74
- expect(spy).toHaveBeenCalledTimes(1);
75
- });
76
- test("should properties correctly set and get.", () => {
77
- const layer = new Layer({
78
- name: "Layer",
79
- olLayer,
80
- properties: {
81
- abc: "foo"
82
- }
83
- });
84
- expect(layer).toBeInstanceOf(Layer);
85
- expect(layer.get("abc")).toEqual("foo");
86
- layer.set("abc", "bar");
87
- expect(layer.get("abc")).toEqual("bar");
88
- });
89
- test("should set children", () => {
90
- const layer = new Layer({
91
- name: "foo",
92
- children: [
93
- new Layer({
94
- name: "bar"
95
- }),
96
- new Layer({
97
- name: "foobar",
98
- visible: false
99
- })
100
- ]
101
- });
102
- expect(layer.getVisibleChildren().length).toBe(1);
103
- expect(layer.hasVisibleChildren()).toBe(true);
104
- });
105
- test("should set onClick using constructor.", () => {
106
- const fn = () => {
107
- };
108
- const layer = new Layer({
109
- name: "Layer",
110
- olLayer,
111
- onClick: fn,
112
- onHover: fn
113
- });
114
- expect(layer.clickCallbacks[0]).toBe(fn);
115
- expect(layer.hoverCallbacks[0]).toBe(fn);
116
- });
117
- test("should onClick throw error.", () => {
118
- const layer = new Layer({ name: "Layer", olLayer });
119
- expect(() => {
120
- layer.onClick("not of type function");
121
- }).toThrow(Error);
122
- });
123
- test("should initialize copyrights property.", () => {
124
- const layer = new Layer({
125
- name: "Layer",
126
- olLayer,
127
- copyrights: ["&copy: copyright", "another copyright"]
128
- });
129
- expect(layer.copyrights[0]).toEqual("&copy: copyright");
130
- });
131
- test("should set and get copyright property.", () => {
132
- const layer = new Layer({
133
- name: "Layer",
134
- olLayer
135
- });
136
- expect(layer).toBeInstanceOf(Layer);
137
- expect(layer.copyright).toEqual(void 0);
138
- layer.copyright = "© OSM Contributors";
139
- expect(layer.copyright).toEqual("© OSM Contributors");
140
- });
141
- describe("#attachToMap()", () => {
142
- test("should set map.", () => {
143
- const layer = new Layer({
144
- name: "Layer",
145
- olLayer
146
- });
147
- expect(layer.map).toBe(void 0);
148
- const obj = {};
149
- layer.attachToMap(obj);
150
- expect(layer.map).toBe(obj);
151
- });
152
- test("should call terminate.", () => {
153
- const layer = new Layer({
154
- name: "Layer",
155
- olLayer
156
- });
157
- const spy = jest.spyOn(layer, "detachFromMap");
158
- layer.attachToMap();
159
- expect(spy).toHaveBeenCalledTimes(1);
160
- });
161
- });
162
- describe("#get() and #set()", () => {
163
- test("should get/set a properties.", () => {
164
- const layer = new Layer({
165
- name: "Layer",
166
- olLayer
167
- });
168
- expect(layer.get("foo")).toBe(void 0);
169
- layer.set("foo", "bar");
170
- expect(layer.get("foo")).toBe("bar");
171
- });
172
- });
173
- describe("#set()", () => {
174
- test("should dispatch a change event.", () => {
175
- const layer = new Layer({
176
- name: "Layer",
177
- olLayer
178
- });
179
- const spy = jest.spyOn(layer, "dispatchEvent");
180
- layer.set("foo", "bar");
181
- expect(spy).toHaveBeenCalledWith({ type: "change:foo", target: layer });
182
- });
183
- });
184
- describe("#setVisible()", () => {
185
- test("should not trigger a change event if the visiblity hasn't changed.", () => {
186
- const layer = new Layer({
187
- name: "Layer",
188
- visible: false,
189
- olLayer
190
- });
191
- const spy = jest.spyOn(layer, "dispatchEvent");
192
- layer.setVisible(false, "foo", "bar", "qux");
193
- expect(spy).toHaveBeenCalledTimes(0);
194
- });
195
- test("should trigger a change event only if the visiblity change.", () => {
196
- const layer = new Layer({
197
- name: "Layer",
198
- visible: false,
199
- olLayer
200
- });
201
- const spy = jest.spyOn(layer, "dispatchEvent");
202
- layer.setVisible(true, "foo", "bar", "qux");
203
- expect(layer.visible).toBe(true);
204
- expect(spy).toHaveBeenCalledTimes(1);
205
- expect(spy).toHaveBeenCalledWith({
206
- type: "change:visible",
207
- target: layer,
208
- stopPropagationDown: "foo",
209
- stopPropagationUp: "bar",
210
- stopPropagationSiblings: "qux"
211
- });
212
- });
213
- });
214
- describe("#getVisibleChildren()", () => {
215
- test("should return only visible child.", () => {
216
- const layerVisible = { visible: true };
217
- const layerVisible2 = { visible: true };
218
- const layerHidden = { visible: false };
219
- const layer = new Layer({
220
- name: "Layer",
221
- visible: false,
222
- olLayer,
223
- children: [layerVisible, layerHidden, layerVisible2]
224
- });
225
- expect(layer.getVisibleChildren()).toEqual([layerVisible, layerVisible2]);
226
- });
227
- });
228
- describe("#hasVisibleChildren()", () => {
229
- test("should return true.", () => {
230
- const layerVisible = { visible: true };
231
- const layerVisible2 = { visible: true };
232
- const layerHidden = { visible: false };
233
- const layer = new Layer({
234
- name: "Layer",
235
- visible: false,
236
- olLayer,
237
- children: [layerVisible, layerHidden, layerVisible2]
238
- });
239
- expect(layer.hasVisibleChildren()).toEqual(true);
240
- });
241
- test("should return false.", () => {
242
- const layerHidden = { visible: false };
243
- const layer = new Layer({
244
- name: "Layer",
245
- visible: false,
246
- olLayer,
247
- children: [layerHidden]
248
- });
249
- expect(layer.hasVisibleChildren()).toEqual(false);
250
- });
251
- });
252
- describe("#getFeatureInfoAtCoordinate()", () => {
253
- test("return an empty fetaureInfo object and display an error message", (done) => {
254
- console.error = jest.fn();
255
- const layer = new Layer({
256
- name: "Layer",
257
- olLayer
258
- });
259
- const coord = [0, 0];
260
- layer.getFeatureInfoAtCoordinate(coord).then((featureInfo) => {
261
- expect(featureInfo.features).toEqual([]);
262
- expect(featureInfo.layer).toEqual(layer);
263
- expect(featureInfo.coordinate).toEqual(coord);
264
- expect(console.error).toHaveBeenCalledTimes(1);
265
- done();
266
- console.error.mockRestore();
267
- });
268
- });
269
- });
270
- describe("#onClick()", () => {
271
- test("adds function to clickCallbacks array", () => {
272
- const layer = new Layer({
273
- name: "Layer",
274
- olLayer
275
- });
276
- const fn = jest.fn();
277
- const fn2 = jest.fn();
278
- layer.onClick(fn);
279
- expect(layer.clickCallbacks).toEqual([fn]);
280
- layer.onClick(fn2);
281
- expect(layer.clickCallbacks).toEqual([fn, fn2]);
282
- });
283
- test("triggers Error if parameter is not a function", (done) => {
284
- const layer = new Layer({
285
- name: "Layer",
286
- olLayer
287
- });
288
- try {
289
- layer.onClick("test");
290
- } catch (e) {
291
- expect(e).toBeDefined();
292
- done();
293
- }
294
- });
295
- });
296
- describe("#unClick()", () => {
297
- test("removes function from clickCallbacks array", () => {
298
- const layer = new Layer({
299
- name: "Layer",
300
- olLayer
301
- });
302
- const fn = jest.fn();
303
- const fn2 = jest.fn();
304
- layer.onClick(fn);
305
- expect(layer.clickCallbacks).toEqual([fn]);
306
- layer.onClick(fn2);
307
- expect(layer.clickCallbacks).toEqual([fn, fn2]);
308
- layer.unClick(fn);
309
- expect(layer.clickCallbacks).toEqual([fn2]);
310
- layer.unClick(fn);
311
- expect(layer.clickCallbacks).toEqual([fn2]);
312
- });
313
- });
314
- describe("#onUserClickCallback()", () => {
315
- const evt = { type: "signleclick", coordinate: [0, 0] };
316
- const getFeatureInfo = (layer, features = []) => ({
317
- features,
318
- layer,
319
- coordinate: evt.coordinate,
320
- event: evt
321
- });
322
- test("calls click callback functions", (done) => {
323
- const layer = new Layer({
324
- name: "Layer",
325
- olLayer
326
- });
327
- const goodFeatureInfo = getFeatureInfo(layer, [{ name: "test" }]);
328
- const fn = jest.fn();
329
- const fn2 = jest.fn();
330
- const spy = jest.spyOn(layer, "getFeatureInfoAtCoordinate").mockResolvedValue(goodFeatureInfo);
331
- layer.onClick(fn);
332
- layer.onClick(fn2);
333
- layer.onUserClickCallback(evt).then((featureInfo) => {
334
- expect(spy).toHaveBeenCalledTimes(1);
335
- expect(spy).toHaveBeenCalledWith(evt.coordinate);
336
- expect(featureInfo).toBe(goodFeatureInfo);
337
- expect(fn).toHaveBeenCalledTimes(1);
338
- expect(fn.mock.calls[0][0]).toBe(goodFeatureInfo.features);
339
- expect(fn.mock.calls[0][1]).toBe(goodFeatureInfo.layer);
340
- expect(fn.mock.calls[0][2]).toBe(goodFeatureInfo.coordinate);
341
- expect(fn2).toHaveBeenCalledTimes(1);
342
- expect(fn2.mock.calls[0][0]).toBe(goodFeatureInfo.features);
343
- expect(fn2.mock.calls[0][1]).toBe(goodFeatureInfo.layer);
344
- expect(fn2.mock.calls[0][2]).toBe(goodFeatureInfo.coordinate);
345
- done();
346
- });
347
- });
348
- describe("returns empty feature info", () => {
349
- test("if isClickActive = false", (done) => {
350
- const layer = new Layer({
351
- name: "Layer",
352
- isClickActive: false,
353
- olLayer
354
- });
355
- layer.onClick(jest.fn());
356
- layer.onUserClickCallback(evt).then((featureInfo) => {
357
- expect(featureInfo).toEqual(getFeatureInfo(layer));
358
- done();
359
- });
360
- });
361
- test("if clickCallbacks is empty", (done) => {
362
- const layer = new Layer({
363
- name: "Layer",
364
- olLayer
365
- });
366
- layer.onUserClickCallback(evt).then((featureInfo) => {
367
- expect(featureInfo).toEqual(getFeatureInfo(layer));
368
- done();
369
- });
370
- });
371
- test("if an error is thrown in click callback", (done) => {
372
- const layer = new Layer({
373
- name: "Layer",
374
- olLayer
375
- });
376
- layer.onClick(() => {
377
- throw new Error("foo");
378
- });
379
- layer.onUserClickCallback(evt).then((featureInfo) => {
380
- expect(featureInfo).toEqual(getFeatureInfo(layer));
381
- done();
382
- });
383
- });
384
- });
385
- test("triggers Error if parameter is not a function", (done) => {
386
- const layer = new Layer({
387
- name: "Layer",
388
- olLayer
389
- });
390
- try {
391
- layer.onClick("test");
392
- } catch (e) {
393
- expect(e).toBeDefined();
394
- done();
395
- }
396
- });
397
- });
398
- describe("#onHover()", () => {
399
- test("adds function to clickCallbacks array", () => {
400
- const layer = new Layer({
401
- name: "Layer",
402
- olLayer
403
- });
404
- const fn = jest.fn();
405
- const fn2 = jest.fn();
406
- layer.onHover(fn);
407
- expect(layer.hoverCallbacks).toEqual([fn]);
408
- layer.onHover(fn2);
409
- expect(layer.hoverCallbacks).toEqual([fn, fn2]);
410
- });
411
- test("triggers Error if parameter is not a function", (done) => {
412
- const layer = new Layer({
413
- name: "Layer",
414
- olLayer
415
- });
416
- try {
417
- layer.onHover("test");
418
- } catch (e) {
419
- expect(e).toBeDefined();
420
- done();
421
- }
422
- });
423
- });
424
- describe("#unHover()", () => {
425
- test("removes function from clickCallbacks array", () => {
426
- const layer = new Layer({
427
- name: "Layer",
428
- olLayer
429
- });
430
- const fn = jest.fn();
431
- const fn2 = jest.fn();
432
- layer.onHover(fn);
433
- expect(layer.hoverCallbacks).toEqual([fn]);
434
- layer.onHover(fn2);
435
- expect(layer.hoverCallbacks).toEqual([fn, fn2]);
436
- layer.unHover(fn);
437
- expect(layer.hoverCallbacks).toEqual([fn2]);
438
- layer.unHover(fn);
439
- expect(layer.hoverCallbacks).toEqual([fn2]);
440
- });
441
- });
442
- describe("#onUserMoveCallback()", () => {
443
- const evt = { type: "pointermove", coordinate: [0, 0] };
444
- const getFeatureInfo = (layer, features = []) => ({
445
- features,
446
- layer,
447
- coordinate: evt.coordinate,
448
- event: evt
449
- });
450
- test("calls hover callback functions", (done) => {
451
- const layer = new Layer({
452
- name: "Layer",
453
- olLayer
454
- });
455
- const goodFeatureInfo = getFeatureInfo(layer, [{ name: "test" }]);
456
- const fn = jest.fn();
457
- const fn2 = jest.fn();
458
- const spy = jest.spyOn(layer, "getFeatureInfoAtCoordinate").mockResolvedValue(goodFeatureInfo);
459
- layer.onHover(fn);
460
- layer.onHover(fn2);
461
- layer.onUserMoveCallback(evt).then((featureInfo) => {
462
- expect(spy).toHaveBeenCalledTimes(1);
463
- expect(spy).toHaveBeenCalledWith(evt.coordinate);
464
- expect(featureInfo).toBe(goodFeatureInfo);
465
- expect(fn).toHaveBeenCalledTimes(1);
466
- expect(fn.mock.calls[0][0]).toBe(goodFeatureInfo.features);
467
- expect(fn.mock.calls[0][1]).toBe(goodFeatureInfo.layer);
468
- expect(fn.mock.calls[0][2]).toBe(goodFeatureInfo.coordinate);
469
- expect(fn2).toHaveBeenCalledTimes(1);
470
- expect(fn2.mock.calls[0][0]).toBe(goodFeatureInfo.features);
471
- expect(fn2.mock.calls[0][1]).toBe(goodFeatureInfo.layer);
472
- expect(fn2.mock.calls[0][2]).toBe(goodFeatureInfo.coordinate);
473
- done();
474
- });
475
- });
476
- describe("returns empty feature info", () => {
477
- test("if isHoverActive = false", (done) => {
478
- const layer = new Layer({
479
- name: "Layer",
480
- isHoverActive: false,
481
- olLayer
482
- });
483
- layer.onHover(jest.fn());
484
- layer.onUserMoveCallback(evt).then((featureInfo) => {
485
- expect(featureInfo).toEqual(getFeatureInfo(layer));
486
- done();
487
- });
488
- });
489
- test("if hoverCallbacks is empty", (done) => {
490
- const layer = new Layer({
491
- name: "Layer",
492
- olLayer
493
- });
494
- layer.onUserMoveCallback(evt).then((featureInfo) => {
495
- expect(featureInfo).toEqual(getFeatureInfo(layer));
496
- done();
497
- });
498
- });
499
- test("if an error is thrown in hover callback", (done) => {
500
- const layer = new Layer({
501
- name: "Layer",
502
- olLayer
503
- });
504
- layer.onHover(() => {
505
- throw new Error("foo");
506
- });
507
- layer.onUserMoveCallback(evt).then((featureInfo) => {
508
- expect(featureInfo).toEqual(getFeatureInfo(layer));
509
- done();
510
- });
511
- });
512
- });
513
- test("triggers Error if parameter is not a function", (done) => {
514
- const layer = new Layer({
515
- name: "Layer",
516
- olLayer
517
- });
518
- try {
519
- layer.onHover("test");
520
- } catch (e) {
521
- expect(e).toBeDefined();
522
- done();
523
- }
524
- });
525
- });
526
- });
@@ -1,24 +0,0 @@
1
- export class CopyrightInterface {
2
- getCopyrights() {
3
- }
4
- }
5
- const CopyrightMixin = (Base) => class extends Base {
6
- render() {
7
- if (!this.element) {
8
- return;
9
- }
10
- this.element.innerHTML = this.active ? this.getCopyrights().join(" | ") : "";
11
- }
12
- createDefaultElement() {
13
- this.element = document.createElement("div");
14
- this.element.id = "mbt-copyright";
15
- Object.assign(this.element.style, {
16
- position: "absolute",
17
- bottom: 0,
18
- right: 0,
19
- fontSize: ".8rem",
20
- padding: "0 10px"
21
- });
22
- }
23
- };
24
- export default CopyrightMixin;
@@ -1,110 +0,0 @@
1
- import { StopsAPI } from "../../api";
2
- export class SearchInterface {
3
- constructor(options = {}) {
4
- }
5
- search(query, abortController) {
6
- }
7
- }
8
- const SearchMixin = (Base) => class extends Base {
9
- constructor(options = {}) {
10
- super(options);
11
- const { apiParams, apiKey, url } = options;
12
- this.apiParams = { limit: 20, ...apiParams || {} };
13
- this.placeholder = options.placeholder || "Search for a stop...";
14
- const apiOptions = { apiKey };
15
- if (url) {
16
- apiOptions.url = url;
17
- }
18
- this.api = new StopsAPI(apiOptions);
19
- this.abortController = new AbortController();
20
- }
21
- render(featureCollection) {
22
- const suggestions = featureCollection?.features || [];
23
- if (!this.suggestionsElt) {
24
- return;
25
- }
26
- this.suggestionsElt.style.display = suggestions.length ? "block" : "none";
27
- this.suggestionsElt.innerHTML = "";
28
- suggestions.forEach((suggestion) => {
29
- const { properties } = suggestion;
30
- const suggElt = document.createElement("div");
31
- suggElt.innerHTML = properties.name;
32
- suggElt.onclick = () => {
33
- this.onSuggestionClick(suggestion);
34
- };
35
- Object.assign(suggElt.style, {
36
- padding: "5px 12px"
37
- });
38
- this.suggestionsElt.appendChild(suggElt);
39
- });
40
- }
41
- createDefaultElement() {
42
- this.element = document.createElement("div");
43
- this.element.id = "mbt-search";
44
- Object.assign(this.element.style, {
45
- position: "absolute",
46
- top: 0,
47
- left: "50px",
48
- margin: "10px",
49
- display: "flex",
50
- flexDirection: "column",
51
- width: "320px"
52
- });
53
- this.inputElt = document.createElement("input");
54
- this.inputElt.type = "text";
55
- this.inputElt.placeholder = this.placeholder;
56
- this.inputElt.autoComplete = "off";
57
- this.inputElt.onkeyup = (evt) => {
58
- this.abortController.abort();
59
- this.abortController = new AbortController();
60
- this.search(evt.target.value, this.abortController);
61
- };
62
- Object.assign(this.inputElt.style, {
63
- padding: "10px 30px 10px 10px"
64
- });
65
- this.element.appendChild(this.inputElt);
66
- this.suggestionsElt = document.createElement("div");
67
- Object.assign(this.suggestionsElt.style, {
68
- backgroundColor: "white",
69
- overflowY: "auto",
70
- cursor: "pointer"
71
- });
72
- this.element.appendChild(this.suggestionsElt);
73
- this.clearElt = document.createElement("div");
74
- Object.assign(this.clearElt.style, {
75
- display: "none",
76
- position: "absolute",
77
- right: "0",
78
- padding: "0 10px",
79
- fontSize: "200%",
80
- cursor: "pointer"
81
- });
82
- this.clearElt.innerHTML = "\xD7";
83
- this.clearElt.onclick = () => this.clear();
84
- this.element.appendChild(this.clearElt);
85
- }
86
- search(q, abortController) {
87
- if (q !== void 0 || q !== null) {
88
- this.apiParams.q = q;
89
- }
90
- if (this.clearElt) {
91
- this.clearElt.style.display = "block";
92
- }
93
- return this.api.search(this.apiParams, abortController).then((data) => {
94
- this.render(data);
95
- }).catch(() => {
96
- this.render();
97
- });
98
- }
99
- onSuggestionClick(suggestion) {
100
- }
101
- clear() {
102
- if (!this.suggestionsElt) {
103
- return;
104
- }
105
- this.inputElt.value = "";
106
- this.suggestionsElt.innerHTML = "";
107
- this.clearElt.style.display = "none";
108
- }
109
- };
110
- export default SearchMixin;