mobility-toolbox-js 2.0.0-beta.67 → 2.0.0-beta.69
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 +1 -1
- package/api/RealtimeAPI.d.ts.map +1 -1
- package/common/api/WebSocketAPI.d.ts.map +1 -1
- package/common/api/WebSocketAPI.js +1 -4
- package/common/mixins/RealtimeLayerMixin.d.ts +0 -7
- package/common/mixins/RealtimeLayerMixin.d.ts.map +1 -1
- package/common/mixins/RealtimeLayerMixin.js +39 -19
- package/common/styles/realtimeDefaultStyle.d.ts +1 -1
- package/common/styles/realtimeDefaultStyle.d.ts.map +1 -1
- package/common/styles/realtimeDefaultStyle.js +58 -50
- package/common/utils/renderTrajectories.d.ts.map +1 -1
- package/common/utils/renderTrajectories.js +12 -23
- package/mapbox/layers/RealtimeLayer.d.ts +5 -2
- package/mapbox/layers/RealtimeLayer.d.ts.map +1 -1
- package/mapbox/layers/RealtimeLayer.js +2 -2
- package/mbt.js +109 -72
- package/mbt.js.map +2 -2
- package/mbt.min.js +40 -40
- package/mbt.min.js.map +2 -2
- package/ol/layers/RealtimeLayer.d.ts +0 -1
- package/ol/layers/RealtimeLayer.d.ts.map +1 -1
- package/ol/layers/RealtimeLayer.js +19 -1
- package/package.json +5 -4
- package/types/common.d.ts +3 -1
- package/types/realtime.d.ts +6 -1
- package/README.md +0 -44
package/api/RealtimeAPI.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import WebSocketAPI, { WebSocketAPIMessageCallback, WebSocketAPIMessageEventData } from '../common/api/WebSocketAPI';
|
|
2
|
-
import { RealtimeMode, RealtimeDeparture, RealtimeNews, RealtimeStation, RealtimeExtraGeom, RealtimeTrainId, RealtimeGeneralizationLevel, RealtimeFullTrajectory, RealtimeTrajectoryResponse, RealtimeStationId } from '../types';
|
|
2
|
+
import type { RealtimeMode, RealtimeDeparture, RealtimeNews, RealtimeStation, RealtimeExtraGeom, RealtimeTrainId, RealtimeGeneralizationLevel, RealtimeFullTrajectory, RealtimeTrajectoryResponse, RealtimeStationId } from '../types';
|
|
3
3
|
import { StopSequence } from './typedefs';
|
|
4
4
|
export declare type RealtimeAPIOptions = {
|
|
5
5
|
url?: string;
|
package/api/RealtimeAPI.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RealtimeAPI.d.ts","sourceRoot":"","sources":["../../src/api/RealtimeAPI.ts"],"names":[],"mappings":"AAAA,OAAO,YAAY,EAAE,EACnB,2BAA2B,EAC3B,4BAA4B,EAC7B,MAAM,4BAA4B,CAAC;AAGpC,OAAO,
|
|
1
|
+
{"version":3,"file":"RealtimeAPI.d.ts","sourceRoot":"","sources":["../../src/api/RealtimeAPI.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WebSocketAPI.d.ts","sourceRoot":"","sources":["../../../src/common/api/WebSocketAPI.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,0BAA0B,EAAE,MAAM,aAAa,CAAC;AAEzD,MAAM,CAAC,OAAO,MAAM,sBAAsB,GAAG;IAC3C,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACvB,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;CACtB,CAAC;AAEF,MAAM,CAAC,OAAO,MAAM,4BAA4B,CAAC,CAAC,IAAI;IACpD,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,CAAC,CAAC;IAYX,gBAAgB,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC;CAC1C,CAAC;AAEF,oBAAY,kCAAkC,GAAG,4BAA4B,CAC3E,0BAA0B,EAAE,CAC7B,GAAG;IACF,MAAM,EAAE,QAAQ,CAAC;CAClB,CAAC;AAEF,oBAAY,wBAAwB,GAAG,KAAK,GAAG;IAC7C,IAAI,EAAE,MAAM,CAAC;CACd,CAAC;AAEF,MAAM,WAAW,gCAAgC;IAC/C,CAAC,GAAG,EAAE,wBAAwB,GAAG,IAAI,CAAC;CACvC;AAED;;GAEG;AACH,MAAM,WAAW,2BAA2B,CAAC,CAAC;IAC5C,CAAC,IAAI,EAAE,4BAA4B,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;CAC/C;AAED,MAAM,CAAC,OAAO,MAAM,wBAAwB,GAAG;IAC7C,MAAM,EAAE,sBAAsB,CAAC;IAC/B,EAAE,EAAE,2BAA2B,CAAC,GAAG,CAAC,CAAC;IACrC,OAAO,CAAC,EAAE,aAAa,CAAC;IACxB,WAAW,EAAE,gCAAgC,CAAC;IAC9C,SAAS,CAAC,EAAE,aAAa,CAAC;IAC1B,KAAK,EAAE,OAAO,CAAC;CAChB,CAAC;AAEF,MAAM,CAAC,OAAO,MAAM,sBAAsB,GAAG;IAC3C,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC;CAC1B,CAAC;AAEF,MAAM,CAAC,OAAO,MAAM,mBAAmB,GAAG;IACxC,MAAM,EAAE,sBAAsB,CAAC;IAC/B,EAAE,EAAE,2BAA2B,CAAC,GAAG,CAAC,CAAC;IACrC,OAAO,CAAC,EAAE,aAAa,CAAC;IACxB,WAAW,EAAE,gCAAgC,CAAC;IAC9C,SAAS,CAAC,EAAE,aAAa,CAAC;IAC1B,aAAa,EAAE,MAAM,CAAC;CACvB,CAAC;AACF;;;;GAIG;AACH,cAAM,YAAY;IAChB,SAAS,CAAC,EAAE,SAAS,CAAC;IAEtB,MAAM,CAAC,EAAE,OAAO,CAAC;IAEjB,OAAO,CAAC,EAAE,OAAO,CAAC;IAElB,UAAU,CAAC,EAAE,OAAO,CAAC;IAErB,IAAI,CAAC,EAAE,OAAO,CAAC;IAEf,cAAc,EAAG,KAAK,CAAC,MAAM,CAAC,CAAC;IAE/B,aAAa,EAAG,KAAK,CAAC,wBAAwB,CAAC,CAAC;IAEhD,UAAU,EAAG,sBAAsB,CAAC;IAEpC,QAAQ,EAAG,KAAK,CAAC,mBAAmB,CAAC,CAAC;;IAMtC,gBAAgB;IA4DhB;;;;;;;;;;OAUG;IACH,MAAM,CAAC,gBAAgB,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,GAAE,sBAA2B;IAO3E;;;;;;OAMG;IACH,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,aAAW;IAuBtC;;;;OAIG;IACH,KAAK;
|
|
1
|
+
{"version":3,"file":"WebSocketAPI.d.ts","sourceRoot":"","sources":["../../../src/common/api/WebSocketAPI.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,0BAA0B,EAAE,MAAM,aAAa,CAAC;AAEzD,MAAM,CAAC,OAAO,MAAM,sBAAsB,GAAG;IAC3C,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACvB,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;CACtB,CAAC;AAEF,MAAM,CAAC,OAAO,MAAM,4BAA4B,CAAC,CAAC,IAAI;IACpD,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,CAAC,CAAC;IAYX,gBAAgB,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC;CAC1C,CAAC;AAEF,oBAAY,kCAAkC,GAAG,4BAA4B,CAC3E,0BAA0B,EAAE,CAC7B,GAAG;IACF,MAAM,EAAE,QAAQ,CAAC;CAClB,CAAC;AAEF,oBAAY,wBAAwB,GAAG,KAAK,GAAG;IAC7C,IAAI,EAAE,MAAM,CAAC;CACd,CAAC;AAEF,MAAM,WAAW,gCAAgC;IAC/C,CAAC,GAAG,EAAE,wBAAwB,GAAG,IAAI,CAAC;CACvC;AAED;;GAEG;AACH,MAAM,WAAW,2BAA2B,CAAC,CAAC;IAC5C,CAAC,IAAI,EAAE,4BAA4B,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;CAC/C;AAED,MAAM,CAAC,OAAO,MAAM,wBAAwB,GAAG;IAC7C,MAAM,EAAE,sBAAsB,CAAC;IAC/B,EAAE,EAAE,2BAA2B,CAAC,GAAG,CAAC,CAAC;IACrC,OAAO,CAAC,EAAE,aAAa,CAAC;IACxB,WAAW,EAAE,gCAAgC,CAAC;IAC9C,SAAS,CAAC,EAAE,aAAa,CAAC;IAC1B,KAAK,EAAE,OAAO,CAAC;CAChB,CAAC;AAEF,MAAM,CAAC,OAAO,MAAM,sBAAsB,GAAG;IAC3C,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC;CAC1B,CAAC;AAEF,MAAM,CAAC,OAAO,MAAM,mBAAmB,GAAG;IACxC,MAAM,EAAE,sBAAsB,CAAC;IAC/B,EAAE,EAAE,2BAA2B,CAAC,GAAG,CAAC,CAAC;IACrC,OAAO,CAAC,EAAE,aAAa,CAAC;IACxB,WAAW,EAAE,gCAAgC,CAAC;IAC9C,SAAS,CAAC,EAAE,aAAa,CAAC;IAC1B,aAAa,EAAE,MAAM,CAAC;CACvB,CAAC;AACF;;;;GAIG;AACH,cAAM,YAAY;IAChB,SAAS,CAAC,EAAE,SAAS,CAAC;IAEtB,MAAM,CAAC,EAAE,OAAO,CAAC;IAEjB,OAAO,CAAC,EAAE,OAAO,CAAC;IAElB,UAAU,CAAC,EAAE,OAAO,CAAC;IAErB,IAAI,CAAC,EAAE,OAAO,CAAC;IAEf,cAAc,EAAG,KAAK,CAAC,MAAM,CAAC,CAAC;IAE/B,aAAa,EAAG,KAAK,CAAC,wBAAwB,CAAC,CAAC;IAEhD,UAAU,EAAG,sBAAsB,CAAC;IAEpC,QAAQ,EAAG,KAAK,CAAC,mBAAmB,CAAC,CAAC;;IAMtC,gBAAgB;IA4DhB;;;;;;;;;;OAUG;IACH,MAAM,CAAC,gBAAgB,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,GAAE,sBAA2B;IAO3E;;;;;;OAMG;IACH,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,aAAW;IAuBtC;;;;OAIG;IACH,KAAK;IAQL;;;;;OAKG;IACH,IAAI,CAAC,OAAO,EAAE,MAAM;IAwBpB,SAAS,CACP,SAAS,EAAE,gCAAgC,EAC3C,OAAO,CAAC,EAAE,aAAa;IAYzB,YAAY,CACV,SAAS,EAAE,gCAAgC,EAC3C,OAAO,CAAC,EAAE,aAAa;IAYzB;;;;;;;;OAQG;IACH,MAAM,CACJ,MAAM,EAAE,sBAAsB,EAC9B,EAAE,EAAE,2BAA2B,CAAC,GAAG,CAAC,EACpC,OAAO,CAAC,EAAE,aAAa,GACtB;QACD,WAAW,EAAE,gCAAgC,CAAC;QAC9C,SAAS,CAAC,EAAE,aAAa,CAAC;KAC3B;IA4CD;;;;;;OAMG;IACH,QAAQ,CACN,MAAM,EAAE,sBAAsB,EAC9B,EAAE,EAAE,2BAA2B,CAAC,GAAG,CAAC;IAWtC;;;;;;;;OAQG;IACH,GAAG,CACD,MAAM,EAAE,sBAAsB,EAC9B,EAAE,EAAE,2BAA2B,CAAC,GAAG,CAAC,EACpC,OAAO,CAAC,EAAE,aAAa;IAiDzB;;;;;;;;OAQG;IACH,SAAS,CACP,MAAM,EAAE,sBAAsB,EAC9B,EAAE,EAAE,2BAA2B,CAAC,GAAG,CAAC,EACpC,OAAO,CAAC,EAAE,aAAa,EACvB,KAAK,UAAQ;IAwBf;;;;;OAKG;IACH,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,2BAA2B,CAAC,GAAG,CAAC;IA0BjE;;OAEG;IACH,8BAA8B;CAa/B;AAED,eAAe,YAAY,CAAC"}
|
|
@@ -106,10 +106,7 @@ class WebSocketAPI {
|
|
|
106
106
|
*/
|
|
107
107
|
close() {
|
|
108
108
|
if (this.websocket && (this.open || this.connecting)) {
|
|
109
|
-
this.websocket.onclose = () => {
|
|
110
|
-
// We set the ws to undefined here to wait that the ws is properly closed.
|
|
111
|
-
this.websocket = undefined;
|
|
112
|
-
};
|
|
109
|
+
this.websocket.onclose = () => { };
|
|
113
110
|
this.websocket.close();
|
|
114
111
|
this.messagesOnOpen = [];
|
|
115
112
|
}
|
|
@@ -61,12 +61,6 @@ export declare class RealtimeLayerInterface {
|
|
|
61
61
|
* @param {number} zoom Zoom level to request. Must be an integer.
|
|
62
62
|
*/
|
|
63
63
|
setBbox(extent: [number, number, number, number], zoom: number): void;
|
|
64
|
-
/**
|
|
65
|
-
* Set the Realtime api's mode.
|
|
66
|
-
*
|
|
67
|
-
* @param {RealtimeMode} mode Realtime mode
|
|
68
|
-
*/
|
|
69
|
-
setMode(mode: RealtimeMode): void;
|
|
70
64
|
/**
|
|
71
65
|
* Render the trajectories
|
|
72
66
|
*/
|
|
@@ -182,7 +176,6 @@ declare function RealtimeLayerMixin<T extends AnyLayerClass>(Base: T): {
|
|
|
182
176
|
*/
|
|
183
177
|
renderTrajectories(viewState: ViewState | undefined, noInterpolate: boolean | undefined): void;
|
|
184
178
|
setBbox(extent?: [number, number, number, number], zoom?: number): void;
|
|
185
|
-
setMode(mode: RealtimeMode): void;
|
|
186
179
|
/**
|
|
187
180
|
* Get the duration before the next update depending on zoom level.
|
|
188
181
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RealtimeLayerMixin.d.ts","sourceRoot":"","sources":["../../../src/common/mixins/RealtimeLayerMixin.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"RealtimeLayerMixin.d.ts","sourceRoot":"","sources":["../../../src/common/mixins/RealtimeLayerMixin.ts"],"names":[],"mappings":"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"}
|
|
@@ -32,12 +32,6 @@ export class RealtimeLayerInterface {
|
|
|
32
32
|
* @param {number} zoom Zoom level to request. Must be an integer.
|
|
33
33
|
*/
|
|
34
34
|
setBbox(extent, zoom) { }
|
|
35
|
-
/**
|
|
36
|
-
* Set the Realtime api's mode.
|
|
37
|
-
*
|
|
38
|
-
* @param {RealtimeMode} mode Realtime mode
|
|
39
|
-
*/
|
|
40
|
-
setMode(mode) { }
|
|
41
35
|
/**
|
|
42
36
|
* Render the trajectories
|
|
43
37
|
*/
|
|
@@ -81,8 +75,26 @@ function RealtimeLayerMixin(Base) {
|
|
|
81
75
|
'funicular',
|
|
82
76
|
'coach',
|
|
83
77
|
];
|
|
78
|
+
const onlyRail = ['rail'];
|
|
79
|
+
const withoutCable = ['tram', 'subway', 'rail', 'bus'];
|
|
84
80
|
// Server will block non train before zoom 9
|
|
85
|
-
this.motsByZoom = options.motsByZoom || [
|
|
81
|
+
this.motsByZoom = options.motsByZoom || [
|
|
82
|
+
onlyRail,
|
|
83
|
+
onlyRail,
|
|
84
|
+
onlyRail,
|
|
85
|
+
onlyRail,
|
|
86
|
+
onlyRail,
|
|
87
|
+
onlyRail,
|
|
88
|
+
onlyRail,
|
|
89
|
+
onlyRail,
|
|
90
|
+
onlyRail,
|
|
91
|
+
withoutCable,
|
|
92
|
+
withoutCable,
|
|
93
|
+
allMots,
|
|
94
|
+
allMots,
|
|
95
|
+
allMots,
|
|
96
|
+
allMots,
|
|
97
|
+
];
|
|
86
98
|
this.getMotsByZoom = (zoom) => {
|
|
87
99
|
return ((options.getMotsByZoom &&
|
|
88
100
|
options.getMotsByZoom(zoom, this.motsByZoom)) ||
|
|
@@ -130,10 +142,11 @@ function RealtimeLayerMixin(Base) {
|
|
|
130
142
|
* @ignore
|
|
131
143
|
*/
|
|
132
144
|
defineProperties(options) {
|
|
133
|
-
const { style, speed, pixelRatio, hoverVehicleId, selectedVehicleId, filter, sort, time, live, canvas, styleOptions, } = options;
|
|
145
|
+
const { style, speed, pixelRatio, hoverVehicleId, selectedVehicleId, filter, sort, time, live, canvas, styleOptions, mode, } = options;
|
|
134
146
|
let currCanvas = canvas;
|
|
135
147
|
let currSpeed = speed || 1;
|
|
136
148
|
let currTime = time || new Date();
|
|
149
|
+
let currMode = mode || RealtimeModes.TOPOGRAPHIC;
|
|
137
150
|
let currStyle = style || realtimeDefaultStyle;
|
|
138
151
|
super.defineProperties(options);
|
|
139
152
|
Object.defineProperties(this, {
|
|
@@ -149,6 +162,23 @@ function RealtimeLayerMixin(Base) {
|
|
|
149
162
|
currCanvas = cnvas;
|
|
150
163
|
},
|
|
151
164
|
},
|
|
165
|
+
/**
|
|
166
|
+
* Style function used to render a vehicle.
|
|
167
|
+
*/
|
|
168
|
+
mode: {
|
|
169
|
+
get: () => currMode,
|
|
170
|
+
set: (newMode) => {
|
|
171
|
+
var _a, _b;
|
|
172
|
+
if (newMode === currMode) {
|
|
173
|
+
return;
|
|
174
|
+
}
|
|
175
|
+
currMode = newMode;
|
|
176
|
+
if ((_b = (_a = this.api) === null || _a === void 0 ? void 0 : _a.wsApi) === null || _b === void 0 ? void 0 : _b.open) {
|
|
177
|
+
this.stop();
|
|
178
|
+
this.start();
|
|
179
|
+
}
|
|
180
|
+
},
|
|
181
|
+
},
|
|
152
182
|
/**
|
|
153
183
|
* Style function used to render a vehicle.
|
|
154
184
|
*/
|
|
@@ -462,14 +492,6 @@ function RealtimeLayerMixin(Base) {
|
|
|
462
492
|
}
|
|
463
493
|
this.api.bbox = bbox;
|
|
464
494
|
}
|
|
465
|
-
setMode(mode) {
|
|
466
|
-
if (this.mode === mode) {
|
|
467
|
-
return;
|
|
468
|
-
}
|
|
469
|
-
this.mode = mode;
|
|
470
|
-
this.api.subscribeTrajectory(this.mode, this.onTrajectoryMessage, undefined, this.isUpdateBboxOnMoveEnd);
|
|
471
|
-
this.api.subscribeDeletedVehicles(this.mode, this.onDeleteTrajectoryMessage, undefined, this.isUpdateBboxOnMoveEnd);
|
|
472
|
-
}
|
|
473
495
|
/**
|
|
474
496
|
* Get the duration before the next update depending on zoom level.
|
|
475
497
|
*
|
|
@@ -590,9 +612,7 @@ function RealtimeLayerMixin(Base) {
|
|
|
590
612
|
purgeTrajectory(trajectory, extent, zoom) {
|
|
591
613
|
const { type, bounds } = trajectory.properties;
|
|
592
614
|
if (!intersects(extent, bounds) ||
|
|
593
|
-
(this.mots && !this.mots.includes(type))
|
|
594
|
-
(type !== 'rail' && zoom < 9) // zoom 9 is defined by the backend
|
|
595
|
-
) {
|
|
615
|
+
(this.mots && !this.mots.includes(type))) {
|
|
596
616
|
this.removeTrajectory(trajectory);
|
|
597
617
|
return true;
|
|
598
618
|
}
|
|
@@ -10,7 +10,7 @@ export declare const getDelayBgCanvas: (origin: number, radius: number, color: s
|
|
|
10
10
|
*
|
|
11
11
|
* @private
|
|
12
12
|
*/
|
|
13
|
-
export declare const getDelayTextCanvas: (
|
|
13
|
+
export declare const getDelayTextCanvas: (text: string, fontSize: number, font: string, delayColor: string, delayOutlineColor?: string, pixelRatio?: number) => import("../../types").AnyCanvas | null;
|
|
14
14
|
/**
|
|
15
15
|
* Draw colored circle with black border
|
|
16
16
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"realtimeDefaultStyle.d.ts","sourceRoot":"","sources":["../../../src/common/styles/realtimeDefaultStyle.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAKV,qBAAqB,EACtB,MAAM,aAAa,CAAC;AAMrB;;;;GAIG;AACH,eAAO,MAAM,gBAAgB,WACnB,MAAM,UACN,MAAM,SACP,MAAM,2CAmBd,CAAC;AAKF;;;;GAIG;AACH,eAAO,MAAM,kBAAkB,
|
|
1
|
+
{"version":3,"file":"realtimeDefaultStyle.d.ts","sourceRoot":"","sources":["../../../src/common/styles/realtimeDefaultStyle.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAKV,qBAAqB,EACtB,MAAM,aAAa,CAAC;AAMrB;;;;GAIG;AACH,eAAO,MAAM,gBAAgB,WACnB,MAAM,UACN,MAAM,SACP,MAAM,2CAmBd,CAAC;AAKF;;;;GAIG;AACH,eAAO,MAAM,kBAAkB,SACvB,MAAM,YACF,MAAM,QACV,MAAM,cACA,MAAM,sBACC,MAAM,eACb,MAAM,2CA0BnB,CAAC;AAKF;;;;GAIG;AACH,eAAO,MAAM,eAAe,WAClB,MAAM,UACN,MAAM,SACP,MAAM,aACF,OAAO,WACT,OAAO,cACJ,MAAM,2CAiCnB,CAAC;AAKF;;;;GAIG;AACH,eAAO,MAAM,aAAa,SAClB,MAAM,UACJ,MAAM,YACJ,MAAM,aACL,MAAM,eACJ,MAAM,aACR,OAAO,cACN,MAAM,2CAmCnB,CAAC;AAKF;;;;;;;GAOG;AACH,QAAA,MAAM,oBAAoB,EAAE,qBA0N3B,CAAC;AACF,eAAe,oBAAoB,CAAC"}
|
|
@@ -32,24 +32,24 @@ const cacheDelayText = {};
|
|
|
32
32
|
*
|
|
33
33
|
* @private
|
|
34
34
|
*/
|
|
35
|
-
export const getDelayTextCanvas = (
|
|
36
|
-
const key = `${
|
|
35
|
+
export const getDelayTextCanvas = (text, fontSize, font, delayColor, delayOutlineColor = '#000', pixelRatio = 1) => {
|
|
36
|
+
const key = `${text}, ${font}, ${delayColor}, ${delayOutlineColor}, ${pixelRatio}`;
|
|
37
37
|
if (!cacheDelayText[key]) {
|
|
38
|
-
const canvas = createCanvas(
|
|
38
|
+
const canvas = createCanvas(Math.ceil(text.length * fontSize), Math.ceil(fontSize + 8 * pixelRatio));
|
|
39
39
|
if (canvas) {
|
|
40
40
|
const ctx = canvas.getContext('2d');
|
|
41
41
|
if (!ctx) {
|
|
42
42
|
return null;
|
|
43
43
|
}
|
|
44
|
+
ctx.font = font;
|
|
44
45
|
ctx.textAlign = 'left';
|
|
45
46
|
ctx.textBaseline = 'middle';
|
|
46
47
|
ctx.font = font;
|
|
47
48
|
ctx.fillStyle = delayColor;
|
|
48
49
|
ctx.strokeStyle = delayOutlineColor;
|
|
49
50
|
ctx.lineWidth = 1.5 * pixelRatio;
|
|
50
|
-
|
|
51
|
-
ctx.
|
|
52
|
-
ctx.fillText(delayText, 0, fontSize);
|
|
51
|
+
ctx.strokeText(text, 0, fontSize);
|
|
52
|
+
ctx.fillText(text, 0, fontSize);
|
|
53
53
|
cacheDelayText[key] = canvas;
|
|
54
54
|
}
|
|
55
55
|
}
|
|
@@ -191,67 +191,75 @@ const realtimeDefaultStyle = (trajectory, viewState, options) => {
|
|
|
191
191
|
const margin = 1 * pixelRatio;
|
|
192
192
|
const radiusDelay = radius + 2;
|
|
193
193
|
const markerSize = radius * 2;
|
|
194
|
-
const size = radiusDelay * 2 + margin * 2
|
|
194
|
+
const size = radiusDelay * 2 + margin * 2;
|
|
195
195
|
const origin = size / 2;
|
|
196
|
+
// Draw circle delay background
|
|
197
|
+
let delayBg = null;
|
|
198
|
+
if (isDisplayStrokeAndDelay && delay !== null) {
|
|
199
|
+
delayBg = getDelayBgCanvas(origin, radiusDelay, getDelayColor(delay, cancelled));
|
|
200
|
+
}
|
|
201
|
+
// Show delay if feature is hovered or if delay is above 5mins.
|
|
202
|
+
let delayText = null;
|
|
203
|
+
let fontSize = 0;
|
|
204
|
+
if (isDisplayStrokeAndDelay &&
|
|
205
|
+
(hover || (delay || 0) >= delayDisplay || cancelled)) {
|
|
206
|
+
// Draw delay text
|
|
207
|
+
fontSize =
|
|
208
|
+
Math.max(cancelled ? 19 : 14, Math.min(cancelled ? 19 : 17, radius * 1.2)) * pixelRatio;
|
|
209
|
+
const text = getDelayText(delay, cancelled);
|
|
210
|
+
if (text) {
|
|
211
|
+
delayText = getDelayTextCanvas(text, fontSize, `bold ${fontSize}px arial, sans-serif`, getDelayColor(delay, cancelled, true), delayOutlineColor, pixelRatio);
|
|
212
|
+
}
|
|
213
|
+
}
|
|
214
|
+
// Draw colored circle with black border
|
|
215
|
+
let circleFillColor;
|
|
216
|
+
if (useDelayStyle) {
|
|
217
|
+
circleFillColor = getDelayColor(delay, cancelled);
|
|
218
|
+
}
|
|
219
|
+
else {
|
|
220
|
+
circleFillColor = color || getBgColor(type);
|
|
221
|
+
}
|
|
222
|
+
const hasStroke = isDisplayStrokeAndDelay || hover || selected;
|
|
223
|
+
const hasDash = !!isDisplayStrokeAndDelay &&
|
|
224
|
+
!!useDelayStyle &&
|
|
225
|
+
delay === null &&
|
|
226
|
+
operatorProvidesRealtime === 'yes';
|
|
227
|
+
const circle = getCircleCanvas(origin, radius, circleFillColor, hasStroke, hasDash, pixelRatio);
|
|
196
228
|
// Create the canvas
|
|
197
|
-
const
|
|
229
|
+
const width = size + ((delayText === null || delayText === void 0 ? void 0 : delayText.width) || 0) * 2;
|
|
230
|
+
const height = size;
|
|
231
|
+
const canvas = createCanvas(width, height);
|
|
198
232
|
if (canvas) {
|
|
199
233
|
const ctx = canvas.getContext('2d');
|
|
200
234
|
if (!ctx) {
|
|
201
235
|
return null;
|
|
202
236
|
}
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
ctx.drawImage(delayBg, 0, 0);
|
|
208
|
-
}
|
|
237
|
+
// The renderTrajectories will center the image on the vehicle positions.
|
|
238
|
+
const originX = (delayText === null || delayText === void 0 ? void 0 : delayText.width) || 0;
|
|
239
|
+
if (delayBg) {
|
|
240
|
+
ctx.drawImage(delayBg, originX, 0);
|
|
209
241
|
}
|
|
210
|
-
// Show delay if feature is hovered or if delay is above 5mins.
|
|
211
|
-
if (isDisplayStrokeAndDelay &&
|
|
212
|
-
(hover || (delay || 0) >= delayDisplay || cancelled)) {
|
|
213
|
-
// Draw delay text
|
|
214
|
-
const fontSize = Math.max(cancelled ? 19 : 14, Math.min(cancelled ? 19 : 17, radius * 1.2)) * pixelRatio;
|
|
215
|
-
const text = getDelayText(delay, cancelled);
|
|
216
|
-
if (text) {
|
|
217
|
-
const textWidth = text.length * fontSize;
|
|
218
|
-
const delayText = getDelayTextCanvas(textWidth, text, fontSize, `bold ${fontSize}px arial, sans-serif`, getDelayColor(delay, cancelled, true), delayOutlineColor, pixelRatio);
|
|
219
|
-
if (delayText) {
|
|
220
|
-
ctx.drawImage(delayText, origin + radiusDelay + margin, origin - fontSize);
|
|
221
|
-
}
|
|
222
|
-
}
|
|
223
|
-
}
|
|
224
|
-
// Draw colored circle with black border
|
|
225
|
-
let circleFillColor;
|
|
226
|
-
if (useDelayStyle) {
|
|
227
|
-
circleFillColor = getDelayColor(delay, cancelled);
|
|
228
|
-
}
|
|
229
|
-
else {
|
|
230
|
-
circleFillColor = color || getBgColor(type);
|
|
231
|
-
}
|
|
232
|
-
const hasStroke = isDisplayStrokeAndDelay || hover || selected;
|
|
233
|
-
const hasDash = !!isDisplayStrokeAndDelay &&
|
|
234
|
-
!!useDelayStyle &&
|
|
235
|
-
delay === null &&
|
|
236
|
-
operatorProvidesRealtime === 'yes';
|
|
237
|
-
const circle = getCircleCanvas(origin, radius, circleFillColor, hasStroke, hasDash, pixelRatio);
|
|
238
242
|
if (circle) {
|
|
239
|
-
ctx.drawImage(circle,
|
|
243
|
+
ctx.drawImage(circle, originX, 0);
|
|
240
244
|
}
|
|
241
245
|
// Draw text in the circle
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
const
|
|
246
|
+
let circleText = null;
|
|
247
|
+
if (isDisplayText) {
|
|
248
|
+
const fontSize2 = Math.max(radius, 10);
|
|
249
|
+
const textSize = getTextSize(ctx, markerSize, name, fontSize2);
|
|
245
250
|
const textColor2 = !useDelayStyle
|
|
246
251
|
? textColor || getTextColor(type)
|
|
247
252
|
: '#000000';
|
|
248
253
|
const hasStroke2 = !!useDelayStyle &&
|
|
249
254
|
delay === null &&
|
|
250
255
|
operatorProvidesRealtime === 'yes';
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
256
|
+
circleText = getTextCanvas(name, origin, textSize, textColor2, circleFillColor, hasStroke2, pixelRatio);
|
|
257
|
+
}
|
|
258
|
+
if (circleText) {
|
|
259
|
+
ctx.drawImage(circleText, originX, 0);
|
|
260
|
+
}
|
|
261
|
+
if (delayText) {
|
|
262
|
+
ctx.drawImage(delayText, originX + Math.ceil(origin + radiusDelay) + margin, Math.ceil(origin - fontSize));
|
|
255
263
|
}
|
|
256
264
|
cache[key] = canvas;
|
|
257
265
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"renderTrajectories.d.ts","sourceRoot":"","sources":["../../../src/common/utils/renderTrajectories.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,SAAS,EACT,mBAAmB,EACnB,qBAAqB,EACrB,oBAAoB,EACpB,oBAAoB,EACpB,SAAS,EACV,MAAM,aAAa,CAAC;AAGrB;;;;;;;;;;;;GAYG;AACH,QAAA,MAAM,kBAAkB,WACd,SAAS,gBACH,oBAAoB,SAC3B,qBAAqB,aACjB,SAAS,WACX,oBAAoB,KAC5B,
|
|
1
|
+
{"version":3,"file":"renderTrajectories.d.ts","sourceRoot":"","sources":["../../../src/common/utils/renderTrajectories.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,SAAS,EACT,mBAAmB,EACnB,qBAAqB,EACrB,oBAAoB,EACpB,oBAAoB,EACpB,SAAS,EACV,MAAM,aAAa,CAAC;AAGrB;;;;;;;;;;;;GAYG;AACH,QAAA,MAAM,kBAAkB,WACd,SAAS,gBACH,oBAAoB,SAC3B,qBAAqB,aACjB,SAAS,WACX,oBAAoB,KAC5B,mBA+JF,CAAC;AAEF,eAAe,kBAAkB,CAAC"}
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
/* eslint-disable no-param-reassign */
|
|
2
1
|
import { compose, apply, create } from 'ol/transform';
|
|
3
2
|
import getVehiclePosition from './getVehiclePosition';
|
|
4
3
|
/**
|
|
@@ -22,7 +21,9 @@ const renderTrajectories = (canvas, trajectories, style, viewState, options) =>
|
|
|
22
21
|
if (!resolution || !center) {
|
|
23
22
|
return { renderedTrajectories: [] };
|
|
24
23
|
}
|
|
25
|
-
const { noInterpolate = false, hoverVehicleId, selectedVehicleId, filter,
|
|
24
|
+
const { noInterpolate = false, hoverVehicleId, selectedVehicleId, filter, getScreenPixel = (pixel, viewStat) => (viewStat.zoom || 0) < 12
|
|
25
|
+
? pixel.map((coord) => Math.floor(coord))
|
|
26
|
+
: pixel, } = options;
|
|
26
27
|
const context = canvas.getContext('2d');
|
|
27
28
|
context === null || context === void 0 ? void 0 : context.clearRect(0, 0, canvas.width, canvas.height);
|
|
28
29
|
const [width, height] = size;
|
|
@@ -37,12 +38,8 @@ const renderTrajectories = (canvas, trajectories, style, viewState, options) =>
|
|
|
37
38
|
}
|
|
38
39
|
let hoverVehicleImg;
|
|
39
40
|
let hoverVehiclePx;
|
|
40
|
-
let hoverVehicleWidth;
|
|
41
|
-
let hoverVehicleHeight;
|
|
42
41
|
let selectedVehicleImg;
|
|
43
42
|
let selectedVehiclePx;
|
|
44
|
-
let selectedVehicleWidth;
|
|
45
|
-
let selectedVehicleHeight;
|
|
46
43
|
const renderedTrajectories = [];
|
|
47
44
|
for (let i = trajectories.length - 1; i >= 0; i -= 1) {
|
|
48
45
|
const trajectory = trajectories[i];
|
|
@@ -81,38 +78,30 @@ const renderTrajectories = (canvas, trajectories, style, viewState, options) =>
|
|
|
81
78
|
// eslint-disable-next-line no-continue
|
|
82
79
|
continue;
|
|
83
80
|
}
|
|
84
|
-
const imgWidth = vehicleImg.width;
|
|
85
|
-
const imgHeight = vehicleImg.height;
|
|
86
81
|
if (hoverVehicleId !== id && selectedVehicleId !== id) {
|
|
87
|
-
|
|
82
|
+
// To optimize the performance we use integer as pixel coordinate
|
|
83
|
+
// to avoid an additional work by the browser on zoom level < 12.
|
|
84
|
+
// See https://developer.mozilla.org/en-US/docs/Web/API/Canvas_API/Tutorial/Optimizing_canvas?retiredLocale=de#avoid_floating-point_coordinates_and_use_integers_instead
|
|
85
|
+
const [x, y] = getScreenPixel([px[0] - vehicleImg.width / 2, px[1] - vehicleImg.height / 2], viewState);
|
|
86
|
+
context === null || context === void 0 ? void 0 : context.drawImage(vehicleImg, x, y);
|
|
88
87
|
}
|
|
89
88
|
if (hoverVehicleId && hoverVehicleId === id) {
|
|
90
89
|
// Store the canvas to draw it at the end
|
|
91
90
|
hoverVehicleImg = vehicleImg;
|
|
92
91
|
hoverVehiclePx = px;
|
|
93
|
-
hoverVehicleWidth = imgWidth;
|
|
94
|
-
hoverVehicleHeight = imgHeight;
|
|
95
92
|
}
|
|
96
93
|
if (selectedVehicleId && selectedVehicleId === id) {
|
|
97
94
|
// Store the canvas to draw it at the end
|
|
98
95
|
selectedVehicleImg = vehicleImg;
|
|
99
96
|
selectedVehiclePx = px;
|
|
100
|
-
selectedVehicleWidth = imgWidth;
|
|
101
|
-
selectedVehicleHeight = imgHeight;
|
|
102
97
|
}
|
|
103
98
|
renderedTrajectories.push(trajectory);
|
|
104
99
|
}
|
|
105
|
-
if (selectedVehicleImg &&
|
|
106
|
-
selectedVehiclePx
|
|
107
|
-
selectedVehicleWidth &&
|
|
108
|
-
selectedVehicleHeight) {
|
|
109
|
-
context === null || context === void 0 ? void 0 : context.drawImage(selectedVehicleImg, selectedVehiclePx[0] - selectedVehicleWidth / 2, selectedVehiclePx[1] - selectedVehicleHeight / 2, selectedVehicleWidth, selectedVehicleHeight);
|
|
100
|
+
if (selectedVehicleImg && selectedVehiclePx) {
|
|
101
|
+
context === null || context === void 0 ? void 0 : context.drawImage(selectedVehicleImg, Math.floor(selectedVehiclePx[0] - selectedVehicleImg.width / 2), Math.floor(selectedVehiclePx[1] - selectedVehicleImg.height / 2));
|
|
110
102
|
}
|
|
111
|
-
if (hoverVehicleImg &&
|
|
112
|
-
hoverVehiclePx
|
|
113
|
-
hoverVehicleWidth &&
|
|
114
|
-
hoverVehicleHeight) {
|
|
115
|
-
context === null || context === void 0 ? void 0 : context.drawImage(hoverVehicleImg, hoverVehiclePx[0] - hoverVehicleWidth / 2, hoverVehiclePx[1] - hoverVehicleHeight / 2, hoverVehicleWidth, hoverVehicleHeight);
|
|
103
|
+
if (hoverVehicleImg && hoverVehiclePx) {
|
|
104
|
+
context === null || context === void 0 ? void 0 : context.drawImage(hoverVehicleImg, Math.floor(hoverVehiclePx[0] - hoverVehicleImg.width / 2), Math.floor(hoverVehiclePx[1] - hoverVehicleImg.height / 2));
|
|
116
105
|
}
|
|
117
106
|
return {
|
|
118
107
|
renderedTrajectories,
|
|
@@ -17,7 +17,11 @@ declare const RealtimeLayer_base: {
|
|
|
17
17
|
tenant: string;
|
|
18
18
|
time?: Date | undefined;
|
|
19
19
|
live?: boolean | undefined;
|
|
20
|
-
speed?: number | undefined;
|
|
20
|
+
speed?: number | undefined; /**
|
|
21
|
+
* Render the trajectories using current map's size, resolution and rotation.
|
|
22
|
+
* @param {boolean} noInterpolate if true, renders the vehicles without interpolating theirs positions.
|
|
23
|
+
* @overrides
|
|
24
|
+
*/
|
|
21
25
|
filter?: Function | undefined;
|
|
22
26
|
sort?: Function | undefined;
|
|
23
27
|
style?: import("../../types").RealtimeStyleFunction | undefined;
|
|
@@ -57,7 +61,6 @@ declare const RealtimeLayer_base: {
|
|
|
57
61
|
renderTrajectoriesInternal(viewState: import("../../types").ViewState, noInterpolate?: boolean): boolean;
|
|
58
62
|
renderTrajectories(viewState: import("../../types").ViewState | undefined, noInterpolate: boolean | undefined): void;
|
|
59
63
|
setBbox(extent?: [number, number, number, number] | undefined, zoom?: number | undefined): void;
|
|
60
|
-
setMode(mode: import("../../types").RealtimeMode): void;
|
|
61
64
|
getRefreshTimeInMs(zoom?: number | undefined): number;
|
|
62
65
|
getVehicle(filterFc: Function): GeoJSONFeature[];
|
|
63
66
|
getFeatureInfoAtCoordinate(coordinate: Coordinate, options: LayerGetFeatureInfoOptions): Promise<{
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RealtimeLayer.d.ts","sourceRoot":"","sources":["../../../src/mapbox/layers/RealtimeLayer.ts"],"names":[],"mappings":";AAKA,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,EAAE,OAAO,EAAE,MAAM,IAAI,CAAC;AAE7B,OAAO,KAAK,MAAM,SAAS,CAAC;AAE5B,OAAO,EACL,YAAY,EACZ,0BAA0B,EAC1B,2BAA2B,EAC5B,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC
|
|
1
|
+
{"version":3,"file":"RealtimeLayer.d.ts","sourceRoot":"","sources":["../../../src/mapbox/layers/RealtimeLayer.ts"],"names":[],"mappings":";AAKA,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,EAAE,OAAO,EAAE,MAAM,IAAI,CAAC;AAE7B,OAAO,KAAK,MAAM,SAAS,CAAC;AAE5B,OAAO,EACL,YAAY,EACZ,0BAA0B,EAC1B,2BAA2B,EAC5B,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;;;;;;;;;;;;;;oCAiKtD;;;;WAIG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAnKL;;;;;;;;;;;;;;;;GAgBG;AAEH,cAAM,aAAc,SAAQ,kBAAY;gBAC1B,OAAO,KAAK;IAqBxB;;;;;;OAMG;IAEH,WAAW,CAAC,GAAG,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM;IAuC/C;;OAEG;IACH,aAAa;IAkBb;;;;;;OAMG;IACH,KAAK;IAQL;;;;OAIG;IACH,IAAI;IASJ,MAAM;IASN;;;OAGG;IACH,kBAAkB,CAChB,GAAG,EAAE,QAAQ,CAAC,kBAAkB,GAAG,UAAU,CAAC,aAAa;IAQ7D;;;;OAIG;IAEH,kBAAkB,CAAC,aAAa,CAAC,EAAE,OAAe;IAuDlD;;OAEG;IACH,kBAAkB;IAIlB,0BAA0B,CACxB,UAAU,EAAE,UAAU,EACtB,OAAO,KAAK,GACX,OAAO,CAAC,2BAA2B,CAAC;IAQvC,kBAAkB;IAclB;;;;OAIG;IACH,eAAe,CACb,UAAU,EAAE,kBAAkB,EAC9B,MAAM,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EACxC,IAAI,EAAE,MAAM;IASd;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,IAAI,CAAC,EAAE,MAAM;IAUhE;;;;OAIG;IACH,MAAM;IAIN,0BAA0B,CACxB,SAAS,EAAE,SAAS,EACpB,aAAa,GAAE,OAAe;IAahC;;;;;OAKG;IACH,SAAS;IAQT;;;;;OAKG;IACH,cAAc,CACZ,QAAQ,EAAE,OAAO,EAAE,EACnB,KAAK,EAAE,aAAa,EACpB,UAAU,EAAE,UAAU;CAOzB;AAED,eAAe,aAAa,CAAC"}
|
|
@@ -179,7 +179,7 @@ class RealtimeLayer extends mixin(Layer) {
|
|
|
179
179
|
center: fromLonLat([center.lng, center.lat]),
|
|
180
180
|
extent: bounds,
|
|
181
181
|
resolution: res,
|
|
182
|
-
zoom: this.
|
|
182
|
+
zoom: this.getOlZoom(),
|
|
183
183
|
rotation: -(this.map.getBearing() * Math.PI) / 180,
|
|
184
184
|
pixelRatio: this.pixelRatio,
|
|
185
185
|
};
|
|
@@ -215,7 +215,7 @@ class RealtimeLayer extends mixin(Layer) {
|
|
|
215
215
|
* @private
|
|
216
216
|
*/
|
|
217
217
|
purgeTrajectory(trajectory, extent, zoom) {
|
|
218
|
-
return super.purgeTrajectory(trajectory, extent || this.getMercatorExtent(), zoom || Math.floor(this.
|
|
218
|
+
return super.purgeTrajectory(trajectory, extent || this.getMercatorExtent(), zoom || Math.floor(this.getOlZoom()));
|
|
219
219
|
}
|
|
220
220
|
/**
|
|
221
221
|
* Send the current bbox to the websocket
|