aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorThomas Haddad2017-02-17 17:28:54 +0100
committerThomas Haddad2017-02-17 17:28:54 +0100
commit037308d9456132a8cc5cd3415c2bfe89f7e2b467 (patch)
tree49159f0a6d9d5b016dd1ef0c94385628633eefc5
parentf0bf220b554dfea74e252e1d64f3dbda81055470 (diff)
downloadchouette-core-037308d9456132a8cc5cd3415c2bfe89f7e2b467.tar.bz2
Refs #2523: Add Delete vehicle journey (w/o modal)
Signed-off-by: Thomas Shawarma Haddad <thomas.haddad@af83.com>
-rw-r--r--app/assets/javascripts/es6_browserified/vehicle_journeys/actions/index.js3
-rw-r--r--app/assets/javascripts/es6_browserified/vehicle_journeys/components/App.js2
-rw-r--r--app/assets/javascripts/es6_browserified/vehicle_journeys/components/DeleteVehicleJourneys.js22
-rw-r--r--app/assets/javascripts/es6_browserified/vehicle_journeys/containers/DeleteVehicleJourneys.js21
-rw-r--r--app/assets/javascripts/es6_browserified/vehicle_journeys/reducers/vehicleJourneys.js8
-rw-r--r--spec/javascripts/vehicle_journeys/actions_spec.js8
-rw-r--r--spec/javascripts/vehicle_journeys/reducers/vehicle_journeys_spec.js10
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])
+ })
})