diff options
| author | Alban Peignier | 2018-03-14 16:29:36 +0100 |
|---|---|---|
| committer | GitHub | 2018-03-14 16:29:36 +0100 |
| commit | 6aa3c52c786717a709b1069583b5ffc75ef0b698 (patch) | |
| tree | e28c995adb6eeb39c519de5c50993114abb97065 | |
| parent | 9ba5039d6219367d45a182ca09197e3645f628e6 (diff) | |
| parent | 06ff047a212c8c1dd6eb1de10ce92f0059151d2a (diff) | |
| download | chouette-core-6aa3c52c786717a709b1069583b5ffc75ef0b698.tar.bz2 | |
Merge pull request #348 from af83/6036-fix-journeys-editor
Fix the journeys time editor. Refs #6036
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 5fb88f024..e00e9b1b0 100644 --- a/app/javascript/vehicle_journeys/actions/index.js +++ b/app/javascript/vehicle_journeys/actions/index.js @@ -212,14 +212,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' @@ -486,10 +487,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 e9d40482d..b469cfecf 100644 --- a/app/javascript/vehicle_journeys/components/VehicleJourney.js +++ b/app/javascript/vehicle_journeys/components/VehicleJourney.js @@ -155,6 +155,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> @@ -166,6 +167,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> @@ -186,6 +188,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> @@ -197,6 +200,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 e7f68761e..6524f8d6f 100644 --- a/app/javascript/vehicle_journeys/reducers/vehicleJourneys.js +++ b/app/javascript/vehicle_journeys/reducers/vehicleJourneys.js @@ -153,11 +153,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) }) }) }) |
