@@ -75,15 +75,28 @@ export default class TripPatternListControls extends Component {
75
75
title : `Reverse trip pattern?` ,
76
76
body : `Are you sure you want to reverse this trip pattern?` ,
77
77
onConfirm : ( ) => {
78
- // Order of pattern stops is irrelevant. Stop sequence must be updated.
79
- const patternStops = [ ...activePattern . patternStops ]
80
- // Reverse sort on existing stopSequence values. NOTE: Updating
81
- // stop sequence for new order is handled in updatePatternStops.
82
- . sort ( ( a , b ) => b . stopSequence - a . stopSequence )
83
- . map ( ( ps , i ) => ( {
84
- ...ps ,
85
- stopSequence : i
86
- } ) )
78
+ // Travel time will be offset by one stop (travel time for first stop
79
+ // should be zero).
80
+ let defaultTravelTime = 0
81
+ const { patternStops} = activePattern
82
+ // Store total distance from last pattern stop
83
+ const lastStop = patternStops [ patternStops . length - 1 ]
84
+ const totalDistance = lastStop . shapeDistTraveled
85
+ // Clone pattern stops and reverse them, updating shape dist traveled
86
+ // and travel time for the new order.
87
+ const clonedPatternStops = [ ...patternStops ]
88
+ . reverse ( )
89
+ . map ( ( ps , i ) => {
90
+ const patternStop = {
91
+ ...ps ,
92
+ shapeDistTraveled : totalDistance - ps . shapeDistTraveled ,
93
+ defaultTravelTime,
94
+ stopSequence : i
95
+ }
96
+ // Update default travel time for next iteration.
97
+ defaultTravelTime = ps . defaultTravelTime
98
+ return patternStop
99
+ } )
87
100
updatePatternGeometry ( {
88
101
// Reverse control points
89
102
controlPoints : clone ( controlPoints ) . reverse ( ) ,
@@ -92,7 +105,7 @@ export default class TripPatternListControls extends Component {
92
105
. map ( seg => seg . reverse ( ) )
93
106
. reverse ( )
94
107
} )
95
- updatePatternStops ( activePattern , patternStops )
108
+ updatePatternStops ( activePattern , clonedPatternStops )
96
109
saveActiveEntity ( 'trippattern' )
97
110
}
98
111
} )
0 commit comments