@golemio/pid 2.2.11-dev.613632989 → 2.2.11-dev.613720384

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.
@@ -0,0 +1,445 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
26
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
27
+ return new (P || (P = Promise))(function (resolve, reject) {
28
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
29
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
30
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
31
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
32
+ });
33
+ };
34
+ var __importDefault = (this && this.__importDefault) || function (mod) {
35
+ return (mod && mod.__esModule) ? mod : { "default": mod };
36
+ };
37
+ var _a;
38
+ Object.defineProperty(exports, "__esModule", { value: true });
39
+ const turf = __importStar(require("@turf/turf"));
40
+ const moment_1 = __importDefault(require("moment"));
41
+ const const_1 = require("../../../const");
42
+ const models_1 = require("../models");
43
+ const DPPUtils_1 = __importDefault(require("./DPPUtils"));
44
+ const PositionCalculator_1 = __importDefault(require("./PositionCalculator"));
45
+ const PositionHandlerEnum_1 = require("./PositionHandlerEnum");
46
+ const ValidToCalculator_1 = __importDefault(require("./ValidToCalculator"));
47
+ class PositionsManager {
48
+ }
49
+ exports.default = PositionsManager;
50
+ _a = PositionsManager;
51
+ /**
52
+ * Compute positions and return computed positions
53
+ *
54
+ * @param {ITripPositionsWithGTFS} tripPositions - Trip positions with shape anchors data
55
+ * @returns {Promise<IProcessedPositions>} - Returns computed/updated positions
56
+ */
57
+ PositionsManager.computePositions = (tripPositions, schedule) => __awaiter(void 0, void 0, void 0, function* () {
58
+ const startTimestamp = parseInt(tripPositions.start_timestamp, 10);
59
+ const startDayTimestamp = _a.getStartDayTimestamp(startTimestamp, tripPositions.gtfsData.shapes_anchor_points[0].time_scheduled_seconds);
60
+ const gtfsRouteType = tripPositions.gtfs_route_type;
61
+ return new Promise((resolve) => {
62
+ const context = {
63
+ atStopStreak: {
64
+ stop_sequence: null,
65
+ firstPositionTimestamp: null,
66
+ firstPositionDelay: null,
67
+ },
68
+ lastPositionLastStop: {
69
+ id: null,
70
+ sequence: null,
71
+ arrival_time: null,
72
+ departure_time: null,
73
+ },
74
+ lastPositionDelay: null,
75
+ lastPositionId: null,
76
+ lastPositionOriginTimestamp: null,
77
+ lastPositionTracking: null,
78
+ lastPositionCanceled: null,
79
+ lastPositionBeforeTrackDelayed: null,
80
+ isLastPositionAfterTrack: false,
81
+ tripId: tripPositions.id,
82
+ };
83
+ const computedPositions = [];
84
+ PositionsManager.updatePositionsIterator(0, { tripPositions, startTimestamp, startDayTimestamp, context, computedPositions, gtfsRouteType }, schedule, () => {
85
+ resolve({
86
+ context,
87
+ positions: computedPositions,
88
+ });
89
+ });
90
+ });
91
+ });
92
+ /**
93
+ * Takes position one by one, set proper handler for type of position, and do the process of position
94
+ *
95
+ * @param {number} i - Iteration
96
+ * @param {IUpdatePositionsIteratorOptions} options - Initial options
97
+ * @param {number} cb - Callback function of iterator
98
+ * @returns {void} - void
99
+ */
100
+ PositionsManager.updatePositionsIterator = (i, options, schedule, cb) => __awaiter(void 0, void 0, void 0, function* () {
101
+ const { tripPositions, startDayTimestamp, startTimestamp, context, computedPositions, gtfsRouteType } = options;
102
+ if (i === tripPositions.positions.length) {
103
+ return cb();
104
+ }
105
+ const position = tripPositions.positions[i];
106
+ let positionToUpdate = null;
107
+ // situations
108
+ switch (_a.setPositionUpdateHandler(position)) {
109
+ case PositionHandlerEnum_1.PositionHandlerEnum.TRACKING:
110
+ const currentPosition = turf.point([position.lng, position.lat], {
111
+ id: position.id,
112
+ origin_time: position.origin_time,
113
+ origin_timestamp: position.origin_timestamp,
114
+ tcp_event: position.tcp_event,
115
+ });
116
+ positionToUpdate = yield _a.getEstimatedPoint(tripPositions.gtfsData, currentPosition, context, startDayTimestamp, tripPositions.gtfs_route_type);
117
+ break;
118
+ case PositionHandlerEnum_1.PositionHandlerEnum.NOT_TRACKING:
119
+ // if there is no previous positions with tracking status, set position as before_track
120
+ const firstShapesAnchorPoint = tripPositions.gtfsData.shapes_anchor_points[0];
121
+ if (context.lastPositionTracking === null) {
122
+ const firstStopTime = tripPositions.gtfsData.stop_times[0];
123
+ // if there is propagated delay we can use it for new position
124
+ const canDuplicatePropagatedDelay = context.lastPositionBeforeTrackDelayed !== null;
125
+ // if there is no delay to duplicate and DPP trip is far from start then invisible
126
+ const setAsInvisible = !canDuplicatePropagatedDelay &&
127
+ DPPUtils_1.default.isInvisible(tripPositions.agency_name_scheduled, position.origin_timestamp, startTimestamp, [position.lng, position.lat], firstShapesAnchorPoint.coordinates, schedule, tripPositions.gtfs_trip_id, context.lastPositionTracking, position.tracking);
128
+ positionToUpdate = Object.assign({ id: position.id, next_stop_arrival_time: startDayTimestamp + firstStopTime.arrival_time_seconds * 1000, next_stop_departure_time: startDayTimestamp + firstStopTime.departure_time_seconds * 1000, next_stop_id: firstStopTime.stop_id, next_stop_sequence: firstStopTime.stop_sequence, next_stop_name: firstStopTime.stop.stop_name, shape_dist_traveled: firstStopTime.shape_dist_traveled, state_position: setAsInvisible ? const_1.StatePositionEnum.INVISIBLE : const_1.StatePositionEnum.BEFORE_TRACK, state_process: const_1.StateProcessEnum.PROCESSED }, (firstStopTime.stop_headsign && {
129
+ last_stop_headsign: firstStopTime.stop_headsign,
130
+ }));
131
+ if (!setAsInvisible && canDuplicatePropagatedDelay) {
132
+ positionToUpdate.delay = context.lastPositionBeforeTrackDelayed.delay;
133
+ }
134
+ }
135
+ else {
136
+ // if there is tracking 2 position with same origin_timestamp then this position is duplicate
137
+ const statePosition = tripPositions.positions.find((e) => e.origin_timestamp === position.origin_timestamp && e.tracking === const_1.PositionTrackingEnum.TRACKING)
138
+ ? const_1.StatePositionEnum.DUPLICATE
139
+ : const_1.StatePositionEnum.AFTER_TRACK;
140
+ const lastShapesAnchorPoint = tripPositions.gtfsData.shapes_anchor_points[tripPositions.gtfsData.shapes_anchor_points.length - 1];
141
+ const lastStopTime = tripPositions.gtfsData.stop_times[tripPositions.gtfsData.stop_times.length - 1];
142
+ // set as invisible if there are some AFTER_TRACK before
143
+ const setAsInvisible = DPPUtils_1.default.isInvisible(tripPositions.agency_name_scheduled, position.origin_timestamp, startTimestamp, [position.lng, position.lat], firstShapesAnchorPoint.coordinates, schedule, tripPositions.gtfs_trip_id, context.lastPositionTracking, position.tracking) && statePosition === const_1.StatePositionEnum.AFTER_TRACK;
144
+ positionToUpdate = Object.assign({ id: position.id, last_stop_arrival_time: startDayTimestamp + lastShapesAnchorPoint.time_scheduled_seconds * 1000, last_stop_departure_time: startDayTimestamp + lastShapesAnchorPoint.time_scheduled_seconds * 1000, last_stop_id: lastStopTime.stop_id, last_stop_sequence: lastShapesAnchorPoint.last_stop_sequence, shape_dist_traveled: lastShapesAnchorPoint.shape_dist_traveled, state_position: setAsInvisible ? const_1.StatePositionEnum.INVISIBLE : statePosition, state_process: const_1.StateProcessEnum.PROCESSED }, (lastStopTime.stop_headsign && {
145
+ last_stop_headsign: lastStopTime.stop_headsign,
146
+ }));
147
+ }
148
+ break;
149
+ case PositionHandlerEnum_1.PositionHandlerEnum.CANCELED:
150
+ positionToUpdate = {
151
+ id: position.id,
152
+ state_position: const_1.StatePositionEnum.CANCELED,
153
+ state_process: const_1.StateProcessEnum.PROCESSED,
154
+ };
155
+ break;
156
+ case PositionHandlerEnum_1.PositionHandlerEnum.DO_NOTHING:
157
+ break;
158
+ default:
159
+ break;
160
+ }
161
+ // if not null push to update
162
+ if (positionToUpdate) {
163
+ positionToUpdate.valid_to = ValidToCalculator_1.default.getValidToAttribute(positionToUpdate, position, gtfsRouteType, tripPositions.gtfsData, startTimestamp, startDayTimestamp);
164
+ computedPositions.push(positionToUpdate);
165
+ }
166
+ // set if last position is AFTER_TRACK
167
+ context.isLastPositionAfterTrack =
168
+ (positionToUpdate === null || positionToUpdate === void 0 ? void 0 : positionToUpdate.state_position) === const_1.StatePositionEnum.AFTER_TRACK ||
169
+ position.state_position === const_1.StatePositionEnum.AFTER_TRACK;
170
+ // set last known BEFORE_TRACK_DELAYED position
171
+ if (position.state_position === const_1.StatePositionEnum.BEFORE_TRACK_DELAYED) {
172
+ context.lastPositionBeforeTrackDelayed = {
173
+ delay: position.delay,
174
+ origin_timestamp: position.origin_timestamp,
175
+ };
176
+ }
177
+ // set last position tracking (only for at_stop and on_track)
178
+ if ((positionToUpdate === null || positionToUpdate === void 0 ? void 0 : positionToUpdate.state_position) === const_1.StatePositionEnum.AT_STOP ||
179
+ (positionToUpdate === null || positionToUpdate === void 0 ? void 0 : positionToUpdate.state_position) === const_1.StatePositionEnum.ON_TRACK ||
180
+ position.state_position === const_1.StatePositionEnum.AT_STOP ||
181
+ position.state_position === const_1.StatePositionEnum.ON_TRACK) {
182
+ context.lastPositionTracking = turf.point([position.lng, position.lat], Object.assign(Object.assign({}, position), positionToUpdate));
183
+ }
184
+ // set new first position at stop streak if this stop seqence is set and it is not same as before
185
+ if (positionToUpdate
186
+ ? positionToUpdate.this_stop_sequence &&
187
+ context.atStopStreak.stop_sequence !== positionToUpdate.this_stop_sequence
188
+ : position.this_stop_sequence && context.atStopStreak.stop_sequence !== position.this_stop_sequence) {
189
+ context.atStopStreak.stop_sequence = positionToUpdate
190
+ ? positionToUpdate.this_stop_sequence
191
+ : position.this_stop_sequence;
192
+ context.atStopStreak.firstPositionTimestamp = position.origin_timestamp;
193
+ context.atStopStreak.firstPositionDelay = positionToUpdate ? positionToUpdate.delay : position.delay;
194
+ }
195
+ // IF currently updated position / position was processed before
196
+ // and it is NOT AT_STOP
197
+ if (positionToUpdate ? !positionToUpdate.this_stop_sequence : !position.this_stop_sequence) {
198
+ // THEN disrupt atStopStreak
199
+ context.atStopStreak.stop_sequence = null;
200
+ }
201
+ // duplicated position should not be considered at all
202
+ if ((positionToUpdate === null || positionToUpdate === void 0 ? void 0 : positionToUpdate.state_position) !== const_1.StatePositionEnum.DUPLICATE &&
203
+ (positionToUpdate === null || positionToUpdate === void 0 ? void 0 : positionToUpdate.state_position) !== const_1.StatePositionEnum.INVISIBLE) {
204
+ context.lastPositionId = position.id;
205
+ context.lastPositionCanceled = position.is_canceled;
206
+ context.lastPositionOriginTimestamp = position.origin_timestamp;
207
+ }
208
+ // set delay
209
+ context.lastPositionDelay = positionToUpdate ? positionToUpdate.delay : position.delay;
210
+ _a.updatePositionsIterator(i + 1, options, schedule, cb);
211
+ });
212
+ /**
213
+ * Decide how to process input position data
214
+ *
215
+ * @param {IPosition} position - Input vehiclepositions_positions row data
216
+ * @returns {PositionHandlerEnum} - Returns action handler enum
217
+ */
218
+ PositionsManager.setPositionUpdateHandler = (position) => {
219
+ if (position.state_process === const_1.StateProcessEnum.PROCESSED)
220
+ return PositionHandlerEnum_1.PositionHandlerEnum.DO_NOTHING;
221
+ if (position.is_canceled)
222
+ return PositionHandlerEnum_1.PositionHandlerEnum.CANCELED;
223
+ if (position.lat && position.lng && position.tracking === const_1.PositionTrackingEnum.TRACKING)
224
+ return PositionHandlerEnum_1.PositionHandlerEnum.TRACKING;
225
+ if (position.tracking !== const_1.PositionTrackingEnum.TRACKING)
226
+ return PositionHandlerEnum_1.PositionHandlerEnum.NOT_TRACKING;
227
+ return PositionHandlerEnum_1.PositionHandlerEnum.NOT_TRACKING;
228
+ };
229
+ /**
230
+ * Returns estimate of point on shape, where the trip should be with appropriate delay
231
+ *
232
+ * @param {IShapeAnchorPoint[]} tripShapePoints - Precalculated trip shape equidistant points with scheduled times
233
+ * @param {Feature<Point, ICurrentPositionProperties>} currentPosition - Current position of trip
234
+ * @param {IPositionsContext | null} context - Context state, holds information about previous positions
235
+ * @param {number} startDayTimestamp - Unix timestamp of midnight before trip starts
236
+ * @returns {IPositionToUpdate} - Position object to update
237
+ */
238
+ PositionsManager.getEstimatedPoint = (tripGtfsData, currentPosition, context, startDayTimestamp, gtfsRouteType) => __awaiter(void 0, void 0, void 0, function* () {
239
+ var _b, _c, _d, _e, _f, _g;
240
+ // init radius around GPS position ( 200 meters radius, 16 points polygon aka circle)
241
+ const radius = 0.2;
242
+ //Initial value
243
+ let estimatedPoint = Object.assign({ id: currentPosition.properties.id, state_position: const_1.StatePositionEnum.OFF_TRACK, state_process: const_1.StateProcessEnum.PROCESSED, tcp_event: currentPosition.properties.tcp_event, valid_to: ValidToCalculator_1.default.getDefaultValidToAttribute(currentPosition.properties.origin_timestamp) }, (context &&
244
+ ((_b = context.lastPositionTracking) === null || _b === void 0 ? void 0 : _b.properties.last_stop_sequence) && {
245
+ shape_dist_traveled: (_c = context.lastPositionTracking) === null || _c === void 0 ? void 0 : _c.properties.shape_dist_traveled,
246
+ last_stop_arrival_time: (_d = context.lastPositionTracking) === null || _d === void 0 ? void 0 : _d.properties.last_stop_arrival_time,
247
+ last_stop_departure_time: (_e = context.lastPositionTracking) === null || _e === void 0 ? void 0 : _e.properties.last_stop_departure_time,
248
+ last_stop_sequence: (_f = context.lastPositionTracking) === null || _f === void 0 ? void 0 : _f.properties.last_stop_sequence,
249
+ last_stop_id: (_g = context.lastPositionTracking) === null || _g === void 0 ? void 0 : _g.properties.last_stop_id,
250
+ }));
251
+ // returns array of segments (row of points) of shape anchor points around gps
252
+ const ptsInRadius = yield PositionCalculator_1.default.getShapePointsAroundPosition(tripGtfsData.shapes_anchor_points, currentPosition, radius, tripGtfsData.trip_id);
253
+ if (ptsInRadius.length < 1) {
254
+ return estimatedPoint;
255
+ }
256
+ // picks only closest point for each segment
257
+ const closestPts = yield PositionCalculator_1.default.getClosestPoints(ptsInRadius, currentPosition);
258
+ if (closestPts.length < 1) {
259
+ return estimatedPoint;
260
+ }
261
+ // DECIDE WHICH POINT IS PROBABLY RIGHT
262
+ return _a.getClosestPoint(currentPosition, context, startDayTimestamp, closestPts, tripGtfsData, gtfsRouteType);
263
+ });
264
+ /**
265
+ * Picks only one closest point for multiple possible points based on delay of last position and stop times
266
+ *
267
+ * @param {Feature<Point, ICurrentPositionProperties>} currentPosition - Feature Point of current position
268
+ * @param {IPositionsContext | null} context - Context state, holds information about previous positions
269
+ * @param {number} startDayTimestamp - Unix timestamp of start of the day
270
+ * @param {IShapeAnchorPoint[]} closestPts - All closest points of possible segments
271
+ * @param {IComputationTrip} tripGtfsData - GTFS data and all set of known positions
272
+ * @returns {IPositionToUpdate} - Result point as position to update in DB
273
+ */
274
+ PositionsManager.getClosestPoint = (currentPosition, context, startDayTimestamp, closestPts, tripGtfsData, gtfsRouteType) => __awaiter(void 0, void 0, void 0, function* () {
275
+ // want to find minimum difference of our prediction, where the bus should be
276
+ let minTimeRealDiff = Infinity;
277
+ const tripShapePoints = tripGtfsData.shapes_anchor_points;
278
+ const tripStopTimes = tripGtfsData.stop_times;
279
+ const lastTripShapePoint = tripShapePoints[tripShapePoints.length - 1];
280
+ const closestPtsIterator = (i, prevTimeDelay, estimatedPoint, cb) => {
281
+ // end of iteration
282
+ if (closestPts.length === i) {
283
+ return cb(estimatedPoint);
284
+ }
285
+ let thisClosestPoint = closestPts[i];
286
+ const timeScheduledTimestamp = _a.getLocalTimeToUnix(startDayTimestamp,
287
+ // take stop arrival time if is point at stop
288
+ thisClosestPoint.this_stop_sequence
289
+ ? tripStopTimes[thisClosestPoint.this_stop_sequence - 1].arrival_time_seconds
290
+ : thisClosestPoint.time_scheduled_seconds);
291
+ let timeDelay = moment_1.default
292
+ .utc(currentPosition.properties.origin_timestamp)
293
+ .diff(timeScheduledTimestamp, "seconds");
294
+ // time where the bus should on this point
295
+ const timeProposed = thisClosestPoint.time_scheduled_seconds + prevTimeDelay;
296
+ // difference
297
+ const timeRealDiff = thisClosestPoint.time_scheduled_seconds + timeDelay - timeProposed;
298
+ // we look for the best fitting point
299
+ if (Math.abs(timeRealDiff) < Math.abs(minTimeRealDiff)) {
300
+ const isBusOrTram = gtfsRouteType === models_1.GTFSRouteTypeEnum.BUS || gtfsRouteType === models_1.GTFSRouteTypeEnum.TRAM;
301
+ minTimeRealDiff = timeRealDiff;
302
+ // push trip into nearest at_stop shape anchor point if trip "P" event (tram) / "V" event (bus)
303
+ if (isBusOrTram &&
304
+ currentPosition.properties.tcp_event === const_1.TCPEventEnum.ARRIVAL_ANNOUNCED &&
305
+ thisClosestPoint.this_stop_sequence === null) {
306
+ let movingShapePointIndex = thisClosestPoint.index;
307
+ while (thisClosestPoint.this_stop_sequence === null && movingShapePointIndex < lastTripShapePoint.index) {
308
+ movingShapePointIndex++;
309
+ thisClosestPoint = tripShapePoints[movingShapePointIndex];
310
+ }
311
+ }
312
+ let statePosition = thisClosestPoint.this_stop_sequence ? const_1.StatePositionEnum.AT_STOP : const_1.StatePositionEnum.ON_TRACK;
313
+ // test if TCP trip with DEPARTURED event should not bet at stop (not applied for last stop)
314
+ if (currentPosition.properties.tcp_event === const_1.TCPEventEnum.DEPARTURED &&
315
+ thisClosestPoint.this_stop_sequence !== lastTripShapePoint.this_stop_sequence) {
316
+ statePosition = const_1.StatePositionEnum.ON_TRACK;
317
+ }
318
+ // interpret the position state on the "V" event for trams and buses as "after track"
319
+ if (isBusOrTram && currentPosition.properties.tcp_event === const_1.TCPEventEnum.V) {
320
+ statePosition = const_1.StatePositionEnum.AFTER_TRACK;
321
+ thisClosestPoint = lastTripShapePoint;
322
+ timeDelay = null;
323
+ }
324
+ // lets correct delay if it is at stop
325
+ if (thisClosestPoint.this_stop_sequence && timeDelay) {
326
+ timeDelay = _a.getCorrectedTimeDelay(timeDelay, context, currentPosition, thisClosestPoint, {
327
+ departureTime: tripStopTimes[thisClosestPoint.this_stop_sequence - 1].departure_time_seconds,
328
+ arrivalTime: tripStopTimes[thisClosestPoint.this_stop_sequence - 1].arrival_time_seconds,
329
+ });
330
+ }
331
+ // save it for result
332
+ estimatedPoint = {
333
+ id: currentPosition.properties.id,
334
+ bearing: thisClosestPoint.bearing,
335
+ shape_dist_traveled: Math.round(thisClosestPoint.shape_dist_traveled * 1000) / 1000,
336
+ next_stop_id: tripStopTimes[thisClosestPoint.next_stop_sequence - 1].stop_id,
337
+ last_stop_id: tripStopTimes[thisClosestPoint.last_stop_sequence - 1].stop_id,
338
+ next_stop_name: tripStopTimes[thisClosestPoint.next_stop_sequence - 1].stop.stop_name,
339
+ last_stop_name: tripStopTimes[thisClosestPoint.last_stop_sequence - 1].stop.stop_name,
340
+ next_stop_sequence: thisClosestPoint.next_stop_sequence,
341
+ last_stop_sequence: thisClosestPoint.last_stop_sequence,
342
+ next_stop_arrival_time: _a.getLocalTimeToUnix(startDayTimestamp, tripStopTimes[thisClosestPoint.next_stop_sequence - 1].arrival_time_seconds),
343
+ last_stop_arrival_time: _a.getLocalTimeToUnix(startDayTimestamp, tripStopTimes[thisClosestPoint.last_stop_sequence - 1].arrival_time_seconds),
344
+ next_stop_departure_time: _a.getLocalTimeToUnix(startDayTimestamp, tripStopTimes[thisClosestPoint.next_stop_sequence - 1].departure_time_seconds),
345
+ last_stop_departure_time: _a.getLocalTimeToUnix(startDayTimestamp, tripStopTimes[thisClosestPoint.last_stop_sequence - 1].departure_time_seconds),
346
+ delay: timeDelay,
347
+ this_stop_id: (statePosition === const_1.StatePositionEnum.AT_STOP &&
348
+ thisClosestPoint.this_stop_sequence &&
349
+ tripStopTimes[thisClosestPoint.this_stop_sequence - 1].stop_id) ||
350
+ undefined,
351
+ this_stop_name: (statePosition === const_1.StatePositionEnum.AT_STOP &&
352
+ thisClosestPoint.this_stop_sequence &&
353
+ tripStopTimes[thisClosestPoint.this_stop_sequence - 1].stop.stop_name) ||
354
+ undefined,
355
+ this_stop_sequence: (statePosition === const_1.StatePositionEnum.AT_STOP && thisClosestPoint.this_stop_sequence) || undefined,
356
+ last_stop_headsign: tripStopTimes[thisClosestPoint.last_stop_sequence - 1].stop_headsign || undefined,
357
+ state_position: statePosition,
358
+ state_process: const_1.StateProcessEnum.PROCESSED,
359
+ valid_to: ValidToCalculator_1.default.getDefaultValidToAttribute(currentPosition.properties.origin_timestamp),
360
+ };
361
+ }
362
+ // next step
363
+ closestPtsIterator(i + 1, prevTimeDelay, estimatedPoint, cb);
364
+ };
365
+ return new Promise((resolve) => {
366
+ var _b, _c;
367
+ closestPtsIterator(0, (_c = (_b = context === null || context === void 0 ? void 0 : context.lastPositionTracking) === null || _b === void 0 ? void 0 : _b.properties.delay) !== null && _c !== void 0 ? _c : 0, null, (estimatedPoint) => {
368
+ resolve(estimatedPoint);
369
+ });
370
+ });
371
+ });
372
+ /**
373
+ * Returns unix in miliseconds for stop time
374
+ * + given by start of day when trip starts
375
+ * + and GTFS HH:mm:ss format of stop time in seconds
376
+ *
377
+ * @param {number} startDayTimestamp - Unix timestamp of local time midnight before trip starts
378
+ * @param {number} timeSeconds - Number of seconds given by HH:mm:ss format of GTFS stop time
379
+ * @returns {number} - Returns unix milisecods
380
+ */
381
+ PositionsManager.getLocalTimeToUnix = (startDayTimestamp, timeSeconds) => {
382
+ return (0, moment_1.default)(startDayTimestamp)
383
+ .tz("Europe/Prague")
384
+ .startOf("day")
385
+ .hours(Math.floor(timeSeconds / 3600))
386
+ .minutes(Math.floor((timeSeconds % 3600) / 60))
387
+ .seconds(timeSeconds % 60)
388
+ .valueOf();
389
+ };
390
+ /**
391
+ * Corrects time delay at stop with dwelling time
392
+ *
393
+ * @param {number} timeDelay - Initial computed delay in seconds, can be negative for trip ahead
394
+ * @param {IPositionsContext | null} context - Context state, holds information about previous positions
395
+ * @param {Feature<Point, ICurrentPositionProperties>} currentPosition - Feature Point of current position
396
+ * @param {IShapeAnchorPoint} thisClosestPoint - Closest point of shape anchors
397
+ * @param { departureTime: number; arrivalTime: number } stopTimes - departure and arrival stop times in seconds
398
+ * @returns {number} - Result delay in seconds, can be negative for trip ahead
399
+ */
400
+ PositionsManager.getCorrectedTimeDelay = (timeDelay, context, currentPosition, thisClosestPoint, stopTimes) => {
401
+ // compute dwell time in stop, most common is zero
402
+ const stopDwellTimeSeconds = stopTimes.departureTime - stopTimes.arrivalTime;
403
+ // if dwell time is sheduled as zero, return initial computed delay
404
+ if (stopDwellTimeSeconds <= 0) {
405
+ return timeDelay;
406
+ }
407
+ // if last position was not in this same stop or there is no last position at all
408
+ if (!context || context.atStopStreak.stop_sequence !== thisClosestPoint.this_stop_sequence) {
409
+ // timeDelay >= 0 trip is DELAYED
410
+ // we presume it will lower delay by shortening its scheduled dwell time,
411
+ // cant go under zero of course, trip should not go ahead
412
+ // else trip is AHeAD
413
+ // left computed delay as it was
414
+ return timeDelay >= 0 ? Math.max(timeDelay - stopDwellTimeSeconds, 0) : timeDelay;
415
+ }
416
+ // we presume that first position at same stop is real arrival time
417
+ if (context.atStopStreak.firstPositionDelay >= 0) {
418
+ // trip was DELAYED before
419
+ // we presume it will lower delay by shortening its scheduled dwell time,
420
+ // cant go under zero of course, trip should not go ahead
421
+ return Math.max(timeDelay - stopDwellTimeSeconds, 0);
422
+ }
423
+ // trip was AHEAD before
424
+ // real dwell time so far
425
+ const realDwellTimeSeconds = Math.round((currentPosition.properties.origin_timestamp - context.atStopStreak.firstPositionTimestamp) / 1000);
426
+ // if real dwell is longer than scheduled, then add to negative delay time
427
+ return context.atStopStreak.firstPositionDelay + Math.max(realDwellTimeSeconds - stopDwellTimeSeconds, 0);
428
+ };
429
+ /**
430
+ * Compute UTC timestamp of start of day when trip starts
431
+ *
432
+ * @param {number} startTimestamp - Unix timestamp of start of the trip
433
+ * @param {number} firstStopTimeScheduledSeconds - Number of seconds from midnight of first stop departure
434
+ * @returns {number} - Returns unix timestamp in milliseconds.
435
+ */
436
+ PositionsManager.getStartDayTimestamp = (startTimestamp, firstStopTimeScheduledSeconds) => {
437
+ let startDayTimestamp = moment_1.default.utc(startTimestamp).tz("Europe/Prague").startOf("day");
438
+ const stopTimeDayOverflow = Math.floor(firstStopTimeScheduledSeconds / (60 * 60 * 24));
439
+ // if trip has 24+ stop times set real startDay to yesterday
440
+ if (stopTimeDayOverflow > 0) {
441
+ startDayTimestamp.subtract(1, "day");
442
+ }
443
+ return startDayTimestamp.valueOf();
444
+ };
445
+ //# sourceMappingURL=PositionsManager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PositionsManager.js","sourceRoot":"","sources":["../../../../src/integration-engine/vehicle-positions/helpers/PositionsManager.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@golemio/pid",
3
- "version": "2.2.11-dev.613632989",
3
+ "version": "2.2.11-dev.613720384",
4
4
  "description": "Golemio PID Module",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",