diff options
| author | Alban Peignier | 2018-05-04 09:53:33 +0200 |
|---|---|---|
| committer | GitHub | 2018-05-04 09:53:33 +0200 |
| commit | fc71f67eb75f956aa2c3e1aae85e99b5b82bc0a3 (patch) | |
| tree | db25d1d5ab2344e27c11ea177092778c93079ba1 /app | |
| parent | 327084ca7fd23a5c9378c495c349047a97465b98 (diff) | |
| parent | a6b650b3f4f4dda08d17299622ee67d704509465 (diff) | |
| download | chouette-core-fc71f67eb75f956aa2c3e1aae85e99b5b82bc0a3.tar.bz2 | |
Merge pull request #543 from af83/6864-fix-schedules-editor
Fix schedules editor. Refs #6864
Diffstat (limited to 'app')
3 files changed, 25 insertions, 18 deletions
diff --git a/app/javascript/vehicle_journeys/actions/index.js b/app/javascript/vehicle_journeys/actions/index.js index 60496e0ff..98594083d 100644 --- a/app/javascript/vehicle_journeys/actions/index.js +++ b/app/javascript/vehicle_journeys/actions/index.js @@ -489,23 +489,28 @@ const actions = { } return 0 }, - getDelta: (vjas) => { + getDelta: (vjas, allowNegative=false) => { let delta = 0 if (vjas.departure_time.hour != '' && vjas.departure_time.minute != '' && vjas.arrival_time.hour != '' && vjas.departure_time.minute != ''){ delta = (parseInt(vjas.departure_time.hour) - parseInt(vjas.arrival_time.hour)) * 60 + (parseInt(vjas.departure_time.minute) - parseInt(vjas.arrival_time.minute)) } + if(!true && delta < 0){ + delta += 24*60 + } vjas.delta = delta return vjas }, adjustSchedule: (action, schedule, enforceConsistency=false) => { // we enforce that the departure time remains after the arrival time - actions.getDelta(schedule) + actions.getDelta(schedule, true) if(enforceConsistency && schedule.delta < 0){ - if(action.isDeparture){ - schedule.arrival_time = schedule.departure_time - } - else{ - schedule.departure_time = schedule.arrival_time + if(schedule.arrival_time.hour < 23 || schedule.departure_time.hour > 0){ + if(action.isDeparture){ + schedule.arrival_time = schedule.departure_time + } + else{ + schedule.departure_time = schedule.arrival_time + } } actions.getDelta(schedule) } diff --git a/app/javascript/vehicle_journeys/components/VehicleJourney.js b/app/javascript/vehicle_journeys/components/VehicleJourney.js index f7ae9341f..46d300e6e 100644 --- a/app/javascript/vehicle_journeys/components/VehicleJourney.js +++ b/app/javascript/vehicle_journeys/components/VehicleJourney.js @@ -192,20 +192,16 @@ export default class VehicleJourney extends Component { <span className={((this.isDisabled(this.props.value.deletable, vj.dummy) || this.props.filters.policy['vehicle_journeys.update'] == false) ? 'disabled ' : '') + 'input-group time'}> <input type='number' - min='00' - max='23' className='form-control' 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)}} + onBlur={(e) => {this.props.onUpdateTime(e, i, this.props.index, 'hour', false, false, true)}} value={vj.arrival_time['hour']} /> <span>:</span> <input type='number' - min='00' - max='59' className='form-control' 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} @@ -225,8 +221,6 @@ export default class VehicleJourney extends Component { <span className={((this.isDisabled(this.props.value.deletable, vj.dummy) || this.props.filters.policy['vehicle_journeys.update'] == false) ? 'disabled ' : '') + 'input-group time'}> <input type='number' - min='00' - max='23' className='form-control' 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} @@ -237,8 +231,6 @@ export default class VehicleJourney extends Component { <span>:</span> <input type='number' - min='00' - max='59' className='form-control' 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} diff --git a/app/javascript/vehicle_journeys/reducers/vehicleJourneys.js b/app/javascript/vehicle_journeys/reducers/vehicleJourneys.js index 121be6a00..ecb58e2ea 100644 --- a/app/javascript/vehicle_journeys/reducers/vehicleJourneys.js +++ b/app/javascript/vehicle_journeys/reducers/vehicleJourneys.js @@ -150,6 +150,16 @@ const vehicleJourney= (state = {}, action, keep) => { return _.assign({}, state, {vehicle_journey_at_stops: shiftedArray}) case 'UPDATE_TIME': let vj, vjas, vjasArray, newSchedule + let val = action.val + if(val != ''){ + val = parseInt(val) + if(action.timeUnit == "minute"){ + val = (val + 60) % 60 + } + else{ + val = (val + 24) % 24 + } + } vjasArray = state.vehicle_journey_at_stops.map((vjas, i) =>{ if(i == action.subIndex){ newSchedule = { @@ -157,13 +167,13 @@ const vehicleJourney= (state = {}, action, keep) => { arrival_time: _.assign({}, vjas.arrival_time) } if (action.isDeparture){ - newSchedule.departure_time[action.timeUnit] = actions.pad(action.val, action.timeUnit) + newSchedule.departure_time[action.timeUnit] = actions.pad(val, action.timeUnit) if(!action.isArrivalsToggled) newSchedule.arrival_time[action.timeUnit] = newSchedule.departure_time[action.timeUnit] 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.arrival_time[action.timeUnit] = actions.pad(val, action.timeUnit) 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}) } |
