@golemio/pid 2.2.2-dev.534300037 → 2.2.2-dev.537222363
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/README.md +4 -1
- package/dist/integration-engine/vehicle-positions/models/VehiclePositionsPositionsModel.js +26 -24
- package/dist/integration-engine/vehicle-positions/models/VehiclePositionsPositionsModel.js.map +1 -1
- package/dist/integration-engine/vehicle-positions/models/VehiclePositionsTripsModel.d.ts +7 -0
- package/dist/integration-engine/vehicle-positions/models/VehiclePositionsTripsModel.js +118 -102
- package/dist/integration-engine/vehicle-positions/models/VehiclePositionsTripsModel.js.map +1 -1
- package/dist/output-gateway/pid/PIDRouter.d.ts +2 -6
- package/dist/output-gateway/pid/PIDRouter.js +10 -79
- package/dist/output-gateway/pid/PIDRouter.js.map +1 -1
- package/dist/output-gateway/pid/helpers/DepartureBoardMapper.d.ts +8 -0
- package/dist/output-gateway/pid/helpers/DepartureBoardMapper.js +82 -0
- package/dist/output-gateway/pid/helpers/DepartureBoardMapper.js.map +1 -0
- package/dist/output-gateway/pid/index.d.ts +1 -1
- package/dist/output-gateway/pid/models/PIDDepartureBoardsModel.d.ts +0 -3
- package/dist/output-gateway/pid/models/PIDDepartureBoardsModel.js +3 -105
- package/dist/output-gateway/pid/models/PIDDepartureBoardsModel.js.map +1 -1
- package/dist/output-gateway/pid/models/helpers/PIDDepartureModel.d.ts +24 -0
- package/dist/output-gateway/pid/models/helpers/PIDDepartureModel.js +114 -0
- package/dist/output-gateway/pid/models/helpers/PIDDepartureModel.js.map +1 -0
- package/dist/output-gateway/pid/models/helpers/interfaces/IPIDDepartureQueryOptions.d.ts +13 -0
- package/dist/output-gateway/pid/models/helpers/interfaces/IPIDDepartureQueryOptions.js +3 -0
- package/dist/output-gateway/pid/models/helpers/interfaces/IPIDDepartureQueryOptions.js.map +1 -0
- package/dist/output-gateway/ropid-gtfs/models/GTFSStopModel.js +6 -4
- package/dist/output-gateway/ropid-gtfs/models/GTFSStopModel.js.map +1 -1
- package/dist/output-gateway/shared/RopidRouterUtils.d.ts +1 -2
- package/dist/output-gateway/shared/RopidRouterUtils.js +2 -2
- package/dist/output-gateway/shared/RopidRouterUtils.js.map +1 -1
- package/dist/output-gateway/vehicle-positions/VehiclePositionsRouter.d.ts +0 -1
- package/dist/output-gateway/vehicle-positions/VehiclePositionsRouter.js +6 -19
- package/dist/output-gateway/vehicle-positions/VehiclePositionsRouter.js.map +1 -1
- package/dist/output-gateway/vehicle-positions/models/VehiclePositionsTripsModel.d.ts +13 -3
- package/dist/output-gateway/vehicle-positions/models/VehiclePositionsTripsModel.js +77 -9
- package/dist/output-gateway/vehicle-positions/models/VehiclePositionsTripsModel.js.map +1 -1
- package/package.json +1 -1
|
@@ -17,19 +17,18 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
17
17
|
};
|
|
18
18
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
19
19
|
exports.pidRouter = exports.PIDRouter = void 0;
|
|
20
|
-
const
|
|
21
|
-
const
|
|
22
|
-
const
|
|
23
|
-
const moment_timezone_1 = __importDefault(require("@golemio/core/dist/shared/moment-timezone"));
|
|
24
|
-
const golemio_errors_1 = require("@golemio/core/dist/shared/golemio-errors");
|
|
20
|
+
const shared_1 = require("../shared");
|
|
21
|
+
const trace_provider_1 = require("@golemio/core/dist/monitoring/opentelemetry/trace-provider");
|
|
22
|
+
const config_1 = require("@golemio/core/dist/output-gateway/config");
|
|
25
23
|
const redis_1 = require("@golemio/core/dist/output-gateway/redis");
|
|
26
24
|
const BaseRouter_1 = require("@golemio/core/dist/output-gateway/routes/BaseRouter");
|
|
27
25
|
const Validation_1 = require("@golemio/core/dist/output-gateway/Validation");
|
|
28
|
-
const
|
|
26
|
+
const express_1 = require("@golemio/core/dist/shared/express");
|
|
27
|
+
const express_validator_1 = require("@golemio/core/dist/shared/express-validator");
|
|
28
|
+
const golemio_errors_1 = require("@golemio/core/dist/shared/golemio-errors");
|
|
29
|
+
const moment_timezone_1 = __importDefault(require("@golemio/core/dist/shared/moment-timezone"));
|
|
30
|
+
const lodash_1 = require("lodash");
|
|
29
31
|
const _1 = require(".");
|
|
30
|
-
const PIDDepartureBoardsModel_1 = require("./models/PIDDepartureBoardsModel");
|
|
31
|
-
const config_1 = require("@golemio/core/dist/output-gateway/config");
|
|
32
|
-
const trace_provider_1 = require("@golemio/core/dist/monitoring/opentelemetry/trace-provider");
|
|
33
32
|
class PIDRouter extends BaseRouter_1.BaseRouter {
|
|
34
33
|
constructor() {
|
|
35
34
|
super();
|
|
@@ -104,7 +103,7 @@ class PIDRouter extends BaseRouter_1.BaseRouter {
|
|
|
104
103
|
res.setHeader("access-control-expose-headers", "date");
|
|
105
104
|
res.status(200).send({
|
|
106
105
|
stops: data.stops,
|
|
107
|
-
departures: data.departures
|
|
106
|
+
departures: data.departures,
|
|
108
107
|
infotexts: data.infotexts,
|
|
109
108
|
});
|
|
110
109
|
}
|
|
@@ -115,74 +114,6 @@ class PIDRouter extends BaseRouter_1.BaseRouter {
|
|
|
115
114
|
span === null || span === void 0 ? void 0 : span.end();
|
|
116
115
|
}
|
|
117
116
|
});
|
|
118
|
-
/**
|
|
119
|
-
* Initiates all routes. Should respond with correct data to a HTTP requests to all routes.
|
|
120
|
-
*/
|
|
121
|
-
this.transformResponseData = (x, preferredTimezone, mode) => {
|
|
122
|
-
var _a;
|
|
123
|
-
let isAtStop = x.is_delay_available ? x.stop_sequence === x["trip.last_position.this_stop_sequence"] : false;
|
|
124
|
-
const arrivalTimestamp = {
|
|
125
|
-
// with added delay
|
|
126
|
-
predicted: shared_1.RopidRouterUtils.formatTimestamp(x.arrival_datetime_real, preferredTimezone),
|
|
127
|
-
// according to trip plan
|
|
128
|
-
scheduled: shared_1.RopidRouterUtils.formatTimestamp(x.arrival_datetime, preferredTimezone),
|
|
129
|
-
};
|
|
130
|
-
const departureTimestamp = {
|
|
131
|
-
// with added delay
|
|
132
|
-
predicted: shared_1.RopidRouterUtils.formatTimestamp(x.departure_datetime_real, preferredTimezone),
|
|
133
|
-
// according to trip plan
|
|
134
|
-
scheduled: shared_1.RopidRouterUtils.formatTimestamp(x.departure_datetime, preferredTimezone),
|
|
135
|
-
};
|
|
136
|
-
// default value
|
|
137
|
-
mode = mode || _1.DepartureMode.DEPARTURES;
|
|
138
|
-
// set null timestamps for first stop of the trip for departures and mixed mode
|
|
139
|
-
if ((mode === _1.DepartureMode.DEPARTURES || mode === _1.DepartureMode.MIXED) && x.stop_sequence === x.min_stop_sequence) {
|
|
140
|
-
arrivalTimestamp.predicted = null;
|
|
141
|
-
arrivalTimestamp.scheduled = null;
|
|
142
|
-
}
|
|
143
|
-
// set null timestamps for last stop of the trip for arrivals and mixed mode
|
|
144
|
-
if ((mode === _1.DepartureMode.ARRIVALS || mode === _1.DepartureMode.MIXED) && x.stop_sequence === x.max_stop_sequence) {
|
|
145
|
-
departureTimestamp.predicted = null;
|
|
146
|
-
departureTimestamp.scheduled = null;
|
|
147
|
-
}
|
|
148
|
-
return {
|
|
149
|
-
arrival_timestamp: arrivalTimestamp,
|
|
150
|
-
delay: {
|
|
151
|
-
is_available: x.is_delay_available,
|
|
152
|
-
minutes: x.delay_minutes,
|
|
153
|
-
seconds: x.delay_seconds, // TBD - now it could be negative!
|
|
154
|
-
},
|
|
155
|
-
departure_timestamp: departureTimestamp,
|
|
156
|
-
last_stop: {
|
|
157
|
-
id: x["trip.last_position.last_stop_id"],
|
|
158
|
-
name: x["trip.last_position.last_stop_name"],
|
|
159
|
-
},
|
|
160
|
-
route: {
|
|
161
|
-
short_name: x.route_short_name,
|
|
162
|
-
type: parseInt(x.route_type, 10),
|
|
163
|
-
is_night: x.is_night === "1",
|
|
164
|
-
is_regional: x.is_regional === "1",
|
|
165
|
-
is_substitute_transport: x.is_substitute_transport === "1",
|
|
166
|
-
},
|
|
167
|
-
stop: {
|
|
168
|
-
id: x.stop_id,
|
|
169
|
-
platform_code: x.platform_code,
|
|
170
|
-
},
|
|
171
|
-
trip: {
|
|
172
|
-
direction: x.direction,
|
|
173
|
-
headsign: (_a = x.stop_headsign) !== null && _a !== void 0 ? _a : x.trip_headsign,
|
|
174
|
-
id: x.trip_id,
|
|
175
|
-
is_at_stop: isAtStop,
|
|
176
|
-
is_canceled: x.is_canceled || false,
|
|
177
|
-
is_wheelchair_accessible: (0, lodash_1.isBoolean)(x.real_wheelchair_accessible)
|
|
178
|
-
? x.real_wheelchair_accessible
|
|
179
|
-
: x.wheelchair_accessible === 1,
|
|
180
|
-
// To be implemented fully after https://gitlab.com/operator-ict/golemio/code/general/-/issues/259
|
|
181
|
-
is_air_conditioned: null,
|
|
182
|
-
short_name: x.trip_short_name || null,
|
|
183
|
-
},
|
|
184
|
-
};
|
|
185
|
-
};
|
|
186
117
|
/**
|
|
187
118
|
* Performs a check if timeFrom query parameter is not too old or too much in future
|
|
188
119
|
* @param routerName name passed to the returned Error object in case of fail
|
|
@@ -234,7 +165,7 @@ class PIDRouter extends BaseRouter_1.BaseRouter {
|
|
|
234
165
|
(0, express_validator_1.query)("total").optional().isInt(),
|
|
235
166
|
], Validation_1.pagination, Validation_1.checkErrors, this.checkTimeFromMiddleware("DepartureBoardsRouter"), (0, Validation_1.paginationLimitMiddleware)("DepartureBoardsRouter"), (0, redis_1.useCacheMiddleware)(expire), this.GetDepartureBoard);
|
|
236
167
|
};
|
|
237
|
-
this.departureBoardsModel = new
|
|
168
|
+
this.departureBoardsModel = new _1.PIDDepartureBoardsModel();
|
|
238
169
|
this.initRoutes();
|
|
239
170
|
}
|
|
240
171
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PIDRouter.js","sourceRoot":"","sources":["../../../src/output-gateway/pid/PIDRouter.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;;;;;;;;;;;;;AAEH,
|
|
1
|
+
{"version":3,"file":"PIDRouter.js","sourceRoot":"","sources":["../../../src/output-gateway/pid/PIDRouter.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { IPIDDeparture } from "..";
|
|
2
|
+
export default class DepartureBoardMapper {
|
|
3
|
+
static mapDepartures(data: any, preferredTimezone: string, mode: string): any;
|
|
4
|
+
/**
|
|
5
|
+
* Initiates all routes. Should respond with correct data to a HTTP requests to all routes.
|
|
6
|
+
*/
|
|
7
|
+
static transformResponseData: (x: IPIDDeparture, preferredTimezone: string, mode?: string | undefined) => any;
|
|
8
|
+
}
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const shared_1 = require("../../shared");
|
|
4
|
+
const lodash_1 = require("lodash");
|
|
5
|
+
const __1 = require("..");
|
|
6
|
+
class DepartureBoardMapper {
|
|
7
|
+
static mapDepartures(data, preferredTimezone, mode) {
|
|
8
|
+
const result = data.departures.map((d) => this.transformResponseData(d, preferredTimezone, mode));
|
|
9
|
+
return result;
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
exports.default = DepartureBoardMapper;
|
|
13
|
+
/**
|
|
14
|
+
* Initiates all routes. Should respond with correct data to a HTTP requests to all routes.
|
|
15
|
+
*/
|
|
16
|
+
DepartureBoardMapper.transformResponseData = (x, preferredTimezone, mode) => {
|
|
17
|
+
var _a;
|
|
18
|
+
let isAtStop = x.is_delay_available ? x.stop_sequence === x["trip.last_position.this_stop_sequence"] : false;
|
|
19
|
+
const arrivalTimestamp = {
|
|
20
|
+
// with added delay
|
|
21
|
+
predicted: shared_1.RopidRouterUtils.formatTimestamp(x.arrival_datetime_real, preferredTimezone),
|
|
22
|
+
// according to trip plan
|
|
23
|
+
scheduled: shared_1.RopidRouterUtils.formatTimestamp(x.arrival_datetime, preferredTimezone),
|
|
24
|
+
};
|
|
25
|
+
const departureTimestamp = {
|
|
26
|
+
// with added delay
|
|
27
|
+
predicted: shared_1.RopidRouterUtils.formatTimestamp(x.departure_datetime_real, preferredTimezone),
|
|
28
|
+
// according to trip plan
|
|
29
|
+
scheduled: shared_1.RopidRouterUtils.formatTimestamp(x.departure_datetime, preferredTimezone),
|
|
30
|
+
};
|
|
31
|
+
// default value
|
|
32
|
+
mode = mode || __1.DepartureMode.DEPARTURES;
|
|
33
|
+
// set null timestamps for first stop of the trip for departures and mixed mode
|
|
34
|
+
if ((mode === __1.DepartureMode.DEPARTURES || mode === __1.DepartureMode.MIXED) && x.stop_sequence === x.min_stop_sequence) {
|
|
35
|
+
arrivalTimestamp.predicted = null;
|
|
36
|
+
arrivalTimestamp.scheduled = null;
|
|
37
|
+
}
|
|
38
|
+
// set null timestamps for last stop of the trip for arrivals and mixed mode
|
|
39
|
+
if ((mode === __1.DepartureMode.ARRIVALS || mode === __1.DepartureMode.MIXED) && x.stop_sequence === x.max_stop_sequence) {
|
|
40
|
+
departureTimestamp.predicted = null;
|
|
41
|
+
departureTimestamp.scheduled = null;
|
|
42
|
+
}
|
|
43
|
+
const wheelchairAccessibility = (0, lodash_1.isBoolean)(x.real_wheelchair_accessible)
|
|
44
|
+
? x.real_wheelchair_accessible
|
|
45
|
+
: x.wheelchair_accessible === 1; // enum 0,1,2 see GTFS specs
|
|
46
|
+
return {
|
|
47
|
+
arrival_timestamp: arrivalTimestamp,
|
|
48
|
+
delay: {
|
|
49
|
+
is_available: x.is_delay_available,
|
|
50
|
+
minutes: x.delay_minutes,
|
|
51
|
+
seconds: x.delay_seconds, // TBD - now it could be negative!
|
|
52
|
+
},
|
|
53
|
+
departure_timestamp: departureTimestamp,
|
|
54
|
+
last_stop: {
|
|
55
|
+
id: x["trip.last_position.last_stop_id"],
|
|
56
|
+
name: x["trip.last_position.last_stop_name"],
|
|
57
|
+
},
|
|
58
|
+
route: {
|
|
59
|
+
short_name: x.route_short_name,
|
|
60
|
+
type: parseInt(x.route_type, 10),
|
|
61
|
+
is_night: x.is_night === "1",
|
|
62
|
+
is_regional: x.is_regional === "1",
|
|
63
|
+
is_substitute_transport: x.is_substitute_transport === "1",
|
|
64
|
+
},
|
|
65
|
+
stop: {
|
|
66
|
+
id: x.stop_id,
|
|
67
|
+
platform_code: x.platform_code,
|
|
68
|
+
},
|
|
69
|
+
trip: {
|
|
70
|
+
direction: x.direction,
|
|
71
|
+
headsign: (_a = x.stop_headsign) !== null && _a !== void 0 ? _a : x.trip_headsign,
|
|
72
|
+
id: x.trip_id,
|
|
73
|
+
is_at_stop: isAtStop,
|
|
74
|
+
is_canceled: x.is_canceled || false,
|
|
75
|
+
is_wheelchair_accessible: wheelchairAccessibility,
|
|
76
|
+
// To be implemented fully after https://gitlab.com/operator-ict/golemio/code/general/-/issues/259
|
|
77
|
+
is_air_conditioned: null,
|
|
78
|
+
short_name: x.trip_short_name || null,
|
|
79
|
+
},
|
|
80
|
+
};
|
|
81
|
+
};
|
|
82
|
+
//# sourceMappingURL=DepartureBoardMapper.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DepartureBoardMapper.js","sourceRoot":"","sources":["../../../../src/output-gateway/pid/helpers/DepartureBoardMapper.ts"],"names":[],"mappings":"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"}
|
|
@@ -17,7 +17,7 @@ export interface IPIDDeparture {
|
|
|
17
17
|
departure_time: string;
|
|
18
18
|
arrival_datetime: string;
|
|
19
19
|
departure_datetime: string;
|
|
20
|
-
arrival_datetime_real:
|
|
20
|
+
arrival_datetime_real: Date | null;
|
|
21
21
|
departure_datetime_real: string | null;
|
|
22
22
|
route_short_name: string;
|
|
23
23
|
trip_id: string;
|
|
@@ -21,110 +21,7 @@ const __1 = require("..");
|
|
|
21
21
|
const RopidDeparturesModel_1 = require("./RopidDeparturesModel");
|
|
22
22
|
const config_1 = require("@golemio/core/dist/output-gateway/config");
|
|
23
23
|
const trace_provider_1 = require("@golemio/core/dist/monitoring/opentelemetry/trace-provider");
|
|
24
|
-
|
|
25
|
-
constructor(departures, options) {
|
|
26
|
-
/** Orders departures in special way by given options
|
|
27
|
-
*/
|
|
28
|
-
this.filterAndLimit = () => {
|
|
29
|
-
let finalDepartures = { once: this.departures, fill: [] };
|
|
30
|
-
if (this.options.filter === __1.DepartureFilter.ROUTE_ONCE || this.options.filter === __1.DepartureFilter.ROUTE_ONCE_FILL) {
|
|
31
|
-
finalDepartures = this.departures.reduce((acc, currentDeparture) => {
|
|
32
|
-
// only the first departure to respone for trips with same route_id
|
|
33
|
-
if (!acc.once.find((e) => e.route_id === currentDeparture.route_id)) {
|
|
34
|
-
acc.once.push(currentDeparture);
|
|
35
|
-
}
|
|
36
|
-
else {
|
|
37
|
-
acc.fill.push(currentDeparture);
|
|
38
|
-
}
|
|
39
|
-
return acc;
|
|
40
|
-
}, { once: [], fill: [] });
|
|
41
|
-
}
|
|
42
|
-
else if (this.options.filter === __1.DepartureFilter.ROUTE_HEADING_ONCE ||
|
|
43
|
-
this.options.filter === __1.DepartureFilter.ROUTE_HEADING_ONCE_FILL) {
|
|
44
|
-
finalDepartures = this.departures.reduce((acc, currentDeparture) => {
|
|
45
|
-
// only the first departure to respone for trips with same route_id
|
|
46
|
-
if (!acc.once.find((e) => e.route_id === currentDeparture.route_id &&
|
|
47
|
-
(currentDeparture.stop_headsign
|
|
48
|
-
? e.stop_headsign === currentDeparture.stop_headsign
|
|
49
|
-
: e.trip_headsign === currentDeparture.trip_headsign))) {
|
|
50
|
-
acc.once.push(currentDeparture);
|
|
51
|
-
}
|
|
52
|
-
else {
|
|
53
|
-
acc.fill.push(currentDeparture);
|
|
54
|
-
}
|
|
55
|
-
return acc;
|
|
56
|
-
}, { once: [], fill: [] });
|
|
57
|
-
}
|
|
58
|
-
if (this.options.filter === __1.DepartureFilter.ROUTE_ONCE_FILL ||
|
|
59
|
-
this.options.filter === __1.DepartureFilter.ROUTE_HEADING_ONCE_FILL) {
|
|
60
|
-
// return all once in limit and if still under limit fill it with others
|
|
61
|
-
this.departures = finalDepartures.once
|
|
62
|
-
.slice(0, this.options.total)
|
|
63
|
-
.concat(finalDepartures.fill.slice(0, this.options.total - Math.min(finalDepartures.once.length, this.options.total)))
|
|
64
|
-
.slice(this.options.offset, this.options.offset + this.options.limit);
|
|
65
|
-
}
|
|
66
|
-
else {
|
|
67
|
-
this.departures = finalDepartures.once
|
|
68
|
-
.slice(0, this.options.total)
|
|
69
|
-
.slice(this.options.offset, this.options.offset + this.options.limit);
|
|
70
|
-
}
|
|
71
|
-
};
|
|
72
|
-
/** Skips departures by given options
|
|
73
|
-
*/
|
|
74
|
-
this.skip = () => {
|
|
75
|
-
this.departures = this.departures.filter((departure) => {
|
|
76
|
-
return !((this.options.skip.includes(__1.DepartureSkip.UNTRACKED) && !departure.is_delay_available) ||
|
|
77
|
-
(this.options.skip.includes(__1.DepartureSkip.CANCELED) && departure.is_canceled) ||
|
|
78
|
-
(this.options.skip.includes(__1.DepartureSkip.AT_STOP) &&
|
|
79
|
-
departure.stop_sequence === departure["trip.last_position.this_stop_sequence"]));
|
|
80
|
-
});
|
|
81
|
-
};
|
|
82
|
-
/** Sorts by proper datetime by given options
|
|
83
|
-
*/
|
|
84
|
-
this.sort = () => {
|
|
85
|
-
const datetimeToOrder = this.options.mode === __1.DepartureMode.ARRIVALS
|
|
86
|
-
? this.options.order === __1.DepartureOrder.REAL
|
|
87
|
-
? "arrival_datetime_real"
|
|
88
|
-
: "arrival_datetime"
|
|
89
|
-
: this.options.order === __1.DepartureOrder.REAL
|
|
90
|
-
? "departure_datetime_real"
|
|
91
|
-
: "departure_datetime";
|
|
92
|
-
this.departures.sort((a, b) => (0, moment_timezone_1.default)(a[datetimeToOrder]).diff(b[datetimeToOrder], "seconds"));
|
|
93
|
-
};
|
|
94
|
-
/** Fills direction with proper value based on departure direction ruls
|
|
95
|
-
*/
|
|
96
|
-
this.addDirections = () => {
|
|
97
|
-
this.departures.forEach((departure) => {
|
|
98
|
-
departure.direction = departure.direction || null;
|
|
99
|
-
const thisStopDeparturesDirections = this.options.departuresDirections.filter((departuresDirection) => departuresDirection.departure_stop_id === departure.stop_id);
|
|
100
|
-
if (thisStopDeparturesDirections.length > 0) {
|
|
101
|
-
for (const thisStopDeparturesDirection of thisStopDeparturesDirections) {
|
|
102
|
-
if (departure.stop_id === thisStopDeparturesDirection.departure_stop_id &&
|
|
103
|
-
departure.next_stop_id.match(thisStopDeparturesDirection.next_stop_id_regexp)) {
|
|
104
|
-
departure.direction = thisStopDeparturesDirection.direction;
|
|
105
|
-
}
|
|
106
|
-
}
|
|
107
|
-
}
|
|
108
|
-
});
|
|
109
|
-
};
|
|
110
|
-
/** Skips, sorts, order, limit and returns departures in array
|
|
111
|
-
* @returns This departures
|
|
112
|
-
*/
|
|
113
|
-
this.toArray = () => {
|
|
114
|
-
this.skip();
|
|
115
|
-
this.sort();
|
|
116
|
-
this.filterAndLimit();
|
|
117
|
-
this.sort();
|
|
118
|
-
this.addDirections();
|
|
119
|
-
return this.departures;
|
|
120
|
-
};
|
|
121
|
-
this.departures = departures;
|
|
122
|
-
this.options = options;
|
|
123
|
-
}
|
|
124
|
-
}
|
|
125
|
-
/**
|
|
126
|
-
* Departure boards model.
|
|
127
|
-
*/
|
|
24
|
+
const PIDDepartureModel_1 = __importDefault(require("./helpers/PIDDepartureModel"));
|
|
128
25
|
class PIDDepartureBoardsModel {
|
|
129
26
|
constructor() {
|
|
130
27
|
this.stopsMaxCount = 100;
|
|
@@ -176,7 +73,7 @@ class PIDDepartureBoardsModel {
|
|
|
176
73
|
});
|
|
177
74
|
const spanDepartures = (0, trace_provider_1.createChildSpan)("PIDRouter.DB.departures", config_1.config.telemetry);
|
|
178
75
|
const res = {
|
|
179
|
-
departures: new
|
|
76
|
+
departures: new PIDDepartureModel_1.default(results, {
|
|
180
77
|
limit: options.limit,
|
|
181
78
|
offset: options.offset || 0,
|
|
182
79
|
total: options.total,
|
|
@@ -185,6 +82,7 @@ class PIDDepartureBoardsModel {
|
|
|
185
82
|
filter,
|
|
186
83
|
skip,
|
|
187
84
|
departuresDirections,
|
|
85
|
+
timezone: options.timezone,
|
|
188
86
|
}).toArray(),
|
|
189
87
|
infotexts: infotextsToInclude,
|
|
190
88
|
stops: stopsToInclude,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PIDDepartureBoardsModel.js","sourceRoot":"","sources":["../../../../src/output-gateway/pid/models/PIDDepartureBoardsModel.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,6EAAuE;AACvE,gGAA2E;AAC3E,oDAA+C;AAC/C,wBAAoG;AACpG,0BAAkG;AAGlG,iEAA8D;AAC9D,qEAAkE;AAClE,+FAA6F;
|
|
1
|
+
{"version":3,"file":"PIDDepartureBoardsModel.js","sourceRoot":"","sources":["../../../../src/output-gateway/pid/models/PIDDepartureBoardsModel.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { IPIDDeparture } from "../..";
|
|
2
|
+
import IPIDDepartureQueryOptions from "./interfaces/IPIDDepartureQueryOptions";
|
|
3
|
+
export default class PIDDeparturesModel {
|
|
4
|
+
private departures;
|
|
5
|
+
private options;
|
|
6
|
+
constructor(departures: IPIDDeparture[], options: IPIDDepartureQueryOptions);
|
|
7
|
+
toArray: () => any;
|
|
8
|
+
/** Skips, sorts, order, limit and returns departures in array
|
|
9
|
+
* @returns This departures
|
|
10
|
+
*/
|
|
11
|
+
private toArrayInternal;
|
|
12
|
+
/** Orders departures in special way by given options
|
|
13
|
+
*/
|
|
14
|
+
private filterAndLimit;
|
|
15
|
+
/** Skips departures by given options
|
|
16
|
+
*/
|
|
17
|
+
private skip;
|
|
18
|
+
/** Sorts by proper datetime by given options
|
|
19
|
+
*/
|
|
20
|
+
private sort;
|
|
21
|
+
/** Fills direction with proper value based on departure direction ruls
|
|
22
|
+
*/
|
|
23
|
+
private addDirections;
|
|
24
|
+
}
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
const pid_1 = require("../..");
|
|
7
|
+
const DepartureBoardMapper_1 = __importDefault(require("../../helpers/DepartureBoardMapper"));
|
|
8
|
+
class PIDDeparturesModel {
|
|
9
|
+
constructor(departures, options) {
|
|
10
|
+
this.toArray = () => {
|
|
11
|
+
this.toArrayInternal();
|
|
12
|
+
return DepartureBoardMapper_1.default.mapDepartures(this, this.options.timezone, this.options.mode);
|
|
13
|
+
};
|
|
14
|
+
/** Skips, sorts, order, limit and returns departures in array
|
|
15
|
+
* @returns This departures
|
|
16
|
+
*/
|
|
17
|
+
this.toArrayInternal = () => {
|
|
18
|
+
this.skip();
|
|
19
|
+
this.sort();
|
|
20
|
+
this.filterAndLimit();
|
|
21
|
+
this.sort();
|
|
22
|
+
this.addDirections();
|
|
23
|
+
return this.departures;
|
|
24
|
+
};
|
|
25
|
+
/** Orders departures in special way by given options
|
|
26
|
+
*/
|
|
27
|
+
this.filterAndLimit = () => {
|
|
28
|
+
let finalDepartures = { once: this.departures, fill: [] };
|
|
29
|
+
if (this.options.filter === pid_1.DepartureFilter.ROUTE_ONCE || this.options.filter === pid_1.DepartureFilter.ROUTE_ONCE_FILL) {
|
|
30
|
+
finalDepartures = this.departures.reduce((acc, currentDeparture) => {
|
|
31
|
+
// only the first departure to respone for trips with same route_id
|
|
32
|
+
if (!acc.once.find((e) => e.route_id === currentDeparture.route_id)) {
|
|
33
|
+
acc.once.push(currentDeparture);
|
|
34
|
+
}
|
|
35
|
+
else {
|
|
36
|
+
acc.fill.push(currentDeparture);
|
|
37
|
+
}
|
|
38
|
+
return acc;
|
|
39
|
+
}, { once: [], fill: [] });
|
|
40
|
+
}
|
|
41
|
+
else if (this.options.filter === pid_1.DepartureFilter.ROUTE_HEADING_ONCE ||
|
|
42
|
+
this.options.filter === pid_1.DepartureFilter.ROUTE_HEADING_ONCE_FILL) {
|
|
43
|
+
finalDepartures = this.departures.reduce((acc, currentDeparture) => {
|
|
44
|
+
// only the first departure to respone for trips with same route_id
|
|
45
|
+
if (!acc.once.find((e) => e.route_id === currentDeparture.route_id &&
|
|
46
|
+
(currentDeparture.stop_headsign
|
|
47
|
+
? e.stop_headsign === currentDeparture.stop_headsign
|
|
48
|
+
: e.trip_headsign === currentDeparture.trip_headsign))) {
|
|
49
|
+
acc.once.push(currentDeparture);
|
|
50
|
+
}
|
|
51
|
+
else {
|
|
52
|
+
acc.fill.push(currentDeparture);
|
|
53
|
+
}
|
|
54
|
+
return acc;
|
|
55
|
+
}, { once: [], fill: [] });
|
|
56
|
+
}
|
|
57
|
+
if (this.options.filter === pid_1.DepartureFilter.ROUTE_ONCE_FILL ||
|
|
58
|
+
this.options.filter === pid_1.DepartureFilter.ROUTE_HEADING_ONCE_FILL) {
|
|
59
|
+
// return all once in limit and if still under limit fill it with others
|
|
60
|
+
this.departures = finalDepartures.once
|
|
61
|
+
.slice(0, this.options.total)
|
|
62
|
+
.concat(finalDepartures.fill.slice(0, this.options.total - Math.min(finalDepartures.once.length, this.options.total)))
|
|
63
|
+
.slice(this.options.offset, this.options.offset + this.options.limit);
|
|
64
|
+
}
|
|
65
|
+
else {
|
|
66
|
+
this.departures = finalDepartures.once
|
|
67
|
+
.slice(0, this.options.total)
|
|
68
|
+
.slice(this.options.offset, this.options.offset + this.options.limit);
|
|
69
|
+
}
|
|
70
|
+
};
|
|
71
|
+
/** Skips departures by given options
|
|
72
|
+
*/
|
|
73
|
+
this.skip = () => {
|
|
74
|
+
this.departures = this.departures.filter((departure) => {
|
|
75
|
+
return !((this.options.skip.includes(pid_1.DepartureSkip.UNTRACKED) && !departure.is_delay_available) ||
|
|
76
|
+
(this.options.skip.includes(pid_1.DepartureSkip.CANCELED) && departure.is_canceled) ||
|
|
77
|
+
(this.options.skip.includes(pid_1.DepartureSkip.AT_STOP) &&
|
|
78
|
+
departure.stop_sequence === departure["trip.last_position.this_stop_sequence"]));
|
|
79
|
+
});
|
|
80
|
+
};
|
|
81
|
+
/** Sorts by proper datetime by given options
|
|
82
|
+
*/
|
|
83
|
+
this.sort = () => {
|
|
84
|
+
const datetimeToOrder = this.options.mode === pid_1.DepartureMode.ARRIVALS
|
|
85
|
+
? this.options.order === pid_1.DepartureOrder.REAL
|
|
86
|
+
? "arrival_datetime_real"
|
|
87
|
+
: "arrival_datetime"
|
|
88
|
+
: this.options.order === pid_1.DepartureOrder.REAL
|
|
89
|
+
? "departure_datetime_real"
|
|
90
|
+
: "departure_datetime";
|
|
91
|
+
this.departures = this.departures.sort((a, b) => a[datetimeToOrder].getTime() - b[datetimeToOrder].getTime());
|
|
92
|
+
};
|
|
93
|
+
/** Fills direction with proper value based on departure direction ruls
|
|
94
|
+
*/
|
|
95
|
+
this.addDirections = () => {
|
|
96
|
+
this.departures.forEach((departure) => {
|
|
97
|
+
departure.direction = departure.direction || null;
|
|
98
|
+
const thisStopDeparturesDirections = this.options.departuresDirections.filter((departuresDirection) => departuresDirection.departure_stop_id === departure.stop_id);
|
|
99
|
+
if (thisStopDeparturesDirections.length > 0) {
|
|
100
|
+
for (const thisStopDeparturesDirection of thisStopDeparturesDirections) {
|
|
101
|
+
if (departure.stop_id === thisStopDeparturesDirection.departure_stop_id &&
|
|
102
|
+
departure.next_stop_id.match(thisStopDeparturesDirection.next_stop_id_regexp)) {
|
|
103
|
+
departure.direction = thisStopDeparturesDirection.direction;
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
});
|
|
108
|
+
};
|
|
109
|
+
this.departures = departures;
|
|
110
|
+
this.options = options;
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
exports.default = PIDDeparturesModel;
|
|
114
|
+
//# sourceMappingURL=PIDDepartureModel.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PIDDepartureModel.js","sourceRoot":"","sources":["../../../../../src/output-gateway/pid/models/helpers/PIDDepartureModel.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { DepartureFilter, DepartureMode, DepartureOrder, DepartureSkip } from "../../..";
|
|
2
|
+
import { IRopidDeparturesDirectionsOutput } from "../../../../../schema-definitions/ropid-departures-directions";
|
|
3
|
+
export default interface IPIDDepartureQueryOptions {
|
|
4
|
+
limit: number;
|
|
5
|
+
offset: number;
|
|
6
|
+
total: number;
|
|
7
|
+
mode: DepartureMode;
|
|
8
|
+
order: DepartureOrder;
|
|
9
|
+
filter: DepartureFilter;
|
|
10
|
+
skip: DepartureSkip[];
|
|
11
|
+
departuresDirections: IRopidDeparturesDirectionsOutput[];
|
|
12
|
+
timezone: string;
|
|
13
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"IPIDDepartureQueryOptions.js","sourceRoot":"","sources":["../../../../../../src/output-gateway/pid/models/helpers/interfaces/IPIDDepartureQueryOptions.ts"],"names":[],"mappings":""}
|
|
@@ -52,7 +52,7 @@ class GTFSStopModel extends models_1.SequelizeModel {
|
|
|
52
52
|
where = sequelize_1.default.where(distance, "<=", range);
|
|
53
53
|
}
|
|
54
54
|
}
|
|
55
|
-
if (aswIds || cisIds) {
|
|
55
|
+
if ((aswIds && (aswIds === null || aswIds === void 0 ? void 0 : aswIds.length) > 0) || (cisIds && (cisIds === null || cisIds === void 0 ? void 0 : cisIds.length) > 0)) {
|
|
56
56
|
const ors = [];
|
|
57
57
|
if (aswIds && (aswIds === null || aswIds === void 0 ? void 0 : aswIds.length) > 0) {
|
|
58
58
|
aswIds.forEach((d) => {
|
|
@@ -100,9 +100,11 @@ class GTFSStopModel extends models_1.SequelizeModel {
|
|
|
100
100
|
gtfsIds === null || gtfsIds === void 0 ? void 0 : gtfsIds.forEach((stop) => {
|
|
101
101
|
allGtfsIds.push("(^" + stop + "$)");
|
|
102
102
|
});
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
103
|
+
if (allGtfsIds.length > 0) {
|
|
104
|
+
where.stop_id = {
|
|
105
|
+
[sequelize_1.default.Op.regexp]: allGtfsIds.join("|"),
|
|
106
|
+
};
|
|
107
|
+
}
|
|
106
108
|
if (names && (names === null || names === void 0 ? void 0 : names.length) > 0) {
|
|
107
109
|
where.stop_name = names;
|
|
108
110
|
}
|