@@ -359,15 +359,15 @@ function parseWalkingRoute(
359359) : Object {
360360 try {
361361 const path = data . paths [ 0 ] ;
362- let startDateMs = dateMs ;
363- let endDateMs = dateMs + path . time ;
362+ let startTimeMs = dateMs ;
363+ let endTimeMs = dateMs + path . time ;
364364
365365 if ( isArriveBy ) {
366- startDateMs = dateMs - path . time ;
367- endDateMs = dateMs ;
366+ startTimeMs = dateMs - path . time ;
367+ endTimeMs = dateMs ;
368368 }
369- const departureTime = convertMillisecondsToISOString ( startDateMs ) ;
370- const arrivalTime = convertMillisecondsToISOString ( endDateMs ) ;
369+ const departureTime = convertMillisecondsToISOString ( startTimeMs ) ;
370+ const arrivalTime = convertMillisecondsToISOString ( endTimeMs ) ;
371371 const totalDuration = getDifferenceInMinutes ( departureTime , arrivalTime ) ;
372372
373373 const { startCoords, endCoords } = getStartEndCoords ( path . points , path . points ) ;
@@ -453,7 +453,13 @@ function parseWalkingRoute(
453453 * @param destinationName
454454 * @returns {Promise<Array<Object>> }
455455 */
456- function parseRoutes ( busRoutes : Array < Object > , originName : string , destinationName : string ) : Promise < Array < Object >> {
456+ function parseRoutes (
457+ busRoutes : Array < Object > ,
458+ originName : string ,
459+ destinationName : string ,
460+ originalDepartureTimeMs : number ,
461+ isArriveByQuery : boolean ,
462+ ) : Promise < Array < Object >> {
457463 return Promise . all ( busRoutes . map ( async ( busRoute ) => {
458464 try {
459465 // array containing legs of journey. e.g. walk, bus ride, walk
@@ -656,6 +662,39 @@ function parseRoutes(busRoutes: Array<Object>, originName: string, destinationNa
656662 stopName : destinationName ,
657663 } ) ;
658664
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+
659698 return {
660699 arrivalTime : arriveTime ,
661700 boundingBox,
0 commit comments