aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--app/javascript/vehicle_journeys/actions/index.js9
-rw-r--r--app/javascript/vehicle_journeys/components/VehicleJourney.js4
-rw-r--r--app/javascript/vehicle_journeys/containers/VehicleJourneysList.js4
-rw-r--r--app/javascript/vehicle_journeys/reducers/vehicleJourneys.js4
-rw-r--r--spec/javascript/vehicle_journeys/actions_spec.js13
5 files changed, 20 insertions, 14 deletions
diff --git a/app/javascript/vehicle_journeys/actions/index.js b/app/javascript/vehicle_journeys/actions/index.js
index e67753e4b..6d9119cdc 100644
--- a/app/javascript/vehicle_journeys/actions/index.js
+++ b/app/javascript/vehicle_journeys/actions/index.js
@@ -213,14 +213,15 @@ const actions = {
toggleArrivals : () => ({
type: 'TOGGLE_ARRIVALS',
}),
- updateTime : (val, subIndex, index, timeUnit, isDeparture, isArrivalsToggled) => ({
+ updateTime : (val, subIndex, index, timeUnit, isDeparture, isArrivalsToggled, enforceConsistency=false) => ({
type: 'UPDATE_TIME',
val,
subIndex,
index,
timeUnit,
isDeparture,
- isArrivalsToggled
+ isArrivalsToggled,
+ enforceConsistency
}),
resetStateFilters: () => ({
type: 'RESET_FILTERS'
@@ -487,10 +488,10 @@ const actions = {
vjas.delta = delta
return vjas
},
- adjustSchedule: (action, schedule) => {
+ adjustSchedule: (action, schedule, enforceConsistency=false) => {
// we enforce that the departure time remains after the arrival time
actions.getDelta(schedule)
- if(schedule.delta < 0){
+ if(enforceConsistency && schedule.delta < 0){
if(action.isDeparture){
schedule.arrival_time = schedule.departure_time
}
diff --git a/app/javascript/vehicle_journeys/components/VehicleJourney.js b/app/javascript/vehicle_journeys/components/VehicleJourney.js
index 7db0cee1c..d0a9343ed 100644
--- a/app/javascript/vehicle_journeys/components/VehicleJourney.js
+++ b/app/javascript/vehicle_journeys/components/VehicleJourney.js
@@ -132,6 +132,7 @@ export default class VehicleJourney extends Component {
disabled={!this.props.editMode || this.isDisabled(this.props.value.deletable, vj.dummy) || this.props.filters.policy['vehicle_journeys.update'] == false}
readOnly={!this.props.editMode && !vj.dummy}
onChange={(e) => {this.props.onUpdateTime(e, i, this.props.index, 'hour', false, false)}}
+ onChange={(e) => {this.props.onUpdateTime(e, i, this.props.index, 'hour', false, false, true)}}
value={vj.arrival_time['hour']}
/>
<span>:</span>
@@ -143,6 +144,7 @@ export default class VehicleJourney extends Component {
disabled={!this.props.editMode || this.isDisabled(this.props.value.deletable, vj.dummy) || this.props.filters.policy['vehicle_journeys.update'] == false}
readOnly={!this.props.editMode && !vj.dummy}
onChange={(e) => {this.props.onUpdateTime(e, i, this.props.index, 'minute', false, false)}}
+ onBlur={(e) => {this.props.onUpdateTime(e, i, this.props.index, 'minute', false, false, true)}}
value={vj.arrival_time['minute']}
/>
</span>
@@ -163,6 +165,7 @@ export default class VehicleJourney extends Component {
disabled={!this.props.editMode || this.isDisabled(this.props.value.deletable, vj.dummy) || this.props.filters.policy['vehicle_journeys.update'] == false}
readOnly={!this.props.editMode && !vj.dummy}
onChange={(e) => {this.props.onUpdateTime(e, i, this.props.index, 'hour', true, this.props.filters.toggleArrivals)}}
+ onBlur={(e) => {this.props.onUpdateTime(e, i, this.props.index, 'hour', true, this.props.filters.toggleArrivals, true)}}
value={vj.departure_time['hour']}
/>
<span>:</span>
@@ -174,6 +177,7 @@ export default class VehicleJourney extends Component {
disabled={!this.props.editMode || this.isDisabled(this.props.value.deletable, vj.dummy) || this.props.filters.policy['vehicle_journeys.update'] == false}
readOnly={!this.props.editMode && !vj.dummy}
onChange={(e) => {this.props.onUpdateTime(e, i, this.props.index, "minute", true, this.props.filters.toggleArrivals)}}
+ onBlur={(e) => {this.props.onUpdateTime(e, i, this.props.index, "minute", true, this.props.filters.toggleArrivals, true)}}
value={vj.departure_time['minute']}
/>
</span>
diff --git a/app/javascript/vehicle_journeys/containers/VehicleJourneysList.js b/app/javascript/vehicle_journeys/containers/VehicleJourneysList.js
index 76d1c3a78..81d603fd4 100644
--- a/app/javascript/vehicle_journeys/containers/VehicleJourneysList.js
+++ b/app/javascript/vehicle_journeys/containers/VehicleJourneysList.js
@@ -20,8 +20,8 @@ const mapDispatchToProps = (dispatch) => {
dispatch(actions.fetchingApi())
actions.fetchVehicleJourneys(dispatch, undefined, undefined, filters.queryString, routeUrl)
},
- onUpdateTime: (e, subIndex, index, timeUnit, isDeparture, isArrivalsToggled) => {
- dispatch(actions.updateTime(e.target.value, subIndex, index, timeUnit, isDeparture, isArrivalsToggled))
+ onUpdateTime: (e, subIndex, index, timeUnit, isDeparture, isArrivalsToggled, enforceConsistency=false) => {
+ dispatch(actions.updateTime(e.target.value, subIndex, index, timeUnit, isDeparture, isArrivalsToggled, enforceConsistency))
},
onSelectVehicleJourney: (index) => {
dispatch(actions.selectVehicleJourney(index))
diff --git a/app/javascript/vehicle_journeys/reducers/vehicleJourneys.js b/app/javascript/vehicle_journeys/reducers/vehicleJourneys.js
index 8705b3cf2..9f78a4163 100644
--- a/app/javascript/vehicle_journeys/reducers/vehicleJourneys.js
+++ b/app/javascript/vehicle_journeys/reducers/vehicleJourneys.js
@@ -148,11 +148,11 @@ const vehicleJourney= (state = {}, action, keep) => {
newSchedule.departure_time[action.timeUnit] = actions.pad(action.val, action.timeUnit)
if(!action.isArrivalsToggled)
newSchedule.arrival_time[action.timeUnit] = newSchedule.departure_time[action.timeUnit]
- newSchedule = actions.adjustSchedule(action, newSchedule)
+ newSchedule = actions.adjustSchedule(action, newSchedule, action.enforceConsistency)
return _.assign({}, state.vehicle_journey_at_stops[action.subIndex], {arrival_time: newSchedule.arrival_time, departure_time: newSchedule.departure_time, delta: newSchedule.delta})
}else{
newSchedule.arrival_time[action.timeUnit] = actions.pad(action.val, action.timeUnit)
- newSchedule = actions.adjustSchedule(action, newSchedule)
+ newSchedule = actions.adjustSchedule(action, newSchedule, action.enforceConsistency)
return _.assign({}, state.vehicle_journey_at_stops[action.subIndex], {arrival_time: newSchedule.arrival_time, departure_time: newSchedule.departure_time, delta: newSchedule.delta})
}
}else{
diff --git a/spec/javascript/vehicle_journeys/actions_spec.js b/spec/javascript/vehicle_journeys/actions_spec.js
index 9710d833c..bfbb4fb36 100644
--- a/spec/javascript/vehicle_journeys/actions_spec.js
+++ b/spec/javascript/vehicle_journeys/actions_spec.js
@@ -194,7 +194,7 @@ describe('when toggling arrivals', () => {
})
describe('when updating vjas time', () => {
it('should create an action to update time', () => {
- const val = 33, subIndex = 0, index = 0, timeUnit = 'minute', isDeparture = true, isArrivalsToggled = true
+ const val = 33, subIndex = 0, index = 0, timeUnit = 'minute', isDeparture = true, isArrivalsToggled = true, enforceConsistency = false
const expectedAction = {
type: 'UPDATE_TIME',
val,
@@ -202,7 +202,8 @@ describe('when updating vjas time', () => {
index,
timeUnit,
isDeparture,
- isArrivalsToggled
+ isArrivalsToggled,
+ enforceConsistency
}
expect(actions.updateTime(val, subIndex, index, timeUnit, isDeparture, isArrivalsToggled)).toEqual(expectedAction)
})
@@ -640,7 +641,7 @@ describe('actions.adjustSchedule', () => {
}
})
it('should do nothing', () => {
- expect(actions.adjustSchedule(action, schedule)).toEqual(schedule)
+ expect(actions.adjustSchedule(action, schedule, true)).toEqual(schedule)
})
}),
context('with a delta < 0', () => {
@@ -662,7 +663,7 @@ describe('actions.adjustSchedule', () => {
arrival_time: departure_time,
delta: 0
}
- expect(actions.adjustSchedule(action, schedule)).toEqual(expected)
+ expect(actions.adjustSchedule(action, schedule, true)).toEqual(expected)
})
})
}),
@@ -676,7 +677,7 @@ describe('actions.adjustSchedule', () => {
}
})
it('should do nothing', () => {
- expect(actions.adjustSchedule(action, schedule)).toEqual(schedule)
+ expect(actions.adjustSchedule(action, schedule, true)).toEqual(schedule)
})
}),
context('with a delta < 0', () => {
@@ -698,7 +699,7 @@ describe('actions.adjustSchedule', () => {
arrival_time: arrival_time,
delta: 0
}
- expect(actions.adjustSchedule(action, schedule)).toEqual(expected)
+ expect(actions.adjustSchedule(action, schedule, true)).toEqual(expected)
})
})
})