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-6036-fix-journeys-editor.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)        })      })    }) | 
