@golemio/pid 2.3.7-dev.741548504 → 2.3.7-dev.744468082
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/ropid-gtfs/RopidGTFSScheduledTripsModel.js +62 -43
- package/dist/integration-engine/ropid-gtfs/RopidGTFSScheduledTripsModel.js.map +1 -1
- package/dist/integration-engine/vehicle-positions/helpers/gtfs-trip-run/AbstractGTFSTripRunManager.d.ts +2 -0
- package/dist/integration-engine/vehicle-positions/helpers/gtfs-trip-run/AbstractGTFSTripRunManager.js +12 -5
- package/dist/integration-engine/vehicle-positions/helpers/gtfs-trip-run/AbstractGTFSTripRunManager.js.map +1 -1
- package/package.json +1 -1
|
@@ -30,49 +30,68 @@ class RopidGTFSScheduledTripsModel extends models_1.PostgresModel {
|
|
|
30
30
|
this.createAndPopulateFromTmp = () => __awaiter(this, void 0, void 0, function* () {
|
|
31
31
|
/* eslint-disable max-len */
|
|
32
32
|
const sql = `
|
|
33
|
-
SELECT
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
33
|
+
SELECT
|
|
34
|
+
t0.origin_route_id,
|
|
35
|
+
t0.trip_id,
|
|
36
|
+
t0.service_id,
|
|
37
|
+
t0.run_number,
|
|
38
|
+
t0.date,
|
|
39
|
+
t0.route_id,
|
|
40
|
+
t0.route_type,
|
|
41
|
+
t0.route_short_name,
|
|
42
|
+
t0.is_regional,
|
|
43
|
+
t0.is_substitute_transport,
|
|
44
|
+
t0.is_night,
|
|
45
|
+
t0.trip_headsign,
|
|
46
|
+
t0.trip_short_name,
|
|
47
|
+
t0.block_id,
|
|
48
|
+
t0.exceptional,
|
|
49
|
+
t0.min_stop_time,
|
|
50
|
+
t0.max_stop_time,
|
|
51
|
+
CASE
|
|
52
|
+
WHEN EXTRACT(HOUR FROM t0.min_stop_time) > 23
|
|
53
|
+
THEN make_timestamptz(
|
|
54
|
+
DATE_PART('year', t0.date + INTERVAL '1 day')::INT,
|
|
55
|
+
DATE_PART('month', t0.date + INTERVAL '1 day')::INT,
|
|
56
|
+
DATE_PART('day', t0.date + INTERVAL '1 day')::INT,
|
|
57
|
+
DATE_PART('hour', t0.min_stop_time)::INT - 24,
|
|
58
|
+
DATE_PART('minute', t0.min_stop_time)::INT,
|
|
59
|
+
DATE_PART('second', t0.min_stop_time),
|
|
60
|
+
'Europe/Prague'
|
|
61
|
+
)
|
|
62
|
+
ELSE make_timestamptz(
|
|
63
|
+
DATE_PART('year', t0.date)::INT,
|
|
64
|
+
DATE_PART('month', t0.date)::INT,
|
|
65
|
+
DATE_PART('day', t0.date)::INT,
|
|
66
|
+
DATE_PART('hour', t0.min_stop_time)::INT,
|
|
67
|
+
DATE_PART('minute', t0.min_stop_time)::INT,
|
|
68
|
+
DATE_PART('second', t0.min_stop_time),
|
|
69
|
+
'Europe/Prague'
|
|
70
|
+
)
|
|
71
|
+
END as start_timestamp,
|
|
72
|
+
CASE
|
|
73
|
+
WHEN EXTRACT(HOUR FROM t0.max_stop_time) > 23
|
|
74
|
+
THEN make_timestamptz(
|
|
75
|
+
DATE_PART('year', t0.date + INTERVAL '1 day')::INT,
|
|
76
|
+
DATE_PART('month', t0.date + INTERVAL '1 day')::INT,
|
|
77
|
+
DATE_PART('day', t0.date + INTERVAL '1 day')::INT,
|
|
78
|
+
DATE_PART('hour', t0.max_stop_time)::INT - 24,
|
|
79
|
+
DATE_PART('minute', t0.max_stop_time)::INT,
|
|
80
|
+
DATE_PART('second', t0.max_stop_time),
|
|
81
|
+
'Europe/Prague'
|
|
82
|
+
)
|
|
83
|
+
ELSE make_timestamptz(
|
|
84
|
+
DATE_PART('year', t0.date)::INT,
|
|
85
|
+
DATE_PART('month', t0.date)::INT,
|
|
86
|
+
DATE_PART('day', t0.date)::INT,
|
|
87
|
+
DATE_PART('hour', t0.max_stop_time)::INT,
|
|
88
|
+
DATE_PART('minute', t0.max_stop_time)::INT,
|
|
89
|
+
DATE_PART('second', t0.max_stop_time),
|
|
90
|
+
'Europe/Prague'
|
|
91
|
+
)
|
|
92
|
+
END as end_timestamp,
|
|
93
|
+
t0.first_stop_id,
|
|
94
|
+
t0.last_stop_id
|
|
76
95
|
FROM (
|
|
77
96
|
SELECT
|
|
78
97
|
t1.route_id AS origin_route_id,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RopidGTFSScheduledTripsModel.js","sourceRoot":"","sources":["../../../src/integration-engine/ropid-gtfs/RopidGTFSScheduledTripsModel.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,mFAAkF;AAElF,2EAAoE;AACpE,yEAAqF;AACrF,oEAA4C;AAC5C,mCAAmF;AAGnF,MAAa,4BAA6B,SAAQ,sBAAa;IAY3D;QACI,KAAK,CACD,sBAAS,CAAC,cAAc,CAAC,IAAI,GAAG,OAAO,EACvC;YACI,yBAAyB,EAAE,sBAAS,CAAC,cAAc,CAAC,yBAAyB;YAC7E,WAAW,EAAE,sBAAS,CAAC,cAAc,CAAC,WAAW;YACjD,QAAQ,EAAE,sBAAS,CAAC,QAAQ;YAC5B,UAAU,EAAE,YAAY;YACxB,kBAAkB,EAAE,CAAC,IAAI,EAAE,YAAY,EAAE,YAAY,CAAC;SACzD,EACD,IAAI,uCAAmB,CAAC,sBAAS,CAAC,cAAc,CAAC,IAAI,GAAG,gBAAgB,EAAE,sBAAS,CAAC,cAAc,CAAC,gBAAgB,CAAC,CACvH,CAAC;QAGC,YAAO,GAAG,CAAC,OAAoB,EAAgC,EAAE;YACpE,OAAO,IAAI,CAAC,cAAc,CAAC,OAAO,iBAAG,GAAG,EAAE,IAAI,IAAK,OAAO,EAAG,CAAC;QAClE,CAAC,CAAC;QAEK,6BAAwB,GAAG,GAAwB,EAAE;YACxD,4BAA4B;YAC5B,MAAM,GAAG,GAAG
|
|
1
|
+
{"version":3,"file":"RopidGTFSScheduledTripsModel.js","sourceRoot":"","sources":["../../../src/integration-engine/ropid-gtfs/RopidGTFSScheduledTripsModel.ts"],"names":[],"mappings":"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"}
|
|
@@ -12,6 +12,7 @@ export declare abstract class AbstractGTFSTripRunManager {
|
|
|
12
12
|
protected readonly runTripsRedisRepository: RunTripsRedisRepository;
|
|
13
13
|
protected readonly testMode: boolean;
|
|
14
14
|
private turnaroundEstimateInSeconds;
|
|
15
|
+
private nodeExtractRegex;
|
|
15
16
|
constructor(positionsRepository: VehiclePositionsPositionsModel, tripsRepository: VehiclePositionsTripsModel, runsRepository: VehiclePositionsRunsModel, runTripsRedisRepository: RunTripsRedisRepository, testMode?: boolean);
|
|
16
17
|
abstract generateDelayMsg(schedule: IGtfsRunTripCache[], input: IVehiclePositionsRunCommon | IMetroRunInputForProcessing): Promise<IDelayMessage>;
|
|
17
18
|
setAndReturnScheduledTrips: (scheduleData: IVehiclePositionsSchedule) => Promise<IGtfsRunTripCache[]>;
|
|
@@ -23,4 +24,5 @@ export declare abstract class AbstractGTFSTripRunManager {
|
|
|
23
24
|
protected getAdjacentTrips(schedule: IGtfsRunTripCache[], timestampScheduled: Moment, currentTripId: string | undefined): IGtfsRunTripCache[];
|
|
24
25
|
private isTripAdjacent;
|
|
25
26
|
private hasFollowupConnection;
|
|
27
|
+
private getNodeId;
|
|
26
28
|
}
|
|
@@ -25,6 +25,7 @@ class AbstractGTFSTripRunManager {
|
|
|
25
25
|
this.runsRepository = runsRepository;
|
|
26
26
|
this.runTripsRedisRepository = runTripsRedisRepository;
|
|
27
27
|
this.testMode = testMode;
|
|
28
|
+
this.nodeExtractRegex = /^U(?<nodeId>\d+)Z?\d*P?$/; // extracts 321 from stopId U321Z6P
|
|
28
29
|
this.setAndReturnScheduledTrips = (scheduleData) => __awaiter(this, void 0, void 0, function* () {
|
|
29
30
|
const { route_id, run_number, msg_last_timestamp } = scheduleData;
|
|
30
31
|
const scheduledTripIds = yield this.runTripsRedisRepository.get(`${route_id}_${run_number}`);
|
|
@@ -38,8 +39,8 @@ class AbstractGTFSTripRunManager {
|
|
|
38
39
|
trip.end_timestamp = DateTimeUtils_1.DateTimeUtils.formatSQLTimestamp(trip.end_timestamp);
|
|
39
40
|
if (index + 1 < scheduledTrips.length) {
|
|
40
41
|
trip.requiredTurnaroundSeconds = this.hasFollowupConnection(trip, scheduledTrips, index)
|
|
41
|
-
?
|
|
42
|
-
:
|
|
42
|
+
? this.turnaroundEstimateInSeconds
|
|
43
|
+
: 0;
|
|
43
44
|
}
|
|
44
45
|
else {
|
|
45
46
|
trip.requiredTurnaroundSeconds = 0;
|
|
@@ -48,6 +49,15 @@ class AbstractGTFSTripRunManager {
|
|
|
48
49
|
yield this.runTripsRedisRepository.set(`${route_id}_${run_number}`, { schedule: scheduledTrips }, undefined, vehicle_positions_1.VehiclePositionsUtils.getNextExpireTimestamp());
|
|
49
50
|
return scheduledTrips;
|
|
50
51
|
});
|
|
52
|
+
this.hasFollowupConnection = (trip, scheduledTrips, index) => {
|
|
53
|
+
const currentTripLastNode = this.getNodeId(trip.last_stop_id);
|
|
54
|
+
const nextTripFirstNode = this.getNodeId(scheduledTrips[index + 1].first_stop_id);
|
|
55
|
+
return currentTripLastNode && currentTripLastNode === nextTripFirstNode;
|
|
56
|
+
};
|
|
57
|
+
this.getNodeId = (stopId) => {
|
|
58
|
+
var _a, _b;
|
|
59
|
+
return (_b = (_a = this.nodeExtractRegex.exec(stopId)) === null || _a === void 0 ? void 0 : _a.groups) === null || _b === void 0 ? void 0 : _b.nodeId;
|
|
60
|
+
};
|
|
51
61
|
this.turnaroundEstimateInSeconds = (_a = config_1.config.vehiclePositions.turnaroundTimeInSeconds) !== null && _a !== void 0 ? _a : 30;
|
|
52
62
|
}
|
|
53
63
|
getCurrentTripForRun(schedule, timestampScheduled) {
|
|
@@ -79,9 +89,6 @@ class AbstractGTFSTripRunManager {
|
|
|
79
89
|
return ((leftBound <= endTimestamp && endTimestamp <= timestampScheduled) ||
|
|
80
90
|
(rightBound >= startTimestamp && startTimestamp >= timestampScheduled));
|
|
81
91
|
}
|
|
82
|
-
hasFollowupConnection(trip, scheduledTrips, index) {
|
|
83
|
-
return trip.last_stop_id === scheduledTrips[index + 1].first_stop_id;
|
|
84
|
-
}
|
|
85
92
|
}
|
|
86
93
|
exports.AbstractGTFSTripRunManager = AbstractGTFSTripRunManager;
|
|
87
94
|
//# sourceMappingURL=AbstractGTFSTripRunManager.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AbstractGTFSTripRunManager.js","sourceRoot":"","sources":["../../../../../src/integration-engine/vehicle-positions/helpers/gtfs-trip-run/AbstractGTFSTripRunManager.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,6CAAyF;AAUzF,yEAAsE;AACtE,gGAA2E;AAC3E,oDAAiD;AAGjD,MAAsB,0BAA0B;
|
|
1
|
+
{"version":3,"file":"AbstractGTFSTripRunManager.js","sourceRoot":"","sources":["../../../../../src/integration-engine/vehicle-positions/helpers/gtfs-trip-run/AbstractGTFSTripRunManager.ts"],"names":[],"mappings":"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"}
|