@golemio/pid 2.9.1 → 2.9.2-dev.1019504900
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/10_cancelledTrip_example.sql +1 -1
- package/db/migrations/postgresql/20230913112258-departure-boards-optimalization.js +53 -0
- package/db/migrations/postgresql/20230918090449-regional-bus-positions.js +53 -0
- package/db/migrations/postgresql/sqls/20230913112258-departure-boards-optimalization-down.sql +2 -0
- package/db/migrations/postgresql/sqls/20230913112258-departure-boards-optimalization-up.sql +253 -0
- package/db/migrations/postgresql/sqls/20230918090449-regional-bus-positions-down.sql +16 -0
- package/db/migrations/postgresql/sqls/20230918090449-regional-bus-positions-up.sql +16 -0
- package/dist/const.d.ts +3 -0
- package/dist/const.js +5 -1
- package/dist/const.js.map +1 -1
- package/dist/integration-engine/ropid-gtfs/data-access/RouteSubAgencyRepository.d.ts +6 -0
- package/dist/integration-engine/ropid-gtfs/data-access/RouteSubAgencyRepository.js +45 -0
- package/dist/integration-engine/ropid-gtfs/data-access/RouteSubAgencyRepository.js.map +1 -0
- package/dist/integration-engine/ropid-gtfs/data-access/RunNumberRepository.d.ts +4 -0
- package/dist/integration-engine/ropid-gtfs/data-access/RunNumberRepository.js +19 -0
- package/dist/integration-engine/ropid-gtfs/data-access/RunNumberRepository.js.map +1 -0
- package/dist/integration-engine/ropid-gtfs/helpers/DataCacheManager.d.ts +1 -0
- package/dist/integration-engine/ropid-gtfs/helpers/DataCacheManager.js +3 -0
- package/dist/integration-engine/ropid-gtfs/helpers/DataCacheManager.js.map +1 -1
- package/dist/integration-engine/vehicle-positions/ioc/Di.js +24 -0
- package/dist/integration-engine/vehicle-positions/ioc/Di.js.map +1 -1
- package/dist/integration-engine/vehicle-positions/ioc/VPContainerToken.d.ts +11 -0
- package/dist/integration-engine/vehicle-positions/ioc/VPContainerToken.js +15 -0
- package/dist/integration-engine/vehicle-positions/ioc/VPContainerToken.js.map +1 -1
- package/dist/integration-engine/vehicle-positions/workers/runs/RunsWorker.js +6 -4
- package/dist/integration-engine/vehicle-positions/workers/runs/RunsWorker.js.map +1 -1
- package/dist/integration-engine/vehicle-positions/workers/runs/constants.d.ts +1 -0
- package/dist/integration-engine/vehicle-positions/workers/runs/constants.js +5 -0
- package/dist/integration-engine/vehicle-positions/workers/runs/constants.js.map +1 -0
- package/dist/integration-engine/vehicle-positions/workers/runs/data-access/CommonRunsRepository.js +1 -1
- package/dist/integration-engine/vehicle-positions/workers/runs/data-access/CommonRunsRepository.js.map +1 -1
- package/dist/integration-engine/vehicle-positions/workers/runs/data-access/RegionalBusRunsMessagesRepository.js +16 -3
- package/dist/integration-engine/vehicle-positions/workers/runs/data-access/RegionalBusRunsMessagesRepository.js.map +1 -1
- package/dist/integration-engine/vehicle-positions/workers/runs/data-access/cache/RegionalBusCisCacheRepository.js +18 -4
- package/dist/integration-engine/vehicle-positions/workers/runs/data-access/cache/RegionalBusCisCacheRepository.js.map +1 -1
- package/dist/integration-engine/vehicle-positions/workers/runs/data-access/cache/RegionalBusGtfsCacheRepository.d.ts +5 -0
- package/dist/integration-engine/vehicle-positions/workers/runs/data-access/cache/RegionalBusGtfsCacheRepository.js +33 -0
- package/dist/integration-engine/vehicle-positions/workers/runs/data-access/cache/RegionalBusGtfsCacheRepository.js.map +1 -0
- package/dist/integration-engine/vehicle-positions/workers/runs/helpers/regional-bus/CisLookupManager.d.ts +3 -2
- package/dist/integration-engine/vehicle-positions/workers/runs/helpers/regional-bus/CisLookupManager.js +28 -10
- package/dist/integration-engine/vehicle-positions/workers/runs/helpers/regional-bus/CisLookupManager.js.map +1 -1
- package/dist/integration-engine/vehicle-positions/workers/runs/helpers/regional-bus/GtfsLookupManager.d.ts +10 -0
- package/dist/integration-engine/vehicle-positions/workers/runs/helpers/regional-bus/GtfsLookupManager.js +76 -0
- package/dist/integration-engine/vehicle-positions/workers/runs/helpers/regional-bus/GtfsLookupManager.js.map +1 -0
- package/dist/integration-engine/vehicle-positions/workers/runs/helpers/regional-bus/RegionalBusMessageFilter.d.ts +5 -1
- package/dist/integration-engine/vehicle-positions/workers/runs/helpers/regional-bus/RegionalBusMessageFilter.js +40 -9
- package/dist/integration-engine/vehicle-positions/workers/runs/helpers/regional-bus/RegionalBusMessageFilter.js.map +1 -1
- package/dist/integration-engine/vehicle-positions/workers/runs/helpers/regional-bus/RegionalBusRunsFacade.d.ts +9 -5
- package/dist/integration-engine/vehicle-positions/workers/runs/helpers/regional-bus/RegionalBusRunsFacade.js +29 -11
- package/dist/integration-engine/vehicle-positions/workers/runs/helpers/regional-bus/RegionalBusRunsFacade.js.map +1 -1
- package/dist/integration-engine/vehicle-positions/workers/runs/helpers/regional-bus/TripScheduleManager.d.ts +10 -0
- package/dist/integration-engine/vehicle-positions/workers/runs/helpers/regional-bus/TripScheduleManager.js +61 -0
- package/dist/integration-engine/vehicle-positions/workers/runs/helpers/regional-bus/TripScheduleManager.js.map +1 -0
- package/dist/integration-engine/vehicle-positions/workers/runs/helpers/regional-bus/interfaces/IExtendedSchedule.d.ts +8 -0
- package/dist/integration-engine/vehicle-positions/workers/runs/helpers/regional-bus/interfaces/IExtendedSchedule.js +3 -0
- package/dist/integration-engine/vehicle-positions/workers/runs/helpers/regional-bus/interfaces/IExtendedSchedule.js.map +1 -0
- package/dist/integration-engine/vehicle-positions/workers/runs/helpers/regional-bus/interfaces/IGtfsLookupManager.d.ts +6 -0
- package/dist/integration-engine/vehicle-positions/workers/runs/helpers/regional-bus/interfaces/IGtfsLookupManager.js +3 -0
- package/dist/integration-engine/vehicle-positions/workers/runs/helpers/regional-bus/interfaces/IGtfsLookupManager.js.map +1 -0
- package/dist/integration-engine/vehicle-positions/workers/runs/helpers/regional-bus/interfaces/ITripScheduleManager.d.ts +7 -0
- package/dist/integration-engine/vehicle-positions/workers/runs/helpers/regional-bus/interfaces/ITripScheduleManager.js +3 -0
- package/dist/integration-engine/vehicle-positions/workers/runs/helpers/regional-bus/interfaces/ITripScheduleManager.js.map +1 -0
- package/dist/integration-engine/vehicle-positions/workers/runs/interfaces/IProcessRegionalBusRunMessagesInput.d.ts +9 -0
- package/dist/integration-engine/vehicle-positions/workers/runs/interfaces/IProcessRegionalBusRunMessagesInput.js +3 -0
- package/dist/integration-engine/vehicle-positions/workers/runs/interfaces/IProcessRegionalBusRunMessagesInput.js.map +1 -0
- package/dist/integration-engine/vehicle-positions/workers/runs/interfaces/IRegionalBusRunInputWithMetadata.d.ts +7 -0
- package/dist/integration-engine/vehicle-positions/workers/runs/interfaces/IRegionalBusRunInputWithMetadata.js +3 -0
- package/dist/integration-engine/vehicle-positions/workers/runs/interfaces/IRegionalBusRunInputWithMetadata.js.map +1 -0
- package/dist/integration-engine/vehicle-positions/workers/runs/schema/RegionalBusTransformedRunsSchema.d.ts +4 -0
- package/dist/integration-engine/vehicle-positions/workers/runs/schema/RegionalBusTransformedRunsSchema.js +63 -0
- package/dist/integration-engine/vehicle-positions/workers/runs/schema/RegionalBusTransformedRunsSchema.js.map +1 -0
- package/dist/integration-engine/vehicle-positions/workers/runs/tasks/ProcessRegionalBusRunMessagesTask.d.ts +22 -0
- package/dist/integration-engine/vehicle-positions/workers/runs/tasks/ProcessRegionalBusRunMessagesTask.js +128 -0
- package/dist/integration-engine/vehicle-positions/workers/runs/tasks/ProcessRegionalBusRunMessagesTask.js.map +1 -0
- package/dist/integration-engine/vehicle-positions/workers/runs/tasks/{SaveArrivaCityRunsToDB.d.ts → SaveArrivaCityRunsToDBTask.d.ts} +4 -3
- package/dist/integration-engine/vehicle-positions/workers/runs/tasks/SaveArrivaCityRunsToDBTask.js +57 -0
- package/dist/integration-engine/vehicle-positions/workers/runs/tasks/SaveArrivaCityRunsToDBTask.js.map +1 -0
- package/dist/integration-engine/vehicle-positions/workers/runs/transformations/RegionalBusRunsMessagesTransformation.js +14 -5
- package/dist/integration-engine/vehicle-positions/workers/runs/transformations/RegionalBusRunsMessagesTransformation.js.map +1 -1
- package/dist/integration-engine/vehicle-positions/workers/vehicle-descriptors/data-access/DescriptorRepository.d.ts +3 -0
- package/dist/integration-engine/vehicle-positions/workers/vehicle-descriptors/data-access/DescriptorRepository.js +16 -0
- package/dist/integration-engine/vehicle-positions/workers/vehicle-descriptors/data-access/DescriptorRepository.js.map +1 -1
- package/dist/integration-engine/vehicle-positions/workers/vehicle-descriptors/transformations/DescriptorTransformation.js +1 -0
- package/dist/integration-engine/vehicle-positions/workers/vehicle-descriptors/transformations/DescriptorTransformation.js.map +1 -1
- package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/VPWorker.js +2 -0
- package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/VPWorker.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 +2 -2
- 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/TripsRepository.d.ts +1 -1
- package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/data-access/TripsRepository.js +9 -8
- package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/data-access/TripsRepository.js.map +1 -1
- package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/data-access/helpers/PositionsMapper.d.ts +2 -0
- package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/data-access/helpers/PositionsMapper.js +15 -0
- package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/data-access/helpers/PositionsMapper.js.map +1 -1
- package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/data-access/helpers/TripsIdGenerator.d.ts +5 -0
- package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/data-access/helpers/TripsIdGenerator.js +8 -0
- package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/data-access/helpers/TripsIdGenerator.js.map +1 -1
- package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/data-access/helpers/TripsMapper.d.ts +3 -1
- package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/data-access/helpers/TripsMapper.js +3 -0
- package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/data-access/helpers/TripsMapper.js.map +1 -1
- package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/helpers/ProviderSourceTypeEnum.d.ts +2 -1
- package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/helpers/ProviderSourceTypeEnum.js +1 -0
- package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/helpers/ProviderSourceTypeEnum.js.map +1 -1
- package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/helpers/gtfs-trip-run/AbstractGTFSTripRunManager.d.ts +6 -2
- package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/helpers/gtfs-trip-run/AbstractGTFSTripRunManager.js +16 -1
- package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/helpers/gtfs-trip-run/AbstractGTFSTripRunManager.js.map +1 -1
- package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/helpers/gtfs-trip-run/GTFSTripCommonRunManager.js +2 -3
- package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/helpers/gtfs-trip-run/GTFSTripCommonRunManager.js.map +1 -1
- package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/helpers/gtfs-trip-run/GTFSTripMetroRunManager.js +2 -3
- package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/helpers/gtfs-trip-run/GTFSTripMetroRunManager.js.map +1 -1
- package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/helpers/regional-bus/RegionalBusPositionsManager.d.ts +81 -0
- package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/helpers/regional-bus/RegionalBusPositionsManager.js +442 -0
- package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/helpers/regional-bus/RegionalBusPositionsManager.js.map +1 -0
- package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/helpers/regional-bus/compute-positions/RegionalBusComputeDelayHelper.d.ts +14 -0
- package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/helpers/regional-bus/compute-positions/RegionalBusComputeDelayHelper.js +26 -0
- package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/helpers/regional-bus/compute-positions/RegionalBusComputeDelayHelper.js.map +1 -0
- package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/helpers/regional-bus/compute-positions/strategy/BusDelayAtStop.d.ts +9 -0
- package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/helpers/regional-bus/compute-positions/strategy/BusDelayAtStop.js +48 -0
- package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/helpers/regional-bus/compute-positions/strategy/BusDelayAtStop.js.map +1 -0
- package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/helpers/regional-bus/compute-positions/strategy/FactoryDelayAtStop.d.ts +9 -0
- package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/helpers/regional-bus/compute-positions/strategy/FactoryDelayAtStop.js +24 -0
- package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/helpers/regional-bus/compute-positions/strategy/FactoryDelayAtStop.js.map +1 -0
- package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/helpers/regional-bus/gtfs-trip-run/GtfsTripRegionalBusRunManager.d.ts +12 -0
- package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/helpers/regional-bus/gtfs-trip-run/GtfsTripRegionalBusRunManager.js +90 -0
- package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/helpers/regional-bus/gtfs-trip-run/GtfsTripRegionalBusRunManager.js.map +1 -0
- package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/interfaces/VPInterfaces.d.ts +4 -3
- package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/tasks/ProcessRegionalBusPositionsTask.d.ts +17 -0
- package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/tasks/ProcessRegionalBusPositionsTask.js +110 -0
- package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/tasks/ProcessRegionalBusPositionsTask.js.map +1 -0
- package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/tasks/UpdateRunsGtfsTripIdTask.js +2 -2
- package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/tasks/UpdateRunsGtfsTripIdTask.js.map +1 -1
- package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/transformations/PositionsTransformation.d.ts +6 -0
- package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/transformations/PositionsTransformation.js +19 -2
- package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/transformations/PositionsTransformation.js.map +1 -1
- package/dist/output-gateway/pid/data-access/DeparturesRepository.d.ts +4 -6
- package/dist/output-gateway/pid/data-access/DeparturesRepository.js +46 -216
- package/dist/output-gateway/pid/data-access/DeparturesRepository.js.map +1 -1
- package/dist/output-gateway/pid/index.d.ts +22 -59
- package/dist/output-gateway/pid/index.js.map +1 -1
- package/dist/schema-definitions/vehicle-descriptors/datasources/SeznamAutobusuJsonSchema.js +1 -0
- package/dist/schema-definitions/vehicle-descriptors/datasources/SeznamAutobusuJsonSchema.js.map +1 -1
- package/dist/schema-definitions/vehicle-descriptors/datasources/interfaces/IVehicleListInfo.d.ts +1 -0
- package/dist/schema-definitions/vehicle-descriptors/models/DescriptorModel.d.ts +1 -0
- package/dist/schema-definitions/vehicle-descriptors/models/DescriptorModel.js +3 -0
- package/dist/schema-definitions/vehicle-descriptors/models/DescriptorModel.js.map +1 -1
- package/dist/schema-definitions/vehicle-descriptors/models/interfaces/IDescriptorOutputDto.d.ts +1 -0
- package/dist/schema-definitions/vehicle-positions/models/RegionalBusRunsMessagesModel.d.ts +2 -2
- package/dist/schema-definitions/vehicle-positions/models/RegionalBusRunsMessagesModel.js +6 -6
- package/dist/schema-definitions/vehicle-positions/models/RegionalBusRunsMessagesModel.js.map +1 -1
- package/dist/schema-definitions/vehicle-positions/models/interfaces/IRegionalBusRunsMessagesModel.d.ts +3 -3
- package/dist/schema-definitions/vehicle-positions/models/interfaces/IVPTripsPositionAttributes.d.ts +2 -2
- package/dist/schema-definitions/vehicle-positions/redis/interfaces/IGtfsRunTripCacheDto.d.ts +3 -0
- package/dist/schema-definitions/vehicle-positions/redis/interfaces/IRegionalBusCisCacheDto.d.ts +2 -2
- package/dist/schema-definitions/vehicle-positions/redis/interfaces/IRegionalBusGtfsCacheDto.d.ts +7 -0
- package/dist/schema-definitions/vehicle-positions/redis/interfaces/IRegionalBusGtfsCacheDto.js +3 -0
- package/dist/schema-definitions/vehicle-positions/redis/interfaces/IRegionalBusGtfsCacheDto.js.map +1 -0
- package/dist/schema-definitions/vehicle-positions/redis/schemas/GtfsRunTripCacheDtoSchema.js +6 -0
- package/dist/schema-definitions/vehicle-positions/redis/schemas/GtfsRunTripCacheDtoSchema.js.map +1 -1
- package/dist/schema-definitions/vehicle-positions/redis/schemas/RegionalBusCisCacheDtoSchema.js +4 -4
- package/dist/schema-definitions/vehicle-positions/redis/schemas/RegionalBusCisCacheDtoSchema.js.map +1 -1
- package/dist/schema-definitions/vehicle-positions/redis/schemas/RegionalBusGtfsCacheDtoSchema.d.ts +4 -0
- package/dist/schema-definitions/vehicle-positions/redis/schemas/RegionalBusGtfsCacheDtoSchema.js +36 -0
- package/dist/schema-definitions/vehicle-positions/redis/schemas/RegionalBusGtfsCacheDtoSchema.js.map +1 -0
- package/docs/implementation_documentation.md +40 -2
- package/package.json +2 -2
- package/dist/integration-engine/vehicle-positions/workers/runs/tasks/SaveArrivaCityRunsToDB.js +0 -37
- package/dist/integration-engine/vehicle-positions/workers/runs/tasks/SaveArrivaCityRunsToDB.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GTFSTripMetroRunManager.js","sourceRoot":"","sources":["../../../../../../../src/integration-engine/vehicle-positions/workers/vehicle-positions/helpers/gtfs-trip-run/GTFSTripMetroRunManager.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAEA,
|
|
1
|
+
{"version":3,"file":"GTFSTripMetroRunManager.js","sourceRoot":"","sources":["../../../../../../../src/integration-engine/vehicle-positions/workers/vehicle-positions/helpers/gtfs-trip-run/GTFSTripMetroRunManager.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAEA,gGAA2E;AAC3E,6EAA0E;AAG1E,MAAa,uBAAwB,SAAQ,uDAA0B;IACtD,gBAAgB,CAAC,QAAwB,EAAE,KAAkC;;YACtF,MAAM,kBAAkB,GAAG,IAAA,yBAAM,EAAC,KAAK,CAAC,kBAAkB,CAAC,CAAC;YAC5D,MAAM,WAAW,GAAG,IAAI,CAAC,iCAAiC,CAAC,QAAQ,EAAE,kBAAkB,CAAC,CAAC;YACzF,IAAI,QAAQ,GAAkB;gBAC1B,YAAY,EAAE,EAAE;gBAChB,SAAS,EAAE,EAAE;gBACb,QAAQ;aACX,CAAC;YAEF,IAAI,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,OAAO,EAAE;gBACtB,QAAQ,GAAG,MAAM,IAAI,CAAC,+BAA+B,CAAC,QAAQ,EAAE,WAAW,EAAE,KAAK,CAAC,CAAC;aACvF;iBAAM;gBACH,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,oEAAoE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;aACpH;YAED,8BAA8B;YAC9B,OAAO,IAAI,CAAC,2BAA2B,CAAC,QAAQ,EAAE,kBAAkB,EAAE,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC;QACjH,CAAC;KAAA;IAES,yBAAyB;QAC/B,OAAO;YACH,wBAAwB,EAAE,IAAI,CAAC,MAAM,CAAC,QAAQ,CAC1C,oFAAoF,EACpF,EAAE,CACK;YACX,sBAAsB,EAAE,IAAI,CAAC,MAAM,CAAC,QAAQ,CACxC,kFAAkF,EAClF,CAAC,CACM;SACd,CAAC;IACN,CAAC;IAEa,+BAA+B,CACzC,QAAuB,EACvB,eAA6B,EAC7B,KAAkC;;YAElC,MAAM,qBAAqB,GAAG,IAAI,CAAC;YACnC,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,eAAe,EAAE,qBAAqB,CAAC,CAAC;YAEhG,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACjC,IAAI,IAAI,CAAC,QAAQ;gBAAE,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YAErD,OAAO,QAAQ,CAAC;QACpB,CAAC;KAAA;IAEa,2BAA2B,CACrC,QAAwB,EACxB,kBAA0B,EAC1B,aAAiC,EACjC,KAAkC,EAClC,QAAuB;;YAEvB,MAAM,iBAAiB,GAAG,IAAI,CAAC,gBAAgB,CAAC,QAAQ,EAAE,kBAAkB,EAAE,aAAa,CAAC,CAAC;YAE7F,KAAK,MAAM,QAAQ,IAAI,iBAAiB,EAAE;gBACtC,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC;gBAEzE,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBACjC,IAAI,IAAI,CAAC,QAAQ;oBAAE,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;aACxD;YAED,OAAO,QAAQ,CAAC;QACpB,CAAC;KAAA;IAEa,UAAU,CAAC,KAAkC,EAAE,QAAsB,EAAE,cAAuB;;YACxG,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,kBAAkB,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;YAC5E,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,mBAAmB,CAAC,sBAAsB,CAAC,KAAK,EAAE,QAAQ,EAAE,cAAc,CAAC,CAAC;YAExG,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;QAC9B,CAAC;KAAA;CACJ;AAxED,0DAwEC"}
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
import { IVPTripsLastPositionContext } from "../../../../../../schema-definitions/vehicle-positions/models/interfaces/VPTripsLastPositionInterfaces";
|
|
2
|
+
import { IPositionToUpdate, IProcessedPositions, ITripPositionsWithGTFS, IUpdatePositionsIteratorOptions } from "../../interfaces/VPInterfaces";
|
|
3
|
+
export declare class RegionalBusPositionsManager {
|
|
4
|
+
/**
|
|
5
|
+
* Compute positions and return computed positions
|
|
6
|
+
*
|
|
7
|
+
* @param {ITripPositionsWithGTFS} tripPositions - Trip positions with shape anchors data
|
|
8
|
+
* @returns {Promise<IProcessedPositions>} - Returns computed/updated positions
|
|
9
|
+
*/
|
|
10
|
+
static computePositions: (tripPositions: ITripPositionsWithGTFS) => Promise<IProcessedPositions>;
|
|
11
|
+
/**
|
|
12
|
+
* Takes position one by one, set proper handler for type of position, and do the process of position
|
|
13
|
+
*/
|
|
14
|
+
static updatePositions: (options: IUpdatePositionsIteratorOptions) => Promise<{
|
|
15
|
+
context: IVPTripsLastPositionContext;
|
|
16
|
+
positions: IPositionToUpdate[];
|
|
17
|
+
}>;
|
|
18
|
+
private static getCurrentContext;
|
|
19
|
+
/**
|
|
20
|
+
* Decide how to process input position data
|
|
21
|
+
*
|
|
22
|
+
* @param {IVPTripsPositionAttributes} position - Input vehiclepositions_positions row data
|
|
23
|
+
* @returns {PositionHandlerEnum} - Returns action handler enum
|
|
24
|
+
*/
|
|
25
|
+
private static setPositionUpdateHandler;
|
|
26
|
+
/**
|
|
27
|
+
* Returns estimate of point on shape, where the trip should be with appropriate delay
|
|
28
|
+
*
|
|
29
|
+
* @param {IShapeAnchorPoint[]} tripShapePoints - Precalculated trip shape equidistant points with scheduled times
|
|
30
|
+
* @param {Feature<Point, ICurrentPositionProperties>} currentPosition - Current position of trip
|
|
31
|
+
* @param {IVPTripsLastPositionContext | null} context - Context state, holds information about previous positions
|
|
32
|
+
* @param {number} startDayTimestamp - Unix timestamp of midnight before trip starts
|
|
33
|
+
* @returns {IPositionToUpdate} - Position object to update
|
|
34
|
+
*/
|
|
35
|
+
private static getEstimatedPoint;
|
|
36
|
+
/**
|
|
37
|
+
* Picks only one closest point for multiple possible points based on delay of last position and stop times
|
|
38
|
+
*
|
|
39
|
+
* @param {Feature<Point, ICurrentPositionProperties>} currentPosition - Feature Point of current position
|
|
40
|
+
* @param {IVPTripsLastPositionContext | null} context - Context state, holds information about previous positions
|
|
41
|
+
* @param {number} startDayTimestamp - Unix timestamp of start of the day
|
|
42
|
+
* @param {IShapeAnchorPoint[]} closestPts - All closest points of possible segments
|
|
43
|
+
* @param {IComputationTrip} tripGtfsData - GTFS data and all set of known positions
|
|
44
|
+
* @returns {IPositionToUpdate} - Result point as position to update in DB
|
|
45
|
+
*/
|
|
46
|
+
private static getClosestPoint;
|
|
47
|
+
/**
|
|
48
|
+
* Returns date object for stop time
|
|
49
|
+
* + given by start of day when trip starts
|
|
50
|
+
* + and GTFS HH:mm:ss format of stop time in seconds
|
|
51
|
+
*
|
|
52
|
+
* @param {number} startDayTimestamp - Unix timestamp of local time midnight before trip starts
|
|
53
|
+
* @param {number} timeSeconds - Number of seconds given by HH:mm:ss format of GTFS stop time
|
|
54
|
+
* @returns {Date} - Returns date object
|
|
55
|
+
*/
|
|
56
|
+
private static getLocalTimeToDateObject;
|
|
57
|
+
/**
|
|
58
|
+
* Corrects time delay at stop with dwelling time
|
|
59
|
+
*
|
|
60
|
+
* @param {number} timeDelay - Initial computed delay in seconds, can be negative for trip ahead
|
|
61
|
+
* @param {IVPTripsLastPositionContext | null} context - Context state, holds information about previous positions
|
|
62
|
+
* @param {Feature<Point, ICurrentPositionProperties>} currentPosition - Feature Point of current position
|
|
63
|
+
* @param {IShapeAnchorPoint} thisClosestPoint - Closest point of shape anchors
|
|
64
|
+
* @param { departureTime: number; arrivalTime: number } stopTimes - departure and arrival stop times in seconds
|
|
65
|
+
* @returns {number} - Result delay in seconds, can be negative for trip ahead
|
|
66
|
+
*/
|
|
67
|
+
private static getCorrectedTimeDelay;
|
|
68
|
+
/**
|
|
69
|
+
* Get delay in seconds for positions before track to ensure correct delay propagation
|
|
70
|
+
*/
|
|
71
|
+
private static getDelayBeforeTrack;
|
|
72
|
+
/**
|
|
73
|
+
* Compute UTC timestamp of start of day when trip starts
|
|
74
|
+
*
|
|
75
|
+
* @param {number} startTimestamp - Unix timestamp of start of the trip
|
|
76
|
+
* @param {number} firstStopTimeScheduledSeconds - Number of seconds from midnight of first stop departure
|
|
77
|
+
* @returns {number} - Returns unix timestamp in milliseconds.
|
|
78
|
+
*/
|
|
79
|
+
private static getStartDayTimestamp;
|
|
80
|
+
private static determineStatePosition;
|
|
81
|
+
}
|
|
@@ -0,0 +1,442 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
+
if (mod && mod.__esModule) return mod;
|
|
20
|
+
var result = {};
|
|
21
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
+
__setModuleDefault(result, mod);
|
|
23
|
+
return result;
|
|
24
|
+
};
|
|
25
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
26
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
27
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
28
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
29
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
30
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
31
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
32
|
+
});
|
|
33
|
+
};
|
|
34
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
35
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
36
|
+
};
|
|
37
|
+
var _a;
|
|
38
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
|
+
exports.RegionalBusPositionsManager = void 0;
|
|
40
|
+
const turf = __importStar(require("@turf/turf"));
|
|
41
|
+
const moment_timezone_1 = __importDefault(require("moment-timezone"));
|
|
42
|
+
const const_1 = require("../../../../../../const");
|
|
43
|
+
const PositionCalculator_1 = __importDefault(require("../PositionCalculator"));
|
|
44
|
+
const PositionHandlerEnum_1 = require("../PositionHandlerEnum");
|
|
45
|
+
const ValidToCalculator_1 = __importDefault(require("../ValidToCalculator"));
|
|
46
|
+
const RegionalBusComputeDelayHelper_1 = require("./compute-positions/RegionalBusComputeDelayHelper");
|
|
47
|
+
class RegionalBusPositionsManager {
|
|
48
|
+
/**
|
|
49
|
+
* Get delay in seconds for positions before track to ensure correct delay propagation
|
|
50
|
+
*/
|
|
51
|
+
static getDelayBeforeTrack(lastPositionDelay, firstStopDepartureTime, positionOriginUnixTimestamp, startDayUnixTimestamp) {
|
|
52
|
+
if (typeof lastPositionDelay !== "number") {
|
|
53
|
+
return null;
|
|
54
|
+
}
|
|
55
|
+
const departureTimeInSeconds = startDayUnixTimestamp / 1000 + firstStopDepartureTime;
|
|
56
|
+
const positionOriginTimeInSeconds = positionOriginUnixTimestamp / 1000;
|
|
57
|
+
return Math.max(lastPositionDelay, positionOriginTimeInSeconds - departureTimeInSeconds);
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
exports.RegionalBusPositionsManager = RegionalBusPositionsManager;
|
|
61
|
+
_a = RegionalBusPositionsManager;
|
|
62
|
+
/**
|
|
63
|
+
* Compute positions and return computed positions
|
|
64
|
+
*
|
|
65
|
+
* @param {ITripPositionsWithGTFS} tripPositions - Trip positions with shape anchors data
|
|
66
|
+
* @returns {Promise<IProcessedPositions>} - Returns computed/updated positions
|
|
67
|
+
*/
|
|
68
|
+
RegionalBusPositionsManager.computePositions = (tripPositions) => __awaiter(void 0, void 0, void 0, function* () {
|
|
69
|
+
var _b, _c;
|
|
70
|
+
const startTimestamp = tripPositions.start_timestamp.getTime();
|
|
71
|
+
const endTimestamp = (_c = (_b = tripPositions.end_timestamp) === null || _b === void 0 ? void 0 : _b.getTime()) !== null && _c !== void 0 ? _c : 0;
|
|
72
|
+
const startDayTimestamp = _a.getStartDayTimestamp(startTimestamp, tripPositions.gtfsData.shapes_anchor_points[0].time_scheduled_seconds);
|
|
73
|
+
const gtfsRouteType = tripPositions.gtfs_route_type;
|
|
74
|
+
const context = RegionalBusPositionsManager.getCurrentContext(tripPositions);
|
|
75
|
+
const computedPositions = [];
|
|
76
|
+
return RegionalBusPositionsManager.updatePositions({
|
|
77
|
+
tripPositions,
|
|
78
|
+
startTimestamp,
|
|
79
|
+
endTimestamp,
|
|
80
|
+
startDayTimestamp,
|
|
81
|
+
context,
|
|
82
|
+
computedPositions,
|
|
83
|
+
gtfsRouteType,
|
|
84
|
+
});
|
|
85
|
+
});
|
|
86
|
+
/**
|
|
87
|
+
* Takes position one by one, set proper handler for type of position, and do the process of position
|
|
88
|
+
*/
|
|
89
|
+
RegionalBusPositionsManager.updatePositions = (options) => __awaiter(void 0, void 0, void 0, function* () {
|
|
90
|
+
const { tripPositions, startDayTimestamp, startTimestamp, context, computedPositions, gtfsRouteType } = options;
|
|
91
|
+
for (let i = 0; i < tripPositions.positions.length; i++) {
|
|
92
|
+
const position = tripPositions.positions[i];
|
|
93
|
+
let positionToUpdate = null;
|
|
94
|
+
// situations
|
|
95
|
+
switch (_a.setPositionUpdateHandler(position)) {
|
|
96
|
+
case PositionHandlerEnum_1.PositionHandlerEnum.TRACKING:
|
|
97
|
+
const currentPosition = turf.point([position.lng, position.lat], {
|
|
98
|
+
id: position.id,
|
|
99
|
+
origin_time: position.origin_time,
|
|
100
|
+
origin_timestamp: position.origin_timestamp,
|
|
101
|
+
scheduled_timestamp: position.scheduled_timestamp,
|
|
102
|
+
this_stop_id: position.this_stop_id,
|
|
103
|
+
tcp_event: position.tcp_event,
|
|
104
|
+
});
|
|
105
|
+
positionToUpdate = yield _a.getEstimatedPoint(tripPositions.gtfsData, currentPosition, context, startDayTimestamp);
|
|
106
|
+
break;
|
|
107
|
+
case PositionHandlerEnum_1.PositionHandlerEnum.NOT_TRACKING:
|
|
108
|
+
// if there is no previous positions with tracking status, set position as before_track
|
|
109
|
+
if (context.lastPositionTracking === null) {
|
|
110
|
+
const firstStopTime = tripPositions.gtfsData.stop_times[0];
|
|
111
|
+
// if there is propagated delay we can use it for new position
|
|
112
|
+
const lastPositionDelayed = context.lastPositionBeforeTrackDelayed;
|
|
113
|
+
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: const_1.StatePositionEnum.BEFORE_TRACK, state_process: const_1.StateProcessEnum.PROCESSED }, (firstStopTime.stop_headsign && {
|
|
114
|
+
last_stop_headsign: firstStopTime.stop_headsign,
|
|
115
|
+
}));
|
|
116
|
+
if (positionToUpdate.state_position === const_1.StatePositionEnum.BEFORE_TRACK) {
|
|
117
|
+
positionToUpdate.delay = _a.getDelayBeforeTrack(lastPositionDelayed === null || lastPositionDelayed === void 0 ? void 0 : lastPositionDelayed.delay, firstStopTime.departure_time_seconds, position.origin_timestamp.getTime(), startDayTimestamp);
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
else {
|
|
121
|
+
// if there is tracking 2 position with same origin_timestamp then this position is duplicate
|
|
122
|
+
const statePosition = position.origin_timestamp.getTime() === context.lastPositionOriginTimestamp ||
|
|
123
|
+
tripPositions.positions.findIndex((positionItem) => positionItem.origin_timestamp.getTime() === position.origin_timestamp.getTime() &&
|
|
124
|
+
positionItem.tracking === const_1.PositionTrackingEnum.TRACKING) >= 0
|
|
125
|
+
? const_1.StatePositionEnum.DUPLICATE
|
|
126
|
+
: const_1.StatePositionEnum.AFTER_TRACK;
|
|
127
|
+
const lastShapesAnchorPoint = tripPositions.gtfsData.shapes_anchor_points[tripPositions.gtfsData.shapes_anchor_points.length - 1];
|
|
128
|
+
const lastStopTime = tripPositions.gtfsData.stop_times[tripPositions.gtfsData.stop_times.length - 1];
|
|
129
|
+
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: statePosition, state_process: const_1.StateProcessEnum.PROCESSED }, (lastStopTime.stop_headsign && {
|
|
130
|
+
last_stop_headsign: lastStopTime.stop_headsign,
|
|
131
|
+
}));
|
|
132
|
+
positionToUpdate = RegionalBusComputeDelayHelper_1.RegionalBusComputeDelayHelper.updatePositionToUpdate(context, positionToUpdate, position, gtfsRouteType);
|
|
133
|
+
}
|
|
134
|
+
break;
|
|
135
|
+
case PositionHandlerEnum_1.PositionHandlerEnum.DO_NOTHING:
|
|
136
|
+
default:
|
|
137
|
+
break;
|
|
138
|
+
}
|
|
139
|
+
// if not null push to update
|
|
140
|
+
if (positionToUpdate) {
|
|
141
|
+
positionToUpdate.valid_to = ValidToCalculator_1.default.getValidToAttribute(positionToUpdate, position, gtfsRouteType, tripPositions.gtfsData, startTimestamp, startDayTimestamp);
|
|
142
|
+
computedPositions.push(positionToUpdate);
|
|
143
|
+
}
|
|
144
|
+
// set if last position is AFTER_TRACK
|
|
145
|
+
context.isLastPositionAfterTrack =
|
|
146
|
+
(positionToUpdate === null || positionToUpdate === void 0 ? void 0 : positionToUpdate.state_position) === const_1.StatePositionEnum.AFTER_TRACK ||
|
|
147
|
+
position.state_position === const_1.StatePositionEnum.AFTER_TRACK;
|
|
148
|
+
// set last known BEFORE_TRACK_DELAYED position
|
|
149
|
+
if (position.state_position === const_1.StatePositionEnum.BEFORE_TRACK_DELAYED) {
|
|
150
|
+
context.lastPositionBeforeTrackDelayed = {
|
|
151
|
+
delay: position.delay,
|
|
152
|
+
origin_timestamp: position.origin_timestamp,
|
|
153
|
+
};
|
|
154
|
+
}
|
|
155
|
+
// set last position tracking (only for at_stop and on_track)
|
|
156
|
+
if ((positionToUpdate === null || positionToUpdate === void 0 ? void 0 : positionToUpdate.state_position) === const_1.StatePositionEnum.AT_STOP ||
|
|
157
|
+
(positionToUpdate === null || positionToUpdate === void 0 ? void 0 : positionToUpdate.state_position) === const_1.StatePositionEnum.ON_TRACK ||
|
|
158
|
+
position.state_position === const_1.StatePositionEnum.AT_STOP ||
|
|
159
|
+
position.state_position === const_1.StatePositionEnum.ON_TRACK) {
|
|
160
|
+
context.lastPositionTracking = turf.point([position.lng, position.lat], Object.assign(Object.assign({}, position), positionToUpdate));
|
|
161
|
+
}
|
|
162
|
+
// set new first position at stop streak if this stop seqence is set and it is not same as before
|
|
163
|
+
if (positionToUpdate
|
|
164
|
+
? positionToUpdate.this_stop_sequence &&
|
|
165
|
+
context.atStopStreak.stop_sequence !== positionToUpdate.this_stop_sequence
|
|
166
|
+
: position.this_stop_sequence && context.atStopStreak.stop_sequence !== position.this_stop_sequence) {
|
|
167
|
+
context.atStopStreak.stop_sequence = positionToUpdate
|
|
168
|
+
? positionToUpdate.this_stop_sequence
|
|
169
|
+
: position.this_stop_sequence;
|
|
170
|
+
context.atStopStreak.firstPositionTimestamp = position.origin_timestamp.getTime();
|
|
171
|
+
context.atStopStreak.firstPositionDelay = positionToUpdate ? positionToUpdate.delay : position.delay;
|
|
172
|
+
}
|
|
173
|
+
// IF currently valid updated position / position was processed before
|
|
174
|
+
// and it is NOT AT_STOP
|
|
175
|
+
// then disrupt atStopStreak
|
|
176
|
+
if (positionToUpdate && !positionToUpdate.this_stop_sequence) {
|
|
177
|
+
context.atStopStreak.stop_sequence = null;
|
|
178
|
+
}
|
|
179
|
+
else if (!positionToUpdate && !position.this_stop_sequence) {
|
|
180
|
+
context.atStopStreak.stop_sequence = null;
|
|
181
|
+
}
|
|
182
|
+
// duplicated position should not be considered at all
|
|
183
|
+
if ((positionToUpdate === null || positionToUpdate === void 0 ? void 0 : positionToUpdate.state_position) !== const_1.StatePositionEnum.DUPLICATE) {
|
|
184
|
+
context.lastPositionId = position.id;
|
|
185
|
+
context.lastPositionCanceled = position.is_canceled;
|
|
186
|
+
context.lastPositionOriginTimestamp = position.origin_timestamp.getTime();
|
|
187
|
+
RegionalBusComputeDelayHelper_1.RegionalBusComputeDelayHelper.updateContext(context, positionToUpdate, position, gtfsRouteType);
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
return {
|
|
191
|
+
context,
|
|
192
|
+
positions: computedPositions,
|
|
193
|
+
};
|
|
194
|
+
});
|
|
195
|
+
RegionalBusPositionsManager.getCurrentContext = (tripPositions) => {
|
|
196
|
+
var _b;
|
|
197
|
+
const context = (_b = tripPositions.last_position_context) !== null && _b !== void 0 ? _b : {
|
|
198
|
+
atStopStreak: {
|
|
199
|
+
stop_sequence: null,
|
|
200
|
+
firstPositionTimestamp: null,
|
|
201
|
+
firstPositionDelay: null,
|
|
202
|
+
},
|
|
203
|
+
lastPositionLastStop: {
|
|
204
|
+
id: null,
|
|
205
|
+
sequence: null,
|
|
206
|
+
arrival_time: null,
|
|
207
|
+
arrival_delay: null,
|
|
208
|
+
departure_time: null,
|
|
209
|
+
departure_delay: null,
|
|
210
|
+
},
|
|
211
|
+
lastPositionDelay: null,
|
|
212
|
+
lastPositionId: null,
|
|
213
|
+
lastPositionOriginTimestamp: null,
|
|
214
|
+
lastPositionTracking: null,
|
|
215
|
+
lastPositionCanceled: null,
|
|
216
|
+
lastPositionBeforeTrackDelayed: null,
|
|
217
|
+
isLastPositionAfterTrack: false,
|
|
218
|
+
tripId: tripPositions.id,
|
|
219
|
+
};
|
|
220
|
+
return context;
|
|
221
|
+
};
|
|
222
|
+
/**
|
|
223
|
+
* Decide how to process input position data
|
|
224
|
+
*
|
|
225
|
+
* @param {IVPTripsPositionAttributes} position - Input vehiclepositions_positions row data
|
|
226
|
+
* @returns {PositionHandlerEnum} - Returns action handler enum
|
|
227
|
+
*/
|
|
228
|
+
RegionalBusPositionsManager.setPositionUpdateHandler = (position) => {
|
|
229
|
+
if (position.state_process === const_1.StateProcessEnum.PROCESSED)
|
|
230
|
+
return PositionHandlerEnum_1.PositionHandlerEnum.DO_NOTHING;
|
|
231
|
+
else if (position.tracking === const_1.PositionTrackingEnum.TRACKING)
|
|
232
|
+
return PositionHandlerEnum_1.PositionHandlerEnum.TRACKING;
|
|
233
|
+
else if (position.tracking !== const_1.PositionTrackingEnum.TRACKING)
|
|
234
|
+
return PositionHandlerEnum_1.PositionHandlerEnum.NOT_TRACKING;
|
|
235
|
+
return PositionHandlerEnum_1.PositionHandlerEnum.NOT_TRACKING;
|
|
236
|
+
};
|
|
237
|
+
/**
|
|
238
|
+
* Returns estimate of point on shape, where the trip should be with appropriate delay
|
|
239
|
+
*
|
|
240
|
+
* @param {IShapeAnchorPoint[]} tripShapePoints - Precalculated trip shape equidistant points with scheduled times
|
|
241
|
+
* @param {Feature<Point, ICurrentPositionProperties>} currentPosition - Current position of trip
|
|
242
|
+
* @param {IVPTripsLastPositionContext | null} context - Context state, holds information about previous positions
|
|
243
|
+
* @param {number} startDayTimestamp - Unix timestamp of midnight before trip starts
|
|
244
|
+
* @returns {IPositionToUpdate} - Position object to update
|
|
245
|
+
*/
|
|
246
|
+
RegionalBusPositionsManager.getEstimatedPoint = (tripGtfsData, currentPosition, context, startDayTimestamp) => __awaiter(void 0, void 0, void 0, function* () {
|
|
247
|
+
var _d, _e, _f, _g, _h, _j, _k, _l;
|
|
248
|
+
// init radius around GPS position ( 200 meters radius, 16 points polygon aka circle)
|
|
249
|
+
const radius = 0.2;
|
|
250
|
+
const defaultStatePosition = const_1.StatePositionEnum.OFF_TRACK;
|
|
251
|
+
// Initial value
|
|
252
|
+
let estimatedPoint = Object.assign({ id: currentPosition.properties.id, state_position: defaultStatePosition, state_process: const_1.StateProcessEnum.PROCESSED, tcp_event: currentPosition.properties.tcp_event, valid_to: ValidToCalculator_1.default.getDefaultValidToAttribute(currentPosition.properties.origin_timestamp) }, (context &&
|
|
253
|
+
((_d = context.lastPositionTracking) === null || _d === void 0 ? void 0 : _d.properties.last_stop_sequence) && {
|
|
254
|
+
shape_dist_traveled: (_e = context.lastPositionTracking) === null || _e === void 0 ? void 0 : _e.properties.shape_dist_traveled,
|
|
255
|
+
last_stop_arrival_time: ((_f = context.lastPositionTracking) === null || _f === void 0 ? void 0 : _f.properties.last_stop_arrival_time)
|
|
256
|
+
? new Date((_g = context.lastPositionTracking) === null || _g === void 0 ? void 0 : _g.properties.last_stop_arrival_time)
|
|
257
|
+
: undefined,
|
|
258
|
+
last_stop_departure_time: ((_h = context.lastPositionTracking) === null || _h === void 0 ? void 0 : _h.properties.last_stop_departure_time)
|
|
259
|
+
? new Date((_j = context.lastPositionTracking) === null || _j === void 0 ? void 0 : _j.properties.last_stop_departure_time)
|
|
260
|
+
: undefined,
|
|
261
|
+
last_stop_sequence: (_k = context.lastPositionTracking) === null || _k === void 0 ? void 0 : _k.properties.last_stop_sequence,
|
|
262
|
+
last_stop_id: (_l = context.lastPositionTracking) === null || _l === void 0 ? void 0 : _l.properties.last_stop_id,
|
|
263
|
+
}));
|
|
264
|
+
// returns array of segments (row of points) of shape anchor points around gps
|
|
265
|
+
const ptsInRadius = yield PositionCalculator_1.default.getShapePointsAroundPosition(tripGtfsData.shapes_anchor_points, currentPosition, radius, tripGtfsData.trip_id);
|
|
266
|
+
if (ptsInRadius.length < 1) {
|
|
267
|
+
return estimatedPoint;
|
|
268
|
+
}
|
|
269
|
+
// picks only closest point for each segment
|
|
270
|
+
const closestPts = yield PositionCalculator_1.default.getClosestPoints(ptsInRadius, currentPosition);
|
|
271
|
+
if (closestPts.length < 1) {
|
|
272
|
+
return estimatedPoint;
|
|
273
|
+
}
|
|
274
|
+
// DECIDE WHICH POINT IS PROBABLY RIGHT
|
|
275
|
+
return _a.getClosestPoint(currentPosition, context, startDayTimestamp, closestPts, tripGtfsData);
|
|
276
|
+
});
|
|
277
|
+
/**
|
|
278
|
+
* Picks only one closest point for multiple possible points based on delay of last position and stop times
|
|
279
|
+
*
|
|
280
|
+
* @param {Feature<Point, ICurrentPositionProperties>} currentPosition - Feature Point of current position
|
|
281
|
+
* @param {IVPTripsLastPositionContext | null} context - Context state, holds information about previous positions
|
|
282
|
+
* @param {number} startDayTimestamp - Unix timestamp of start of the day
|
|
283
|
+
* @param {IShapeAnchorPoint[]} closestPts - All closest points of possible segments
|
|
284
|
+
* @param {IComputationTrip} tripGtfsData - GTFS data and all set of known positions
|
|
285
|
+
* @returns {IPositionToUpdate} - Result point as position to update in DB
|
|
286
|
+
*/
|
|
287
|
+
RegionalBusPositionsManager.getClosestPoint = (currentPosition, context, startDayTimestamp, closestPts, tripGtfsData) => __awaiter(void 0, void 0, void 0, function* () {
|
|
288
|
+
// want to find minimum difference of our prediction, where the bus should be
|
|
289
|
+
let minTimeRealDiff = Infinity;
|
|
290
|
+
const tripStopTimes = tripGtfsData.stop_times;
|
|
291
|
+
const closestPtsIterator = (i, prevTimeDelay, estimatedPoint, cb) => {
|
|
292
|
+
// end of iteration
|
|
293
|
+
if (closestPts.length === i) {
|
|
294
|
+
return cb(estimatedPoint);
|
|
295
|
+
}
|
|
296
|
+
let thisClosestPoint = closestPts[i];
|
|
297
|
+
const timeScheduledTimestamp = _a.getLocalTimeToDateObject(startDayTimestamp,
|
|
298
|
+
// take stop arrival time if is point at stop
|
|
299
|
+
thisClosestPoint.this_stop_sequence
|
|
300
|
+
? tripStopTimes[thisClosestPoint.this_stop_sequence - 1].arrival_time_seconds
|
|
301
|
+
: thisClosestPoint.time_scheduled_seconds);
|
|
302
|
+
let timeDelayInSeconds = Math.round((currentPosition.properties.origin_timestamp.getTime() - timeScheduledTimestamp.getTime()) / 1000);
|
|
303
|
+
// time where the bus should on this point
|
|
304
|
+
const timeProposed = thisClosestPoint.time_scheduled_seconds + prevTimeDelay;
|
|
305
|
+
// difference
|
|
306
|
+
const timeRealDiff = thisClosestPoint.time_scheduled_seconds + timeDelayInSeconds - timeProposed;
|
|
307
|
+
// we look for the best fitting point
|
|
308
|
+
if (Math.abs(timeRealDiff) < Math.abs(minTimeRealDiff)) {
|
|
309
|
+
minTimeRealDiff = timeRealDiff;
|
|
310
|
+
// lets correct delay if it is at stop
|
|
311
|
+
if (thisClosestPoint.this_stop_sequence && timeDelayInSeconds) {
|
|
312
|
+
const thisStopSequence = thisClosestPoint.this_stop_sequence;
|
|
313
|
+
timeDelayInSeconds = _a.getCorrectedTimeDelay(timeDelayInSeconds, context, currentPosition, thisStopSequence, {
|
|
314
|
+
departureTime: tripStopTimes[thisStopSequence - 1].departure_time_seconds,
|
|
315
|
+
arrivalTime: tripStopTimes[thisStopSequence - 1].arrival_time_seconds,
|
|
316
|
+
});
|
|
317
|
+
}
|
|
318
|
+
const statePosition = _a.determineStatePosition(thisClosestPoint, currentPosition.properties);
|
|
319
|
+
const thisStopSequence = thisClosestPoint.this_stop_sequence;
|
|
320
|
+
const lastStopSequence = thisClosestPoint.last_stop_sequence;
|
|
321
|
+
const nextStopSequence = thisClosestPoint.next_stop_sequence;
|
|
322
|
+
// save it for result
|
|
323
|
+
estimatedPoint = {
|
|
324
|
+
id: currentPosition.properties.id,
|
|
325
|
+
bearing: thisClosestPoint.bearing,
|
|
326
|
+
shape_dist_traveled: Math.round(thisClosestPoint.shape_dist_traveled * 1000) / 1000,
|
|
327
|
+
next_stop_id: tripStopTimes[nextStopSequence - 1].stop_id,
|
|
328
|
+
last_stop_id: tripStopTimes[lastStopSequence - 1].stop_id,
|
|
329
|
+
next_stop_name: tripStopTimes[nextStopSequence - 1].stop.stop_name,
|
|
330
|
+
last_stop_name: tripStopTimes[lastStopSequence - 1].stop.stop_name,
|
|
331
|
+
next_stop_sequence: nextStopSequence,
|
|
332
|
+
last_stop_sequence: lastStopSequence,
|
|
333
|
+
next_stop_arrival_time: _a.getLocalTimeToDateObject(startDayTimestamp, tripStopTimes[nextStopSequence - 1].arrival_time_seconds),
|
|
334
|
+
last_stop_arrival_time: _a.getLocalTimeToDateObject(startDayTimestamp, tripStopTimes[lastStopSequence - 1].arrival_time_seconds),
|
|
335
|
+
next_stop_departure_time: _a.getLocalTimeToDateObject(startDayTimestamp, tripStopTimes[nextStopSequence - 1].departure_time_seconds),
|
|
336
|
+
last_stop_departure_time: _a.getLocalTimeToDateObject(startDayTimestamp, tripStopTimes[lastStopSequence - 1].departure_time_seconds),
|
|
337
|
+
delay: timeDelayInSeconds,
|
|
338
|
+
this_stop_id: (statePosition === const_1.StatePositionEnum.AT_STOP &&
|
|
339
|
+
thisStopSequence &&
|
|
340
|
+
tripStopTimes[thisStopSequence - 1].stop_id) ||
|
|
341
|
+
undefined,
|
|
342
|
+
this_stop_name: (statePosition === const_1.StatePositionEnum.AT_STOP &&
|
|
343
|
+
thisStopSequence &&
|
|
344
|
+
tripStopTimes[thisStopSequence - 1].stop.stop_name) ||
|
|
345
|
+
undefined,
|
|
346
|
+
this_stop_sequence: (statePosition === const_1.StatePositionEnum.AT_STOP && thisStopSequence) || undefined,
|
|
347
|
+
last_stop_headsign: tripStopTimes[lastStopSequence - 1].stop_headsign || undefined,
|
|
348
|
+
state_position: statePosition,
|
|
349
|
+
state_process: const_1.StateProcessEnum.PROCESSED,
|
|
350
|
+
valid_to: ValidToCalculator_1.default.getDefaultValidToAttribute(currentPosition.properties.origin_timestamp),
|
|
351
|
+
};
|
|
352
|
+
}
|
|
353
|
+
// next step
|
|
354
|
+
closestPtsIterator(i + 1, prevTimeDelay, estimatedPoint, cb);
|
|
355
|
+
};
|
|
356
|
+
return new Promise((resolve) => {
|
|
357
|
+
var _b, _c;
|
|
358
|
+
closestPtsIterator(0, (_c = (_b = context === null || context === void 0 ? void 0 : context.lastPositionTracking) === null || _b === void 0 ? void 0 : _b.properties.delay) !== null && _c !== void 0 ? _c : 0, null, (estimatedPoint) => {
|
|
359
|
+
resolve(estimatedPoint);
|
|
360
|
+
});
|
|
361
|
+
});
|
|
362
|
+
});
|
|
363
|
+
/**
|
|
364
|
+
* Returns date object for stop time
|
|
365
|
+
* + given by start of day when trip starts
|
|
366
|
+
* + and GTFS HH:mm:ss format of stop time in seconds
|
|
367
|
+
*
|
|
368
|
+
* @param {number} startDayTimestamp - Unix timestamp of local time midnight before trip starts
|
|
369
|
+
* @param {number} timeSeconds - Number of seconds given by HH:mm:ss format of GTFS stop time
|
|
370
|
+
* @returns {Date} - Returns date object
|
|
371
|
+
*/
|
|
372
|
+
RegionalBusPositionsManager.getLocalTimeToDateObject = (startDayTimestamp, timeSeconds) => {
|
|
373
|
+
return (0, moment_timezone_1.default)(startDayTimestamp)
|
|
374
|
+
.tz("Europe/Prague")
|
|
375
|
+
.startOf("day")
|
|
376
|
+
.hours(Math.floor(timeSeconds / 3600))
|
|
377
|
+
.minutes(Math.floor((timeSeconds % 3600) / 60))
|
|
378
|
+
.seconds(timeSeconds % 60)
|
|
379
|
+
.toDate();
|
|
380
|
+
};
|
|
381
|
+
/**
|
|
382
|
+
* Corrects time delay at stop with dwelling time
|
|
383
|
+
*
|
|
384
|
+
* @param {number} timeDelay - Initial computed delay in seconds, can be negative for trip ahead
|
|
385
|
+
* @param {IVPTripsLastPositionContext | null} context - Context state, holds information about previous positions
|
|
386
|
+
* @param {Feature<Point, ICurrentPositionProperties>} currentPosition - Feature Point of current position
|
|
387
|
+
* @param {IShapeAnchorPoint} thisClosestPoint - Closest point of shape anchors
|
|
388
|
+
* @param { departureTime: number; arrivalTime: number } stopTimes - departure and arrival stop times in seconds
|
|
389
|
+
* @returns {number} - Result delay in seconds, can be negative for trip ahead
|
|
390
|
+
*/
|
|
391
|
+
RegionalBusPositionsManager.getCorrectedTimeDelay = (timeDelay, context, currentPosition, thisStopSequence, stopTimes) => {
|
|
392
|
+
// compute dwell time in stop, most common is zero
|
|
393
|
+
const stopDwellTimeSeconds = stopTimes.departureTime - stopTimes.arrivalTime;
|
|
394
|
+
// if dwell time is sheduled as zero, return initial computed delay
|
|
395
|
+
if (stopDwellTimeSeconds <= 0) {
|
|
396
|
+
return timeDelay;
|
|
397
|
+
}
|
|
398
|
+
// if last position was not in this same stop or there is no last position at all
|
|
399
|
+
if (!context || context.atStopStreak.stop_sequence !== thisStopSequence) {
|
|
400
|
+
// timeDelay >= 0 trip is DELAYED
|
|
401
|
+
// we presume it will lower delay by shortening its scheduled dwell time,
|
|
402
|
+
// cant go under zero of course, trip should not go ahead
|
|
403
|
+
// else trip is AHeAD
|
|
404
|
+
// left computed delay as it was
|
|
405
|
+
return timeDelay >= 0 ? Math.max(timeDelay - stopDwellTimeSeconds, 0) : timeDelay;
|
|
406
|
+
}
|
|
407
|
+
// we presume that first position at same stop is real arrival time
|
|
408
|
+
if (context.atStopStreak.firstPositionDelay >= 0) {
|
|
409
|
+
// trip was DELAYED before
|
|
410
|
+
// we presume it will lower delay by shortening its scheduled dwell time,
|
|
411
|
+
// cant go under zero of course, trip should not go ahead
|
|
412
|
+
return Math.max(timeDelay - stopDwellTimeSeconds, 0);
|
|
413
|
+
}
|
|
414
|
+
// trip was AHEAD before
|
|
415
|
+
// real dwell time so far
|
|
416
|
+
const realDwellTimeSeconds = Math.round((currentPosition.properties.origin_timestamp.getTime() - context.atStopStreak.firstPositionTimestamp) / 1000);
|
|
417
|
+
// if real dwell is longer than scheduled, then add to negative delay time
|
|
418
|
+
return context.atStopStreak.firstPositionDelay + Math.max(realDwellTimeSeconds - stopDwellTimeSeconds, 0);
|
|
419
|
+
};
|
|
420
|
+
/**
|
|
421
|
+
* Compute UTC timestamp of start of day when trip starts
|
|
422
|
+
*
|
|
423
|
+
* @param {number} startTimestamp - Unix timestamp of start of the trip
|
|
424
|
+
* @param {number} firstStopTimeScheduledSeconds - Number of seconds from midnight of first stop departure
|
|
425
|
+
* @returns {number} - Returns unix timestamp in milliseconds.
|
|
426
|
+
*/
|
|
427
|
+
RegionalBusPositionsManager.getStartDayTimestamp = (startTimestamp, firstStopTimeScheduledSeconds) => {
|
|
428
|
+
let startDayTimestamp = moment_timezone_1.default.utc(startTimestamp).tz("Europe/Prague").startOf("day");
|
|
429
|
+
const stopTimeDayOverflow = Math.floor(firstStopTimeScheduledSeconds / (60 * 60 * 24));
|
|
430
|
+
// if trip has 24+ stop times set real startDay to yesterday
|
|
431
|
+
if (stopTimeDayOverflow > 0) {
|
|
432
|
+
startDayTimestamp.subtract(1, "day");
|
|
433
|
+
}
|
|
434
|
+
return startDayTimestamp.valueOf();
|
|
435
|
+
};
|
|
436
|
+
RegionalBusPositionsManager.determineStatePosition = (thisClosestPoint, currentPosition) => {
|
|
437
|
+
const statePosition = thisClosestPoint.this_stop_sequence && currentPosition.tcp_event !== const_1.RegionalBusEventEnum.DEPARTURED
|
|
438
|
+
? const_1.StatePositionEnum.AT_STOP
|
|
439
|
+
: const_1.StatePositionEnum.ON_TRACK;
|
|
440
|
+
return statePosition;
|
|
441
|
+
};
|
|
442
|
+
//# sourceMappingURL=RegionalBusPositionsManager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RegionalBusPositionsManager.js","sourceRoot":"","sources":["../../../../../../../src/integration-engine/vehicle-positions/workers/vehicle-positions/helpers/regional-bus/RegionalBusPositionsManager.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { IPositionToUpdate } from "../../../interfaces/VPInterfaces";
|
|
2
|
+
import { IVPTripsPositionAttributes } from "../../../../../../../schema-definitions/vehicle-positions/models/interfaces/IVPTripsPositionAttributes";
|
|
3
|
+
import { IVPTripsLastPositionContext } from "../../../../../../../schema-definitions/vehicle-positions/models/interfaces/VPTripsLastPositionInterfaces";
|
|
4
|
+
import { GTFSRouteTypeEnum } from "../../../../../../../helpers/RouteTypeEnums";
|
|
5
|
+
export declare class RegionalBusComputeDelayHelper {
|
|
6
|
+
/**
|
|
7
|
+
* Saves relevant information to calculate delays in future vehicle position iterations.
|
|
8
|
+
*/
|
|
9
|
+
static updateContext(context: IVPTripsLastPositionContext, positionToUpdate: IPositionToUpdate | null, position: IVPTripsPositionAttributes, gtfsRouteType: GTFSRouteTypeEnum): IVPTripsLastPositionContext;
|
|
10
|
+
/**
|
|
11
|
+
* Adds info about delay at stop to positionToUpdate based on current position and context from previous positions.
|
|
12
|
+
*/
|
|
13
|
+
static updatePositionToUpdate(context: IVPTripsLastPositionContext, positionToUpdate: IPositionToUpdate, position: IVPTripsPositionAttributes, gtfsRouteType: GTFSRouteTypeEnum): IPositionToUpdate;
|
|
14
|
+
}
|
|
@@ -0,0 +1,26 @@
|
|
|
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
|
+
exports.RegionalBusComputeDelayHelper = void 0;
|
|
7
|
+
const FactoryDelayAtStop_1 = __importDefault(require("./strategy/FactoryDelayAtStop"));
|
|
8
|
+
class RegionalBusComputeDelayHelper {
|
|
9
|
+
/**
|
|
10
|
+
* Saves relevant information to calculate delays in future vehicle position iterations.
|
|
11
|
+
*/
|
|
12
|
+
static updateContext(context, positionToUpdate, position, gtfsRouteType) {
|
|
13
|
+
var _a, _b;
|
|
14
|
+
context.lastPositionDelay = positionToUpdate ? positionToUpdate.delay : position.delay;
|
|
15
|
+
return ((_b = (_a = FactoryDelayAtStop_1.default.getInstance().getStrategy(gtfsRouteType)) === null || _a === void 0 ? void 0 : _a.updateContext(context, positionToUpdate, position)) !== null && _b !== void 0 ? _b : context);
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Adds info about delay at stop to positionToUpdate based on current position and context from previous positions.
|
|
19
|
+
*/
|
|
20
|
+
static updatePositionToUpdate(context, positionToUpdate, position, gtfsRouteType) {
|
|
21
|
+
var _a, _b;
|
|
22
|
+
return ((_b = (_a = FactoryDelayAtStop_1.default.getInstance().getStrategy(gtfsRouteType)) === null || _a === void 0 ? void 0 : _a.updatePosition(context, positionToUpdate, position)) !== null && _b !== void 0 ? _b : positionToUpdate);
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
exports.RegionalBusComputeDelayHelper = RegionalBusComputeDelayHelper;
|
|
26
|
+
//# sourceMappingURL=RegionalBusComputeDelayHelper.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RegionalBusComputeDelayHelper.js","sourceRoot":"","sources":["../../../../../../../../src/integration-engine/vehicle-positions/workers/vehicle-positions/helpers/regional-bus/compute-positions/RegionalBusComputeDelayHelper.ts"],"names":[],"mappings":";;;;;;AAIA,uFAA+D;AAE/D,MAAa,6BAA6B;IACtC;;OAEG;IACI,MAAM,CAAC,aAAa,CACvB,OAAoC,EACpC,gBAA0C,EAC1C,QAAoC,EACpC,aAAgC;;QAEhC,OAAO,CAAC,iBAAiB,GAAG,gBAAgB,CAAC,CAAC,CAAC,gBAAgB,CAAC,KAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC;QAExF,OAAO,CACH,MAAA,MAAA,4BAAkB,CAAC,WAAW,EAAE,CAAC,WAAW,CAAC,aAAa,CAAC,0CAAE,aAAa,CAAC,OAAO,EAAE,gBAAgB,EAAE,QAAQ,CAAC,mCAC/G,OAAO,CACV,CAAC;IACN,CAAC;IAED;;OAEG;IACI,MAAM,CAAC,sBAAsB,CAChC,OAAoC,EACpC,gBAAmC,EACnC,QAAoC,EACpC,aAAgC;;QAEhC,OAAO,CACH,MAAA,MAAA,4BAAkB,CAAC,WAAW,EAAE,CAAC,WAAW,CAAC,aAAa,CAAC,0CAAE,cAAc,CAAC,OAAO,EAAE,gBAAgB,EAAE,QAAQ,CAAC,mCAChH,gBAAgB,CACnB,CAAC;IACN,CAAC;CACJ;AAhCD,sEAgCC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { IPositionToUpdate } from "../../../../interfaces/VPInterfaces";
|
|
2
|
+
import { IVPTripsPositionAttributes } from "../../../../../../../../schema-definitions/vehicle-positions/models/interfaces/IVPTripsPositionAttributes";
|
|
3
|
+
import { IVPTripsLastPositionContext } from "../../../../../../../../schema-definitions/vehicle-positions/models/interfaces/VPTripsLastPositionInterfaces";
|
|
4
|
+
import AbstractDelayAtStop from "../../../compute-positions/strategy/AbstractDelayAtStop";
|
|
5
|
+
export declare class BusDelayAtStop extends AbstractDelayAtStop {
|
|
6
|
+
updateContext(context: IVPTripsLastPositionContext, positionToUpdate: IPositionToUpdate | null, position: IVPTripsPositionAttributes): IVPTripsLastPositionContext;
|
|
7
|
+
updatePosition(context: IVPTripsLastPositionContext, positionToUpdate: IPositionToUpdate, position: IVPTripsPositionAttributes | undefined): IPositionToUpdate;
|
|
8
|
+
private didVehicleDepart;
|
|
9
|
+
}
|