diff options
| author | Thomas Haddad | 2017-02-17 11:52:39 +0100 |
|---|---|---|
| committer | Thomas Haddad | 2017-02-17 11:52:39 +0100 |
| commit | f0bf220b554dfea74e252e1d64f3dbda81055470 (patch) | |
| tree | 2ec4f6d0ff8d717ebf5fa0e669d18ce2fa0ed33e | |
| parent | 25761bf1dc0247b0f3a5d2bd95022d782c648722 (diff) | |
| download | chouette-core-f0bf220b554dfea74e252e1d64f3dbda81055470.tar.bz2 | |
Refs #2521: add selected attr to vehicle journey
Signed-off-by: Thomas Shawarma Haddad <thomas.haddad@af83.com>
7 files changed, 56 insertions, 2 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 56ed1ef07..e906b1abf 100644 --- a/app/assets/javascripts/es6_browserified/vehicle_journeys/actions/index.js +++ b/app/assets/javascripts/es6_browserified/vehicle_journeys/actions/index.js @@ -36,6 +36,10 @@ const actions = { openCreateModal : () => ({ type : 'CREATE_VEHICLEJOURNEY_MODAL' }), + selectVehicleJourney : (index) => ({ + type : 'SELECT_VEHICLEJOURNEY', + index + }), addVehicleJourney : (data) => ({ type: 'ADD_VEHICLEJOURNEY', data, @@ -138,7 +142,8 @@ const actions = { footnotes: val.footnotes, time_tables: timeTables, vehicle_journey_at_stops: val.vehicle_journey_at_stops, - deletable: false + deletable: false, + selected: false }) } // if(vehicleJourneys.length != window.vehicleJourneysPerPage){ 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 0dc208846..53cf2c5fb 100644 --- a/app/assets/javascripts/es6_browserified/vehicle_journeys/components/VehicleJourney.js +++ b/app/assets/javascripts/es6_browserified/vehicle_journeys/components/VehicleJourney.js @@ -12,6 +12,16 @@ class VehicleJourney extends Component { <div className={'list-group-item'}> <div style={{display: 'inline-block', verticalAlign: 'top', width: 'calc(100% - 25px)'}}> + {/* selected */} + <p className='small'> + <label>Sélectionné</label> + <input + onChange = {(e) => this.props.onSelectVehicleJourney(this.props.index)} + type = 'checkbox' + checked = {this.props.value.selected} + ></input> + </p> + {/* Nom */} <p className='small'> <strong>Nom: </strong>{this.props.value.comment} @@ -95,6 +105,7 @@ VehicleJourney.propTypes = { filters: PropTypes.object.isRequired, index: PropTypes.number.isRequired, onUpdateTime: PropTypes.func.isRequired, + onSelectVehicleJourney: PropTypes.func.isRequired } module.exports = VehicleJourney diff --git a/app/assets/javascripts/es6_browserified/vehicle_journeys/components/VehicleJourneys.js b/app/assets/javascripts/es6_browserified/vehicle_journeys/components/VehicleJourneys.js index 0c2a11bac..9b3836fc4 100644 --- a/app/assets/javascripts/es6_browserified/vehicle_journeys/components/VehicleJourneys.js +++ b/app/assets/javascripts/es6_browserified/vehicle_journeys/components/VehicleJourneys.js @@ -34,6 +34,7 @@ class VehicleJourneys extends Component{ index = {index} filters = {this.props.filters} onUpdateTime = {this.props.onUpdateTime} + onSelectVehicleJourney = {this.props.onSelectVehicleJourney} /> )} </div> @@ -44,9 +45,10 @@ class VehicleJourneys extends Component{ VehicleJourneys.propTypes = { status: PropTypes.object.isRequired, + filters: PropTypes.object.isRequired, onLoadFirstPage: PropTypes.func.isRequired, onUpdateTime: PropTypes.func.isRequired, - filters: PropTypes.object.isRequired + onSelectVehicleJourney: PropTypes.func.isRequired } module.exports = VehicleJourneys diff --git a/app/assets/javascripts/es6_browserified/vehicle_journeys/containers/VehicleJourneysList.js b/app/assets/javascripts/es6_browserified/vehicle_journeys/containers/VehicleJourneysList.js index b08340887..ba9491ee4 100644 --- a/app/assets/javascripts/es6_browserified/vehicle_journeys/containers/VehicleJourneysList.js +++ b/app/assets/javascripts/es6_browserified/vehicle_journeys/containers/VehicleJourneysList.js @@ -18,6 +18,9 @@ const mapDispatchToProps = (dispatch) => { }, onUpdateTime: (e, subIndex, index, timeUnit, isDeparture, isArrivalsToggled) => { dispatch(actions.updateTime(e.target.value, subIndex, index, timeUnit, isDeparture, isArrivalsToggled)) + }, + onSelectVehicleJourney: (index) => { + dispatch(actions.selectVehicleJourney(index)) } } } 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 ccf1efea1..987c57de5 100644 --- a/app/assets/javascripts/es6_browserified/vehicle_journeys/reducers/vehicleJourneys.js +++ b/app/assets/javascripts/es6_browserified/vehicle_journeys/reducers/vehicleJourneys.js @@ -2,6 +2,8 @@ var actions = require("../actions") const vehicleJourney= (state = {}, action) => { switch (action.type) { + case 'SELECT_VEHICLEJOURNEY': + return Object.assign({}, state, {selected: !state.selected}) case 'ADD_VEHICLEJOURNEY': return { journey_pattern_id: parseInt(action.data.journey_pattern_id.value), @@ -60,6 +62,14 @@ const vehicleJourneys = (state = [], action) => { vehicleJourney(state, action), ...state ] + case 'SELECT_VEHICLEJOURNEY': + return state.map((vj, i) =>{ + if (i == action.index){ + return vehicleJourney(vj, action) + } else { + return vj + } + }) case 'UPDATE_TIME': return state.map((vj, i) =>{ if (i == action.index){ diff --git a/spec/javascripts/vehicle_journeys/actions_spec.js b/spec/javascripts/vehicle_journeys/actions_spec.js index 9f3f5e168..92783841a 100644 --- a/spec/javascripts/vehicle_journeys/actions_spec.js +++ b/spec/javascripts/vehicle_journeys/actions_spec.js @@ -81,6 +81,16 @@ describe('when next navigation button is clicked', () => { expect(actions.goToNextPage(dispatch, pagination)).toEqual(expectedAction) }) }) +describe('when checking a vehicleJourney', () => { + it('should create an action to select vj', () => { + const index = 1 + const expectedAction = { + type: 'SELECT_VEHICLEJOURNEY', + index + } + expect(actions.selectVehicleJourney(index)).toEqual(expectedAction) + }) +}) describe('when toggling arrivals', () => { it('should create an action to toggleArrivals', () => { const expectedAction = { diff --git a/spec/javascripts/vehicle_journeys/reducers/vehicle_journeys_spec.js b/spec/javascripts/vehicle_journeys/reducers/vehicle_journeys_spec.js index bb40add3a..0a7b2330b 100644 --- a/spec/javascripts/vehicle_journeys/reducers/vehicle_journeys_spec.js +++ b/spec/javascripts/vehicle_journeys/reducers/vehicle_journeys_spec.js @@ -32,6 +32,7 @@ describe('vehicleJourneys reducer', () => { published_journey_name: "vj1", objectid: 11, deletable: false, + selected: false, footnotes: fakeFootnotes, time_tables: fakeTimeTables, vehicle_journey_at_stops: fakeVJAS @@ -40,6 +41,7 @@ describe('vehicleJourneys reducer', () => { journey_pattern_id: 2, published_journey_name: "vj2", objectid: 22, + selected: false, deletable: false, footnotes: fakeFootnotes, time_tables: fakeTimeTables, @@ -112,4 +114,15 @@ describe('vehicleJourneys reducer', () => { ).toEqual([newVJ, state[1]]) }) + it('should handle SELECT_VEHICLEJOURNEY', () => { + const index = 0 + const newVJ = Object.assign({}, state[0], {selected: true}) + expect( + vjReducer(state, { + type: 'SELECT_VEHICLEJOURNEY', + index + }) + ).toEqual([newVJ, state[1]]) + }) + }) |
