@golemio/pid 2.2.11-dev.622550755 → 2.2.11-dev.623520164
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/dist/integration-engine/vehicle-positions/helpers/GtfsTripManager.js +36 -32
- package/dist/integration-engine/vehicle-positions/helpers/GtfsTripManager.js.map +1 -1
- package/dist/integration-engine/vehicle-positions/transformations/VehiclePositionsRunsTransformation.d.ts +1 -1
- package/dist/integration-engine/vehicle-positions/transformations/VehiclePositionsRunsTransformation.js +1 -1
- package/dist/integration-engine/vehicle-positions/transformations/VehiclePositionsRunsTransformation.js.map +1 -1
- package/package.json +1 -1
|
@@ -25,22 +25,31 @@ class GTFSTripManager {
|
|
|
25
25
|
generateDelayMsg(actualStopTimestampScheduled, schedule, input) {
|
|
26
26
|
return __awaiter(this, void 0, void 0, function* () {
|
|
27
27
|
const asts = (0, moment_timezone_1.default)(+actualStopTimestampScheduled);
|
|
28
|
-
// current gtfs trip for run
|
|
29
|
-
const gtfsCurrentTrips = schedule.filter((el, i) => {
|
|
30
|
-
return asts.isBetween((0, moment_timezone_1.default)(el.start_timestamp), (0, moment_timezone_1.default)(el.end_timestamp), "second", "[]");
|
|
31
|
-
});
|
|
32
28
|
let delayMsg = {
|
|
33
29
|
updatedTrips: [],
|
|
34
30
|
positions: [],
|
|
35
31
|
schedule: schedule,
|
|
36
32
|
};
|
|
37
|
-
|
|
38
|
-
|
|
33
|
+
// current gtfs trip for run
|
|
34
|
+
let currentTrip = undefined;
|
|
35
|
+
for (const tripCache of schedule) {
|
|
36
|
+
const startTimestamp = new Date(tripCache.start_timestamp);
|
|
37
|
+
const endTimestamp = new Date(tripCache.end_timestamp);
|
|
38
|
+
if (!asts.isBetween(startTimestamp, endTimestamp, "second", "[]")) {
|
|
39
|
+
continue;
|
|
40
|
+
}
|
|
41
|
+
if (!currentTrip || +startTimestamp > +new Date(currentTrip.start_timestamp)) {
|
|
42
|
+
currentTrip = tripCache;
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
if (currentTrip && currentTrip.trip_id) {
|
|
46
|
+
delayMsg = yield this.generateDelayMsgFromCurrentTrip(delayMsg, currentTrip, asts, input);
|
|
47
|
+
}
|
|
48
|
+
else {
|
|
49
|
+
integration_engine_1.log.warn(`updateRunsGTFSTripId: could not find current gtfsTrip for run: ${JSON.stringify(input)}`);
|
|
39
50
|
}
|
|
40
|
-
const currentTripIds = gtfsCurrentTrips.map((trip) => trip === null || trip === void 0 ? void 0 : trip.trip_id);
|
|
41
51
|
// last/next gtfs trip for run
|
|
42
|
-
|
|
43
|
-
return delayMsg;
|
|
52
|
+
return this.updateLastTripsAndPositions(schedule, asts, currentTrip === null || currentTrip === void 0 ? void 0 : currentTrip.trip_id, input, delayMsg);
|
|
44
53
|
});
|
|
45
54
|
}
|
|
46
55
|
generateDelayMsgFromCurrentTrip(delayMsg, gtfsCurrentTrip, asts, input) {
|
|
@@ -48,34 +57,29 @@ class GTFSTripManager {
|
|
|
48
57
|
const msgTimestamp = input.run_message.msg_timestamp;
|
|
49
58
|
const event = input.run_message.events;
|
|
50
59
|
const isCurrentTripTracking = this.isCurrentTripTracking(gtfsCurrentTrip, event, asts, msgTimestamp);
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
delayMsg.positions.push(position);
|
|
56
|
-
}
|
|
57
|
-
else {
|
|
58
|
-
integration_engine_1.log.warn(`updateRunsGTFSTripId: could not find current gtfsTrip for run: ${JSON.stringify(input)}`);
|
|
59
|
-
}
|
|
60
|
+
const { trip, position } = yield this.updateTrip(input, gtfsCurrentTrip, isCurrentTripTracking);
|
|
61
|
+
delayMsg.updatedTrips.push(trip);
|
|
62
|
+
if (this.testMode)
|
|
63
|
+
delayMsg.positions.push(position);
|
|
60
64
|
return delayMsg;
|
|
61
65
|
});
|
|
62
66
|
}
|
|
63
67
|
isCurrentTripTracking(gtfsCurrentTrip, event, asts, msgTimestamp) {
|
|
64
68
|
var _a;
|
|
65
|
-
return (
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
69
|
+
return (
|
|
70
|
+
// tram is always on track while pushes messages only on stops
|
|
71
|
+
(_a = (gtfsCurrentTrip.route_type === models_1.GTFSRouteTypeEnum.TRAM ||
|
|
72
|
+
// when bus announces DEPARTURE TCP event, it means that trip is on track
|
|
73
|
+
(gtfsCurrentTrip.route_type === models_1.GTFSRouteTypeEnum.BUS && event === const_1.TCPEventEnum.DEPARTURED) ||
|
|
74
|
+
// when trip has set first stop time, and message timestamp is after scheduled start, set as tracking
|
|
75
|
+
(asts.isSame((0, moment_timezone_1.default)(gtfsCurrentTrip.start_timestamp)) &&
|
|
76
|
+
(0, moment_timezone_1.default)(msgTimestamp).isSameOrAfter((0, moment_timezone_1.default)(gtfsCurrentTrip.start_timestamp))) ||
|
|
77
|
+
// of course when trip announcing some next stop time in schedule, then set as tracking
|
|
78
|
+
asts.isAfter((0, moment_timezone_1.default)(gtfsCurrentTrip.start_timestamp)))) !== null && _a !== void 0 ? _a : false);
|
|
75
79
|
}
|
|
76
|
-
updateLastTripsAndPositions(schedule, asts,
|
|
80
|
+
updateLastTripsAndPositions(schedule, asts, currentTripId, input, delayMsg) {
|
|
77
81
|
return __awaiter(this, void 0, void 0, function* () {
|
|
78
|
-
const gtfsLastNextTrips = this.getLastNextTrips(schedule, asts,
|
|
82
|
+
const gtfsLastNextTrips = this.getLastNextTrips(schedule, asts, currentTripId);
|
|
79
83
|
for (const gtfsTrip of gtfsLastNextTrips) {
|
|
80
84
|
const { trip, position } = yield this.updateTrip(input, gtfsTrip, false);
|
|
81
85
|
delayMsg.updatedTrips.push(trip);
|
|
@@ -85,11 +89,11 @@ class GTFSTripManager {
|
|
|
85
89
|
return delayMsg;
|
|
86
90
|
});
|
|
87
91
|
}
|
|
88
|
-
getLastNextTrips(schedule, asts,
|
|
92
|
+
getLastNextTrips(schedule, asts, currentTripId) {
|
|
89
93
|
return schedule.filter((el) => {
|
|
90
94
|
return (((asts.clone().subtract(15, "minutes") <= (0, moment_timezone_1.default)(el.end_timestamp) && (0, moment_timezone_1.default)(el.end_timestamp) <= asts) ||
|
|
91
95
|
(asts <= (0, moment_timezone_1.default)(el.start_timestamp) && (0, moment_timezone_1.default)(el.start_timestamp) <= asts.clone().add(60, "minutes"))) &&
|
|
92
|
-
|
|
96
|
+
el.trip_id !== currentTripId);
|
|
93
97
|
});
|
|
94
98
|
}
|
|
95
99
|
updateTrip(input, gtfsTrip, isTripTracking) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GtfsTripManager.js","sourceRoot":"","sources":["../../../../src/integration-engine/vehicle-positions/helpers/GtfsTripManager.ts"],"names":[],"mappings":";;;;;;;;;;;;;;AAAA,8EAA4D;AAC5D,gGAA+D;AAC/D,0CAAyC;AACzC,sCAMmB;AASnB,MAAqB,eAAe;IAKhC,YACI,cAA8C,EAC9C,UAAsC,EACtC,WAAoB,KAAK;QAEzB,IAAI,CAAC,cAAc,GAAG,cAAc,CAAC;QACrC,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;IAC7B,CAAC;IAEY,gBAAgB,CACzB,4BAAoC,EACpC,QAA6B,EAC7B,KAAiC;;YAEjC,MAAM,IAAI,GAAG,IAAA,yBAAM,EAAC,CAAC,4BAA4B,CAAC,CAAC;YACnD,
|
|
1
|
+
{"version":3,"file":"GtfsTripManager.js","sourceRoot":"","sources":["../../../../src/integration-engine/vehicle-positions/helpers/GtfsTripManager.ts"],"names":[],"mappings":";;;;;;;;;;;;;;AAAA,8EAA4D;AAC5D,gGAA+D;AAC/D,0CAAyC;AACzC,sCAMmB;AASnB,MAAqB,eAAe;IAKhC,YACI,cAA8C,EAC9C,UAAsC,EACtC,WAAoB,KAAK;QAEzB,IAAI,CAAC,cAAc,GAAG,cAAc,CAAC;QACrC,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;IAC7B,CAAC;IAEY,gBAAgB,CACzB,4BAAoC,EACpC,QAA6B,EAC7B,KAAiC;;YAEjC,MAAM,IAAI,GAAG,IAAA,yBAAM,EAAC,CAAC,4BAA4B,CAAC,CAAC;YACnD,IAAI,QAAQ,GAAkB;gBAC1B,YAAY,EAAE,EAAE;gBAChB,SAAS,EAAE,EAAE;gBACb,QAAQ,EAAE,QAAQ;aACrB,CAAC;YAEF,4BAA4B;YAC5B,IAAI,WAAW,GAAkC,SAAS,CAAC;YAC3D,KAAK,MAAM,SAAS,IAAI,QAAQ,EAAE;gBAC9B,MAAM,cAAc,GAAG,IAAI,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC,CAAC;gBAC3D,MAAM,YAAY,GAAG,IAAI,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC;gBAEvD,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,cAAc,EAAE,YAAY,EAAE,QAAQ,EAAE,IAAI,CAAC,EAAE;oBAC/D,SAAS;iBACZ;gBAED,IAAI,CAAC,WAAW,IAAI,CAAC,cAAc,GAAG,CAAC,IAAI,IAAI,CAAC,WAAW,CAAC,eAAe,CAAC,EAAE;oBAC1E,WAAW,GAAG,SAAS,CAAC;iBAC3B;aACJ;YAED,IAAI,WAAW,IAAI,WAAW,CAAC,OAAO,EAAE;gBACpC,QAAQ,GAAG,MAAM,IAAI,CAAC,+BAA+B,CAAC,QAAQ,EAAE,WAAW,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;aAC7F;iBAAM;gBACH,wBAAG,CAAC,IAAI,CAAC,kEAAkE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;aACvG;YAED,8BAA8B;YAC9B,OAAO,IAAI,CAAC,2BAA2B,CAAC,QAAQ,EAAE,IAAI,EAAE,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC;QACnG,CAAC;KAAA;IAEa,+BAA+B,CACzC,QAAuB,EACvB,eAAkC,EAClC,IAAmB,EACnB,KAAiC;;YAEjC,MAAM,YAAY,GAAG,KAAK,CAAC,WAAW,CAAC,aAAa,CAAC;YACrD,MAAM,KAAK,GAAG,KAAK,CAAC,WAAW,CAAC,MAAM,CAAC;YACvC,MAAM,qBAAqB,GAAG,IAAI,CAAC,qBAAqB,CAAC,eAAe,EAAE,KAAK,EAAE,IAAI,EAAE,YAAY,CAAC,CAAC;YACrG,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,eAAe,EAAE,qBAAqB,CAAC,CAAC;YAEhG,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACjC,IAAI,IAAI,CAAC,QAAQ;gBAAE,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YAErD,OAAO,QAAQ,CAAC;QACpB,CAAC;KAAA;IAEO,qBAAqB,CACzB,eAAkC,EAClC,KAAmB,EACnB,IAAmB,EACnB,YAAoB;;QAEpB,OAAO;QACH,8DAA8D;QAC9D,MAAA,CAAC,eAAe,CAAC,UAAU,KAAK,0BAAiB,CAAC,IAAI;YAClD,yEAAyE;YACzE,CAAC,eAAe,CAAC,UAAU,KAAK,0BAAiB,CAAC,GAAG,IAAI,KAAK,KAAK,oBAAY,CAAC,UAAU,CAAC;YAC3F,qGAAqG;YACrG,CAAC,IAAI,CAAC,MAAM,CAAC,IAAA,yBAAM,EAAC,eAAe,CAAC,eAAe,CAAC,CAAC;gBACjD,IAAA,yBAAM,EAAC,YAAY,CAAC,CAAC,aAAa,CAAC,IAAA,yBAAM,EAAC,eAAe,CAAC,eAAe,CAAC,CAAC,CAAC;YAChF,uFAAuF;YACvF,IAAI,CAAC,OAAO,CAAC,IAAA,yBAAM,EAAC,eAAe,CAAC,eAAe,CAAC,CAAC,CAAC,mCAC1D,KAAK,CACR,CAAC;IACN,CAAC;IAEa,2BAA2B,CACrC,QAA6B,EAC7B,IAAmB,EACnB,aAAiC,EACjC,KAAiC,EACjC,QAAuB;;YAEvB,MAAM,iBAAiB,GAAG,IAAI,CAAC,gBAAgB,CAAC,QAAQ,EAAE,IAAI,EAAE,aAAa,CAAC,CAAC;YAE/E,KAAK,MAAM,QAAQ,IAAI,iBAAiB,EAAE;gBACtC,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC;gBAEzE,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBACjC,IAAI,IAAI,CAAC,QAAQ;oBAAE,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;aACxD;YAED,OAAO,QAAQ,CAAC;QACpB,CAAC;KAAA;IAEO,gBAAgB,CAAC,QAA6B,EAAE,IAAmB,EAAE,aAAiC;QAC1G,OAAO,QAAQ,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE;YAC1B,OAAO,CACH,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,QAAQ,CAAC,EAAE,EAAE,SAAS,CAAC,IAAI,IAAA,yBAAM,EAAC,EAAE,CAAC,aAAa,CAAC,IAAI,IAAA,yBAAM,EAAC,EAAE,CAAC,aAAa,CAAC,IAAI,IAAI,CAAC;gBACnG,CAAC,IAAI,IAAI,IAAA,yBAAM,EAAC,EAAE,CAAC,eAAe,CAAC,IAAI,IAAA,yBAAM,EAAC,EAAE,CAAC,eAAe,CAAC,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,SAAS,CAAC,CAAC,CAAC;gBAC1G,EAAE,CAAC,OAAO,KAAK,aAAa,CAC/B,CAAC;QACN,CAAC,CAAC,CAAC;IACP,CAAC;IAEa,UAAU,CAAC,KAAiC,EAAE,QAA2B,EAAE,cAAuB;;YAC5G,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;YAClE,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,iBAAiB,CAAC,KAAK,EAAE,QAAQ,EAAE,cAAc,CAAC,CAAC;YAE9F,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;QAC9B,CAAC;KAAA;CACJ;AA5HD,kCA4HC"}
|
|
@@ -45,7 +45,7 @@ class VehiclePositionsRunsTransformation extends transformations_1.BaseTransform
|
|
|
45
45
|
const attributes = element.data.$;
|
|
46
46
|
const [route_id, run_number] = attributes.turnus.split("/");
|
|
47
47
|
const uniqueKey = `${route_id}` + `_${run_number}` + `_${attributes.evc}` + `_${element.timestamp}`;
|
|
48
|
-
if (attributes.takt === "" || attributes.tjr === "" || attributes.tm === "")
|
|
48
|
+
if (attributes.takt === "" || !attributes.tjr || attributes.tjr === "" || attributes.tm === "")
|
|
49
49
|
return Promise.reject();
|
|
50
50
|
// for TCP buses in this day is hot fix to lower TJR attribute by 1 hour
|
|
51
51
|
// due to time offset shift (CET to CEST)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"VehiclePositionsRunsTransformation.js","sourceRoot":"","sources":["../../../../src/integration-engine/vehicle-positions/transformations/VehiclePositionsRunsTransformation.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,gGAA+D;AAC/D,2FAA4G;AAC5G,qFAA0D;AAC1D,2EAAoE;AAEpE,yEAAsE;AA4DtE,MAAa,kCAAmC,SAAQ,oCAAkB;IAGtE;QACI,KAAK,EAAE,CAAC;QAIZ;;WAEG;QACI,cAAS,GAAG,CAAO,EACtB,IAAI,EACJ,SAAS,GAIZ,EAAyC,EAAE;YACxC,MAAM,GAAG,GAAG,IAAA,yBAAM,EAAC,SAAS,CAAC,CAAC,EAAE,CAAC,eAAe,CAAC,CAAC,MAAM,EAAE,CAAC;YAC3D,MAAM,GAAG,GAAiC,EAAE,CAAC;YAE7C,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;gBACtB,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC;aACjB;YACD,KAAK,MAAM,OAAO,IAAI,IAAI,EAAE;gBACxB,IAAI;oBACA,MAAM,kBAAkB,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,SAAS,EAAE,GAAG,EAAE,CAAC,CAAC;oBAC1F,GAAG,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;iBAChC;gBAAC,OAAO,GAAG,EAAE;oBACV,aAAG,CAAC,IAAI,CAAC,wEAAwE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;iBAC/G;aACJ;YACD,OAAO,GAAG,CAAC;QACf,CAAC,CAAA,CAAC;QAEQ,qBAAgB,GAAG,CAAO,OAAoC,EAAuC,EAAE;YAC7G,MAAM,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;YAElC,MAAM,CAAC,QAAQ,EAAE,UAAU,CAAC,GAAG,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YAE5D,MAAM,SAAS,GAAG,GAAG,QAAQ,EAAE,GAAG,IAAI,UAAU,EAAE,GAAG,IAAI,UAAU,CAAC,GAAG,EAAE,GAAG,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;YAEpG,IAAI,UAAU,CAAC,IAAI,KAAK,EAAE,IAAI,UAAU,CAAC,GAAG,KAAK,EAAE,IAAI,UAAU,CAAC,EAAE,KAAK,EAAE;gBAAE,OAAO,OAAO,CAAC,MAAM,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"VehiclePositionsRunsTransformation.js","sourceRoot":"","sources":["../../../../src/integration-engine/vehicle-positions/transformations/VehiclePositionsRunsTransformation.ts"],"names":[],"mappings":"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"}
|