diff options
| author | cedricnjanga | 2017-08-02 22:59:29 +0200 |
|---|---|---|
| committer | cedricnjanga | 2017-08-16 09:28:48 +0200 |
| commit | e175a8d8d6d412833468d52df7f6bf1d78b0b9cc (patch) | |
| tree | 6f6cfec40eee81980429be9487479189a35b9272 /app/assets/javascripts | |
| parent | 5fcf1824d56f965262d5df1ece582c129fbe806b (diff) | |
| download | chouette-core-e175a8d8d6d412833468d52df7f6bf1d78b0b9cc.tar.bz2 | |
VJ Read mode done
Diffstat (limited to 'app/assets/javascripts')
8 files changed, 69 insertions, 34 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 c30f460d8..019ca59d0 100644 --- a/app/assets/javascripts/es6_browserified/vehicle_journeys/actions/index.js +++ b/app/assets/javascripts/es6_browserified/vehicle_journeys/actions/index.js @@ -7,6 +7,12 @@ if (!window.Promise) { var batchActions = require('../batch').batchActions const actions = { + enterEditMode: () => ({ + type: "ENTER_EDIT_MODE" + }), + exitEditMode: () => ({ + type: "EXIT_EDIT_MODE" + }), receiveVehicleJourneys : (json) => ({ type: "RECEIVE_VEHICLE_JOURNEYS", json diff --git a/app/assets/javascripts/es6_browserified/vehicle_journeys/components/SaveVehicleJourneys.js b/app/assets/javascripts/es6_browserified/vehicle_journeys/components/SaveVehicleJourneys.js index 05dda976d..d59a1c109 100644 --- a/app/assets/javascripts/es6_browserified/vehicle_journeys/components/SaveVehicleJourneys.js +++ b/app/assets/javascripts/es6_browserified/vehicle_journeys/components/SaveVehicleJourneys.js @@ -9,6 +9,8 @@ class SaveVehicleJourneys extends Component{ } render() { + const buttonText = this.props.filters.editMode ? "Valider" : "Editer" + if(this.props.filters.policy['vehicle_journeys.update'] == false) { return false }else{ @@ -21,10 +23,10 @@ class SaveVehicleJourneys extends Component{ type='button' onClick={e => { e.preventDefault() - actions.submitVehicleJourneys(this.props.dispatch, this.props.vehicleJourneys) + this.props.filters.editMode ? this.props.onSubmitVehicleJourneys(this.props.dispatch, this.props.vehicleJourneys) : this.props.onEnterEditMode(e) }} > - Valider + {buttonText} </button> </form> </div> @@ -38,7 +40,9 @@ SaveVehicleJourneys.propTypes = { vehicleJourneys: PropTypes.array.isRequired, page: PropTypes.number.isRequired, status: PropTypes.object.isRequired, - filters: PropTypes.object.isRequired + filters: PropTypes.object.isRequired, + onEnterEditMode: PropTypes.func.isRequired, + onSubmitVehicleJourneys: PropTypes.func.isRequired } module.exports = SaveVehicleJourneys diff --git a/app/assets/javascripts/es6_browserified/vehicle_journeys/components/Tools.js b/app/assets/javascripts/es6_browserified/vehicle_journeys/components/Tools.js index b417828db..f12a03619 100644 --- a/app/assets/javascripts/es6_browserified/vehicle_journeys/components/Tools.js +++ b/app/assets/javascripts/es6_browserified/vehicle_journeys/components/Tools.js @@ -9,28 +9,34 @@ var NotesEditVehicleJourney = require('../containers/tools/NotesEditVehicleJourn var TimetablesEditVehicleJourney = require('../containers/tools/TimetablesEditVehicleJourney') var actions = require('../actions') -const Tools = ({vehicleJourneys, onCancelSelection}) => { +const Tools = ({vehicleJourneys, onCancelSelection, filters: {policy, editMode}}) => { return ( - <div className='select_toolbox'> - <ul> - <AddVehicleJourney /> - <DuplicateVehicleJourney /> - <ShiftVehicleJourney /> - <EditVehicleJourney /> - <TimetablesEditVehicleJourney /> - <NotesEditVehicleJourney /> - <DeleteVehicleJourneys /> - </ul> + <div> + { + (policy['vehicle_journeys.create'] && policy['vehicle_journeys.update'] && policy['vehicle_journeys.destroy'] && editMode) && + <div className='select_toolbox'> + <ul> + <AddVehicleJourney /> + <DuplicateVehicleJourney /> + <ShiftVehicleJourney /> + <EditVehicleJourney /> + <TimetablesEditVehicleJourney /> + <NotesEditVehicleJourney /> + <DeleteVehicleJourneys /> + </ul> - <span className='info-msg'>{actions.getSelected(vehicleJourneys).length} course(s) sélectionnée(s)</span> - <button className='btn btn-xs btn-link pull-right' onClick={onCancelSelection}>Annuler la sélection</button> + <span className='info-msg'>{actions.getSelected(vehicleJourneys).length} course(s) sélectionnée(s)</span> + <button className='btn btn-xs btn-link pull-right' onClick={onCancelSelection}>Annuler la sélection</button> + </div> + } </div> ) } Tools.propTypes = { vehicleJourneys : PropTypes.array.isRequired, - onCancelSelection: PropTypes.func.isRequired + onCancelSelection: PropTypes.func.isRequired, + filters: PropTypes.object.isRequired } module.exports = Tools diff --git a/app/assets/javascripts/es6_browserified/vehicle_journeys/components/VehicleJourney.js b/app/assets/javascripts/es6_browserified/vehicle_journeys/components/VehicleJourney.js index f2bd0c3cd..b19a362d6 100644 --- a/app/assets/javascripts/es6_browserified/vehicle_journeys/components/VehicleJourney.js +++ b/app/assets/javascripts/es6_browserified/vehicle_journeys/components/VehicleJourney.js @@ -58,7 +58,7 @@ class VehicleJourney extends Component { )} </div> - {(this.props.filters.policy['vehicle_journeys.update'] == true) && + {(this.props.filters.policy['vehicle_journeys.update'] == true && this.props.filters.editMode) && <div className={(this.props.value.deletable ? 'disabled ' : '') + 'checkbox'}> <input id={this.props.index} @@ -79,13 +79,13 @@ class VehicleJourney extends Component { <div className={'cellwrap' + (this.cityNameChecker(vj) ? ' headlined' : '')}> {this.props.filters.toggleArrivals && <div data-headline='Arrivée à'> - <span className={((this.isDisabled(this.props.value.deletable, vj.dummy) || this.props.filters.policy['vehicle_journeys.update'] == false) ? 'disabled ' : '') + 'input-group time'}> + <span className={((this.isDisabled(this.props.value.deletable, vj.dummy) || this.props.filters.policy['vehicle_journeys.update'] == false || this.props.filters.editMode == false) ? 'disabled ' : '') + 'input-group time'}> <input type='number' min='00' max='23' className='form-control' - disabled={(this.isDisabled(this.props.value.deletable, vj.dummy) || this.props.filters.policy['vehicle_journeys.update'] == false)} + disabled={(this.isDisabled(this.props.value.deletable, vj.dummy) || this.props.filters.policy['vehicle_journeys.update'] == false || this.props.filters.editMode == false)} onChange={(e) => {this.props.onUpdateTime(e, i, this.props.index, 'hour', false, false)}} value={vj.arrival_time['hour']} /> @@ -95,7 +95,7 @@ class VehicleJourney extends Component { min='00' max='59' className='form-control' - disabled={((this.isDisabled(this.props.value.deletable), vj.dummy) || this.props.filters.policy['vehicle_journeys.update'] == false)} + disabled={((this.isDisabled(this.props.value.deletable), vj.dummy) || this.props.filters.policy['vehicle_journeys.update'] == false || this.props.filters.editMode == false)} onChange={(e) => {this.props.onUpdateTime(e, i, this.props.index, 'minute', false, false)}} value={vj.arrival_time['minute']} /> @@ -108,13 +108,13 @@ class VehicleJourney extends Component { } </div> <div data-headline='Départ à'> - <span className={((this.isDisabled(this.props.value.deletable, vj.dummy) || this.props.filters.policy['vehicle_journeys.update'] == false) ? 'disabled ' : '') + 'input-group time'}> + <span className={((this.isDisabled(this.props.value.deletable, vj.dummy) || this.props.filters.policy['vehicle_journeys.update'] == false || this.props.filters.editMode == false) ? 'disabled ' : '') + 'input-group time'}> <input type='number' min='00' max='23' className='form-control' - disabled={(this.isDisabled(this.props.value.deletable, vj.dummy) || this.props.filters.policy['vehicle_journeys.update'] == false)} + disabled={(this.isDisabled(this.props.value.deletable, vj.dummy) || this.props.filters.policy['vehicle_journeys.update'] == false || this.props.filters.editMode == false)} onChange={(e) => {this.props.onUpdateTime(e, i, this.props.index, 'hour', true, this.props.filters.toggleArrivals)}} value={vj.departure_time['hour']} /> @@ -124,7 +124,7 @@ class VehicleJourney extends Component { min='00' max='59' className='form-control' - disabled={(this.isDisabled(this.props.value.deletable, vj.dummy) || this.props.filters.policy['vehicle_journeys.update'] == false)} + disabled={(this.isDisabled(this.props.value.deletable, vj.dummy) || this.props.filters.policy['vehicle_journeys.update'] == false || this.props.filters.editMode == false)} onChange={(e) => {this.props.onUpdateTime(e, i, this.props.index, "minute", true, this.props.filters.toggleArrivals)}} value={vj.departure_time['minute']} /> diff --git a/app/assets/javascripts/es6_browserified/vehicle_journeys/containers/SaveVehicleJourneys.js b/app/assets/javascripts/es6_browserified/vehicle_journeys/containers/SaveVehicleJourneys.js index 87bbe5353..584a79280 100644 --- a/app/assets/javascripts/es6_browserified/vehicle_journeys/containers/SaveVehicleJourneys.js +++ b/app/assets/javascripts/es6_browserified/vehicle_journeys/containers/SaveVehicleJourneys.js @@ -12,6 +12,19 @@ const mapStateToProps = (state) => { } } -const SaveVehicleJourneys = connect(mapStateToProps)(SaveVehicleJourneysComponent) +const mapDispatchToProps = (dispatch) => { + return { + onEnterEditMode: (e) => { + e.preventDefault() + dispatch(actions.enterEditMode()) + }, + onSubmitVehicleJourneys: (next, state) => { + actions.submitVehicleJourneys(dispatch, state, next) + dispatch(actions.exitEditMode()) + } + } +} + +const SaveVehicleJourneys = connect(mapStateToProps, mapDispatchToProps)(SaveVehicleJourneysComponent) module.exports = SaveVehicleJourneys diff --git a/app/assets/javascripts/es6_browserified/vehicle_journeys/containers/Tools.js b/app/assets/javascripts/es6_browserified/vehicle_journeys/containers/Tools.js index 35f492c98..698fcf06f 100644 --- a/app/assets/javascripts/es6_browserified/vehicle_journeys/containers/Tools.js +++ b/app/assets/javascripts/es6_browserified/vehicle_journeys/containers/Tools.js @@ -4,7 +4,8 @@ var actions = require('../actions') const mapStateToProps = (state) => { return { - vehicleJourneys: state.vehicleJourneys + vehicleJourneys: state.vehicleJourneys, + filters: state.filters } } diff --git a/app/assets/javascripts/es6_browserified/vehicle_journeys/index.js b/app/assets/javascripts/es6_browserified/vehicle_journeys/index.js index 97aa60526..674236194 100644 --- a/app/assets/javascripts/es6_browserified/vehicle_journeys/index.js +++ b/app/assets/javascripts/es6_browserified/vehicle_journeys/index.js @@ -8,10 +8,10 @@ var actions = require("./actions") var enableBatching = require('./batch').enableBatching // logger, DO NOT REMOVE -// var applyMiddleware = require('redux').applyMiddleware -// var createLogger = require('redux-logger') -// var thunkMiddleware = require('redux-thunk').default -// var promise = require('redux-promise') +var applyMiddleware = require('redux').applyMiddleware +var createLogger = require('redux-logger') +var thunkMiddleware = require('redux-thunk').default +var promise = require('redux-promise') var selectedJP = [] @@ -21,6 +21,7 @@ if (window.journeyPatternId) var initialState = { filters: { selectedJourneyPatterns : selectedJP, + editMode: false, policy: window.perms, toggleArrivals: false, queryString: '', @@ -85,12 +86,12 @@ if (window.jpOrigin){ initialState.filters.queryString = actions.encodeParams(params) } -// const loggerMiddleware = createLogger() +const loggerMiddleware = createLogger() let store = createStore( enableBatching(vehicleJourneysApp), - initialState - // applyMiddleware(thunkMiddleware, promise, loggerMiddleware) + initialState, + applyMiddleware(thunkMiddleware, promise, loggerMiddleware) ) render( diff --git a/app/assets/javascripts/es6_browserified/vehicle_journeys/reducers/filters.js b/app/assets/javascripts/es6_browserified/vehicle_journeys/reducers/filters.js index b4a70ec08..5bf93dab0 100644 --- a/app/assets/javascripts/es6_browserified/vehicle_journeys/reducers/filters.js +++ b/app/assets/javascripts/es6_browserified/vehicle_journeys/reducers/filters.js @@ -1,9 +1,13 @@ var _ = require('lodash') var actions = require("../actions") -let newQuery, newInterval +let newQuery, newInterval, newEditMode const filters = (state = {}, action) => { switch (action.type) { + case "ENTER_EDIT_MODE": + return _.assign({}, state, {editMode: true}) + case "EXIT_EDIT_MODE": + return _.assign({}, state, {editMode: false}) case 'RESET_FILTERS': let interval = { start:{ |
