diff options
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})) +  })  })  | 
