diff options
| author | Thomas Haddad | 2017-02-22 11:19:31 +0100 |
|---|---|---|
| committer | Thomas Haddad | 2017-02-22 11:19:31 +0100 |
| commit | e1e97a1a5778d8329b8035f9bf1e532ba7bbe12a (patch) | |
| tree | ec2a8179209e119692008b03d6a37c08a13c19ab | |
| parent | dd8487d6771ac76ebc60eff7e50730b2314a0ec2 (diff) | |
| download | chouette-core-e1e97a1a5778d8329b8035f9bf1e532ba7bbe12a.tar.bz2 | |
Refs #2524: Add duplicate button (w/o feature)
Signed-off-by: Thomas Shawarma Haddad <thomas.haddad@af83.com>
7 files changed, 158 insertions, 8 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 e5e3c6512..10f3bb152 100644 --- a/app/assets/javascripts/es6_browserified/vehicle_journeys/actions/index.js +++ b/app/assets/javascripts/es6_browserified/vehicle_journeys/actions/index.js @@ -45,11 +45,14 @@ const actions = { }), addVehicleJourney : (data) => ({ type: 'ADD_VEHICLEJOURNEY', - data, + data }), shiftVehicleJourney : (data) => ({ type: 'SHIFT_VEHICLEJOURNEY', - data, + data + }), + duplicateVehicleJourneys : (data) => ({ + type: 'DUPLICATE_VEHICLEJOURNEY' }), deleteVehicleJourneys : () => ({ type: 'DELETE_VEHICLEJOURNEYS' diff --git a/app/assets/javascripts/es6_browserified/vehicle_journeys/components/App.js b/app/assets/javascripts/es6_browserified/vehicle_journeys/components/App.js index 62b1f8019..e0df0f843 100644 --- a/app/assets/javascripts/es6_browserified/vehicle_journeys/components/App.js +++ b/app/assets/javascripts/es6_browserified/vehicle_journeys/components/App.js @@ -7,15 +7,19 @@ var ConfirmModal = require('../containers/ConfirmModal') var AddVehicleJourney = require('../containers/tools/AddVehicleJourney') var DeleteVehicleJourneys = require('../containers/tools/DeleteVehicleJourneys') var ShiftVehicleJourney = require('../containers/tools/ShiftVehicleJourney') +var DuplicateVehicleJourney = require('../containers/tools/DuplicateVehicleJourney') const App = () => ( <div> <div className='clearfix' style={{ marginBottom: 10 }}> <FiltersList /> <Navigate /> - <AddVehicleJourney /> - <DeleteVehicleJourneys /> - <ShiftVehicleJourney /> + <div className='list-inline clearfix'> + <AddVehicleJourney /> + <DeleteVehicleJourneys /> + <ShiftVehicleJourney /> + <DuplicateVehicleJourney /> + </div> </div> <VehicleJourneysList /> <SaveVehicleJourneys /> diff --git a/app/assets/javascripts/es6_browserified/vehicle_journeys/components/tools/CreateModal.js b/app/assets/javascripts/es6_browserified/vehicle_journeys/components/tools/CreateModal.js index 50660a2f3..c38c02d16 100644 --- a/app/assets/javascripts/es6_browserified/vehicle_journeys/components/tools/CreateModal.js +++ b/app/assets/javascripts/es6_browserified/vehicle_journeys/components/tools/CreateModal.js @@ -21,7 +21,7 @@ class CreateModal extends Component { } if(this.props.status.fetchSuccess == true) { return ( - <div className='pull-right'> + <div className='pull-left'> <button type='button' className='btn btn-primary btn-sm' diff --git a/app/assets/javascripts/es6_browserified/vehicle_journeys/components/tools/DeleteVehicleJourneys.js b/app/assets/javascripts/es6_browserified/vehicle_journeys/components/tools/DeleteVehicleJourneys.js index 8bf2a719d..7e05f7dca 100644 --- a/app/assets/javascripts/es6_browserified/vehicle_journeys/components/tools/DeleteVehicleJourneys.js +++ b/app/assets/javascripts/es6_browserified/vehicle_journeys/components/tools/DeleteVehicleJourneys.js @@ -3,7 +3,7 @@ var PropTypes = require('react').PropTypes const DeleteVehicleJourneys = ({onDeleteVehicleJourneys}) => { return ( - <div className='list-group'> + <div className='pull-left'> <button type='button' className='btn btn-primary btn-sm' 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 new file mode 100644 index 000000000..c8b49b9ea --- /dev/null +++ b/app/assets/javascripts/es6_browserified/vehicle_journeys/components/tools/DuplicateVehicleJourney.js @@ -0,0 +1,114 @@ +var React = require('react') +var Component = require('react').Component +var PropTypes = require('react').PropTypes +var actions = require('../../actions') + +class DuplicateVehicleJourney extends Component { + constructor(props) { + super(props) + } + + handleSubmit() { + if(actions.validateFields(this.refs) == true) { + this.props.onDuplicateVehicleJourney(this.refs) + $('#DuplicateVehicleJourneyModal').modal('hide') + } + } + + render() { + if(this.props.status.isFetching == true) { + return false + } + if(this.props.status.fetchSuccess == true) { + return ( + <div className='pull-left'> + <button + type='button' + className='btn btn-primary btn-sm' + data-toggle='modal' + data-target='#DuplicateVehicleJourneyModal' + onClick={this.props.onOpenDuplicateModal} + > + <span className='fa fa-files-o'></span> + </button> + + <div className={ 'modal fade ' + ((this.props.modal.type == 'shift') ? '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') && ( + <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> + </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'>Avec un décalage de</label> + <input + type='number' + ref='additional_time' + min='0' + max='59' + className='form-control' + onKeyDown={(e) => actions.resetValidation(e.currentTarget)} + required + /> + </div> + </div> + </div> + </div> + <div className='modal-footer'> + <button + className='btn btn-default' + data-dismiss='modal' + type='button' + onClick={this.props.onModalClose} + > + Annuler + </button> + <button + className='btn btn-danger' + type='button' + onClick={this.handleSubmit.bind(this)} + > + Valider + </button> + </div> + </form> + )} + </div> + </div> + </div> + </div> + ) + } else { + return false + } + } +} + +DuplicateVehicleJourney.propTypes = { + onOpenDuplicateModal: PropTypes.func.isRequired, + onModalClose: PropTypes.func.isRequired, +} + +module.exports = DuplicateVehicleJourney diff --git a/app/assets/javascripts/es6_browserified/vehicle_journeys/components/tools/ShiftVehicleJourney.js b/app/assets/javascripts/es6_browserified/vehicle_journeys/components/tools/ShiftVehicleJourney.js index 08c9a7e12..d9334e287 100644 --- a/app/assets/javascripts/es6_browserified/vehicle_journeys/components/tools/ShiftVehicleJourney.js +++ b/app/assets/javascripts/es6_browserified/vehicle_journeys/components/tools/ShiftVehicleJourney.js @@ -21,7 +21,7 @@ class ShiftVehicleJourney extends Component { } if(this.props.status.fetchSuccess == true) { return ( - <div className='pull-right'> + <div className='pull-left'> <button type='button' className='btn btn-primary btn-sm' 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 new file mode 100644 index 000000000..942415200 --- /dev/null +++ b/app/assets/javascripts/es6_browserified/vehicle_journeys/containers/tools/DuplicateVehicleJourney.js @@ -0,0 +1,29 @@ +var actions = require('../../actions') +var connect = require('react-redux').connect +var DuplicateVJComponent = require('../../components/tools/DuplicateVehicleJourney') + +const mapStateToProps = (state) => { + return { + modal: state.modal, + vehicleJourneys: state.vehicleJourneys, + status: state.status + } +} + +const mapDispatchToProps = (dispatch) => { + return { + onModalClose: () =>{ + dispatch(actions.closeModal()) + }, + onOpenDuplicateModal: () =>{ + dispatch(actions.openDuplicateModal()) + }, + onDuplicateVehicleJourneys: (data) =>{ + dispatch(actions.duplicateVehicleJourneys(data)) + } + } +} + +const DuplicateVehicleJourney = connect(mapStateToProps, mapDispatchToProps)(DuplicateVJComponent) + +module.exports = DuplicateVehicleJourney |
