Skip to content

Commit 5005250

Browse files
committed
fix(pattern): update distance and travel times when pattern is reversed
fixes #176
1 parent 4fe3b4e commit 5005250

File tree

1 file changed

+23
-10
lines changed

1 file changed

+23
-10
lines changed

lib/editor/components/pattern/TripPatternListControls.js

Lines changed: 23 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -75,15 +75,28 @@ export default class TripPatternListControls extends Component {
7575
title: `Reverse trip pattern?`,
7676
body: `Are you sure you want to reverse this trip pattern?`,
7777
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+
})
87100
updatePatternGeometry({
88101
// Reverse control points
89102
controlPoints: clone(controlPoints).reverse(),
@@ -92,7 +105,7 @@ export default class TripPatternListControls extends Component {
92105
.map(seg => seg.reverse())
93106
.reverse()
94107
})
95-
updatePatternStops(activePattern, patternStops)
108+
updatePatternStops(activePattern, clonedPatternStops)
96109
saveActiveEntity('trippattern')
97110
}
98111
})

0 commit comments

Comments
 (0)