@@ -460,15 +460,28 @@ function parseRoutes(
460460 originalDepartureTimeMs : number ,
461461 isArriveByQuery : boolean ,
462462) : Promise < Array < Object >> {
463- return Promise . all ( busRoutes . map ( async ( busRoute ) => {
464- try {
463+ try {
464+ return Promise . all ( busRoutes . map ( async ( busRoute ) => {
465465 // array containing legs of journey. e.g. walk, bus ride, walk
466466 const { legs } = busRoute ;
467467 const numberOfLegs = legs . length ;
468468
469469 // string 2018-02-21T17:27:00Z
470- const { departureTime } = legs [ 0 ] ;
471- const arriveTime = legs [ numberOfLegs - 1 ] . arrivalTime ;
470+ let { departureTime } = legs [ 0 ] ;
471+ let arriveTime = legs [ numberOfLegs - 1 ] . arrivalTime ;
472+
473+ // Readjust the walking start and end times by accounting for the buffer
474+ // times that were initially passed into Graphhopper to get routes
475+ if ( busRoute . transfers === - 1 ) {
476+ let startTimeMs = originalDepartureTimeMs ;
477+ let endTimeMs = originalDepartureTimeMs + busRoute . time ;
478+ if ( isArriveByQuery ) {
479+ startTimeMs = originalDepartureTimeMs - busRoute . time ;
480+ endTimeMs = originalDepartureTimeMs ;
481+ }
482+ departureTime = convertMillisecondsToISOString ( startTimeMs ) ;
483+ arriveTime = convertMillisecondsToISOString ( endTimeMs ) ;
484+ }
472485 const totalDuration = getDifferenceInMinutes ( departureTime , arriveTime ) ;
473486
474487 const startingLocationGeometry = legs [ 0 ] . geometry ;
@@ -483,8 +496,13 @@ function parseRoutes(
483496
484497 const directions = await Promise . all ( legs . map ( async ( currLeg , j , legsArray ) => {
485498 let { type } = currLeg ;
486- const startTime = currLeg . departureTime ;
487- const endTime = currLeg . arrivalTime ;
499+ let startTime = currLeg . departureTime ;
500+ let endTime = currLeg . arrivalTime ;
501+
502+ if ( busRoute . transfers === - 1 ) {
503+ startTime = departureTime ;
504+ endTime = arriveTime ;
505+ }
488506
489507 if ( type === 'pt' ) {
490508 type = DIRECTION_TYPE . DEPART ;
@@ -662,39 +680,6 @@ function parseRoutes(
662680 stopName : destinationName ,
663681 } ) ;
664682
665- // Readjust the walking start and end times by accounting for the buffer
666- // times that were initially passed into Graphhopper to get routes
667- if ( busRoute . transfers === - 1 ) {
668- let startTimeMs = originalDepartureTimeMs ;
669- let endTimeMs = originalDepartureTimeMs + busRoute . time ;
670-
671- if ( isArriveByQuery ) {
672- startTimeMs = originalDepartureTimeMs - busRoute . time ;
673- endTimeMs = originalDepartureTimeMs ;
674- }
675-
676- const walkDepartureTime = convertMillisecondsToISOString ( startTimeMs ) ;
677- const walkArrivalTime = convertMillisecondsToISOString ( endTimeMs ) ;
678-
679- directions [ 0 ] . startTime = walkDepartureTime ;
680- directions [ 0 ] . endTime = walkArrivalTime ;
681-
682- return {
683- arrivalTime : walkArrivalTime ,
684- boundingBox,
685- departureTime : walkDepartureTime ,
686- directions,
687- endCoords,
688- endName : destinationName ,
689- numberOfTransfers : busRoute . transfers ,
690- routeSummary,
691- startCoords,
692- startName : originName ,
693- totalDuration,
694- travelDistance,
695- } ;
696- }
697-
698683 return {
699684 arrivalTime : arriveTime ,
700685 boundingBox,
@@ -709,12 +694,12 @@ function parseRoutes(
709694 totalDuration,
710695 travelDistance,
711696 } ;
712- } catch ( error ) {
713- throw new Error (
714- LogUtils . logErr ( error , busRoutes . length , 'Parse final route failed' ) ,
715- ) ;
716- }
717- } ) ) ;
697+ } ) ) ;
698+ } catch ( error ) {
699+ throw new Error (
700+ LogUtils . logErr ( error , busRoutes . length , 'Parse final route failed' ) ,
701+ ) ;
702+ }
718703}
719704
720705export default {
0 commit comments