diff options
| author | Zog | 2018-02-27 14:38:51 +0100 |
|---|---|---|
| committer | Zog | 2018-02-27 14:38:51 +0100 |
| commit | 06ff047a212c8c1dd6eb1de10ce92f0059151d2a (patch) | |
| tree | cb642d585303489f293e8b5cf7a59b9bcc888a42 | |
| parent | f8609e6c8a4f460473991875df398e4509b09434 (diff) | |
| download | chouette-core-06ff047a212c8c1dd6eb1de10ce92f0059151d2a.tar.bz2 | |
Refs #6063; Fix the journeys time editor6036-fix-journeys-editor
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) }) }) }) |
