@golemio/pid 2.2.2-dev.536682872 → 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/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/package.json +1 -1
|
@@ -3,9 +3,9 @@
|
|
|
3
3
|
* Handles web logic (http request, response). Sets response headers, handles error responses.
|
|
4
4
|
*/
|
|
5
5
|
/// <reference types="express" />
|
|
6
|
-
import { NextFunction, Request, Response, Router } from "@golemio/core/dist/shared/express";
|
|
7
6
|
import { BaseRouter } from "@golemio/core/dist/output-gateway/routes/BaseRouter";
|
|
8
|
-
import {
|
|
7
|
+
import { NextFunction, Request, Response, Router } from "@golemio/core/dist/shared/express";
|
|
8
|
+
import { PIDDepartureBoardsModel } from ".";
|
|
9
9
|
export declare class PIDRouter extends BaseRouter {
|
|
10
10
|
router: Router;
|
|
11
11
|
protected departureBoardsModel: PIDDepartureBoardsModel;
|
|
@@ -13,10 +13,6 @@ export declare class PIDRouter extends BaseRouter {
|
|
|
13
13
|
private validationEnums;
|
|
14
14
|
constructor();
|
|
15
15
|
GetDepartureBoard: (req: Request, res: Response, next: NextFunction) => Promise<void>;
|
|
16
|
-
/**
|
|
17
|
-
* Initiates all routes. Should respond with correct data to a HTTP requests to all routes.
|
|
18
|
-
*/
|
|
19
|
-
private transformResponseData;
|
|
20
16
|
/**
|
|
21
17
|
* Performs a check if timeFrom query parameter is not too old or too much in future
|
|
22
18
|
* @param routerName name passed to the returned Error object in case of fail
|
|
@@ -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":";AAAA;;;GAGG;;;;;;;;;;;;;;;AAEH,sCAA8C;AAC9C,+FAA6F;AAC7F,qEAAkE;AAClE,mEAA6E;AAC7E,oFAAiF;AACjF,6EAAkH;AAClH,+DAA4F;AAC5F,mFAA2E;AAC3E,6EAAuE;AACvE,gGAA2E;AAC3E,mCAA6C;AAC7C,wBAA0F;AAG1F,MAAa,SAAU,SAAQ,uBAAU;IAkCrC;QACI,KAAK,EAAE,CAAC;QAlCZ,iDAAiD;QAC1C,WAAM,GAAW,IAAA,gBAAM,GAAE,CAAC;QAIzB,2BAAsB,GAAQ;YAClC,KAAK,EAAE,EAAE;YACT,KAAK,EAAE,EAAE;YACT,MAAM,EAAE,CAAC;YACT,YAAY,EAAE,GAAG;YACjB,aAAa,EAAE,CAAC;YAChB,kBAAkB,EAAE;gBAChB,WAAW,EAAE,CAAC;gBACd,UAAU,EAAE,CAAC,GAAG,EAAE;aACrB;SACJ,CAAC;QAEM,oBAAe,GAAQ;YAC3B,aAAa,EAAE,CAAC,YAAY,EAAE,UAAU,EAAE,OAAO,CAAC;YAClD,KAAK,EAAE,CAAC,MAAM,EAAE,WAAW,CAAC;YAC5B,MAAM,EAAE,CAAC,MAAM,EAAE,WAAW,EAAE,kBAAkB,EAAE,eAAe,EAAE,sBAAsB,CAAC;YAC1F,IAAI,EAAE,CAAC,WAAW,EAAE,UAAU,EAAE,QAAQ,CAAC,kBAAkB,CAAC;YAC5D,sCAAsC;YACtC,iBAAiB,EAAE,yBAAM,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,MAAM,CACvC,yBAAM,CAAC,EAAE;iBACJ,KAAK,EAAE;gBACR,iDAAiD;iBAChD,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;gBACpC,0BAA0B;iBACzB,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,CAC/C;SACJ,CAAC;QAQK,sBAAiB,GAAG,CAAO,GAAY,EAAE,GAAa,EAAE,IAAkB,EAAE,EAAE;YACjF,MAAM,MAAM,GAAa,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC;YACrE,MAAM,MAAM,GAAa,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC;YACrE,MAAM,OAAO,GAAa,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC;YACnE,MAAM,KAAK,GAAa,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC;YACnE,MAAM,IAAI,GAAa,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC;YACjE,MAAM,KAAK,GAAW,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,IAAI,IAAI,CAAC,sBAAsB,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;YACzF,MAAM,KAAK,GAAW,IAAA,iBAAQ,EAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC;YACzD,MAAM,iBAAiB,GAAG,yBAAgB,CAAC,yBAAyB,CAAC,GAAG,CAAC,KAAK,CAAC,iBAAiB,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;YAEzH,oDAAoD;YACpD,cAAc;YACd,uBAAuB;YACvB,0BAA0B;YAC1B,yBAAyB;YACzB,4BAA4B;YAC5B,MAAM,qBAAqB,GAAW,uDAAuD,CAAC;YAC9F,+DAA+D;YAC/D,MAAM,QAAQ,GAAuB,GAAG,CAAC,KAAK,CAAC,QAAQ;gBACnD,CAAC,CAAE,GAAG,CAAC,KAAK,CAAC,QAAmB,CAAC,KAAK,CAAC,qBAAqB,CAAC;oBACzD,CAAC,CAAC,IAAA,yBAAM,EAAC,GAAG,CAAC,KAAK,CAAC,QAAkB,CAAC;oBACtC,CAAC,CAAC,yBAAM,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,EAAE,iBAAiB,CAAC;gBACtD,CAAC,CAAC,SAAS,CAAC;YAEhB,MAAM,IAAI,GAAG,IAAA,gCAAe,EAAC,6BAA6B,EAAE,eAAM,CAAC,SAAS,CAAC,CAAC;YAC9E,IAAI;gBACA,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC;oBAChD,MAAM;oBACN,MAAM;oBACN,OAAO;oBACP,KAAK;oBACL,YAAY,EAAE,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,YAAY,IAAI,IAAI,CAAC,sBAAsB,CAAC,YAAY,EAAE,EAAE,CAAC;oBAC9F,aAAa,EAAE,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,aAAa,IAAI,IAAI,CAAC,sBAAsB,CAAC,aAAa,EAAE,EAAE,CAAC;oBACjG,QAAQ;oBACR,IAAI,EAAE,GAAG,CAAC,KAAK,CAAC,IAAc;oBAC9B,KAAK,EAAE,GAAG,CAAC,KAAK,CAAC,KAAe;oBAChC,MAAM,EAAE,GAAG,CAAC,KAAK,CAAC,MAAgB;oBAClC,IAAI;oBACJ,KAAK;oBACL,MAAM,EAAE,IAAA,iBAAQ,EAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,SAAS;oBAC/C,KAAK;oBACL,QAAQ,EAAE,iBAAiB;iBAC9B,CAAC,CAAC;gBACH,oCAAoC;gBACpC,GAAG,CAAC,SAAS,CAAC,+BAA+B,EAAE,MAAM,CAAC,CAAC;gBACvD,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;oBACjB,KAAK,EAAE,IAAI,CAAC,KAAK;oBACjB,UAAU,EAAE,IAAI,CAAC,UAAU;oBAC3B,SAAS,EAAE,IAAI,CAAC,SAAS;iBAC5B,CAAC,CAAC;aACN;YAAC,OAAO,GAAG,EAAE;gBACV,IAAI,CAAC,GAAG,CAAC,CAAC;aACb;oBAAS;gBACN,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,GAAG,EAAE,CAAC;aACf;QACL,CAAC,CAAA,CAAC;QAEF;;;WAGG;QACK,4BAAuB,GAAG,CAAC,UAAmB,EAAE,EAAE;YACtD,OAAO,CAAC,GAAY,EAAE,GAAa,EAAE,IAAkB,EAAE,EAAE;gBACvD,MAAM,aAAa,GAAG,IAAA,yBAAM,GAAE,CAAC;gBAC/B,MAAM,QAAQ,GAAG,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAA,yBAAM,EAAC,GAAG,CAAC,KAAK,CAAC,QAAkB,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;gBAClF,IACI,QAAQ;oBACR,CAAC,QAAQ,CAAC,SAAS,CACf,aAAa,CAAC,KAAK,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,sBAAsB,CAAC,kBAAkB,CAAC,WAAW,EAAE,OAAO,CAAC,EACnG,aAAa,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,sBAAsB,CAAC,kBAAkB,CAAC,UAAU,EAAE,OAAO,CAAC,EAC7F,SAAS,EACT,IAAI,CACP,EACH;oBACE,OAAO,IAAI,CACP,IAAI,4BAAW,CAAC,mDAAmD,EAAE,IAAI,EAAE,UAAU,IAAI,YAAY,EAAE,GAAG,CAAC,CAC9G,CAAC;iBACL;gBACD,OAAO,IAAI,EAAE,CAAC;YAClB,CAAC,CAAC;QACN,CAAC,CAAC;QAEF;;WAEG;QACK,eAAU,GAAG,GAAS,EAAE;YAC5B,IAAI,CAAC,4BAA4B,CAAC,WAAW,CAAC,CAAC;QACnD,CAAC,CAAC;QAEM,iCAA4B,GAAG,CAAC,MAAwB,EAAQ,EAAE;YACtE,qCAAqC;YAErC,IAAI,CAAC,MAAM,CAAC,GAAG,CACX,kBAAkB,EAClB;gBACI,IAAA,yBAAK,EAAC;oBACF,IAAA,yBAAK,EAAC,KAAK,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,EAAE;oBAC/B,IAAA,yBAAK,EAAC,QAAQ,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,EAAE;oBAClC,IAAA,yBAAK,EAAC,QAAQ,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,EAAE;oBAClC,IAAA,yBAAK,EAAC,KAAK,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;oBAChC,IAAA,yBAAK,EAAC,QAAQ,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;oBACnC,IAAA,yBAAK,EAAC,QAAQ,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;oBACnC,IAAA,yBAAK,EAAC,OAAO,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,EAAE;oBACjC,IAAA,yBAAK,EAAC,OAAO,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;iBACrC,CAAC;gBACF,IAAA,yBAAK,EAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE;gBACpC,IAAA,yBAAK,EAAC,UAAU,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE;gBACvC,IAAA,yBAAK,EAAC,UAAU,CAAC,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE;gBACpC,IAAA,yBAAK,EAAC,SAAS,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE;gBACtC,IAAA,yBAAK,EAAC,eAAe,CAAC,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE;gBACzC,IAAA,yBAAK,EAAC,cAAc,CAAC,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE;gBACxC,IAAA,yBAAK,EAAC,mBAAmB,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,iBAAiB,CAAC;gBAC7F,IAAA,yBAAK,EAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,aAAa,CAAC;gBACjE,IAAA,yBAAK,EAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC;gBACrE,IAAA,yBAAK,EAAC,QAAQ,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC;gBACvE,IAAA,yBAAK,EAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC;gBACxD,IAAA,yBAAK,EAAC,UAAU,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,CAAC,SAAS,EAAE;gBACnD,IAAA,yBAAK,EAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE;gBACjC,IAAA,yBAAK,EAAC,QAAQ,CAAC,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE;gBAClC,IAAA,yBAAK,EAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE;aACpC,EACD,uBAAU,EACV,wBAAW,EACX,IAAI,CAAC,uBAAuB,CAAC,uBAAuB,CAAC,EACrD,IAAA,sCAAyB,EAAC,uBAAuB,CAAC,EAClD,IAAA,0BAAkB,EAAC,MAAM,CAAC,EAC1B,IAAI,CAAC,iBAAiB,CACzB,CAAC;QACN,CAAC,CAAC;QApIE,IAAI,CAAC,oBAAoB,GAAG,IAAI,0BAAuB,EAAE,CAAC;QAC1D,IAAI,CAAC,UAAU,EAAE,CAAC;IACtB,CAAC;CAmIJ;AAzKD,8BAyKC;AAED,MAAM,SAAS,GAAW,IAAI,SAAS,EAAE,CAAC,MAAM,CAAC;AAExC,8BAAS"}
|
|
@@ -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
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GTFSStopModel.js","sourceRoot":"","sources":["../../../../src/output-gateway/ropid-gtfs/models/GTFSStopModel.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,6EAAuE;AACvE,oFAAsF;AACtF,yEAAiF;AACjF,+DAA2G;AAC3G,qEAA0E;AAC1E,uEAA4C;AAE5C,MAAa,aAAc,SAAQ,uBAAc;IAI7C;QACI,KAAK,CAAC,sBAAS,CAAC,KAAK,CAAC,IAAI,EAAE,sBAAS,CAAC,KAAK,CAAC,WAAW,EAAE,sBAAS,CAAC,KAAK,CAAC,yBAAyB,EAAE;YAChG,MAAM,EAAE,sBAAS,CAAC,QAAQ;SAC7B,CAAC,CAAC;QANU,qBAAgB,GAAa,EAAE,CAAC;QA6BjD;;;;;;;;;WASG;QACI,WAAM,GAAG,CACZ,UAaI,EAAE,EACM,EAAE;YACd,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,WAAW,EAAE,SAAS,EAAE,GAAG,OAAO,CAAC;YACzH,IAAI;gBACA,MAAM,UAAU,GAAa,EAAE,CAAC;gBAChC,MAAM,KAAK,GAAU,EAAE,CAAC;gBACxB,qEAAqE;gBACrE,MAAM,UAAU,GAAyB,CAAC,GAAG,IAAI,CAAC,gBAAgB,CAAC,CAAC;gBACpE,IAAI,KAAK,GAAQ,EAAE,CAAC;gBAEpB,IAAI,GAAG,IAAI,GAAG,EAAE;oBACZ,MAAM,QAAQ,GAAG,mBAAS,CAAC,OAAO,CAAC,0BAA0B,GAAG,IAAI,GAAG,KAAK,CAAC,CAAC;oBAC9E,MAAM,QAAQ,GAAG,mBAAS,CAAC,EAAE,CACzB,mBAAmB,EACnB,mBAAS,CAAC,OAAO,CAAC,kCAAkC,CAAC,EACrD,QAAQ,CACX,CAAC;oBACF,UAAU,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC,CAAC;oBACxC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,mBAAS,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;oBACrD,IAAI,KAAK,EAAE;wBACP,KAAK,GAAG,mBAAS,CAAC,KAAK,CAAC,QAAQ,EAAE,IAAI,EAAE,KAAY,CAAC,CAAC;qBACzD;iBACJ;gBAED,IAAI,MAAM,IAAI,MAAM,EAAE;
|
|
1
|
+
{"version":3,"file":"GTFSStopModel.js","sourceRoot":"","sources":["../../../../src/output-gateway/ropid-gtfs/models/GTFSStopModel.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,10 +1,9 @@
|
|
|
1
1
|
import { ParsedQs } from "qs";
|
|
2
|
-
import { MomentInput } from "@golemio/core/dist/shared/moment-timezone";
|
|
3
2
|
export declare class RopidRouterUtils {
|
|
4
3
|
/**
|
|
5
4
|
* Format to ISO 8601 (without milliseconds)
|
|
6
5
|
*/
|
|
7
|
-
static formatTimestamp: (timestamp:
|
|
6
|
+
static formatTimestamp: (timestamp: any, preferredTimezone: string, shouldParseTimestamp?: boolean) => string | null;
|
|
8
7
|
/**
|
|
9
8
|
* Validate and return timezone (it is possible to use _ symbol instead of URL encoded / symbol)
|
|
10
9
|
*/
|
|
@@ -4,10 +4,10 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
exports.RopidRouterUtils = void 0;
|
|
7
|
+
const config_1 = require("@golemio/core/dist/output-gateway/config");
|
|
8
|
+
const Logger_1 = require("@golemio/core/dist/output-gateway/Logger");
|
|
7
9
|
const golemio_errors_1 = require("@golemio/core/dist/shared/golemio-errors");
|
|
8
10
|
const moment_timezone_1 = __importDefault(require("@golemio/core/dist/shared/moment-timezone"));
|
|
9
|
-
const Logger_1 = require("@golemio/core/dist/output-gateway/Logger");
|
|
10
|
-
const config_1 = require("@golemio/core/dist/output-gateway/config");
|
|
11
11
|
class RopidRouterUtils {
|
|
12
12
|
}
|
|
13
13
|
exports.RopidRouterUtils = RopidRouterUtils;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RopidRouterUtils.js","sourceRoot":"","sources":["../../../src/output-gateway/shared/RopidRouterUtils.ts"],"names":[],"mappings":";;;;;;
|
|
1
|
+
{"version":3,"file":"RopidRouterUtils.js","sourceRoot":"","sources":["../../../src/output-gateway/shared/RopidRouterUtils.ts"],"names":[],"mappings":";;;;;;AAAA,qEAAkE;AAClE,qEAA+D;AAC/D,6EAAuE;AACvE,gGAA+D;AAG/D,MAAa,gBAAgB;;AAA7B,4CAsCC;AArCG;;GAEG;AACW,gCAAe,GAAG,CAAC,SAAc,EAAE,iBAAyB,EAAE,oBAAoB,GAAG,KAAK,EAAiB,EAAE;IACvH,IAAI,CAAC,SAAS;QAAE,OAAO,IAAI,CAAC;IAE5B,IAAI;QACA,MAAM,QAAQ,GAAG,IAAA,yBAAM,EAAC,oBAAoB,CAAC,CAAC,CAAC,QAAQ,CAAC,SAAmB,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;aACxF,EAAE,CAAC,iBAAiB,CAAC;aACrB,MAAM,EAAE,CAAC;QAEd,IAAI,QAAQ,KAAK,cAAc,EAAE;YAC7B,YAAG,CAAC,KAAK,CAAC,wDAAwD,CAAC,CAAC;YACpE,OAAO,IAAI,CAAC;SACf;QAED,OAAO,QAAQ,CAAC;KACnB;IAAC,OAAO,GAAG,EAAE;QACV,YAAG,CAAC,KAAK,CAAC,wDAAwD,EAAE,GAAG,CAAC,CAAC;QACzE,OAAO,IAAI,CAAC;KACf;AACL,CAAC,CAAC;AAEF;;GAEG;AACW,0CAAyB,GAAG,CAAC,iBAAmC,EAAE,OAAe,EAAU,EAAE;IACvG,MAAM,QAAQ,GAAG,CACb,OAAO,iBAAiB,KAAK,QAAQ,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,eAAM,CAAC,gBAAgB,CAAC,eAAe,CACtG,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;IAErB,IAAI,CAAC,yBAAM,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE;QACvC,MAAM,IAAI,4BAAW,CAAC,oBAAoB,GAAG,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC;KACpF;IAED,OAAO,QAAQ,CAAC;AACpB,CAAC,CAAC"}
|