mobility-toolbox-js 2.0.0-beta.30 → 2.0.0-beta.34
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.
- package/api/RealtimeAPI.d.ts +268 -0
- package/api/RealtimeAPI.d.ts.map +1 -0
- package/api/RealtimeAPI.js +626 -343
- package/api/RoutingAPI.d.ts +33 -0
- package/api/RoutingAPI.d.ts.map +1 -0
- package/api/RoutingAPI.js +65 -15
- package/api/StopsAPI.d.ts +36 -0
- package/api/StopsAPI.d.ts.map +1 -0
- package/api/StopsAPI.js +70 -12
- package/api/index.d.ts +5 -0
- package/api/index.d.ts.map +1 -0
- package/api/index.js +10 -3
- package/api/typedefs.d.ts +105 -0
- package/api/typedefs.d.ts.map +1 -0
- package/api/typedefs.js +72 -0
- package/common/api/HttpAPI.d.ts +31 -0
- package/common/api/HttpAPI.d.ts.map +1 -0
- package/common/api/HttpAPI.js +82 -30
- package/common/api/WebSocketAPI.d.ts +95 -0
- package/common/api/WebSocketAPI.d.ts.map +1 -0
- package/common/api/WebSocketAPI.js +313 -168
- package/common/controls/Control.d.ts +74 -0
- package/common/controls/Control.d.ts.map +1 -0
- package/common/controls/Control.js +167 -78
- package/common/index.d.ts +3 -0
- package/common/index.d.ts.map +1 -0
- package/common/index.js +18 -2
- package/common/layers/Layer.d.ts +80 -0
- package/common/layers/Layer.d.ts.map +1 -0
- package/common/layers/Layer.js +251 -134
- package/common/mixins/CopyrightMixin.d.ts +22 -0
- package/common/mixins/CopyrightMixin.d.ts.map +1 -0
- package/common/mixins/CopyrightMixin.js +70 -22
- package/common/mixins/MapboxLayerMixin.d.ts +27 -0
- package/common/mixins/MapboxLayerMixin.d.ts.map +1 -0
- package/common/mixins/MapboxLayerMixin.js +240 -0
- package/common/mixins/RealtimeLayerMixin.d.ts +58 -0
- package/common/mixins/RealtimeLayerMixin.d.ts.map +1 -0
- package/common/mixins/RealtimeLayerMixin.js +698 -429
- package/common/mixins/StopFinderMixin.d.ts +40 -0
- package/common/mixins/StopFinderMixin.d.ts.map +1 -0
- package/common/mixins/StopFinderMixin.js +195 -107
- package/common/mixins/UserInteractionsLayerMixin.d.ts +42 -0
- package/common/mixins/UserInteractionsLayerMixin.d.ts.map +1 -0
- package/common/mixins/UserInteractionsLayerMixin.js +222 -121
- package/common/styles/index.d.ts +5 -0
- package/common/styles/index.d.ts.map +1 -0
- package/common/styles/index.js +24 -4
- package/common/styles/realtimeDefaultStyle.d.ts +15 -0
- package/common/styles/realtimeDefaultStyle.d.ts.map +1 -0
- package/common/styles/realtimeDefaultStyle.js +236 -190
- package/common/styles/realtimeDelayStyle.d.ts +11 -0
- package/common/styles/realtimeDelayStyle.d.ts.map +1 -0
- package/common/styles/realtimeDelayStyle.js +25 -7
- package/common/styles/realtimeSimpleStyle.d.ts +3 -0
- package/common/styles/realtimeSimpleStyle.d.ts.map +1 -0
- package/common/styles/realtimeSimpleStyle.js +23 -17
- package/common/typedefs.d.ts +50 -0
- package/common/typedefs.d.ts.map +1 -0
- package/common/typedefs.js +21 -0
- package/common/utils/cleanStopTime.d.ts +7 -0
- package/common/utils/cleanStopTime.d.ts.map +1 -0
- package/common/utils/cleanStopTime.js +28 -17
- package/common/utils/compareDepartures.d.ts +9 -0
- package/common/utils/compareDepartures.d.ts.map +1 -0
- package/common/utils/compareDepartures.js +34 -22
- package/common/utils/createCanvas.d.ts +9 -0
- package/common/utils/createCanvas.d.ts.map +1 -0
- package/common/utils/createCanvas.js +28 -16
- package/common/utils/createTrackerFilters.d.ts +12 -0
- package/common/utils/createTrackerFilters.d.ts.map +1 -0
- package/common/utils/createTrackerFilters.js +75 -54
- package/common/utils/getLayersAsFlatArray.d.ts +3 -0
- package/common/utils/getLayersAsFlatArray.d.ts.map +1 -0
- package/common/utils/getLayersAsFlatArray.js +15 -13
- package/common/utils/getMapboxMapCopyrights.d.ts +8 -0
- package/common/utils/getMapboxMapCopyrights.d.ts.map +1 -0
- package/common/utils/getMapboxMapCopyrights.js +24 -17
- package/common/utils/getMapboxRender.d.ts +5 -0
- package/common/utils/getMapboxRender.d.ts.map +1 -0
- package/common/utils/getMapboxRender.js +77 -0
- package/common/utils/getMaplibreRender.d.ts +5 -0
- package/common/utils/getMaplibreRender.d.ts.map +1 -0
- package/common/utils/getMaplibreRender.js +38 -0
- package/common/utils/getRealtimeModeSuffix.d.ts +8 -0
- package/common/utils/getRealtimeModeSuffix.d.ts.map +1 -0
- package/common/utils/getRealtimeModeSuffix.js +11 -2
- package/common/utils/getUrlWithParams.d.ts +9 -0
- package/common/utils/getUrlWithParams.d.ts.map +1 -0
- package/common/utils/getUrlWithParams.js +20 -10
- package/common/utils/getVehiclePosition.d.ts +14 -0
- package/common/utils/getVehiclePosition.d.ts.map +1 -0
- package/common/utils/getVehiclePosition.js +63 -39
- package/common/utils/index.d.ts +12 -0
- package/common/utils/index.d.ts.map +1 -0
- package/common/utils/index.js +37 -9
- package/common/utils/removeDuplicate.d.ts +10 -0
- package/common/utils/removeDuplicate.d.ts.map +1 -0
- package/common/utils/removeDuplicate.js +29 -7
- package/common/utils/renderTrajectories.d.ts +20 -0
- package/common/utils/renderTrajectories.d.ts.map +1 -0
- package/common/utils/renderTrajectories.js +111 -78
- package/common/utils/sortByDelay.d.ts +3 -0
- package/common/utils/sortByDelay.d.ts.map +1 -0
- package/common/utils/sortByDelay.js +21 -17
- package/common/utils/timeUtils.d.ts +5 -0
- package/common/utils/timeUtils.d.ts.map +1 -0
- package/common/utils/timeUtils.js +47 -18
- package/common/utils/trackerConfig.d.ts +24 -0
- package/common/utils/trackerConfig.d.ts.map +1 -0
- package/common/utils/trackerConfig.js +171 -118
- package/iife.d.ts +3 -0
- package/iife.d.ts.map +1 -0
- package/iife.js +7 -0
- package/index.d.ts +6 -0
- package/index.d.ts.map +1 -0
- package/index.js +10 -7
- package/mapbox/controls/CopyrightControl.d.ts +32 -0
- package/mapbox/controls/CopyrightControl.d.ts.map +1 -0
- package/mapbox/controls/CopyrightControl.js +72 -28
- package/mapbox/controls/index.d.ts +2 -0
- package/mapbox/controls/index.d.ts.map +1 -0
- package/mapbox/controls/index.js +6 -1
- package/mapbox/index.d.ts +5 -0
- package/mapbox/index.d.ts.map +1 -0
- package/mapbox/index.js +20 -4
- package/mapbox/layers/Layer.d.ts +47 -0
- package/mapbox/layers/Layer.d.ts.map +1 -0
- package/mapbox/layers/Layer.js +137 -54
- package/mapbox/layers/RealtimeLayer.d.ts +118 -0
- package/mapbox/layers/RealtimeLayer.d.ts.map +1 -0
- package/mapbox/layers/RealtimeLayer.js +310 -183
- package/mapbox/layers/index.d.ts +3 -0
- package/mapbox/layers/index.d.ts.map +1 -0
- package/mapbox/layers/index.js +7 -2
- package/mapbox/utils.d.ts +8 -0
- package/mapbox/utils.d.ts.map +1 -0
- package/mapbox/utils.js +54 -29
- package/mbt.js +2052 -2109
- package/mbt.js.map +3 -3
- package/mbt.min.js +18 -18
- package/mbt.min.js.map +3 -3
- package/ol/controls/CopyrightControl.d.ts +31 -0
- package/ol/controls/CopyrightControl.d.ts.map +1 -0
- package/ol/controls/CopyrightControl.js +89 -41
- package/ol/controls/RoutingControl.d.ts +180 -0
- package/ol/controls/RoutingControl.d.ts.map +1 -0
- package/ol/controls/RoutingControl.js +666 -371
- package/ol/controls/StopFinderControl.d.ts +32 -0
- package/ol/controls/StopFinderControl.d.ts.map +1 -0
- package/ol/controls/StopFinderControl.js +59 -10
- package/ol/controls/index.d.ts +4 -0
- package/ol/controls/index.d.ts.map +1 -0
- package/ol/controls/index.js +9 -3
- package/ol/index.d.ts +6 -0
- package/ol/index.d.ts.map +1 -0
- package/ol/index.js +21 -5
- package/ol/layers/Layer.d.ts +49 -0
- package/ol/layers/Layer.d.ts.map +1 -0
- package/ol/layers/Layer.js +178 -81
- package/ol/layers/MapboxLayer.d.ts +42 -0
- package/ol/layers/MapboxLayer.d.ts.map +1 -0
- package/ol/layers/MapboxLayer.js +131 -198
- package/ol/layers/MapboxStyleLayer.d.ts +146 -0
- package/ol/layers/MapboxStyleLayer.d.ts.map +1 -0
- package/ol/layers/MapboxStyleLayer.js +382 -186
- package/ol/layers/MaplibreLayer.d.ts +27 -0
- package/ol/layers/MaplibreLayer.d.ts.map +1 -0
- package/ol/layers/MaplibreLayer.js +67 -138
- package/ol/layers/RealtimeLayer.d.ts +119 -0
- package/ol/layers/RealtimeLayer.d.ts.map +1 -0
- package/ol/layers/RealtimeLayer.js +327 -184
- package/ol/layers/RoutingLayer.d.ts +24 -0
- package/ol/layers/RoutingLayer.d.ts.map +1 -0
- package/ol/layers/RoutingLayer.js +111 -56
- package/ol/layers/VectorLayer.d.ts +23 -0
- package/ol/layers/VectorLayer.d.ts.map +1 -0
- package/ol/layers/VectorLayer.js +71 -21
- package/ol/layers/WMSLayer.d.ts +38 -0
- package/ol/layers/WMSLayer.d.ts.map +1 -0
- package/ol/layers/WMSLayer.js +105 -37
- package/ol/layers/index.d.ts +9 -0
- package/ol/layers/index.d.ts.map +1 -0
- package/ol/layers/index.js +19 -8
- package/ol/styles/fullTrajectoryDelayStyle.d.ts +4 -0
- package/ol/styles/fullTrajectoryDelayStyle.d.ts.map +1 -0
- package/ol/styles/fullTrajectoryDelayStyle.js +32 -28
- package/ol/styles/fullTrajectoryStyle.d.ts +4 -0
- package/ol/styles/fullTrajectoryStyle.d.ts.map +1 -0
- package/ol/styles/fullTrajectoryStyle.js +44 -40
- package/ol/styles/index.d.ts +3 -0
- package/ol/styles/index.d.ts.map +1 -0
- package/ol/styles/index.js +7 -2
- package/package.json +14 -36
- package/setupTests.d.ts +2 -0
- package/setupTests.d.ts.map +1 -0
- package/setupTests.js +15 -0
- package/types/index.d.ts +7 -6
- package/types/routing.d.ts +25 -25
- package/types/stops.d.ts +19 -19
- package/api/RealtimeAPI.test.js +0 -67
- package/api/RoutingAPI.test.js +0 -25
- package/api/StopsAPI.test.js +0 -22
- package/common/api/HttpAPI.test.js +0 -50
- package/common/api/WebSocketAPI.test.js +0 -311
- package/common/controls/Control.test.js +0 -87
- package/common/layers/Layer.test.js +0 -134
- package/common/mixins/UserInteractionsLayerMixin.test.js +0 -199
- package/common/utils/createTrackerFilters.test.js +0 -79
- package/common/utils/getMapboxMapCopyrights.test.js +0 -40
- package/common/utils/removeDuplicate.test.js +0 -19
- package/common/utils/timeUtils.test.js +0 -10
- package/common/utils/trackerConfig.test.js +0 -23
- package/mapbox/layers/Layer.test.js +0 -182
- package/mapbox/layers/RealtimeLayer.test.js +0 -10
- package/ol/controls/CopyrightControl.test.js +0 -165
- package/ol/controls/RoutingControl.test.js +0 -146
- package/ol/controls/StopFinderControl.test.js +0 -48
- package/ol/layers/Layer.test.js +0 -175
- package/ol/layers/MapboxLayer.test.js +0 -160
- package/ol/layers/MapboxStyleLayer.test.js +0 -226
- package/ol/layers/RealtimeLayer.test.js +0 -67
- package/ol/layers/RoutingLayer.test.js +0 -39
- package/ol/layers/VectorLayer.test.js +0 -76
- package/ol/layers/WMSLayer.test.js +0 -57
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* StopFinder control interface.
|
|
3
|
+
*
|
|
4
|
+
* @classproperty {StopsSearchParams} apiParams - Default request parameters used by the search method. See [Stops service documentation](https://developer.geops.io/apis/5dcbd702a256d90001cf1361/).
|
|
5
|
+
*/
|
|
6
|
+
export class StopFinderInterface {
|
|
7
|
+
/**
|
|
8
|
+
* Constructor.
|
|
9
|
+
*
|
|
10
|
+
* @param {Object} options Map options
|
|
11
|
+
* @param {string} options.apiKey Access key for [geOps services](https://developer.geops.io/). See StopsAPI.
|
|
12
|
+
* @param {string} [options.url='https://api.geops.io/tracker/v1'] Stops service url. See StopsAPI.
|
|
13
|
+
* @param {string} [options.placeholder='Search for a stop...'] Input field placeholder.
|
|
14
|
+
* @param {StopsSearchParams} [options.apiParams={ limit: 20 }] Request parameters. See [Stops service documentation](https://developer.geops.io/apis/5dcbd702a256d90001cf1361/).
|
|
15
|
+
*/
|
|
16
|
+
constructor(options?: {
|
|
17
|
+
apiKey: string;
|
|
18
|
+
url?: string;
|
|
19
|
+
placeholder?: string;
|
|
20
|
+
apiParams?: StopsSearchParams;
|
|
21
|
+
});
|
|
22
|
+
/**
|
|
23
|
+
* Launch a search.
|
|
24
|
+
*
|
|
25
|
+
* @param {String} query The query to search for.
|
|
26
|
+
* @param {AbortController} abortController Abort controller used to cancel the request.
|
|
27
|
+
* @return {Promise<Array<GeoJSONFeature>>} An array of GeoJSON features with coordinates in [EPSG:4326](http://epsg.io/4326).
|
|
28
|
+
*/
|
|
29
|
+
search(query: string, abortController: AbortController): Promise<Array<GeoJSONFeature>>;
|
|
30
|
+
}
|
|
31
|
+
export default StopFinderMixin;
|
|
32
|
+
/**
|
|
33
|
+
* Mixin for StopFinderInterface.
|
|
34
|
+
*
|
|
35
|
+
* @param {Class} Base A class to extend with {StopFinderInterface} functionnalities.
|
|
36
|
+
* @return {Class} A class that implements <StopFinderInterface> class and extends Base;
|
|
37
|
+
* @private
|
|
38
|
+
*/
|
|
39
|
+
declare function StopFinderMixin(Base: Class): Class;
|
|
40
|
+
//# sourceMappingURL=StopFinderMixin.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"StopFinderMixin.d.ts","sourceRoot":"","sources":["../../../src/common/mixins/StopFinderMixin.js"],"names":[],"mappings":"AAMA;;;;GAIG;AACH;IACE;;;;;;;;OAQG;IAEH;QAN2B,MAAM,EAAtB,MAAM;QACW,GAAG,GAApB,MAAM;QACW,WAAW,GAA5B,MAAM;QACsB,SAAS;OAGpB;IAE5B;;;;;;OAMG;IAEH,uCAJW,eAAe,GACd,QAAQ,qBAAqB,CAAC,CAGT;CAClC;;AAED;;;;;;GAMG;AACH,qDAoIG"}
|
|
@@ -1,110 +1,198 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
const StopFinderMixin = (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);
|
|
1
|
+
"use strict";
|
|
2
|
+
var __extends = (this && this.__extends) || (function () {
|
|
3
|
+
var extendStatics = function (d, b) {
|
|
4
|
+
extendStatics = Object.setPrototypeOf ||
|
|
5
|
+
({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
|
|
6
|
+
function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
|
|
7
|
+
return extendStatics(d, b);
|
|
61
8
|
};
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
9
|
+
return function (d, b) {
|
|
10
|
+
if (typeof b !== "function" && b !== null)
|
|
11
|
+
throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
|
|
12
|
+
extendStatics(d, b);
|
|
13
|
+
function __() { this.constructor = d; }
|
|
14
|
+
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
|
|
15
|
+
};
|
|
16
|
+
})();
|
|
17
|
+
var __assign = (this && this.__assign) || function () {
|
|
18
|
+
__assign = Object.assign || function(t) {
|
|
19
|
+
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
20
|
+
s = arguments[i];
|
|
21
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
|
22
|
+
t[p] = s[p];
|
|
23
|
+
}
|
|
24
|
+
return t;
|
|
25
|
+
};
|
|
26
|
+
return __assign.apply(this, arguments);
|
|
27
|
+
};
|
|
28
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
29
|
+
exports.StopFinderInterface = void 0;
|
|
30
|
+
/* eslint-disable no-empty-function */
|
|
31
|
+
/* eslint-disable no-useless-constructor */
|
|
32
|
+
/* eslint-disable class-methods-use-this */
|
|
33
|
+
/* eslint-disable max-classes-per-file */
|
|
34
|
+
var api_1 = require("../../api");
|
|
35
|
+
/**
|
|
36
|
+
* StopFinder control interface.
|
|
37
|
+
*
|
|
38
|
+
* @classproperty {StopsSearchParams} apiParams - Default request parameters used by the search method. See [Stops service documentation](https://developer.geops.io/apis/5dcbd702a256d90001cf1361/).
|
|
39
|
+
*/
|
|
40
|
+
var StopFinderInterface = /** @class */ (function () {
|
|
41
|
+
/**
|
|
42
|
+
* Constructor.
|
|
43
|
+
*
|
|
44
|
+
* @param {Object} options Map options
|
|
45
|
+
* @param {string} options.apiKey Access key for [geOps services](https://developer.geops.io/). See StopsAPI.
|
|
46
|
+
* @param {string} [options.url='https://api.geops.io/tracker/v1'] Stops service url. See StopsAPI.
|
|
47
|
+
* @param {string} [options.placeholder='Search for a stop...'] Input field placeholder.
|
|
48
|
+
* @param {StopsSearchParams} [options.apiParams={ limit: 20 }] Request parameters. See [Stops service documentation](https://developer.geops.io/apis/5dcbd702a256d90001cf1361/).
|
|
49
|
+
*/
|
|
50
|
+
// eslint-disable-next-line no-unused-vars, @typescript-eslint/no-useless-constructor, @typescript-eslint/no-unused-vars, @typescript-eslint/no-empty-function
|
|
51
|
+
function StopFinderInterface(options) {
|
|
52
|
+
if (options === void 0) { options = {}; }
|
|
104
53
|
}
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
54
|
+
/**
|
|
55
|
+
* Launch a search.
|
|
56
|
+
*
|
|
57
|
+
* @param {String} query The query to search for.
|
|
58
|
+
* @param {AbortController} abortController Abort controller used to cancel the request.
|
|
59
|
+
* @return {Promise<Array<GeoJSONFeature>>} An array of GeoJSON features with coordinates in [EPSG:4326](http://epsg.io/4326).
|
|
60
|
+
*/
|
|
61
|
+
// eslint-disable-next-line no-unused-vars, @typescript-eslint/no-unused-vars
|
|
62
|
+
StopFinderInterface.prototype.search = function (query, abortController) { };
|
|
63
|
+
return StopFinderInterface;
|
|
64
|
+
}());
|
|
65
|
+
exports.StopFinderInterface = StopFinderInterface;
|
|
66
|
+
/**
|
|
67
|
+
* Mixin for StopFinderInterface.
|
|
68
|
+
*
|
|
69
|
+
* @param {Class} Base A class to extend with {StopFinderInterface} functionnalities.
|
|
70
|
+
* @return {Class} A class that implements <StopFinderInterface> class and extends Base;
|
|
71
|
+
* @private
|
|
72
|
+
*/
|
|
73
|
+
var StopFinderMixin = function (Base) {
|
|
74
|
+
return /** @class */ (function (_super) {
|
|
75
|
+
__extends(class_1, _super);
|
|
76
|
+
function class_1(options) {
|
|
77
|
+
if (options === void 0) { options = {}; }
|
|
78
|
+
var _this = _super.call(this, options) || this;
|
|
79
|
+
var apiParams = options.apiParams, apiKey = options.apiKey, url = options.url;
|
|
80
|
+
_this.apiParams = __assign({ limit: 20 }, (apiParams || {}));
|
|
81
|
+
_this.placeholder = options.placeholder || 'Search for a stop...';
|
|
82
|
+
var apiOptions = { apiKey: apiKey };
|
|
83
|
+
if (url) {
|
|
84
|
+
apiOptions.url = url;
|
|
85
|
+
}
|
|
86
|
+
_this.api = new api_1.StopsAPI(apiOptions);
|
|
87
|
+
_this.abortController = new AbortController();
|
|
88
|
+
return _this;
|
|
89
|
+
}
|
|
90
|
+
class_1.prototype.render = function (featureCollection) {
|
|
91
|
+
var _this = this;
|
|
92
|
+
var suggestions = (featureCollection === null || featureCollection === void 0 ? void 0 : featureCollection.features) || [];
|
|
93
|
+
if (!this.suggestionsElt) {
|
|
94
|
+
return;
|
|
95
|
+
}
|
|
96
|
+
this.suggestionsElt.style.display = suggestions.length ? 'block' : 'none';
|
|
97
|
+
this.suggestionsElt.innerHTML = '';
|
|
98
|
+
suggestions.forEach(function (suggestion) {
|
|
99
|
+
var properties = suggestion.properties;
|
|
100
|
+
var suggElt = document.createElement('div');
|
|
101
|
+
suggElt.innerHTML = properties.name;
|
|
102
|
+
suggElt.onclick = function () {
|
|
103
|
+
_this.onSuggestionClick(suggestion);
|
|
104
|
+
};
|
|
105
|
+
Object.assign(suggElt.style, {
|
|
106
|
+
padding: '5px 12px',
|
|
107
|
+
});
|
|
108
|
+
_this.suggestionsElt.appendChild(suggElt);
|
|
109
|
+
});
|
|
110
|
+
};
|
|
111
|
+
class_1.prototype.createDefaultElement = function () {
|
|
112
|
+
var _this = this;
|
|
113
|
+
/**
|
|
114
|
+
* Define a default element.
|
|
115
|
+
*/
|
|
116
|
+
this.element = document.createElement('div');
|
|
117
|
+
this.element.id = 'mbt-search';
|
|
118
|
+
Object.assign(this.element.style, {
|
|
119
|
+
position: 'absolute',
|
|
120
|
+
top: 0,
|
|
121
|
+
left: '50px',
|
|
122
|
+
margin: '10px',
|
|
123
|
+
display: 'flex',
|
|
124
|
+
flexDirection: 'column',
|
|
125
|
+
width: '320px',
|
|
126
|
+
});
|
|
127
|
+
// Create input element
|
|
128
|
+
this.inputElt = document.createElement('input');
|
|
129
|
+
this.inputElt.type = 'text';
|
|
130
|
+
this.inputElt.placeholder = this.placeholder;
|
|
131
|
+
this.inputElt.autoComplete = 'off';
|
|
132
|
+
this.inputElt.onkeyup = function (evt) {
|
|
133
|
+
_this.abortController.abort();
|
|
134
|
+
_this.abortController = new AbortController();
|
|
135
|
+
_this.search(evt.target.value, _this.abortController);
|
|
136
|
+
};
|
|
137
|
+
Object.assign(this.inputElt.style, {
|
|
138
|
+
padding: '10px 30px 10px 10px',
|
|
139
|
+
});
|
|
140
|
+
this.element.appendChild(this.inputElt);
|
|
141
|
+
// Create suggestions list element
|
|
142
|
+
this.suggestionsElt = document.createElement('div');
|
|
143
|
+
Object.assign(this.suggestionsElt.style, {
|
|
144
|
+
backgroundColor: 'white',
|
|
145
|
+
overflowY: 'auto',
|
|
146
|
+
cursor: 'pointer',
|
|
147
|
+
});
|
|
148
|
+
this.element.appendChild(this.suggestionsElt);
|
|
149
|
+
this.clearElt = document.createElement('div');
|
|
150
|
+
Object.assign(this.clearElt.style, {
|
|
151
|
+
display: 'none',
|
|
152
|
+
position: 'absolute',
|
|
153
|
+
right: '0',
|
|
154
|
+
padding: '0 10px',
|
|
155
|
+
fontSize: '200%',
|
|
156
|
+
cursor: 'pointer',
|
|
157
|
+
});
|
|
158
|
+
this.clearElt.innerHTML = '×';
|
|
159
|
+
this.clearElt.onclick = function () { return _this.clear(); };
|
|
160
|
+
this.element.appendChild(this.clearElt);
|
|
161
|
+
};
|
|
162
|
+
class_1.prototype.search = function (q, abortController) {
|
|
163
|
+
var _this = this;
|
|
164
|
+
if (q !== undefined || q !== null) {
|
|
165
|
+
this.apiParams.q = q;
|
|
166
|
+
}
|
|
167
|
+
if (this.clearElt) {
|
|
168
|
+
this.clearElt.style.display = 'block';
|
|
169
|
+
}
|
|
170
|
+
return this.api
|
|
171
|
+
.search(this.apiParams, abortController)
|
|
172
|
+
.then(function (data) {
|
|
173
|
+
_this.render(data);
|
|
174
|
+
})
|
|
175
|
+
.catch(function () {
|
|
176
|
+
_this.render();
|
|
177
|
+
});
|
|
178
|
+
};
|
|
179
|
+
/**
|
|
180
|
+
* To be defined in inherited class
|
|
181
|
+
*/
|
|
182
|
+
// eslint-disable-next-line no-unused-vars, @typescript-eslint/no-unused-vars
|
|
183
|
+
class_1.prototype.onSuggestionClick = function (suggestion) { };
|
|
184
|
+
/**
|
|
185
|
+
* Clear the search field and close the control.
|
|
186
|
+
*/
|
|
187
|
+
class_1.prototype.clear = function () {
|
|
188
|
+
if (!this.suggestionsElt) {
|
|
189
|
+
return;
|
|
190
|
+
}
|
|
191
|
+
this.inputElt.value = '';
|
|
192
|
+
this.suggestionsElt.innerHTML = '';
|
|
193
|
+
this.clearElt.style.display = 'none';
|
|
194
|
+
};
|
|
195
|
+
return class_1;
|
|
196
|
+
}(Base));
|
|
109
197
|
};
|
|
110
|
-
|
|
198
|
+
exports.default = StopFinderMixin;
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* UserInteractionsLayerInterface.
|
|
3
|
+
*/
|
|
4
|
+
export class UserInteractionsLayerInterface {
|
|
5
|
+
constructor(options?: {});
|
|
6
|
+
/**
|
|
7
|
+
* Initialize the layer adding user interactions.
|
|
8
|
+
*
|
|
9
|
+
* @param {ol/Map~Map} map
|
|
10
|
+
*/
|
|
11
|
+
attachToMap(map: any): void;
|
|
12
|
+
/**
|
|
13
|
+
* Terminate the layer unsubscribing user interactions.
|
|
14
|
+
*/
|
|
15
|
+
detachFromMap(): void;
|
|
16
|
+
/**
|
|
17
|
+
* Activate map listeners events.
|
|
18
|
+
*/
|
|
19
|
+
activateUserInteractions(): void;
|
|
20
|
+
/**
|
|
21
|
+
* Deactivaet map listeners events.
|
|
22
|
+
*/
|
|
23
|
+
deactivateUserInteractions(): void;
|
|
24
|
+
/**
|
|
25
|
+
* Terminate the layer unsubscribing user interactions.
|
|
26
|
+
*/
|
|
27
|
+
onClick(callback: any): void;
|
|
28
|
+
/**
|
|
29
|
+
* Terminate the layer unsubscribing user interactions.
|
|
30
|
+
*/
|
|
31
|
+
onHover(callback: any): void;
|
|
32
|
+
}
|
|
33
|
+
export default UserInteractionsLayerMixin;
|
|
34
|
+
/**
|
|
35
|
+
* Mixin for UserInteractionsLayerInterface. It provide onClick and onHover functions.
|
|
36
|
+
*
|
|
37
|
+
* @param {Class} Base A class to extend with {UserInteractionsLayerInterface} functionnalities.
|
|
38
|
+
* @return {Class} A class that implements {UserInteractionsLayerInterface} class and extends Base;
|
|
39
|
+
* @private
|
|
40
|
+
*/
|
|
41
|
+
declare function UserInteractionsLayerMixin(Base: Class): Class;
|
|
42
|
+
//# sourceMappingURL=UserInteractionsLayerMixin.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"UserInteractionsLayerMixin.d.ts","sourceRoot":"","sources":["../../../src/common/mixins/UserInteractionsLayerMixin.js"],"names":[],"mappings":"AAQA;;GAEG;AACH;IAUE,0BAA4B;IAE5B;;;;OAIG;IACH,4BAAmB;IAEnB;;OAEG;IACH,sBAAkB;IAElB;;OAEG;IACH,iCAA6B;IAE7B;;OAEG;IACH,mCAA+B;IAE/B;;OAEG;IACH,6BAAoB;IAEpB;;OAEG;IACH,6BAAoB;CACrB;;AAED;;;;;;GAMG;AACH,gEA6KG"}
|