diff options
| author | Thomas Haddad | 2017-02-17 17:28:54 +0100 |
|---|---|---|
| committer | Thomas Haddad | 2017-02-17 17:28:54 +0100 |
| commit | 037308d9456132a8cc5cd3415c2bfe89f7e2b467 (patch) | |
| tree | 49159f0a6d9d5b016dd1ef0c94385628633eefc5 | |
| parent | f0bf220b554dfea74e252e1d64f3dbda81055470 (diff) | |
| download | chouette-core-037308d9456132a8cc5cd3415c2bfe89f7e2b467.tar.bz2 | |
Refs #2523: Add Delete vehicle journey (w/o modal)
Signed-off-by: Thomas Shawarma Haddad <thomas.haddad@af83.com>
7 files changed, 73 insertions, 1 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 e906b1abf..6640f6034 100644 --- a/app/assets/javascripts/es6_browserified/vehicle_journeys/actions/index.js +++ b/app/assets/javascripts/es6_browserified/vehicle_journeys/actions/index.js @@ -44,6 +44,9 @@ const actions = { type: 'ADD_VEHICLEJOURNEY', data, }), + deleteVehicleJourneys : () => ({ + type: 'DELETE_VEHICLEJOURNEYS' + }), openConfirmModal : (callback) => ({ type : 'OPEN_CONFIRM_MODAL', callback 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 99c88930a..bf7f604ae 100644 --- a/app/assets/javascripts/es6_browserified/vehicle_journeys/components/App.js +++ b/app/assets/javascripts/es6_browserified/vehicle_journeys/components/App.js @@ -5,6 +5,7 @@ var FiltersList = require('../containers/FiltersList') var SaveVehicleJourneys = require('../containers/SaveVehicleJourneys') var ConfirmModal = require('../containers/ConfirmModal') var AddVehicleJourney = require('../containers/AddVehicleJourney') +var DeleteVehicleJourneys = require('../containers/DeleteVehicleJourneys') const App = () => ( <div> @@ -12,6 +13,7 @@ const App = () => ( <FiltersList /> <Navigate /> <AddVehicleJourney /> + <DeleteVehicleJourneys /> </div> <VehicleJourneysList /> <SaveVehicleJourneys /> diff --git a/app/assets/javascripts/es6_browserified/vehicle_journeys/components/DeleteVehicleJourneys.js b/app/assets/javascripts/es6_browserified/vehicle_journeys/components/DeleteVehicleJourneys.js new file mode 100644 index 000000000..8bf2a719d --- /dev/null +++ b/app/assets/javascripts/es6_browserified/vehicle_journeys/components/DeleteVehicleJourneys.js @@ -0,0 +1,22 @@ +var React = require('react') +var PropTypes = require('react').PropTypes + +const DeleteVehicleJourneys = ({onDeleteVehicleJourneys}) => { + return ( + <div className='list-group'> + <button + type='button' + className='btn btn-primary btn-sm' + onClick={onDeleteVehicleJourneys} + > + <span className='fa fa-trash'></span> + </button> + </div> + ) +} + +DeleteVehicleJourneys.propTypes = { + onDeleteVehicleJourneys: PropTypes.func.isRequired +} + +module.exports = DeleteVehicleJourneys diff --git a/app/assets/javascripts/es6_browserified/vehicle_journeys/containers/DeleteVehicleJourneys.js b/app/assets/javascripts/es6_browserified/vehicle_journeys/containers/DeleteVehicleJourneys.js new file mode 100644 index 000000000..eb07dec0e --- /dev/null +++ b/app/assets/javascripts/es6_browserified/vehicle_journeys/containers/DeleteVehicleJourneys.js @@ -0,0 +1,21 @@ +var actions = require('../actions') +var connect = require('react-redux').connect +var DeleteVJComponent = require('../components/DeleteVehicleJourneys') + +const mapStateToProps = (state) => { + return { + vehicleJourneys: state.vehicleJourneys + } +} + +const mapDispatchToProps = (dispatch) => { + return { + onDeleteVehicleJourneys: () =>{ + dispatch(actions.deleteVehicleJourneys()) + }, + } +} + +const DeleteVehicleJourneys = connect(mapStateToProps, mapDispatchToProps)(DeleteVJComponent) + +module.exports = DeleteVehicleJourneys 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 987c57de5..68a436ed2 100644 --- a/app/assets/javascripts/es6_browserified/vehicle_journeys/reducers/vehicleJourneys.js +++ b/app/assets/javascripts/es6_browserified/vehicle_journeys/reducers/vehicleJourneys.js @@ -62,6 +62,14 @@ const vehicleJourneys = (state = [], action) => { vehicleJourney(state, action), ...state ] + case 'DELETE_VEHICLEJOURNEYS': + return state.map((vj, i) =>{ + if (vj.selected){ + return Object.assign({}, vj, {deletable: true}) + } else { + return vj + } + }) case 'SELECT_VEHICLEJOURNEY': 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 92783841a..d7e64b100 100644 --- a/spec/javascripts/vehicle_journeys/actions_spec.js +++ b/spec/javascripts/vehicle_journeys/actions_spec.js @@ -91,6 +91,14 @@ describe('when checking a vehicleJourney', () => { expect(actions.selectVehicleJourney(index)).toEqual(expectedAction) }) }) +describe('when clicking on delete button', () => { + it('should create an action to delete vj', () => { + const expectedAction = { + type: 'DELETE_VEHICLEJOURNEYS', + } + expect(actions.deleteVehicleJourneys()).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 0a7b2330b..6fd3d7a20 100644 --- a/spec/javascripts/vehicle_journeys/reducers/vehicle_journeys_spec.js +++ b/spec/javascripts/vehicle_journeys/reducers/vehicle_journeys_spec.js @@ -41,7 +41,7 @@ describe('vehicleJourneys reducer', () => { journey_pattern_id: 2, published_journey_name: "vj2", objectid: 22, - selected: false, + selected: true, deletable: false, footnotes: fakeFootnotes, time_tables: fakeTimeTables, @@ -125,4 +125,12 @@ describe('vehicleJourneys reducer', () => { ).toEqual([newVJ, state[1]]) }) + it('should handle DELETE_VEHICLEJOURNEYS', () => { + const newVJ = Object.assign({}, state[1], {deletable: true}) + expect( + vjReducer(state, { + type: 'DELETE_VEHICLEJOURNEYS' + }) + ).toEqual([state[0], newVJ]) + }) }) |
