diff options
| author | Thomas Haddad | 2017-02-22 18:44:04 +0100 |
|---|---|---|
| committer | Thomas Haddad | 2017-02-22 18:44:04 +0100 |
| commit | 3b30c4a02db84c9c605b93da25d36e5f57fca9ca (patch) | |
| tree | 8f58c40a9af2911706ad993b57c2e61f7edfaa86 /app/assets/javascripts | |
| parent | 2b02e23c3da71abbf2a48974d23c6b56998d214b (diff) | |
| download | chouette-core-3b30c4a02db84c9c605b93da25d36e5f57fca9ca.tar.bz2 | |
Refs #2524: Add Duplicate Vehicle journey feature
Signed-off-by: Thomas Shawarma Haddad <thomas.haddad@af83.com>
Diffstat (limited to 'app/assets/javascripts')
5 files changed, 55 insertions, 23 deletions
diff --git a/app/assets/javascripts/es6_browserified/vehicle_journeys/actions/index.js b/app/assets/javascripts/es6_browserified/vehicle_journeys/actions/index.js index a2a363d6e..a80a96925 100644 --- a/app/assets/javascripts/es6_browserified/vehicle_journeys/actions/index.js +++ b/app/assets/javascripts/es6_browserified/vehicle_journeys/actions/index.js @@ -39,6 +39,9 @@ const actions = { openShiftModal : () => ({ type : 'SHIFT_VEHICLEJOURNEY_MODAL' }), + openDuplicateModal : () => ({ + type : 'DUPLICATE_VEHICLEJOURNEY_MODAL' + }), selectVehicleJourney : (index) => ({ type : 'SELECT_VEHICLEJOURNEY', index @@ -51,8 +54,9 @@ const actions = { type: 'SHIFT_VEHICLEJOURNEY', data }), - duplicateVehicleJourneys : (data) => ({ - type: 'DUPLICATE_VEHICLEJOURNEY' + duplicateVehicleJourney : (data) => ({ + type: 'DUPLICATE_VEHICLEJOURNEY', + data }), deleteVehicleJourneys : () => ({ type: 'DELETE_VEHICLEJOURNEYS' diff --git a/app/assets/javascripts/es6_browserified/vehicle_journeys/components/tools/DuplicateVehicleJourney.js b/app/assets/javascripts/es6_browserified/vehicle_journeys/components/tools/DuplicateVehicleJourney.js index adad22aa1..3e0ff627e 100644 --- a/app/assets/javascripts/es6_browserified/vehicle_journeys/components/tools/DuplicateVehicleJourney.js +++ b/app/assets/javascripts/es6_browserified/vehicle_journeys/components/tools/DuplicateVehicleJourney.js @@ -24,7 +24,7 @@ class DuplicateVehicleJourney extends Component { return ( <div className='pull-left'> <button - disabled= {(actions.getSelected(this.props.vehicleJourneys).length > 0) ? false : true} + disabled= {(actions.getSelected(this.props.vehicleJourneys).length == 1) ? false : true} type='button' className='btn btn-primary btn-sm' data-toggle='modal' @@ -34,32 +34,34 @@ class DuplicateVehicleJourney extends Component { <span className='fa fa-files-o'></span> </button> - <div className={ 'modal fade ' + ((this.props.modal.type == 'shift') ? 'in' : '') } id='DuplicateVehicleJourneyModal'> + <div className={ 'modal fade ' + ((this.props.modal.type == 'duplicate') ? 'in' : '') } id='DuplicateVehicleJourneyModal'> <div className='modal-dialog'> <div className='modal-content'> <div className='modal-header clearfix'> <h4>Mettre à jour une course</h4> </div> - {(this.props.modal.type == 'shift') && ( + {(this.props.modal.type == 'duplicate') && ( <form> <div className='modal-body'> <div className='form-group'> - <label className='control-label is-required'>Mettre à jour les horaires de la course</label> - <select - ref='objectid' - className='form-control' - onKeyDown={(e) => actions.resetValidation(e.currentTarget)} - required - > - {this.props.vehicleJourneys.map((vj, i) => - <option - key = {i} - value = {vj.objectid}> - {vj.objectid} - </option> - )} - </select> + <span>Dupliquer les horaires de la course suivante : {actions.getSelected(this.props.vehicleJourneys)[0].objectid}</span> + </div> + <div className='row'> + <div className='col-lg-6 col-md-6 col-sm-6 col-xs-6'> + <div className='form-group'> + <label className='control-label is-required'>Nombre de courses à créer et dupliquer</label> + <input + type='number' + ref='duplicate_number' + min='1' + max='20' + className='form-control' + onKeyDown={(e) => actions.resetValidation(e.currentTarget)} + required + /> + </div> + </div> </div> <div className='row'> <div className='col-lg-6 col-md-6 col-sm-6 col-xs-6'> diff --git a/app/assets/javascripts/es6_browserified/vehicle_journeys/containers/tools/DuplicateVehicleJourney.js b/app/assets/javascripts/es6_browserified/vehicle_journeys/containers/tools/DuplicateVehicleJourney.js index 942415200..417906f6f 100644 --- a/app/assets/javascripts/es6_browserified/vehicle_journeys/containers/tools/DuplicateVehicleJourney.js +++ b/app/assets/javascripts/es6_browserified/vehicle_journeys/containers/tools/DuplicateVehicleJourney.js @@ -18,8 +18,8 @@ const mapDispatchToProps = (dispatch) => { onOpenDuplicateModal: () =>{ dispatch(actions.openDuplicateModal()) }, - onDuplicateVehicleJourneys: (data) =>{ - dispatch(actions.duplicateVehicleJourneys(data)) + onDuplicateVehicleJourney: (data) =>{ + dispatch(actions.duplicateVehicleJourney(data)) } } } diff --git a/app/assets/javascripts/es6_browserified/vehicle_journeys/reducers/modal.js b/app/assets/javascripts/es6_browserified/vehicle_journeys/reducers/modal.js index 2f24b29c2..62870e27d 100644 --- a/app/assets/javascripts/es6_browserified/vehicle_journeys/reducers/modal.js +++ b/app/assets/javascripts/es6_browserified/vehicle_journeys/reducers/modal.js @@ -20,6 +20,12 @@ const modal = (state = {}, action) => { modalProps: {}, confirmModal: {} } + case 'DUPLICATE_VEHICLEJOURNEY_MODAL': + return { + type: 'duplicate', + modalProps: {}, + confirmModal: {} + } case 'CLOSE_MODAL': return { type: '', diff --git a/app/assets/javascripts/es6_browserified/vehicle_journeys/reducers/vehicleJourneys.js b/app/assets/javascripts/es6_browserified/vehicle_journeys/reducers/vehicleJourneys.js index ee8dacc98..346975216 100644 --- a/app/assets/javascripts/es6_browserified/vehicle_journeys/reducers/vehicleJourneys.js +++ b/app/assets/javascripts/es6_browserified/vehicle_journeys/reducers/vehicleJourneys.js @@ -24,6 +24,7 @@ const vehicleJourney= (state = {}, action) => { selected: false, deletable: false } + case 'DUPLICATE_VEHICLEJOURNEY': case 'SHIFT_VEHICLEJOURNEY': let shiftedArray, shiftedSchedule, shiftedVjas shiftedArray = state.vehicle_journey_at_stops.map((vjas, i) => { @@ -94,12 +95,31 @@ const vehicleJourneys = (state = [], action) => { ] case 'SHIFT_VEHICLEJOURNEY': return state.map((vj, i) => { - if (vj.selected && (actions.getSelected(state).length == 1)){ + if (vj.selected){ return vehicleJourney(vj, action) }else{ return vj } }) + case 'DUPLICATE_VEHICLEJOURNEY': + let dupeVj + let dupes = [] + let selectedIndex + state.map((vj, i) => { + if(vj.selected){ + selectedIndex = i + for (i = 0; i< action.data.duplicate_number.value; i++){ + dupeVj = vehicleJourney(vj, action) + dupeVj.comment = dupeVj.comment + '-' + i + dupeVj.selected = false + delete dupeVj['objectid'] + dupes.push(dupeVj) + } + } + }) + let concatArray = state.slice(0, selectedIndex + 1).concat(dupes) + concatArray = concatArray.concat(state.slice(selectedIndex + 1)) + return concatArray case 'DELETE_VEHICLEJOURNEYS': return state.map((vj, i) =>{ if (vj.selected){ |
