aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--app/assets/javascripts/es6_browserified/vehicle_journeys/actions/index.js11
-rw-r--r--app/assets/javascripts/es6_browserified/vehicle_journeys/components/Filters.js6
-rw-r--r--app/assets/javascripts/es6_browserified/vehicle_journeys/containers/Filters.js7
-rw-r--r--app/assets/javascripts/es6_browserified/vehicle_journeys/reducers/filters.js3
-rw-r--r--spec/javascripts/vehicle_journeys/actions_spec.js18
-rw-r--r--spec/javascripts/vehicle_journeys/reducers/filters_spec.js10
6 files changed, 51 insertions, 4 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 ec59a732e..d43147a53 100644
--- a/app/assets/javascripts/es6_browserified/vehicle_journeys/actions/index.js
+++ b/app/assets/javascripts/es6_browserified/vehicle_journeys/actions/index.js
@@ -177,6 +177,17 @@ const actions = {
val,
unit
}),
+ filterSelect2Timetable: (selectedTT) =>({
+ type: 'SELECT_TT_FILTER',
+ selectedItem:{
+ id: selectedTT.id,
+ comment: selectedTT.comment,
+ objectid: selectedTT.objectid
+ }
+ }),
+ filterQuery: () => ({
+ type: 'FILTER_QUERY'
+ }),
fetchVehicleJourneys : (dispatch, currentPage, nextPage) => {
if(currentPage == undefined){
currentPage = 1
diff --git a/app/assets/javascripts/es6_browserified/vehicle_journeys/components/Filters.js b/app/assets/javascripts/es6_browserified/vehicle_journeys/components/Filters.js
index f265055b4..16baecec6 100644
--- a/app/assets/javascripts/es6_browserified/vehicle_journeys/components/Filters.js
+++ b/app/assets/javascripts/es6_browserified/vehicle_journeys/components/Filters.js
@@ -3,7 +3,7 @@ var PropTypes = require('react').PropTypes
var MissionSelect2 = require('./tools/select2s/MissionSelect2')
var TimetableSelect2 = require('./tools/select2s/TimetableSelect2')
-const Filters = ({filters, onFilter, onResetFilters, onUpdateStartTimeFilter, onUpdateEndTimeFilter, onToggleWithoutSchedule}) => {
+const Filters = ({filters, onFilter, onResetFilters, onUpdateStartTimeFilter, onUpdateEndTimeFilter, onToggleWithoutSchedule, onSelect2Timetable}) => {
return (
<div className = 'form-filter mb-lg'>
<div className = 'form-group'>
@@ -45,6 +45,7 @@ const Filters = ({filters, onFilter, onResetFilters, onUpdateStartTimeFilter, on
<div className = 'form-group'>
<span>
<TimetableSelect2
+ onSelect2Timetable={onSelect2Timetable}
hasRoute={true}
chunkURL= {("/autocomplete_time_tables.json?route_id=" + String(window.route_id))}
/>
@@ -79,7 +80,8 @@ Filters.propTypes = {
onFilter: PropTypes.func.isRequired,
onResetFilters: PropTypes.func.isRequired,
onUpdateStartTimeFilter: PropTypes.func.isRequired,
- onUpdateEndTimeFilter: PropTypes.func.isRequired
+ onUpdateEndTimeFilter: PropTypes.func.isRequired,
+ onSelect2Timetable: PropTypes.func.isRequired
}
module.exports = Filters
diff --git a/app/assets/javascripts/es6_browserified/vehicle_journeys/containers/Filters.js b/app/assets/javascripts/es6_browserified/vehicle_journeys/containers/Filters.js
index a73527c11..94caf6e67 100644
--- a/app/assets/javascripts/es6_browserified/vehicle_journeys/containers/Filters.js
+++ b/app/assets/javascripts/es6_browserified/vehicle_journeys/containers/Filters.js
@@ -24,8 +24,11 @@ const mapDispatchToProps = (dispatch) => {
onResetFilters: () =>{
dispatch(actions.resetFilters())
},
- onFilter: () =>{
- dispatch(actions.filterQuery())
+ // onFilter: () =>{
+ // dispatch(actions.filterQuery())
+ // },
+ onSelect2Timetable: (e) => {
+ dispatch(actions.filterSelect2Timetable(e.params.data))
}
}
}
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 27ac80f21..9531b7424 100644
--- a/app/assets/javascripts/es6_browserified/vehicle_journeys/reducers/filters.js
+++ b/app/assets/javascripts/es6_browserified/vehicle_journeys/reducers/filters.js
@@ -37,6 +37,9 @@ const filters = (state = {}, action) => {
}else{
return state
}
+ case 'SELECT_TT_FILTER':
+ newQuery = Object.assign({}, state.query, {timetable : action.selectedItem})
+ return Object.assign({}, state, {query: newQuery})
case 'TOGGLE_ARRIVALS':
return Object.assign({}, state, {toggleArrivals: !state.toggleArrivals})
default:
diff --git a/spec/javascripts/vehicle_journeys/actions_spec.js b/spec/javascripts/vehicle_journeys/actions_spec.js
index 301f5d8ba..6a868baf9 100644
--- a/spec/javascripts/vehicle_journeys/actions_spec.js
+++ b/spec/javascripts/vehicle_journeys/actions_spec.js
@@ -306,3 +306,21 @@ describe('when setting new interval', () => {
expect(actions.updateEndTimeFilter(val, unit)).toEqual(expectedAction)
})
})
+describe('when using select2 to pick a timetable in the filters', () => {
+ it('should create an action to select a timetable as a filter', () => {
+ let selectedTT = {
+ id: 1,
+ objectid: 2,
+ comment: 'test',
+ }
+ const expectedAction = {
+ type: 'SELECT_TT_FILTER',
+ selectedItem:{
+ id: selectedTT.id,
+ objectid: selectedTT.objectid,
+ comment: selectedTT.comment,
+ }
+ }
+ expect(actions.filterSelect2Timetable(selectedTT)).toEqual(expectedAction)
+ })
+})
diff --git a/spec/javascripts/vehicle_journeys/reducers/filters_spec.js b/spec/javascripts/vehicle_journeys/reducers/filters_spec.js
index 53ac5d75b..7d62e01f2 100644
--- a/spec/javascripts/vehicle_journeys/reducers/filters_spec.js
+++ b/spec/javascripts/vehicle_journeys/reducers/filters_spec.js
@@ -120,4 +120,14 @@ describe('filters reducer', () => {
).toEqual(state)
})
+ it('should handle SELECT_TT_FILTER', () => {
+ let newTimetable = {timetable : {id: 1}}
+ let newQuery = Object.assign({}, state.query, newTimetable)
+ expect(
+ statusReducer(state, {
+ type: 'SELECT_TT_FILTER',
+ selectedItem: {id: 1}
+ })
+ ).toEqual(Object.assign({}, state, {query: newQuery}))
+ })
})