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.
- package/api/RealtimeAPI.d.ts +279 -0
- package/api/RealtimeAPI.d.ts.map +1 -0
- package/api/RealtimeAPI.js +466 -0
- package/api/RoutingAPI.d.ts +37 -0
- package/api/RoutingAPI.d.ts.map +1 -0
- package/api/RoutingAPI.js +32 -12
- package/api/StopsAPI.d.ts +38 -0
- package/api/StopsAPI.d.ts.map +1 -0
- package/api/StopsAPI.js +33 -9
- package/api/index.d.ts +4 -0
- package/api/index.d.ts.map +1 -0
- package/api/index.js +3 -3
- package/api/typedefs.d.ts +179 -0
- package/api/typedefs.d.ts.map +1 -0
- package/api/typedefs.js +75 -0
- package/common/api/HttpAPI.d.ts +31 -0
- package/common/api/HttpAPI.d.ts.map +1 -0
- package/common/api/HttpAPI.js +54 -27
- package/common/api/WebSocketAPI.d.ts +153 -0
- package/common/api/WebSocketAPI.d.ts.map +1 -0
- package/common/api/WebSocketAPI.js +330 -164
- package/common/controls/ControlCommon.d.ts +76 -0
- package/common/controls/ControlCommon.d.ts.map +1 -0
- package/common/controls/ControlCommon.js +150 -0
- package/common/controls/CopyrightControlCommon.d.ts +13 -0
- package/common/controls/CopyrightControlCommon.d.ts.map +1 -0
- package/common/controls/CopyrightControlCommon.js +34 -0
- package/common/controls/StopFinderControlCommon.d.ts +55 -0
- package/common/controls/StopFinderControlCommon.d.ts.map +1 -0
- package/common/controls/StopFinderControlCommon.js +144 -0
- package/common/index.d.ts +3 -0
- package/common/index.d.ts.map +1 -0
- package/common/index.js +2 -4
- package/common/layers/LayerCommon.d.ts +94 -0
- package/common/layers/LayerCommon.d.ts.map +1 -0
- package/common/layers/LayerCommon.js +244 -0
- package/common/mixins/RealtimeLayerMixin.d.ts +286 -0
- package/common/mixins/RealtimeLayerMixin.d.ts.map +1 -0
- package/common/mixins/RealtimeLayerMixin.js +776 -0
- package/common/mixins/UserInteractionsLayerMixin.d.ts +60 -0
- package/common/mixins/UserInteractionsLayerMixin.d.ts.map +1 -0
- package/common/mixins/UserInteractionsLayerMixin.js +241 -0
- package/common/styles/index.d.ts +5 -0
- package/common/styles/index.d.ts.map +1 -0
- package/common/styles/index.js +4 -4
- package/common/styles/realtimeDefaultStyle.d.ts +36 -0
- package/common/styles/realtimeDefaultStyle.d.ts.map +1 -0
- package/common/styles/realtimeDefaultStyle.js +275 -0
- package/common/styles/realtimeDelayStyle.d.ts +12 -0
- package/common/styles/realtimeDelayStyle.d.ts.map +1 -0
- package/common/styles/realtimeDelayStyle.js +13 -0
- package/common/styles/realtimeHeadingStyle.d.ts +12 -0
- package/common/styles/realtimeHeadingStyle.d.ts.map +1 -0
- package/common/styles/realtimeHeadingStyle.js +85 -0
- package/common/styles/realtimeSimpleStyle.d.ts +4 -0
- package/common/styles/realtimeSimpleStyle.d.ts.map +1 -0
- package/common/styles/realtimeSimpleStyle.js +23 -0
- package/common/typedefs.d.ts +111 -0
- package/common/typedefs.d.ts.map +1 -0
- package/common/typedefs.js +52 -0
- package/common/utils/compareDepartures.d.ts +11 -0
- package/common/utils/compareDepartures.d.ts.map +1 -0
- package/common/utils/compareDepartures.js +35 -0
- package/common/utils/createCanvas.d.ts +10 -0
- package/common/utils/createCanvas.d.ts.map +1 -0
- package/common/utils/createCanvas.js +27 -0
- package/common/utils/createRealtimeFilters.d.ts +13 -0
- package/common/utils/createRealtimeFilters.d.ts.map +1 -0
- package/common/utils/createRealtimeFilters.js +74 -0
- package/common/utils/debounceDeparturesMessages.d.ts +12 -0
- package/common/utils/debounceDeparturesMessages.d.ts.map +1 -0
- package/common/utils/debounceDeparturesMessages.js +24 -0
- package/common/utils/debounceWebsocketMessages.d.ts +11 -0
- package/common/utils/debounceWebsocketMessages.d.ts.map +1 -0
- package/common/utils/debounceWebsocketMessages.js +29 -0
- package/common/utils/getLayersAsFlatArray.d.ts +3 -0
- package/common/utils/getLayersAsFlatArray.d.ts.map +1 -0
- package/common/utils/getLayersAsFlatArray.js +15 -0
- package/common/utils/getMapboxMapCopyrights.d.ts +18 -0
- package/common/utils/getMapboxMapCopyrights.d.ts.map +1 -0
- package/common/utils/getMapboxMapCopyrights.js +26 -15
- package/common/utils/getMapboxRender.d.ts +7 -0
- package/common/utils/getMapboxRender.d.ts.map +1 -0
- package/common/utils/getMapboxRender.js +87 -0
- package/common/utils/getMaplibreRender.d.ts +7 -0
- package/common/utils/getMaplibreRender.d.ts.map +1 -0
- package/common/utils/getMaplibreRender.js +38 -0
- package/common/utils/getRealtimeModeSuffix.d.ts +10 -0
- package/common/utils/getRealtimeModeSuffix.d.ts.map +1 -0
- package/common/utils/getRealtimeModeSuffix.js +7 -0
- package/common/utils/getUrlWithParams.d.ts +9 -0
- package/common/utils/getUrlWithParams.d.ts.map +1 -0
- package/common/utils/getUrlWithParams.js +18 -0
- package/common/utils/getVehiclePosition.d.ts +16 -0
- package/common/utils/getVehiclePosition.d.ts.map +1 -0
- package/common/utils/getVehiclePosition.js +67 -37
- package/common/utils/index.d.ts +17 -0
- package/common/utils/index.d.ts.map +1 -0
- package/common/utils/index.js +17 -5
- package/common/utils/realtimeConfig.d.ts +49 -0
- package/common/utils/realtimeConfig.d.ts.map +1 -0
- package/common/utils/realtimeConfig.js +173 -0
- package/common/utils/removeDuplicate.d.ts +10 -0
- package/common/utils/removeDuplicate.d.ts.map +1 -0
- package/common/utils/removeDuplicate.js +12 -5
- package/common/utils/renderTrajectories.d.ts +17 -0
- package/common/utils/renderTrajectories.d.ts.map +1 -0
- package/common/utils/renderTrajectories.js +110 -0
- package/common/utils/sortAndFilterDepartures.d.ts +16 -0
- package/common/utils/sortAndFilterDepartures.d.ts.map +1 -0
- package/common/utils/sortAndFilterDepartures.js +58 -0
- package/common/utils/sortByDelay.d.ts +3 -0
- package/common/utils/sortByDelay.d.ts.map +1 -0
- package/common/utils/sortByDelay.js +17 -15
- package/common/utils/timeUtils.d.ts +24 -0
- package/common/utils/timeUtils.d.ts.map +1 -0
- package/common/utils/timeUtils.js +34 -15
- package/iife.d.ts +3 -0
- package/iife.d.ts.map +1 -0
- package/iife.js +5 -0
- package/index.d.ts +10 -0
- package/index.d.ts.map +1 -0
- package/index.js +8 -6
- package/mapbox/controls/CopyrightControl.d.ts +29 -0
- package/mapbox/controls/CopyrightControl.d.ts.map +1 -0
- package/mapbox/controls/CopyrightControl.js +44 -25
- package/mapbox/controls/index.d.ts +2 -0
- package/mapbox/controls/index.d.ts.map +1 -0
- package/mapbox/controls/index.js +2 -1
- package/mapbox/index.d.ts +6 -0
- package/mapbox/index.d.ts.map +1 -0
- package/mapbox/index.js +5 -4
- package/mapbox/layers/Layer.d.ts +59 -0
- package/mapbox/layers/Layer.d.ts.map +1 -0
- package/mapbox/layers/Layer.js +99 -55
- package/mapbox/layers/RealtimeLayer.d.ts +181 -0
- package/mapbox/layers/RealtimeLayer.d.ts.map +1 -0
- package/mapbox/layers/RealtimeLayer.js +276 -0
- package/mapbox/layers/index.d.ts +3 -0
- package/mapbox/layers/index.d.ts.map +1 -0
- package/mapbox/layers/index.js +2 -2
- package/mapbox/utils/getMercatorResolution.d.ts +9 -0
- package/mapbox/utils/getMercatorResolution.d.ts.map +1 -0
- package/mapbox/utils/getMercatorResolution.js +18 -0
- package/mapbox/utils/getSourceCoordinates.d.ts +9 -0
- package/mapbox/utils/getSourceCoordinates.d.ts.map +1 -0
- package/mapbox/utils/getSourceCoordinates.js +27 -0
- package/mapbox/utils/index.d.ts +3 -0
- package/mapbox/utils/index.d.ts.map +1 -0
- package/mapbox/utils/index.js +2 -0
- package/mbt.js +26061 -16500
- package/mbt.js.map +4 -4
- package/mbt.min.js +205 -126
- package/mbt.min.js.map +4 -4
- package/ol/controls/CopyrightControl.d.ts +31 -0
- package/ol/controls/CopyrightControl.d.ts.map +1 -0
- package/ol/controls/CopyrightControl.js +62 -36
- package/ol/controls/RoutingControl.d.ts +193 -0
- package/ol/controls/RoutingControl.d.ts.map +1 -0
- package/ol/controls/RoutingControl.js +601 -357
- package/ol/controls/StopFinderControl.d.ts +30 -0
- package/ol/controls/StopFinderControl.d.ts.map +1 -0
- package/ol/controls/StopFinderControl.js +30 -8
- package/ol/controls/index.d.ts +4 -0
- package/ol/controls/index.d.ts.map +1 -0
- package/ol/controls/index.js +3 -3
- package/ol/index.d.ts +6 -0
- package/ol/index.d.ts.map +1 -0
- package/ol/index.js +5 -5
- package/ol/layers/Layer.d.ts +86 -0
- package/ol/layers/Layer.d.ts.map +1 -0
- package/ol/layers/Layer.js +163 -77
- package/ol/layers/MapGlLayer.d.ts +67 -0
- package/ol/layers/MapGlLayer.d.ts.map +1 -0
- package/ol/layers/MapGlLayer.js +218 -0
- package/ol/layers/MapboxLayer.d.ts +50 -0
- package/ol/layers/MapboxLayer.d.ts.map +1 -0
- package/ol/layers/MapboxLayer.js +99 -193
- package/ol/layers/MapboxStyleLayer.d.ts +129 -0
- package/ol/layers/MapboxStyleLayer.d.ts.map +1 -0
- package/ol/layers/MapboxStyleLayer.js +362 -171
- package/ol/layers/MaplibreLayer.d.ts +28 -0
- package/ol/layers/MaplibreLayer.d.ts.map +1 -0
- package/ol/layers/MaplibreLayer.js +30 -135
- package/ol/layers/RealtimeLayer.d.ts +202 -0
- package/ol/layers/RealtimeLayer.d.ts.map +1 -0
- package/ol/layers/RealtimeLayer.js +340 -0
- package/ol/layers/RoutingLayer.d.ts +34 -0
- package/ol/layers/RoutingLayer.d.ts.map +1 -0
- package/ol/layers/RoutingLayer.js +72 -48
- package/ol/layers/VectorLayer.d.ts +25 -0
- package/ol/layers/VectorLayer.d.ts.map +1 -0
- package/ol/layers/VectorLayer.js +34 -18
- package/ol/layers/WMSLayer.d.ts +42 -0
- package/ol/layers/WMSLayer.d.ts.map +1 -0
- package/ol/layers/WMSLayer.js +84 -34
- package/ol/layers/index.d.ts +9 -0
- package/ol/layers/index.d.ts.map +1 -0
- package/ol/layers/index.js +8 -8
- package/ol/styles/fullTrajectoryDelayStyle.d.ts +4 -0
- package/ol/styles/fullTrajectoryDelayStyle.d.ts.map +1 -0
- package/ol/styles/fullTrajectoryDelayStyle.js +26 -24
- package/ol/styles/fullTrajectoryStyle.d.ts +5 -0
- package/ol/styles/fullTrajectoryStyle.d.ts.map +1 -0
- package/ol/styles/fullTrajectoryStyle.js +40 -39
- package/ol/styles/index.d.ts +3 -0
- package/ol/styles/index.d.ts.map +1 -0
- package/ol/styles/index.js +2 -2
- package/package.json +81 -133
- package/setupTests.d.ts +2 -0
- package/setupTests.d.ts.map +1 -0
- package/setupTests.js +26 -0
- package/types/common.d.ts +122 -0
- package/types/index.d.ts +11 -0
- package/types/realtime.d.ts +320 -0
- package/types/routing.d.ts +206 -0
- package/types/stops.d.ts +143 -0
- package/README.md +0 -23
- package/api/RoutingAPI.test.js +0 -25
- package/api/StopsAPI.test.js +0 -22
- package/api/TralisAPI.js +0 -359
- package/api/TralisAPI.test.js +0 -67
- package/api/TralisAPIUtils.js +0 -43
- package/common/Tracker.js +0 -93
- package/common/api/HttpAPI.test.js +0 -50
- package/common/api/WebSocketAPI.test.js +0 -311
- package/common/controls/Control.js +0 -81
- package/common/controls/Control.test.js +0 -87
- package/common/layers/Layer.js +0 -213
- package/common/layers/Layer.test.js +0 -526
- package/common/mixins/CopyrightMixin.js +0 -24
- package/common/mixins/SearchMixin.js +0 -110
- package/common/mixins/TralisLayerMixin.js +0 -479
- package/common/styles/trackerDefaultStyle.js +0 -197
- package/common/styles/trackerDelayStyle.js +0 -8
- package/common/styles/trackerSimpleStyle.js +0 -18
- package/common/trackerConfig.js +0 -152
- package/common/trackerConfig.test.js +0 -23
- package/common/utils/createTrackerFilters.js +0 -56
- package/common/utils/createTrackerFilters.test.js +0 -79
- package/common/utils/getMapboxMapCopyrights.test.js +0 -40
- package/common/utils/getMapboxStyleUrl.js +0 -22
- package/common/utils/removeDuplicate.test.js +0 -19
- package/common/utils/timeUtils.test.js +0 -10
- package/mapbox/layers/Layer.test.js +0 -182
- package/mapbox/layers/TralisLayer.js +0 -182
- package/mapbox/layers/TralisLayer.test.js +0 -38
- package/mapbox/utils.js +0 -32
- package/ol/controls/CopyrightControl.test.js +0 -165
- package/ol/controls/RoutingControl.test.js +0 -151
- package/ol/controls/StopFinderControl.test.js +0 -48
- package/ol/layers/Layer.test.js +0 -174
- package/ol/layers/MapboxLayer.test.js +0 -160
- package/ol/layers/MapboxStyleLayer.test.js +0 -231
- package/ol/layers/RoutingLayer.test.js +0 -40
- package/ol/layers/TralisLayer.js +0 -185
- package/ol/layers/TralisLayer.test.js +0 -79
- package/ol/layers/VectorLayer.test.js +0 -87
- package/ol/layers/WMSLayer.test.js +0 -76
|
@@ -0,0 +1,150 @@
|
|
|
1
|
+
import BaseObject from 'ol/Object';
|
|
2
|
+
/**
|
|
3
|
+
* A class representing a control to display on map.
|
|
4
|
+
*
|
|
5
|
+
* @example
|
|
6
|
+
* const control = new Control();
|
|
7
|
+
*
|
|
8
|
+
* @classproperty {ol/Map~Map|mapboxgl.Map} map - The map which the control refers to.
|
|
9
|
+
* @classproperty {boolean} active - Active the control.
|
|
10
|
+
* @classproperty {HTMLElement} element - The HTML element used to render the control.
|
|
11
|
+
* @classproperty {HTMLElement} target - The HTML element where to render the element property. Default is the map's element. Read only.
|
|
12
|
+
*/
|
|
13
|
+
class ControlCommon extends BaseObject {
|
|
14
|
+
/**
|
|
15
|
+
* Constructor
|
|
16
|
+
*
|
|
17
|
+
* @param {Object} [options] Control options.
|
|
18
|
+
* @param {boolean} [options.active = true] Whether the control is active or not.
|
|
19
|
+
* @param {HTMLElement} [options.element] The HTML element used to render the control.
|
|
20
|
+
* @param {HTMLElement} [options.target] The HTML element where to render the element property. Default is the map's element.
|
|
21
|
+
* @param {function} [options.render] Render function called whenever the control needs to be rerendered.
|
|
22
|
+
*/
|
|
23
|
+
constructor(options = {}) {
|
|
24
|
+
super(options);
|
|
25
|
+
this.defineProperties(options);
|
|
26
|
+
const { active } = Object.assign({ active: options.active !== false }, options);
|
|
27
|
+
/**
|
|
28
|
+
* @ignore
|
|
29
|
+
*/
|
|
30
|
+
this.active = active;
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Define control's properties.
|
|
34
|
+
*
|
|
35
|
+
* @private
|
|
36
|
+
* @ignore
|
|
37
|
+
*/
|
|
38
|
+
defineProperties(options) {
|
|
39
|
+
const { target, element, render } = Object.assign({}, options);
|
|
40
|
+
Object.defineProperties(this, {
|
|
41
|
+
active: {
|
|
42
|
+
get: () => this.get('active'),
|
|
43
|
+
set: (newActive) => {
|
|
44
|
+
this.set('active', newActive);
|
|
45
|
+
if (newActive) {
|
|
46
|
+
this.activate();
|
|
47
|
+
}
|
|
48
|
+
else {
|
|
49
|
+
this.deactivate();
|
|
50
|
+
}
|
|
51
|
+
this.render();
|
|
52
|
+
},
|
|
53
|
+
},
|
|
54
|
+
map: {
|
|
55
|
+
get: () => this.get('map'),
|
|
56
|
+
set: (map) => {
|
|
57
|
+
// Remove previous node.
|
|
58
|
+
if (this.map && this.element && this.element.parentNode) {
|
|
59
|
+
this.element.parentNode.removeChild(this.element);
|
|
60
|
+
}
|
|
61
|
+
// Clean listeners
|
|
62
|
+
this.deactivate();
|
|
63
|
+
this.set('map', map);
|
|
64
|
+
if (this.map) {
|
|
65
|
+
// Add new node
|
|
66
|
+
const targett = this.target ||
|
|
67
|
+
(this.map.getTargetElement &&
|
|
68
|
+
this.map.getTargetElement()) ||
|
|
69
|
+
(this.map.getContainer &&
|
|
70
|
+
this.map.getContainer());
|
|
71
|
+
if (!this.element) {
|
|
72
|
+
this.createDefaultElement();
|
|
73
|
+
}
|
|
74
|
+
if (this.element) {
|
|
75
|
+
targett.appendChild(this.element);
|
|
76
|
+
}
|
|
77
|
+
// Add listeners
|
|
78
|
+
if (this.active) {
|
|
79
|
+
this.activate();
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
this.render();
|
|
83
|
+
},
|
|
84
|
+
},
|
|
85
|
+
target: {
|
|
86
|
+
value: target,
|
|
87
|
+
},
|
|
88
|
+
element: {
|
|
89
|
+
value: element,
|
|
90
|
+
writable: true,
|
|
91
|
+
},
|
|
92
|
+
render: {
|
|
93
|
+
/** @ignore */
|
|
94
|
+
value: render || this.render,
|
|
95
|
+
writable: true,
|
|
96
|
+
},
|
|
97
|
+
});
|
|
98
|
+
}
|
|
99
|
+
/**
|
|
100
|
+
* Attach the control to the map. Add events, html element ...
|
|
101
|
+
*/
|
|
102
|
+
attachToMap(map) {
|
|
103
|
+
this.map = map;
|
|
104
|
+
}
|
|
105
|
+
/**
|
|
106
|
+
* Detach the control From the map. Remove events, html element ..
|
|
107
|
+
*/
|
|
108
|
+
detachFromMap() {
|
|
109
|
+
this.map = undefined;
|
|
110
|
+
}
|
|
111
|
+
/**
|
|
112
|
+
* Add listeners then renders the control.
|
|
113
|
+
* To be defined in inherited classes.
|
|
114
|
+
*/
|
|
115
|
+
activate() {
|
|
116
|
+
this.deactivate();
|
|
117
|
+
}
|
|
118
|
+
/**
|
|
119
|
+
* Remove listeners added by activate() function then renders the control.
|
|
120
|
+
* To be defined in inherited classes.
|
|
121
|
+
*/
|
|
122
|
+
// eslint-disable-next-line class-methods-use-this
|
|
123
|
+
deactivate() {
|
|
124
|
+
// eslint-disable-next-line no-console
|
|
125
|
+
console.error('The function deactivate() must be implemented in subclasses');
|
|
126
|
+
}
|
|
127
|
+
/**
|
|
128
|
+
* The default render function. It renders content in the HTML element.
|
|
129
|
+
* To be defined in inherited classes.
|
|
130
|
+
*
|
|
131
|
+
* @private
|
|
132
|
+
*/
|
|
133
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
134
|
+
render(options) {
|
|
135
|
+
// eslint-disable-next-line no-console
|
|
136
|
+
console.error('The function render() must be implemented in subclasses');
|
|
137
|
+
}
|
|
138
|
+
/**
|
|
139
|
+
* The default element to display if this.element is not defined.
|
|
140
|
+
* To be defined in inherited classes.
|
|
141
|
+
*
|
|
142
|
+
* @private
|
|
143
|
+
*/
|
|
144
|
+
// eslint-disable-next-line class-methods-use-this
|
|
145
|
+
createDefaultElement() {
|
|
146
|
+
// eslint-disable-next-line no-console
|
|
147
|
+
console.error('The function createDefaultElement() must be implemented in subclasses');
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
export default ControlCommon;
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import ControlCommon from './ControlCommon';
|
|
2
|
+
/**
|
|
3
|
+
* A class representing a copyright control to display on map.
|
|
4
|
+
* This class only draw an html element, with an empty string in it.
|
|
5
|
+
* Use subclasses to use it in an ol or mapbox map.
|
|
6
|
+
*/
|
|
7
|
+
declare class CopyrightControlCommon extends ControlCommon {
|
|
8
|
+
render(): void;
|
|
9
|
+
createDefaultElement(): void;
|
|
10
|
+
getCopyrights(): string[];
|
|
11
|
+
}
|
|
12
|
+
export default CopyrightControlCommon;
|
|
13
|
+
//# sourceMappingURL=CopyrightControlCommon.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CopyrightControlCommon.d.ts","sourceRoot":"","sources":["../../../src/common/controls/CopyrightControlCommon.ts"],"names":[],"mappings":"AACA,OAAO,aAAa,MAAM,iBAAiB,CAAC;AAE5C;;;;GAIG;AACH,cAAM,sBAAuB,SAAQ,aAAa;IAChD,MAAM;IASN,oBAAoB;IAYpB,aAAa;CAQd;AAED,eAAe,sBAAsB,CAAC"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
/* eslint-disable max-classes-per-file */
|
|
2
|
+
import ControlCommon from './ControlCommon';
|
|
3
|
+
/**
|
|
4
|
+
* A class representing a copyright control to display on map.
|
|
5
|
+
* This class only draw an html element, with an empty string in it.
|
|
6
|
+
* Use subclasses to use it in an ol or mapbox map.
|
|
7
|
+
*/
|
|
8
|
+
class CopyrightControlCommon extends ControlCommon {
|
|
9
|
+
render() {
|
|
10
|
+
if (!this.element) {
|
|
11
|
+
return;
|
|
12
|
+
}
|
|
13
|
+
this.element.innerHTML = this.active
|
|
14
|
+
? this.getCopyrights().join(' | ')
|
|
15
|
+
: '';
|
|
16
|
+
}
|
|
17
|
+
createDefaultElement() {
|
|
18
|
+
this.element = document.createElement('div');
|
|
19
|
+
this.element.id = 'mbt-copyright';
|
|
20
|
+
Object.assign(this.element.style, {
|
|
21
|
+
position: 'absolute',
|
|
22
|
+
bottom: 0,
|
|
23
|
+
right: 0,
|
|
24
|
+
fontSize: '.8rem',
|
|
25
|
+
padding: '0 10px',
|
|
26
|
+
});
|
|
27
|
+
}
|
|
28
|
+
getCopyrights() {
|
|
29
|
+
// eslint-disable-next-line no-console
|
|
30
|
+
console.error('The getCopyrights() function must be implemented in subclasses.', this);
|
|
31
|
+
return [];
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
export default CopyrightControlCommon;
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import { FeatureCollection } from '@turf/helpers';
|
|
2
|
+
import { Feature } from 'geojson';
|
|
3
|
+
import { StopsAPI } from '../../api';
|
|
4
|
+
import { StopsAPIOptions } from '../../api/StopsAPI';
|
|
5
|
+
import { StopsParameters } from '../../types';
|
|
6
|
+
import ControlCommon, { ControlCommonOptions } from './ControlCommon';
|
|
7
|
+
export type StopFinderControlCommonOptions = ControlCommonOptions & StopsAPIOptions & {
|
|
8
|
+
placeholder?: string;
|
|
9
|
+
apiParams: StopsParameters;
|
|
10
|
+
};
|
|
11
|
+
/**
|
|
12
|
+
* A class representing a stop finder control to display on map.
|
|
13
|
+
* This class only draw the html elements.
|
|
14
|
+
* The geographic logic must be implemented by subclasses.
|
|
15
|
+
*/
|
|
16
|
+
declare class StopFinderControlCommon extends ControlCommon {
|
|
17
|
+
apiParams: StopsParameters;
|
|
18
|
+
placeholder: string;
|
|
19
|
+
api: StopsAPI;
|
|
20
|
+
abortController?: AbortController;
|
|
21
|
+
suggestionsElt?: HTMLElement;
|
|
22
|
+
inputElt?: HTMLInputElement;
|
|
23
|
+
clearElt?: HTMLDivElement;
|
|
24
|
+
/**
|
|
25
|
+
* Constructor.
|
|
26
|
+
*
|
|
27
|
+
* @param {Object} options Map options
|
|
28
|
+
* @param {string} options.apiKey Access key for [geOps services](https://developer.geops.io/). See StopsAPI.
|
|
29
|
+
* @param {string} [options.url='https://api.geops.io/tracker/v1'] Stops service url. See StopsAPI.
|
|
30
|
+
* @param {string} [options.placeholder='Search for a stop...'] Input field placeholder.
|
|
31
|
+
* @param {StopsSearchParams} [options.apiParams={ limit: 20 }] Request parameters. See [Stops service documentation](https://developer.geops.io/apis/5dcbd702a256d90001cf1361/).
|
|
32
|
+
*/
|
|
33
|
+
constructor(options: StopFinderControlCommonOptions);
|
|
34
|
+
deactivate(): void;
|
|
35
|
+
render(featureCollection?: FeatureCollection): void;
|
|
36
|
+
createDefaultElement(): void;
|
|
37
|
+
/**
|
|
38
|
+
* Launch a search.
|
|
39
|
+
*
|
|
40
|
+
* @param {String} query The query to search for.
|
|
41
|
+
* @param {AbortController} abortController Abort controller used to cancel the request.
|
|
42
|
+
* @return {Promise<Array<GeoJSONFeature>>} An array of GeoJSON features with coordinates in [EPSG:4326](http://epsg.io/4326).
|
|
43
|
+
*/
|
|
44
|
+
search(q: string, abortController: AbortController): Promise<void>;
|
|
45
|
+
/**
|
|
46
|
+
* To be defined in inherited class
|
|
47
|
+
*/
|
|
48
|
+
onSuggestionClick(suggestion: Feature): void;
|
|
49
|
+
/**
|
|
50
|
+
* Clear the search field and close the control.
|
|
51
|
+
*/
|
|
52
|
+
clear(): void;
|
|
53
|
+
}
|
|
54
|
+
export default StopFinderControlCommon;
|
|
55
|
+
//# sourceMappingURL=StopFinderControlCommon.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"StopFinderControlCommon.d.ts","sourceRoot":"","sources":["../../../src/common/controls/StopFinderControlCommon.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAClD,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AACrC,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,aAAa,EAAE,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AAEtE,MAAM,MAAM,8BAA8B,GAAG,oBAAoB,GAC/D,eAAe,GAAG;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,eAAe,CAAC;CAC5B,CAAC;AAEJ;;;;GAIG;AACH,cAAM,uBAAwB,SAAQ,aAAa;IACjD,SAAS,EAAE,eAAe,CAAC;IAE3B,WAAW,EAAE,MAAM,CAAC;IAEpB,GAAG,EAAE,QAAQ,CAAC;IAEd,eAAe,CAAC,EAAE,eAAe,CAAC;IAElC,cAAc,CAAC,EAAE,WAAW,CAAC;IAE7B,QAAQ,CAAC,EAAE,gBAAgB,CAAC;IAE5B,QAAQ,CAAC,EAAE,cAAc,CAAC;IAE1B;;;;;;;;OAQG;gBACS,OAAO,EAAE,8BAA8B;IAenD,UAAU;IAEV,MAAM,CAAC,iBAAiB,CAAC,EAAE,iBAAiB;IAwB5C,oBAAoB;IAuDpB;;;;;;OAMG;IACH,MAAM,CAAC,CAAC,EAAE,MAAM,EAAE,eAAe,EAAE,eAAe;IAsBlD;;OAEG;IAEH,iBAAiB,CAAC,UAAU,EAAE,OAAO;IAErC;;OAEG;IACH,KAAK;CASN;AAED,eAAe,uBAAuB,CAAC"}
|
|
@@ -0,0 +1,144 @@
|
|
|
1
|
+
import { StopsAPI } from '../../api';
|
|
2
|
+
import ControlCommon from './ControlCommon';
|
|
3
|
+
/**
|
|
4
|
+
* A class representing a stop finder control to display on map.
|
|
5
|
+
* This class only draw the html elements.
|
|
6
|
+
* The geographic logic must be implemented by subclasses.
|
|
7
|
+
*/
|
|
8
|
+
class StopFinderControlCommon extends ControlCommon {
|
|
9
|
+
/**
|
|
10
|
+
* Constructor.
|
|
11
|
+
*
|
|
12
|
+
* @param {Object} options Map options
|
|
13
|
+
* @param {string} options.apiKey Access key for [geOps services](https://developer.geops.io/). See StopsAPI.
|
|
14
|
+
* @param {string} [options.url='https://api.geops.io/tracker/v1'] Stops service url. See StopsAPI.
|
|
15
|
+
* @param {string} [options.placeholder='Search for a stop...'] Input field placeholder.
|
|
16
|
+
* @param {StopsSearchParams} [options.apiParams={ limit: 20 }] Request parameters. See [Stops service documentation](https://developer.geops.io/apis/5dcbd702a256d90001cf1361/).
|
|
17
|
+
*/
|
|
18
|
+
constructor(options) {
|
|
19
|
+
super(options);
|
|
20
|
+
const { apiParams, apiKey, url, placeholder } = options || {};
|
|
21
|
+
this.apiParams = Object.assign({ limit: 20 }, (apiParams || {}));
|
|
22
|
+
this.placeholder = placeholder || 'Search for a stop...';
|
|
23
|
+
const apiOptions = { apiKey };
|
|
24
|
+
if (url) {
|
|
25
|
+
apiOptions.url = url;
|
|
26
|
+
}
|
|
27
|
+
this.api = new StopsAPI(apiOptions);
|
|
28
|
+
this.abortController = new AbortController();
|
|
29
|
+
}
|
|
30
|
+
deactivate() { }
|
|
31
|
+
render(featureCollection) {
|
|
32
|
+
const suggestions = (featureCollection === null || featureCollection === void 0 ? void 0 : featureCollection.features) || [];
|
|
33
|
+
if (!this.suggestionsElt) {
|
|
34
|
+
return;
|
|
35
|
+
}
|
|
36
|
+
this.suggestionsElt.style.display = suggestions.length ? 'block' : 'none';
|
|
37
|
+
this.suggestionsElt.innerHTML = '';
|
|
38
|
+
suggestions.forEach((suggestion) => {
|
|
39
|
+
var _a, _b;
|
|
40
|
+
const suggElt = document.createElement('div');
|
|
41
|
+
suggElt.innerHTML = (_a = suggestion === null || suggestion === void 0 ? void 0 : suggestion.properties) === null || _a === void 0 ? void 0 : _a.name;
|
|
42
|
+
suggElt.onclick = () => {
|
|
43
|
+
// @ts-ignore
|
|
44
|
+
this.onSuggestionClick(suggestion);
|
|
45
|
+
};
|
|
46
|
+
Object.assign(suggElt.style, {
|
|
47
|
+
padding: '5px 12px',
|
|
48
|
+
});
|
|
49
|
+
(_b = this.suggestionsElt) === null || _b === void 0 ? void 0 : _b.appendChild(suggElt);
|
|
50
|
+
});
|
|
51
|
+
}
|
|
52
|
+
createDefaultElement() {
|
|
53
|
+
/**
|
|
54
|
+
* Define a default element.
|
|
55
|
+
*/
|
|
56
|
+
this.element = document.createElement('div');
|
|
57
|
+
this.element.id = 'mbt-search';
|
|
58
|
+
Object.assign(this.element.style, {
|
|
59
|
+
position: 'absolute',
|
|
60
|
+
top: 0,
|
|
61
|
+
left: '50px',
|
|
62
|
+
margin: '10px',
|
|
63
|
+
display: 'flex',
|
|
64
|
+
flexDirection: 'column',
|
|
65
|
+
width: '320px',
|
|
66
|
+
});
|
|
67
|
+
// Create input element
|
|
68
|
+
this.inputElt = document.createElement('input');
|
|
69
|
+
this.inputElt.type = 'text';
|
|
70
|
+
this.inputElt.placeholder = this.placeholder;
|
|
71
|
+
this.inputElt.autocomplete = 'off';
|
|
72
|
+
this.inputElt.onkeyup = (evt) => {
|
|
73
|
+
var _a;
|
|
74
|
+
(_a = this.abortController) === null || _a === void 0 ? void 0 : _a.abort();
|
|
75
|
+
this.abortController = new AbortController();
|
|
76
|
+
// @ts-ignore
|
|
77
|
+
this.search(evt.target.value, this.abortController);
|
|
78
|
+
};
|
|
79
|
+
Object.assign(this.inputElt.style, {
|
|
80
|
+
padding: '10px 30px 10px 10px',
|
|
81
|
+
});
|
|
82
|
+
this.element.appendChild(this.inputElt);
|
|
83
|
+
// Create suggestions list element
|
|
84
|
+
this.suggestionsElt = document.createElement('div');
|
|
85
|
+
Object.assign(this.suggestionsElt.style, {
|
|
86
|
+
backgroundColor: 'white',
|
|
87
|
+
overflowY: 'auto',
|
|
88
|
+
cursor: 'pointer',
|
|
89
|
+
});
|
|
90
|
+
this.element.appendChild(this.suggestionsElt);
|
|
91
|
+
this.clearElt = document.createElement('div');
|
|
92
|
+
Object.assign(this.clearElt.style, {
|
|
93
|
+
display: 'none',
|
|
94
|
+
position: 'absolute',
|
|
95
|
+
right: '0',
|
|
96
|
+
padding: '0 10px',
|
|
97
|
+
fontSize: '200%',
|
|
98
|
+
cursor: 'pointer',
|
|
99
|
+
});
|
|
100
|
+
this.clearElt.innerHTML = '×';
|
|
101
|
+
this.clearElt.onclick = () => this.clear();
|
|
102
|
+
this.element.appendChild(this.clearElt);
|
|
103
|
+
}
|
|
104
|
+
/**
|
|
105
|
+
* Launch a search.
|
|
106
|
+
*
|
|
107
|
+
* @param {String} query The query to search for.
|
|
108
|
+
* @param {AbortController} abortController Abort controller used to cancel the request.
|
|
109
|
+
* @return {Promise<Array<GeoJSONFeature>>} An array of GeoJSON features with coordinates in [EPSG:4326](http://epsg.io/4326).
|
|
110
|
+
*/
|
|
111
|
+
search(q, abortController) {
|
|
112
|
+
if (q !== undefined || q !== null) {
|
|
113
|
+
this.apiParams.q = q;
|
|
114
|
+
}
|
|
115
|
+
if (this.clearElt) {
|
|
116
|
+
this.clearElt.style.display = 'block';
|
|
117
|
+
}
|
|
118
|
+
return this.api
|
|
119
|
+
.search(this.apiParams, abortController && { signal: abortController.signal })
|
|
120
|
+
.then((data) => {
|
|
121
|
+
this.render(data);
|
|
122
|
+
})
|
|
123
|
+
.catch(() => {
|
|
124
|
+
this.render();
|
|
125
|
+
});
|
|
126
|
+
}
|
|
127
|
+
/**
|
|
128
|
+
* To be defined in inherited class
|
|
129
|
+
*/
|
|
130
|
+
// eslint-disable-next-line no-unused-vars, @typescript-eslint/no-unused-vars
|
|
131
|
+
onSuggestionClick(suggestion) { }
|
|
132
|
+
/**
|
|
133
|
+
* Clear the search field and close the control.
|
|
134
|
+
*/
|
|
135
|
+
clear() {
|
|
136
|
+
if (!this.suggestionsElt || !this.inputElt || !this.clearElt) {
|
|
137
|
+
return;
|
|
138
|
+
}
|
|
139
|
+
this.inputElt.value = '';
|
|
140
|
+
this.suggestionsElt.innerHTML = '';
|
|
141
|
+
this.clearElt.style.display = 'none';
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
export default StopFinderControlCommon;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/common/index.js"],"names":[],"mappings":""}
|
package/common/index.js
CHANGED
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
import BaseObject from 'ol/Object';
|
|
2
|
+
import type { AnyMap, LayerGetFeatureInfoOptions, LayerGetFeatureInfoResponse } from '../../types';
|
|
3
|
+
export type LayerCommonOptions = {
|
|
4
|
+
key?: string;
|
|
5
|
+
name?: string;
|
|
6
|
+
group?: string;
|
|
7
|
+
copyrights?: string[];
|
|
8
|
+
children?: Layer[];
|
|
9
|
+
visible?: Boolean;
|
|
10
|
+
disabled?: Boolean;
|
|
11
|
+
hitTolerance?: Number;
|
|
12
|
+
properties?: {
|
|
13
|
+
[x: string]: any;
|
|
14
|
+
};
|
|
15
|
+
map?: AnyMap;
|
|
16
|
+
};
|
|
17
|
+
/**
|
|
18
|
+
* A class representing a layer to display on map.
|
|
19
|
+
*
|
|
20
|
+
* @example
|
|
21
|
+
* const layer = new Layer({
|
|
22
|
+
* name: 'My Layer',
|
|
23
|
+
* });
|
|
24
|
+
*
|
|
25
|
+
* @classproperty {string} key - Identifier of the layer. Must be unique.
|
|
26
|
+
* @classproperty {string} name - Name of the layer
|
|
27
|
+
* @classproperty {string[]} copyrights - Array of copyrights.
|
|
28
|
+
* @classproperty {Layer[]} children - List of children layers.
|
|
29
|
+
* @classproperty {boolean} visible - Define if the layer is currently display on the map.
|
|
30
|
+
* @classproperty {boolean} disabled - Define if the layer is currently display on the map but can't be seen (extent, zoom ,data restrictions).
|
|
31
|
+
* @classproperty {number} hitTolerance - Hit-detection tolerance in css pixels. Pixels inside the radius around the given position will be checked for features.
|
|
32
|
+
* @classproperty {Object} properties - Custom properties.
|
|
33
|
+
* @classproperty {ol/Map~Map|mapboxgl.Map} map - The map where the layer is displayed.
|
|
34
|
+
*/
|
|
35
|
+
export default class Layer extends BaseObject {
|
|
36
|
+
key?: string;
|
|
37
|
+
name?: string;
|
|
38
|
+
group?: string;
|
|
39
|
+
copyrights?: string[];
|
|
40
|
+
children?: Layer[];
|
|
41
|
+
visible?: boolean;
|
|
42
|
+
disabled?: boolean;
|
|
43
|
+
hitTolerance?: number;
|
|
44
|
+
properties?: {
|
|
45
|
+
[x: string]: any;
|
|
46
|
+
};
|
|
47
|
+
map?: AnyMap;
|
|
48
|
+
parent?: Layer;
|
|
49
|
+
options: LayerCommonOptions;
|
|
50
|
+
/**
|
|
51
|
+
* Constructor
|
|
52
|
+
*
|
|
53
|
+
* @param {Object} options
|
|
54
|
+
* @param {string} [options.key=uuid()] Identifier of the layer. Muste be unique. Default use a generated uuid.
|
|
55
|
+
* @param {string} [options.name] Name of the layer.
|
|
56
|
+
* @param {string[]} [options.copyrights] Array of copyrights.
|
|
57
|
+
* @param {Array<Layer>} [options.children=[]] Sublayers, all child layers will have a parent property associated to this layer.
|
|
58
|
+
* @param {boolean} [options.visible=true] Define if the layer is currently display on the map.
|
|
59
|
+
* @param {boolean} [options.disabled=false] Define if the layer is currently display on the map but can't be seen (extent, zoom ,data restrictions).
|
|
60
|
+
* @param {number} [options.hitTolerance=5] Hit-detection tolerance in css pixels. Pixels inside the radius around the given position will be checked for features.
|
|
61
|
+
* @param {Object} [options.properties={}] Application-specific layer properties.
|
|
62
|
+
*/
|
|
63
|
+
constructor(options?: LayerCommonOptions);
|
|
64
|
+
/**
|
|
65
|
+
* Define layer's properties that needs custom get and set.
|
|
66
|
+
*
|
|
67
|
+
* @ignore
|
|
68
|
+
*/
|
|
69
|
+
defineProperties(options?: LayerCommonOptions): void;
|
|
70
|
+
/**
|
|
71
|
+
* Initialize the layer with the map passed in parameters.
|
|
72
|
+
*
|
|
73
|
+
* @param {ol/Map~Map|mapboxgl.Map} map A map.
|
|
74
|
+
*/
|
|
75
|
+
attachToMap(map: AnyMap): void;
|
|
76
|
+
/**
|
|
77
|
+
* Terminate what was initialized in init function. Remove layer, events...
|
|
78
|
+
*/
|
|
79
|
+
detachFromMap(): void;
|
|
80
|
+
/**
|
|
81
|
+
* Request feature information for a given coordinate.
|
|
82
|
+
* This function must be implemented by inheriting layers.
|
|
83
|
+
*
|
|
84
|
+
* @param {ol/coordinate~Coordinate} coordinate Coordinate.
|
|
85
|
+
* @param {Object} options Some options. See child classes to see which are supported.
|
|
86
|
+
* @return {Promise<FeatureInfo>} An empty response.
|
|
87
|
+
*/
|
|
88
|
+
getFeatureInfoAtCoordinate(coordinate: number[], options?: LayerGetFeatureInfoOptions): Promise<LayerGetFeatureInfoResponse>;
|
|
89
|
+
/**
|
|
90
|
+
* Return the an array containing all the descendants of the layer in a flat array. Including the current layer.
|
|
91
|
+
*/
|
|
92
|
+
flat(): any[];
|
|
93
|
+
}
|
|
94
|
+
//# sourceMappingURL=LayerCommon.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LayerCommon.d.ts","sourceRoot":"","sources":["../../../src/common/layers/LayerCommon.ts"],"names":[],"mappings":"AAAA,OAAO,UAAU,MAAM,WAAW,CAAC;AAInC,OAAO,KAAK,EACV,MAAM,EACN,0BAA0B,EAC1B,2BAA2B,EAC5B,MAAM,aAAa,CAAC;AAErB,MAAM,MAAM,kBAAkB,GAAG;IAC/B,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC;IACnB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,UAAU,CAAC,EAAE;QAAE,CAAC,CAAC,EAAE,MAAM,GAAG,GAAG,CAAA;KAAE,CAAC;IAClC,GAAG,CAAC,EAAE,MAAM,CAAC;CACd,CAAC;AAEF;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,CAAC,OAAO,OAAO,KAAM,SAAQ,UAAU;IAC3C,GAAG,CAAC,EAAE,MAAM,CAAC;IAEb,IAAI,CAAC,EAAE,MAAM,CAAC;IAEd,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IAEtB,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC;IAEnB,OAAO,CAAC,EAAE,OAAO,CAAC;IAElB,QAAQ,CAAC,EAAE,OAAO,CAAC;IAEnB,YAAY,CAAC,EAAE,MAAM,CAAC;IAEtB,UAAU,CAAC,EAAE;QAAE,CAAC,CAAC,EAAE,MAAM,GAAG,GAAG,CAAA;KAAE,CAAM;IAEvC,GAAG,CAAC,EAAE,MAAM,CAAC;IAEb,MAAM,CAAC,EAAE,KAAK,CAAC;IAEf,OAAO,EAAE,kBAAkB,CAAM;IAEjC;;;;;;;;;;;;OAYG;gBACS,OAAO,GAAE,kBAAuB;IAoC5C;;;;OAIG;IACH,gBAAgB,CAAC,OAAO,GAAE,kBAAuB;IA2IjD;;;;OAIG;IACH,WAAW,CAAC,GAAG,EAAE,MAAM;IAYvB;;OAEG;IAEH,aAAa;IAKb;;;;;;;OAOG;IAEH,0BAA0B,CACxB,UAAU,EAAE,MAAM,EAAE,EAEpB,OAAO,CAAC,EAAE,0BAA0B,GACnC,OAAO,CAAC,2BAA2B,CAAC;IAgBvC;;OAEG;IACH,IAAI;CAGL"}
|