@golemio/pid 2.8.7-dev.967762143 → 2.8.7-dev.972392642
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/db/example/12_metro_line_A_gtfs_trips.sql +0 -5
- package/db/example/17_metroRailtrack.sql +357 -0
- package/db/migrations/postgresql/20230814091211-add-indexes-to-ropidgtfs-tables.js +53 -0
- package/db/migrations/postgresql/sqls/20230814091211-add-indexes-to-ropidgtfs-tables-down.sql +19 -0
- package/db/migrations/postgresql/sqls/20230814091211-add-indexes-to-ropidgtfs-tables-up.sql +19 -0
- package/dist/integration-engine/ropid-gtfs/workers/railtrack/tasks/SaveMetroRailtrackDataToDBTask.js +4 -0
- package/dist/integration-engine/ropid-gtfs/workers/railtrack/tasks/SaveMetroRailtrackDataToDBTask.js.map +1 -1
- package/dist/integration-engine/ropid-gtfs/workers/railtrack/tasks/data-access/MetroRailtrackGPSRepository.js +16 -3
- package/dist/integration-engine/ropid-gtfs/workers/railtrack/tasks/data-access/MetroRailtrackGPSRepository.js.map +1 -1
- package/dist/integration-engine/vehicle-positions/ioc/Di.js +8 -0
- package/dist/integration-engine/vehicle-positions/ioc/Di.js.map +1 -1
- package/dist/integration-engine/vehicle-positions/ioc/VPContainerToken.d.ts +3 -0
- package/dist/integration-engine/vehicle-positions/ioc/VPContainerToken.js +9 -0
- package/dist/integration-engine/vehicle-positions/ioc/VPContainerToken.js.map +1 -1
- package/dist/integration-engine/vehicle-positions/workers/runs/helpers/MetroRouteHelper.d.ts +3 -0
- package/dist/integration-engine/vehicle-positions/workers/runs/helpers/MetroRouteHelper.js +12 -0
- package/dist/integration-engine/vehicle-positions/workers/runs/helpers/MetroRouteHelper.js.map +1 -1
- package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/data-access/PositionsRepository.d.ts +1 -1
- package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/data-access/PositionsRepository.js.map +1 -1
- package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/data-access/metro/CachedMetroRailtrackLookup.d.ts +9 -0
- package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/data-access/metro/CachedMetroRailtrackLookup.js +59 -0
- package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/data-access/metro/CachedMetroRailtrackLookup.js.map +1 -0
- package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/helpers/PositionsManager.d.ts +3 -0
- package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/helpers/PositionsManager.js +113 -117
- package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/helpers/PositionsManager.js.map +1 -1
- package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/helpers/metro/MetroShapePointsFixer.d.ts +10 -0
- package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/helpers/metro/MetroShapePointsFixer.js +77 -0
- package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/helpers/metro/MetroShapePointsFixer.js.map +1 -0
- package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/interfaces/VPInterfaces.d.ts +0 -2
- package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/tasks/UpdateDelayTask.d.ts +1 -0
- package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/tasks/UpdateDelayTask.js +8 -1
- package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/tasks/UpdateDelayTask.js.map +1 -1
- package/package.json +1 -1
|
@@ -2,12 +2,15 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.VPContainer = void 0;
|
|
4
4
|
const Di_1 = require("../../ioc/Di");
|
|
5
|
+
const MetroRailtrackGPSRepository_1 = require("../../ropid-gtfs/workers/railtrack/tasks/data-access/MetroRailtrackGPSRepository");
|
|
5
6
|
const DescriptorRepository_1 = require("../workers/vehicle-descriptors/data-access/DescriptorRepository");
|
|
6
7
|
const DescriptorDataSourceFactory_1 = require("../workers/vehicle-descriptors/datasources/DescriptorDataSourceFactory");
|
|
7
8
|
const SeznamAutobusuDataSourceProvider_1 = require("../workers/vehicle-descriptors/datasources/seznam-autobusu/SeznamAutobusuDataSourceProvider");
|
|
8
9
|
const DeleteDataTask_1 = require("../workers/vehicle-descriptors/tasks/DeleteDataTask");
|
|
9
10
|
const RefreshDescriptorsTask_1 = require("../workers/vehicle-descriptors/tasks/RefreshDescriptorsTask");
|
|
10
11
|
const DescriptorTransformation_1 = require("../workers/vehicle-descriptors/transformations/DescriptorTransformation");
|
|
12
|
+
const CachedMetroRailtrackLookup_1 = require("../workers/vehicle-positions/data-access/metro/CachedMetroRailtrackLookup");
|
|
13
|
+
const MetroShapePointsFixer_1 = require("../workers/vehicle-positions/helpers/metro/MetroShapePointsFixer");
|
|
11
14
|
const VPContainerToken_1 = require("./VPContainerToken");
|
|
12
15
|
//#region Initialization
|
|
13
16
|
const VPContainer = Di_1.PidContainer.createChildContainer();
|
|
@@ -19,10 +22,15 @@ VPContainer.registerSingleton(VPContainerToken_1.VPContainerToken.DescriptorData
|
|
|
19
22
|
//#endregion
|
|
20
23
|
//#region Repositories
|
|
21
24
|
VPContainer.register(VPContainerToken_1.VPContainerToken.DescriptorRepository, DescriptorRepository_1.DescriptorRepository);
|
|
25
|
+
VPContainer.registerSingleton(VPContainerToken_1.VPContainerToken.MetroRailtrackGPSRepository, MetroRailtrackGPSRepository_1.MetroRailtrackGPSRepository);
|
|
26
|
+
VPContainer.registerSingleton(VPContainerToken_1.VPContainerToken.CachedMetroRailTrackLookup, CachedMetroRailtrackLookup_1.CachedMetroRailTrackLookup);
|
|
22
27
|
//#endregion
|
|
23
28
|
//#region Transformations
|
|
24
29
|
VPContainer.register(VPContainerToken_1.VPContainerToken.DescriptorTransformation, DescriptorTransformation_1.DescriptorTransformation);
|
|
25
30
|
//#endregion
|
|
31
|
+
//#region Helpers
|
|
32
|
+
VPContainer.register(VPContainerToken_1.VPContainerToken.MetroShapePointsFixer, MetroShapePointsFixer_1.MetroShapePointsFixer);
|
|
33
|
+
//#endregion
|
|
26
34
|
//#region Tasks
|
|
27
35
|
VPContainer.registerSingleton(VPContainerToken_1.VPContainerToken.RefreshDescriptorsTask, RefreshDescriptorsTask_1.RefreshDescriptorsTask);
|
|
28
36
|
VPContainer.registerSingleton(VPContainerToken_1.VPContainerToken.DeleteDataTask, DeleteDataTask_1.DeleteDataTask);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Di.js","sourceRoot":"","sources":["../../../../src/integration-engine/vehicle-positions/ioc/Di.ts"],"names":[],"mappings":";;;AAAA,qCAA0C;
|
|
1
|
+
{"version":3,"file":"Di.js","sourceRoot":"","sources":["../../../../src/integration-engine/vehicle-positions/ioc/Di.ts"],"names":[],"mappings":";;;AAAA,qCAA0C;AAC1C,kIAA6H;AAE7H,0GAAuG;AACvG,wHAAqH;AACrH,kJAA+I;AAC/I,wFAAqF;AACrF,wGAAqG;AACrG,sHAAmH;AACnH,0HAAuH;AACvH,4GAAyG;AACzG,yDAAsD;AAEtD,wBAAwB;AACxB,MAAM,WAAW,GAAwB,iBAAY,CAAC,oBAAoB,EAAE,CAAC;AA2BpE,kCAAW;AA1BpB,YAAY;AAEZ,qBAAqB;AACrB,WAAW,CAAC,QAAQ,CAAC,mCAAgB,CAAC,gCAAgC,EAAE,mEAAgC,CAAC,CAAC;AAC1G,WAAW,CAAC,iBAAiB,CAAC,mCAAgB,CAAC,2BAA2B,EAAE,yDAA2B,CAAC,CAAC;AACzG,YAAY;AAEZ,sBAAsB;AACtB,WAAW,CAAC,QAAQ,CAAC,mCAAgB,CAAC,oBAAoB,EAAE,2CAAoB,CAAC,CAAC;AAClF,WAAW,CAAC,iBAAiB,CAAC,mCAAgB,CAAC,2BAA2B,EAAE,yDAA2B,CAAC,CAAC;AACzG,WAAW,CAAC,iBAAiB,CAAC,mCAAgB,CAAC,0BAA0B,EAAE,uDAA0B,CAAC,CAAC;AACvG,YAAY;AAEZ,yBAAyB;AACzB,WAAW,CAAC,QAAQ,CAAC,mCAAgB,CAAC,wBAAwB,EAAE,mDAAwB,CAAC,CAAC;AAC1F,YAAY;AAEZ,iBAAiB;AACjB,WAAW,CAAC,QAAQ,CAAC,mCAAgB,CAAC,qBAAqB,EAAE,6CAAqB,CAAC,CAAC;AACpF,YAAY;AAEZ,eAAe;AACf,WAAW,CAAC,iBAAiB,CAAC,mCAAgB,CAAC,sBAAsB,EAAE,+CAAsB,CAAC,CAAC;AAC/F,WAAW,CAAC,iBAAiB,CAAC,mCAAgB,CAAC,cAAc,EAAE,+BAAc,CAAC,CAAC"}
|
|
@@ -5,5 +5,8 @@ declare const VPContainerToken: {
|
|
|
5
5
|
DescriptorTransformation: symbol;
|
|
6
6
|
RefreshDescriptorsTask: symbol;
|
|
7
7
|
DeleteDataTask: symbol;
|
|
8
|
+
MetroRailtrackGPSRepository: symbol;
|
|
9
|
+
CachedMetroRailTrackLookup: symbol;
|
|
10
|
+
MetroShapePointsFixer: symbol;
|
|
8
11
|
};
|
|
9
12
|
export { VPContainerToken };
|
|
@@ -10,6 +10,15 @@ const VPContainerToken = {
|
|
|
10
10
|
RefreshDescriptorsTask: Symbol(),
|
|
11
11
|
DeleteDataTask: Symbol(),
|
|
12
12
|
//#endregion
|
|
13
|
+
//#region Vehicle Positions
|
|
14
|
+
//#region DataAccess
|
|
15
|
+
MetroRailtrackGPSRepository: Symbol(),
|
|
16
|
+
CachedMetroRailTrackLookup: Symbol(),
|
|
17
|
+
//#endregion
|
|
18
|
+
//#region Helpers
|
|
19
|
+
MetroShapePointsFixer: Symbol(),
|
|
20
|
+
//#endregion
|
|
21
|
+
//#endregion
|
|
13
22
|
};
|
|
14
23
|
exports.VPContainerToken = VPContainerToken;
|
|
15
24
|
//# sourceMappingURL=VPContainerToken.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"VPContainerToken.js","sourceRoot":"","sources":["../../../../src/integration-engine/vehicle-positions/ioc/VPContainerToken.ts"],"names":[],"mappings":";;;AAAA,MAAM,gBAAgB,GAAG;IACrB,6BAA6B;IAC7B,gCAAgC,EAAE,MAAM,EAAE;IAC1C,2BAA2B,EAAE,MAAM,EAAE;IACrC,oBAAoB,EAAE,MAAM,EAAE;IAC9B,wBAAwB,EAAE,MAAM,EAAE;IAClC,sBAAsB,EAAE,MAAM,EAAE;IAChC,cAAc,EAAE,MAAM,EAAE;IACxB,YAAY;CACf,CAAC;AAEO,4CAAgB"}
|
|
1
|
+
{"version":3,"file":"VPContainerToken.js","sourceRoot":"","sources":["../../../../src/integration-engine/vehicle-positions/ioc/VPContainerToken.ts"],"names":[],"mappings":";;;AAAA,MAAM,gBAAgB,GAAG;IACrB,6BAA6B;IAC7B,gCAAgC,EAAE,MAAM,EAAE;IAC1C,2BAA2B,EAAE,MAAM,EAAE;IACrC,oBAAoB,EAAE,MAAM,EAAE;IAC9B,wBAAwB,EAAE,MAAM,EAAE;IAClC,sBAAsB,EAAE,MAAM,EAAE;IAChC,cAAc,EAAE,MAAM,EAAE;IACxB,YAAY;IAEZ,2BAA2B;IAE3B,oBAAoB;IACpB,2BAA2B,EAAE,MAAM,EAAE;IACrC,0BAA0B,EAAE,MAAM,EAAE;IACpC,YAAY;IAEZ,iBAAiB;IACjB,qBAAqB,EAAE,MAAM,EAAE;IAC/B,YAAY;IAEZ,YAAY;CACf,CAAC;AAEO,4CAAgB"}
|
package/dist/integration-engine/vehicle-positions/workers/runs/helpers/MetroRouteHelper.d.ts
CHANGED
|
@@ -4,5 +4,8 @@ export declare enum MetroRouteName {
|
|
|
4
4
|
LINE_C = "C"
|
|
5
5
|
}
|
|
6
6
|
export declare class MetroRouteHelper {
|
|
7
|
+
private static tripToRouteMetroMap;
|
|
7
8
|
static getRouteId(routeName: MetroRouteName | string): string | undefined;
|
|
9
|
+
static getTripRouteMap(): Record<string, string>;
|
|
10
|
+
static getRouteName(tripId: string): string;
|
|
8
11
|
}
|
|
@@ -16,6 +16,18 @@ class MetroRouteHelper {
|
|
|
16
16
|
static getRouteId(routeName) {
|
|
17
17
|
return metroRouteId[routeName];
|
|
18
18
|
}
|
|
19
|
+
static getTripRouteMap() {
|
|
20
|
+
if (!this.tripToRouteMetroMap) {
|
|
21
|
+
this.tripToRouteMetroMap = {};
|
|
22
|
+
for (const routeName of Object.values(MetroRouteName)) {
|
|
23
|
+
this.tripToRouteMetroMap[`${MetroRouteHelper.getRouteId(routeName)}`] = routeName.toString();
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
return this.tripToRouteMetroMap;
|
|
27
|
+
}
|
|
28
|
+
static getRouteName(tripId) {
|
|
29
|
+
return this.getTripRouteMap()[tripId.substring(0, 3)];
|
|
30
|
+
}
|
|
19
31
|
}
|
|
20
32
|
exports.MetroRouteHelper = MetroRouteHelper;
|
|
21
33
|
//# sourceMappingURL=MetroRouteHelper.js.map
|
package/dist/integration-engine/vehicle-positions/workers/runs/helpers/MetroRouteHelper.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MetroRouteHelper.js","sourceRoot":"","sources":["../../../../../../src/integration-engine/vehicle-positions/workers/runs/helpers/MetroRouteHelper.ts"],"names":[],"mappings":";;;AAAA,IAAY,cAIX;AAJD,WAAY,cAAc;IACtB,8BAAY,CAAA;IACZ,8BAAY,CAAA;IACZ,8BAAY,CAAA;AAChB,CAAC,EAJW,cAAc,8BAAd,cAAc,QAIzB;AAED,MAAM,YAAY,GAAwD;IACtE,CAAC,cAAc,CAAC,MAAM,CAAC,EAAE,KAAK;IAC9B,CAAC,cAAc,CAAC,MAAM,CAAC,EAAE,KAAK;IAC9B,CAAC,cAAc,CAAC,MAAM,CAAC,EAAE,KAAK;CACjC,CAAC;AAEF,MAAa,gBAAgB;
|
|
1
|
+
{"version":3,"file":"MetroRouteHelper.js","sourceRoot":"","sources":["../../../../../../src/integration-engine/vehicle-positions/workers/runs/helpers/MetroRouteHelper.ts"],"names":[],"mappings":";;;AAAA,IAAY,cAIX;AAJD,WAAY,cAAc;IACtB,8BAAY,CAAA;IACZ,8BAAY,CAAA;IACZ,8BAAY,CAAA;AAChB,CAAC,EAJW,cAAc,8BAAd,cAAc,QAIzB;AAED,MAAM,YAAY,GAAwD;IACtE,CAAC,cAAc,CAAC,MAAM,CAAC,EAAE,KAAK;IAC9B,CAAC,cAAc,CAAC,MAAM,CAAC,EAAE,KAAK;IAC9B,CAAC,cAAc,CAAC,MAAM,CAAC,EAAE,KAAK;CACjC,CAAC;AAEF,MAAa,gBAAgB;IAGlB,MAAM,CAAC,UAAU,CAAC,SAAkC;QACvD,OAAO,YAAY,CAAC,SAAS,CAAC,CAAC;IACnC,CAAC;IAEM,MAAM,CAAC,eAAe;QACzB,IAAI,CAAC,IAAI,CAAC,mBAAmB,EAAE;YAC3B,IAAI,CAAC,mBAAmB,GAAG,EAAE,CAAC;YAC9B,KAAK,MAAM,SAAS,IAAI,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC,EAAE;gBACnD,IAAI,CAAC,mBAAmB,CAAC,GAAG,gBAAgB,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,QAAQ,EAAE,CAAC;aAChG;SACJ;QAED,OAAO,IAAI,CAAC,mBAAmB,CAAC;IACpC,CAAC;IAEM,MAAM,CAAC,YAAY,CAAC,MAAc;QACrC,OAAO,IAAI,CAAC,eAAe,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAC1D,CAAC;CACJ;AArBD,4CAqBC"}
|
|
@@ -34,7 +34,7 @@ export declare class PositionsRepository extends PostgresModel implements IModel
|
|
|
34
34
|
getPositionsForUpdateDelay: (tripIds: string[]) => Promise<ITripPositions[]>;
|
|
35
35
|
bulkUpdate: (data: any[]) => Promise<any>;
|
|
36
36
|
upsertCommonRunPosition: ({ run, run_message }: IUpdateRunsGtfsTripInput, gtfsTrip: IScheduleDto, isCurrent?: boolean) => Promise<any>;
|
|
37
|
-
upsertMetroRunPosition: (runInput: IMetroRunInputForProcessing, gtfsTrip: IScheduleDto, isCurrent?: boolean) => Promise<
|
|
37
|
+
upsertMetroRunPosition: (runInput: IMetroRunInputForProcessing, gtfsTrip: IScheduleDto, isCurrent?: boolean) => Promise<IPositionDto>;
|
|
38
38
|
deleteNHoursOldData: (hours: number) => Promise<number>;
|
|
39
39
|
createNotPublic: (positionDto: Partial<IPositionDto>) => Promise<PositionDto>;
|
|
40
40
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PositionsRepository.js","sourceRoot":"","sources":["../../../../../../src/integration-engine/vehicle-positions/workers/vehicle-positions/data-access/PositionsRepository.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"PositionsRepository.js","sourceRoot":"","sources":["../../../../../../src/integration-engine/vehicle-positions/workers/vehicle-positions/data-access/PositionsRepository.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { MetroRailtrackGPSRepository } from "../../../../../ropid-gtfs/workers/railtrack/tasks/data-access/MetroRailtrackGPSRepository";
|
|
2
|
+
import { IMetroRailtrackGPSModel } from "../../../../../../schema-definitions/ropid-gtfs/models/railtrack/interfaces/IMetroRailtrackGPSModel";
|
|
3
|
+
export declare class CachedMetroRailTrackLookup {
|
|
4
|
+
private metroRailtrackGPSRepository;
|
|
5
|
+
private cachedLookup;
|
|
6
|
+
constructor(metroRailtrackGPSRepository: MetroRailtrackGPSRepository);
|
|
7
|
+
getAllByRouteName(route_name: string): Promise<IMetroRailtrackGPSModel[]>;
|
|
8
|
+
private groupByRouteName;
|
|
9
|
+
}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
|
+
};
|
|
11
|
+
var __param = (this && this.__param) || function (paramIndex, decorator) {
|
|
12
|
+
return function (target, key) { decorator(target, key, paramIndex); }
|
|
13
|
+
};
|
|
14
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
15
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
16
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
17
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
18
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
19
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
20
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
21
|
+
});
|
|
22
|
+
};
|
|
23
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
24
|
+
exports.CachedMetroRailTrackLookup = void 0;
|
|
25
|
+
const MetroRailtrackGPSRepository_1 = require("../../../../../ropid-gtfs/workers/railtrack/tasks/data-access/MetroRailtrackGPSRepository");
|
|
26
|
+
const VPContainerToken_1 = require("../../../../ioc/VPContainerToken");
|
|
27
|
+
const tsyringe_1 = require("@golemio/core/dist/shared/tsyringe");
|
|
28
|
+
/*
|
|
29
|
+
* In case of update of the data for metro railtrack. It is necessary to restart the service to reload cache.
|
|
30
|
+
*/
|
|
31
|
+
let CachedMetroRailTrackLookup = exports.CachedMetroRailTrackLookup = class CachedMetroRailTrackLookup {
|
|
32
|
+
constructor(metroRailtrackGPSRepository) {
|
|
33
|
+
this.metroRailtrackGPSRepository = metroRailtrackGPSRepository;
|
|
34
|
+
}
|
|
35
|
+
getAllByRouteName(route_name) {
|
|
36
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
37
|
+
if (!this.cachedLookup) {
|
|
38
|
+
const result = yield this.metroRailtrackGPSRepository["sequelizeModel"].findAll({
|
|
39
|
+
raw: true,
|
|
40
|
+
});
|
|
41
|
+
this.cachedLookup = this.groupByRouteName(result);
|
|
42
|
+
}
|
|
43
|
+
return this.cachedLookup[route_name];
|
|
44
|
+
});
|
|
45
|
+
}
|
|
46
|
+
groupByRouteName(result) {
|
|
47
|
+
return result.reduce((r, a) => {
|
|
48
|
+
r[a.route_name] = r[a.route_name] || [];
|
|
49
|
+
r[a.route_name].push(a);
|
|
50
|
+
return r;
|
|
51
|
+
}, Object.create(null));
|
|
52
|
+
}
|
|
53
|
+
};
|
|
54
|
+
exports.CachedMetroRailTrackLookup = CachedMetroRailTrackLookup = __decorate([
|
|
55
|
+
(0, tsyringe_1.injectable)(),
|
|
56
|
+
__param(0, (0, tsyringe_1.inject)(VPContainerToken_1.VPContainerToken.MetroRailtrackGPSRepository)),
|
|
57
|
+
__metadata("design:paramtypes", [MetroRailtrackGPSRepository_1.MetroRailtrackGPSRepository])
|
|
58
|
+
], CachedMetroRailTrackLookup);
|
|
59
|
+
//# sourceMappingURL=CachedMetroRailtrackLookup.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CachedMetroRailtrackLookup.js","sourceRoot":"","sources":["../../../../../../../src/integration-engine/vehicle-positions/workers/vehicle-positions/data-access/metro/CachedMetroRailtrackLookup.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;AAAA,2IAA6H;AAC7H,uEAA8E;AAG9E,iEAAwE;AAExE;;GAEG;AAGI,IAAM,0BAA0B,wCAAhC,MAAM,0BAA0B;IAGnC,YACkE,2BAAwD;QAAxD,gCAA2B,GAA3B,2BAA2B,CAA6B;IACvH,CAAC;IAES,iBAAiB,CAAC,UAAkB;;YAC7C,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;gBACpB,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,2BAA2B,CAAC,gBAAgB,CAAC,CAAC,OAAO,CAAyB;oBACpG,GAAG,EAAE,IAAI;iBACZ,CAAC,CAAC;gBACH,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;aACrD;YAED,OAAO,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC;QACzC,CAAC;KAAA;IAEO,gBAAgB,CAAC,MAAgC;QACrD,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;YAC1B,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;YACxC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YACxB,OAAO,CAAC,CAAC;QACb,CAAC,EAAE,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;IAC5B,CAAC;CACJ,CAAA;qCAzBY,0BAA0B;IADtC,IAAA,qBAAU,GAAE;IAKJ,WAAA,IAAA,iBAAM,EAAC,mCAAgB,CAAC,2BAA2B,CAAC,CAAA;qCAAsC,yDAA2B;GAJjH,0BAA0B,CAyBtC"}
|
|
@@ -71,6 +71,9 @@ export default class PositionsManager {
|
|
|
71
71
|
* @returns {number} - Result delay in seconds, can be negative for trip ahead
|
|
72
72
|
*/
|
|
73
73
|
private static getCorrectedTimeDelay;
|
|
74
|
+
private static handleContext;
|
|
75
|
+
private static handleNotTracking;
|
|
76
|
+
private static handleTracking;
|
|
74
77
|
/**
|
|
75
78
|
* Get delay in seconds for positions before track to ensure correct delay propagation
|
|
76
79
|
*/
|
|
@@ -46,6 +46,107 @@ const PositionHandlerEnum_1 = require("./PositionHandlerEnum");
|
|
|
46
46
|
const ValidToCalculator_1 = __importDefault(require("./ValidToCalculator"));
|
|
47
47
|
const ComputeDelayHelper_1 = __importDefault(require("./compute-positions/ComputeDelayHelper"));
|
|
48
48
|
class PositionsManager {
|
|
49
|
+
static handleContext(context, positionToUpdate, position, gtfsRouteType) {
|
|
50
|
+
context.isLastPositionAfterTrack =
|
|
51
|
+
(positionToUpdate === null || positionToUpdate === void 0 ? void 0 : positionToUpdate.state_position) === const_1.StatePositionEnum.AFTER_TRACK ||
|
|
52
|
+
position.state_position === const_1.StatePositionEnum.AFTER_TRACK;
|
|
53
|
+
// set last known BEFORE_TRACK_DELAYED position
|
|
54
|
+
if (position.state_position === const_1.StatePositionEnum.BEFORE_TRACK_DELAYED) {
|
|
55
|
+
context.lastPositionBeforeTrackDelayed = {
|
|
56
|
+
delay: position.delay,
|
|
57
|
+
origin_timestamp: position.origin_timestamp.getTime(),
|
|
58
|
+
};
|
|
59
|
+
}
|
|
60
|
+
// set last position tracking (only for at_stop and on_track)
|
|
61
|
+
if ((positionToUpdate === null || positionToUpdate === void 0 ? void 0 : positionToUpdate.state_position) === const_1.StatePositionEnum.AT_STOP ||
|
|
62
|
+
(positionToUpdate === null || positionToUpdate === void 0 ? void 0 : positionToUpdate.state_position) === const_1.StatePositionEnum.ON_TRACK ||
|
|
63
|
+
position.state_position === const_1.StatePositionEnum.AT_STOP ||
|
|
64
|
+
position.state_position === const_1.StatePositionEnum.ON_TRACK) {
|
|
65
|
+
context.lastPositionTracking = turf.point([position.lng, position.lat], Object.assign(Object.assign({}, position), positionToUpdate));
|
|
66
|
+
}
|
|
67
|
+
// set new first position at stop streak if this stop seqence is set and it is not same as before
|
|
68
|
+
if (positionToUpdate
|
|
69
|
+
? positionToUpdate.this_stop_sequence &&
|
|
70
|
+
context.atStopStreak.stop_sequence !== positionToUpdate.this_stop_sequence
|
|
71
|
+
: position.this_stop_sequence && context.atStopStreak.stop_sequence !== position.this_stop_sequence) {
|
|
72
|
+
context.atStopStreak.stop_sequence = positionToUpdate
|
|
73
|
+
? positionToUpdate.this_stop_sequence
|
|
74
|
+
: position.this_stop_sequence;
|
|
75
|
+
context.atStopStreak.firstPositionTimestamp = position.origin_timestamp.getTime();
|
|
76
|
+
context.atStopStreak.firstPositionDelay = positionToUpdate ? positionToUpdate.delay : position.delay;
|
|
77
|
+
}
|
|
78
|
+
// IF currently valid updated position / position was processed before
|
|
79
|
+
// and it is NOT AT_STOP
|
|
80
|
+
// then disrupt atStopStreak
|
|
81
|
+
if (positionToUpdate &&
|
|
82
|
+
positionToUpdate.state_position !== const_1.StatePositionEnum.MISMATCHED &&
|
|
83
|
+
!positionToUpdate.this_stop_sequence) {
|
|
84
|
+
context.atStopStreak.stop_sequence = null;
|
|
85
|
+
}
|
|
86
|
+
else if (!positionToUpdate && !position.this_stop_sequence) {
|
|
87
|
+
context.atStopStreak.stop_sequence = null;
|
|
88
|
+
}
|
|
89
|
+
// duplicated or mismatched position should not be considered at all
|
|
90
|
+
if ((positionToUpdate === null || positionToUpdate === void 0 ? void 0 : positionToUpdate.state_position) !== const_1.StatePositionEnum.DUPLICATE &&
|
|
91
|
+
(positionToUpdate === null || positionToUpdate === void 0 ? void 0 : positionToUpdate.state_position) !== const_1.StatePositionEnum.INVISIBLE &&
|
|
92
|
+
(positionToUpdate === null || positionToUpdate === void 0 ? void 0 : positionToUpdate.state_position) !== const_1.StatePositionEnum.MISMATCHED) {
|
|
93
|
+
context.lastPositionId = position.id;
|
|
94
|
+
context.lastPositionCanceled = position.is_canceled;
|
|
95
|
+
context.lastPositionOriginTimestamp = position.origin_timestamp.getTime();
|
|
96
|
+
ComputeDelayHelper_1.default.updateContext(context, positionToUpdate, position, gtfsRouteType);
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
static handleNotTracking(tripPositions, context, position, startTimestamp, schedule, positionToUpdate, startDayTimestamp, gtfsRouteType) {
|
|
100
|
+
const firstShapesAnchorPoint = tripPositions.gtfsData.shapes_anchor_points[0];
|
|
101
|
+
if (context.lastPositionTracking === null) {
|
|
102
|
+
const firstStopTime = tripPositions.gtfsData.stop_times[0];
|
|
103
|
+
// if there is propagated delay we can use it for new position
|
|
104
|
+
const lastPositionDelayed = context.lastPositionBeforeTrackDelayed;
|
|
105
|
+
// if there is no delay to duplicate and DPP trip is far from start then invisible
|
|
106
|
+
const setAsInvisible = !lastPositionDelayed &&
|
|
107
|
+
DPPUtils_1.default.isInvisible(tripPositions.agency_name_scheduled, position.origin_timestamp, startTimestamp, [position.lng, position.lat], firstShapesAnchorPoint.coordinates, schedule, tripPositions.gtfs_trip_id, context.lastPositionTracking, position.tracking);
|
|
108
|
+
positionToUpdate = Object.assign({ id: position.id, next_stop_arrival_time: new Date(startDayTimestamp + firstStopTime.arrival_time_seconds * 1000), next_stop_departure_time: new Date(startDayTimestamp + firstStopTime.departure_time_seconds * 1000), next_stop_id: firstStopTime.stop_id, next_stop_sequence: firstStopTime.stop_sequence, next_stop_name: firstStopTime.stop.stop_name, shape_dist_traveled: firstStopTime.shape_dist_traveled, state_position: setAsInvisible ? const_1.StatePositionEnum.INVISIBLE : const_1.StatePositionEnum.BEFORE_TRACK, state_process: const_1.StateProcessEnum.PROCESSED }, (firstStopTime.stop_headsign && {
|
|
109
|
+
last_stop_headsign: firstStopTime.stop_headsign,
|
|
110
|
+
}));
|
|
111
|
+
if (positionToUpdate.state_position === const_1.StatePositionEnum.BEFORE_TRACK) {
|
|
112
|
+
positionToUpdate.delay = this.getDelayBeforeTrack(lastPositionDelayed === null || lastPositionDelayed === void 0 ? void 0 : lastPositionDelayed.delay, firstStopTime.departure_time_seconds, position.origin_timestamp.getTime(), startDayTimestamp);
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
else {
|
|
116
|
+
// if there is tracking 2 position with same origin_timestamp then this position is duplicate
|
|
117
|
+
const statePosition = position.origin_timestamp.getTime() === context.lastPositionOriginTimestamp ||
|
|
118
|
+
tripPositions.positions.findIndex((positionItem) => positionItem.origin_timestamp.getTime() === position.origin_timestamp.getTime() &&
|
|
119
|
+
positionItem.tracking === const_1.PositionTrackingEnum.TRACKING) >= 0
|
|
120
|
+
? const_1.StatePositionEnum.DUPLICATE
|
|
121
|
+
: const_1.StatePositionEnum.AFTER_TRACK;
|
|
122
|
+
const lastShapesAnchorPoint = tripPositions.gtfsData.shapes_anchor_points[tripPositions.gtfsData.shapes_anchor_points.length - 1];
|
|
123
|
+
const lastStopTime = tripPositions.gtfsData.stop_times[tripPositions.gtfsData.stop_times.length - 1];
|
|
124
|
+
// set as invisible if there are some AFTER_TRACK before
|
|
125
|
+
const setAsInvisible = DPPUtils_1.default.isInvisible(tripPositions.agency_name_scheduled, position.origin_timestamp, startTimestamp, [position.lng, position.lat], firstShapesAnchorPoint.coordinates, schedule, tripPositions.gtfs_trip_id, context.lastPositionTracking, position.tracking) && statePosition === const_1.StatePositionEnum.AFTER_TRACK;
|
|
126
|
+
positionToUpdate = Object.assign({ id: position.id, last_stop_arrival_time: new Date(startDayTimestamp + lastShapesAnchorPoint.time_scheduled_seconds * 1000), last_stop_departure_time: new Date(startDayTimestamp + lastShapesAnchorPoint.time_scheduled_seconds * 1000), last_stop_id: lastStopTime.stop_id, last_stop_sequence: lastShapesAnchorPoint.last_stop_sequence, shape_dist_traveled: lastShapesAnchorPoint.shape_dist_traveled, state_position: setAsInvisible ? const_1.StatePositionEnum.INVISIBLE : statePosition, state_process: const_1.StateProcessEnum.PROCESSED }, (lastStopTime.stop_headsign && {
|
|
127
|
+
last_stop_headsign: lastStopTime.stop_headsign,
|
|
128
|
+
}));
|
|
129
|
+
positionToUpdate = ComputeDelayHelper_1.default.updatePositionToUpdate(context, positionToUpdate, position, gtfsRouteType);
|
|
130
|
+
}
|
|
131
|
+
return positionToUpdate;
|
|
132
|
+
}
|
|
133
|
+
static handleTracking(position, positionToUpdate, tripPositions, context, startDayTimestamp, endTimestamp, gtfsRouteType) {
|
|
134
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
135
|
+
const currentPosition = turf.point([position.lng, position.lat], {
|
|
136
|
+
id: position.id,
|
|
137
|
+
origin_time: position.origin_time,
|
|
138
|
+
origin_timestamp: position.origin_timestamp,
|
|
139
|
+
scheduled_timestamp: position.scheduled_timestamp,
|
|
140
|
+
this_stop_id: position.this_stop_id,
|
|
141
|
+
tcp_event: position.tcp_event,
|
|
142
|
+
});
|
|
143
|
+
positionToUpdate = yield this.getEstimatedPoint(tripPositions.gtfsData, currentPosition, context, startDayTimestamp, endTimestamp, tripPositions.gtfs_route_type);
|
|
144
|
+
if (positionToUpdate.state_position !== const_1.StatePositionEnum.MISMATCHED) {
|
|
145
|
+
positionToUpdate = ComputeDelayHelper_1.default.updatePositionToUpdate(context, positionToUpdate, position, gtfsRouteType);
|
|
146
|
+
}
|
|
147
|
+
return positionToUpdate;
|
|
148
|
+
});
|
|
149
|
+
}
|
|
49
150
|
/**
|
|
50
151
|
* Get delay in seconds for positions before track to ensure correct delay propagation
|
|
51
152
|
*/
|
|
@@ -58,34 +159,17 @@ class PositionsManager {
|
|
|
58
159
|
return Math.max(lastPositionDelay, positionOriginTimeInSeconds - departureTimeInSeconds);
|
|
59
160
|
}
|
|
60
161
|
static getStateAndStopSequences(gtfsRouteType, tripStopTimes, thisClosestPoint, positionProperties, context) {
|
|
61
|
-
var _b
|
|
162
|
+
var _b;
|
|
62
163
|
let statePosition = thisClosestPoint.this_stop_sequence ? const_1.StatePositionEnum.AT_STOP : const_1.StatePositionEnum.ON_TRACK;
|
|
63
164
|
let thisStopSequence = thisClosestPoint.this_stop_sequence;
|
|
64
165
|
let lastStopSequence = thisClosestPoint.last_stop_sequence;
|
|
65
166
|
let nextStopSequence = thisClosestPoint.next_stop_sequence;
|
|
66
|
-
if (gtfsRouteType === RouteTypeEnums_1.GTFSRouteTypeEnum.METRO) {
|
|
67
|
-
thisStopSequence = null;
|
|
68
|
-
if (positionProperties.this_stop_id) {
|
|
69
|
-
const thisStopTime = tripStopTimes.find((stopTime) => stopTime.stop_id === positionProperties.this_stop_id);
|
|
70
|
-
if (thisStopTime) {
|
|
71
|
-
statePosition = const_1.StatePositionEnum.AT_STOP;
|
|
72
|
-
thisStopSequence = thisStopTime.stop_sequence;
|
|
73
|
-
lastStopSequence = thisStopSequence;
|
|
74
|
-
nextStopSequence = Math.min(tripStopTimes.length, thisStopSequence + 1);
|
|
75
|
-
}
|
|
76
|
-
}
|
|
77
|
-
if (thisStopSequence === null) {
|
|
78
|
-
statePosition = const_1.StatePositionEnum.ON_TRACK;
|
|
79
|
-
if (context === null || context === void 0 ? void 0 : context.lastPositionTracking) {
|
|
80
|
-
lastStopSequence = (_b = context.lastPositionTracking.properties.last_stop_sequence) !== null && _b !== void 0 ? _b : lastStopSequence;
|
|
81
|
-
nextStopSequence = (_c = context.lastPositionTracking.properties.next_stop_sequence) !== null && _c !== void 0 ? _c : nextStopSequence;
|
|
82
|
-
}
|
|
83
|
-
}
|
|
84
|
-
}
|
|
85
167
|
// if current positions's TCP event is 'T' and previous position is tracked
|
|
86
|
-
|
|
168
|
+
if (gtfsRouteType !== RouteTypeEnums_1.GTFSRouteTypeEnum.METRO &&
|
|
169
|
+
positionProperties.tcp_event === const_1.TCPEventEnum.TIME &&
|
|
170
|
+
(context === null || context === void 0 ? void 0 : context.lastPositionTracking)) {
|
|
87
171
|
const previousPositionTcpEvent = context.lastPositionTracking.properties.tcp_event;
|
|
88
|
-
const previousLastStopSequence = (
|
|
172
|
+
const previousLastStopSequence = (_b = context.lastPositionTracking.properties.last_stop_sequence) !== null && _b !== void 0 ? _b : 0;
|
|
89
173
|
// if previous position was 'P' and current last stop sequence is lower than the previous last stop sequence
|
|
90
174
|
// or if previous position was 'O', current position is at stop
|
|
91
175
|
// and current last stop sequence is lower than the previous last stop sequence
|
|
@@ -145,10 +229,8 @@ PositionsManager.computePositions = (tripPositions, schedule) => __awaiter(void
|
|
|
145
229
|
const startTimestamp = tripPositions.start_timestamp.getTime();
|
|
146
230
|
const endTimestamp = (_c = (_b = tripPositions.end_timestamp) === null || _b === void 0 ? void 0 : _b.getTime()) !== null && _c !== void 0 ? _c : 0;
|
|
147
231
|
const startDayTimestamp = _a.getStartDayTimestamp(startTimestamp, tripPositions.gtfsData.shapes_anchor_points[0].time_scheduled_seconds);
|
|
148
|
-
const gtfsRouteType = tripPositions.gtfs_route_type;
|
|
149
232
|
const context = PositionsManager.getCurrentContext(tripPositions);
|
|
150
|
-
|
|
151
|
-
return PositionsManager.updatePositions({ tripPositions, startTimestamp, endTimestamp, startDayTimestamp, context, computedPositions, gtfsRouteType }, schedule);
|
|
233
|
+
return PositionsManager.updatePositions({ tripPositions, startTimestamp, endTimestamp, startDayTimestamp, context }, schedule);
|
|
152
234
|
});
|
|
153
235
|
/**
|
|
154
236
|
* Takes position one by one, set proper handler for type of position, and do the process of position
|
|
@@ -159,59 +241,20 @@ PositionsManager.computePositions = (tripPositions, schedule) => __awaiter(void
|
|
|
159
241
|
* @returns {void} - void
|
|
160
242
|
*/
|
|
161
243
|
PositionsManager.updatePositions = (options, schedule) => __awaiter(void 0, void 0, void 0, function* () {
|
|
162
|
-
const
|
|
244
|
+
const computedPositions = [];
|
|
245
|
+
const { tripPositions, startDayTimestamp, startTimestamp, endTimestamp, context } = options;
|
|
246
|
+
const gtfsRouteType = tripPositions.gtfs_route_type;
|
|
163
247
|
for (let i = 0; i < tripPositions.positions.length; i++) {
|
|
164
248
|
const position = tripPositions.positions[i];
|
|
165
249
|
let positionToUpdate = null;
|
|
166
250
|
// situations
|
|
167
251
|
switch (_a.setPositionUpdateHandler(position)) {
|
|
168
252
|
case PositionHandlerEnum_1.PositionHandlerEnum.TRACKING:
|
|
169
|
-
|
|
170
|
-
id: position.id,
|
|
171
|
-
origin_time: position.origin_time,
|
|
172
|
-
origin_timestamp: position.origin_timestamp,
|
|
173
|
-
scheduled_timestamp: position.scheduled_timestamp,
|
|
174
|
-
this_stop_id: position.this_stop_id,
|
|
175
|
-
tcp_event: position.tcp_event,
|
|
176
|
-
});
|
|
177
|
-
positionToUpdate = yield _a.getEstimatedPoint(tripPositions.gtfsData, currentPosition, context, startDayTimestamp, endTimestamp, tripPositions.gtfs_route_type);
|
|
178
|
-
if (positionToUpdate.state_position !== const_1.StatePositionEnum.MISMATCHED) {
|
|
179
|
-
positionToUpdate = ComputeDelayHelper_1.default.updatePositionToUpdate(context, positionToUpdate, position, gtfsRouteType);
|
|
180
|
-
}
|
|
253
|
+
positionToUpdate = yield PositionsManager.handleTracking(position, positionToUpdate, tripPositions, context, startDayTimestamp, endTimestamp, gtfsRouteType);
|
|
181
254
|
break;
|
|
182
255
|
case PositionHandlerEnum_1.PositionHandlerEnum.NOT_TRACKING:
|
|
183
256
|
// if there is no previous positions with tracking status, set position as before_track
|
|
184
|
-
|
|
185
|
-
if (context.lastPositionTracking === null) {
|
|
186
|
-
const firstStopTime = tripPositions.gtfsData.stop_times[0];
|
|
187
|
-
// if there is propagated delay we can use it for new position
|
|
188
|
-
const lastPositionDelayed = context.lastPositionBeforeTrackDelayed;
|
|
189
|
-
// if there is no delay to duplicate and DPP trip is far from start then invisible
|
|
190
|
-
const setAsInvisible = !lastPositionDelayed &&
|
|
191
|
-
DPPUtils_1.default.isInvisible(tripPositions.agency_name_scheduled, position.origin_timestamp, startTimestamp, [position.lng, position.lat], firstShapesAnchorPoint.coordinates, schedule, tripPositions.gtfs_trip_id, context.lastPositionTracking, position.tracking);
|
|
192
|
-
positionToUpdate = Object.assign({ id: position.id, next_stop_arrival_time: new Date(startDayTimestamp + firstStopTime.arrival_time_seconds * 1000), next_stop_departure_time: new Date(startDayTimestamp + firstStopTime.departure_time_seconds * 1000), next_stop_id: firstStopTime.stop_id, next_stop_sequence: firstStopTime.stop_sequence, next_stop_name: firstStopTime.stop.stop_name, shape_dist_traveled: firstStopTime.shape_dist_traveled, state_position: setAsInvisible ? const_1.StatePositionEnum.INVISIBLE : const_1.StatePositionEnum.BEFORE_TRACK, state_process: const_1.StateProcessEnum.PROCESSED }, (firstStopTime.stop_headsign && {
|
|
193
|
-
last_stop_headsign: firstStopTime.stop_headsign,
|
|
194
|
-
}));
|
|
195
|
-
if (positionToUpdate.state_position === const_1.StatePositionEnum.BEFORE_TRACK) {
|
|
196
|
-
positionToUpdate.delay = _a.getDelayBeforeTrack(lastPositionDelayed === null || lastPositionDelayed === void 0 ? void 0 : lastPositionDelayed.delay, firstStopTime.departure_time_seconds, position.origin_timestamp.getTime(), startDayTimestamp);
|
|
197
|
-
}
|
|
198
|
-
}
|
|
199
|
-
else {
|
|
200
|
-
// if there is tracking 2 position with same origin_timestamp then this position is duplicate
|
|
201
|
-
const statePosition = position.origin_timestamp.getTime() === context.lastPositionOriginTimestamp ||
|
|
202
|
-
tripPositions.positions.findIndex((positionItem) => positionItem.origin_timestamp.getTime() === position.origin_timestamp.getTime() &&
|
|
203
|
-
positionItem.tracking === const_1.PositionTrackingEnum.TRACKING) >= 0
|
|
204
|
-
? const_1.StatePositionEnum.DUPLICATE
|
|
205
|
-
: const_1.StatePositionEnum.AFTER_TRACK;
|
|
206
|
-
const lastShapesAnchorPoint = tripPositions.gtfsData.shapes_anchor_points[tripPositions.gtfsData.shapes_anchor_points.length - 1];
|
|
207
|
-
const lastStopTime = tripPositions.gtfsData.stop_times[tripPositions.gtfsData.stop_times.length - 1];
|
|
208
|
-
// set as invisible if there are some AFTER_TRACK before
|
|
209
|
-
const setAsInvisible = DPPUtils_1.default.isInvisible(tripPositions.agency_name_scheduled, position.origin_timestamp, startTimestamp, [position.lng, position.lat], firstShapesAnchorPoint.coordinates, schedule, tripPositions.gtfs_trip_id, context.lastPositionTracking, position.tracking) && statePosition === const_1.StatePositionEnum.AFTER_TRACK;
|
|
210
|
-
positionToUpdate = Object.assign({ id: position.id, last_stop_arrival_time: new Date(startDayTimestamp + lastShapesAnchorPoint.time_scheduled_seconds * 1000), last_stop_departure_time: new Date(startDayTimestamp + lastShapesAnchorPoint.time_scheduled_seconds * 1000), last_stop_id: lastStopTime.stop_id, last_stop_sequence: lastShapesAnchorPoint.last_stop_sequence, shape_dist_traveled: lastShapesAnchorPoint.shape_dist_traveled, state_position: setAsInvisible ? const_1.StatePositionEnum.INVISIBLE : statePosition, state_process: const_1.StateProcessEnum.PROCESSED }, (lastStopTime.stop_headsign && {
|
|
211
|
-
last_stop_headsign: lastStopTime.stop_headsign,
|
|
212
|
-
}));
|
|
213
|
-
positionToUpdate = ComputeDelayHelper_1.default.updatePositionToUpdate(context, positionToUpdate, position, gtfsRouteType);
|
|
214
|
-
}
|
|
257
|
+
positionToUpdate = PositionsManager.handleNotTracking(tripPositions, context, position, startTimestamp, schedule, positionToUpdate, startDayTimestamp, gtfsRouteType);
|
|
215
258
|
break;
|
|
216
259
|
case PositionHandlerEnum_1.PositionHandlerEnum.CANCELED:
|
|
217
260
|
positionToUpdate = {
|
|
@@ -231,54 +274,7 @@ PositionsManager.updatePositions = (options, schedule) => __awaiter(void 0, void
|
|
|
231
274
|
computedPositions.push(positionToUpdate);
|
|
232
275
|
}
|
|
233
276
|
// set if last position is AFTER_TRACK
|
|
234
|
-
context
|
|
235
|
-
(positionToUpdate === null || positionToUpdate === void 0 ? void 0 : positionToUpdate.state_position) === const_1.StatePositionEnum.AFTER_TRACK ||
|
|
236
|
-
position.state_position === const_1.StatePositionEnum.AFTER_TRACK;
|
|
237
|
-
// set last known BEFORE_TRACK_DELAYED position
|
|
238
|
-
if (position.state_position === const_1.StatePositionEnum.BEFORE_TRACK_DELAYED) {
|
|
239
|
-
context.lastPositionBeforeTrackDelayed = {
|
|
240
|
-
delay: position.delay,
|
|
241
|
-
origin_timestamp: position.origin_timestamp.getTime(),
|
|
242
|
-
};
|
|
243
|
-
}
|
|
244
|
-
// set last position tracking (only for at_stop and on_track)
|
|
245
|
-
if ((positionToUpdate === null || positionToUpdate === void 0 ? void 0 : positionToUpdate.state_position) === const_1.StatePositionEnum.AT_STOP ||
|
|
246
|
-
(positionToUpdate === null || positionToUpdate === void 0 ? void 0 : positionToUpdate.state_position) === const_1.StatePositionEnum.ON_TRACK ||
|
|
247
|
-
position.state_position === const_1.StatePositionEnum.AT_STOP ||
|
|
248
|
-
position.state_position === const_1.StatePositionEnum.ON_TRACK) {
|
|
249
|
-
context.lastPositionTracking = turf.point([position.lng, position.lat], Object.assign(Object.assign({}, position), positionToUpdate));
|
|
250
|
-
}
|
|
251
|
-
// set new first position at stop streak if this stop seqence is set and it is not same as before
|
|
252
|
-
if (positionToUpdate
|
|
253
|
-
? positionToUpdate.this_stop_sequence &&
|
|
254
|
-
context.atStopStreak.stop_sequence !== positionToUpdate.this_stop_sequence
|
|
255
|
-
: position.this_stop_sequence && context.atStopStreak.stop_sequence !== position.this_stop_sequence) {
|
|
256
|
-
context.atStopStreak.stop_sequence = positionToUpdate
|
|
257
|
-
? positionToUpdate.this_stop_sequence
|
|
258
|
-
: position.this_stop_sequence;
|
|
259
|
-
context.atStopStreak.firstPositionTimestamp = position.origin_timestamp.getTime();
|
|
260
|
-
context.atStopStreak.firstPositionDelay = positionToUpdate ? positionToUpdate.delay : position.delay;
|
|
261
|
-
}
|
|
262
|
-
// IF currently valid updated position / position was processed before
|
|
263
|
-
// and it is NOT AT_STOP
|
|
264
|
-
// then disrupt atStopStreak
|
|
265
|
-
if (positionToUpdate &&
|
|
266
|
-
positionToUpdate.state_position !== const_1.StatePositionEnum.MISMATCHED &&
|
|
267
|
-
!positionToUpdate.this_stop_sequence) {
|
|
268
|
-
context.atStopStreak.stop_sequence = null;
|
|
269
|
-
}
|
|
270
|
-
else if (!positionToUpdate && !position.this_stop_sequence) {
|
|
271
|
-
context.atStopStreak.stop_sequence = null;
|
|
272
|
-
}
|
|
273
|
-
// duplicated or mismatched position should not be considered at all
|
|
274
|
-
if ((positionToUpdate === null || positionToUpdate === void 0 ? void 0 : positionToUpdate.state_position) !== const_1.StatePositionEnum.DUPLICATE &&
|
|
275
|
-
(positionToUpdate === null || positionToUpdate === void 0 ? void 0 : positionToUpdate.state_position) !== const_1.StatePositionEnum.INVISIBLE &&
|
|
276
|
-
(positionToUpdate === null || positionToUpdate === void 0 ? void 0 : positionToUpdate.state_position) !== const_1.StatePositionEnum.MISMATCHED) {
|
|
277
|
-
context.lastPositionId = position.id;
|
|
278
|
-
context.lastPositionCanceled = position.is_canceled;
|
|
279
|
-
context.lastPositionOriginTimestamp = position.origin_timestamp.getTime();
|
|
280
|
-
ComputeDelayHelper_1.default.updateContext(context, positionToUpdate, position, gtfsRouteType);
|
|
281
|
-
}
|
|
277
|
+
PositionsManager.handleContext(context, positionToUpdate, position, gtfsRouteType);
|
|
282
278
|
}
|
|
283
279
|
return {
|
|
284
280
|
context,
|