diff options
| author | Thomas Haddad | 2017-03-06 16:58:15 +0100 |
|---|---|---|
| committer | Thomas Haddad | 2017-03-06 16:59:26 +0100 |
| commit | 6e9a27ad1681a0fc8a12ea2f478856468f6cbfc4 (patch) | |
| tree | 6a1236e0f6ef8f61ff58efa74cf6ba72bd84a086 /app/assets/javascripts | |
| parent | fe8e416314d24526a3b5b458cfcd92835b50706d (diff) | |
| download | chouette-core-6e9a27ad1681a0fc8a12ea2f478856468f6cbfc4.tar.bz2 | |
Refs #2507: Add reset, interval and toggle vj w/o schedules
Signed-off-by: Thomas Shawarma Haddad <thomas.haddad@af83.com>
Diffstat (limited to 'app/assets/javascripts')
4 files changed, 65 insertions, 8 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 c97728f4e..ec59a732e 100644 --- a/app/assets/javascripts/es6_browserified/vehicle_journeys/actions/index.js +++ b/app/assets/javascripts/es6_browserified/vehicle_journeys/actions/index.js @@ -161,6 +161,22 @@ const actions = { isDeparture, isArrivalsToggled }), + resetFilters: () => ({ + type: 'RESET_FILTERS' + }), + toggleWithoutSchedule: () => ({ + type: 'TOGGLE_WITHOUT_SCHEDULE' + }), + updateStartTimeFilter: (val, unit) => ({ + type: 'UPDATE_START_TIME_FILTER', + val, + unit + }), + updateEndTimeFilter: (val, unit) => ({ + type: 'UPDATE_END_TIME_FILTER', + val, + unit + }), 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 c866f3f78..17b10394b 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, onUpdateTimeFilter, onToggleWithoutSchedule}) => { +const Filters = ({filters, onFilter, onResetFilters, onUpdateStartTimeFilter, onUpdateEndTimeFilter, onToggleWithoutSchedule}) => { return ( <div className = 'form-filter mb-lg'> <div className = 'form-group'> @@ -16,14 +16,14 @@ const Filters = ({filters, onFilter, onResetFilters, onUpdateTimeFilter, onToggl type='number' min='00' max='23' - onChange={(e) => {onUpdateTimeFilter(e, 'hour')}} + onChange={(e) => {onUpdateStartTimeFilter(e, 'hour')}} value={filters.query.interval.start.hour} /> <input type='number' min='00' max='59' - onChange={(e) => {onUpdateTimeFilter(e, 'minute')}} + onChange={(e) => {onUpdateStartTimeFilter(e, 'minute')}} value={filters.query.interval.start.minute} /> <span> Fin </span> @@ -31,14 +31,14 @@ const Filters = ({filters, onFilter, onResetFilters, onUpdateTimeFilter, onToggl type='number' min='00' max='23' - onChange={(e) => {onUpdateTimeFilter(e, 'hour')}} + onChange={(e) => {onUpdateEndTimeFilter(e, 'hour')}} value={filters.query.interval.end.hour} /> <input type='number' min='00' max='59' - onChange={(e) => {onUpdateTimeFilter(e, 'minute')}} + onChange={(e) => {onUpdateEndTimeFilter(e, 'minute')}} value={filters.query.interval.end.minute} /> </div> @@ -73,7 +73,8 @@ Filters.propTypes = { filters : PropTypes.object.isRequired, onFilter: PropTypes.func.isRequired, onResetFilters: PropTypes.func.isRequired, - onUpdateTimeFilter: PropTypes.func.isRequired + onUpdateStartTimeFilter: PropTypes.func.isRequired, + onUpdateEndTimeFilter: 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 5339aa02e..a73527c11 100644 --- a/app/assets/javascripts/es6_browserified/vehicle_journeys/containers/Filters.js +++ b/app/assets/javascripts/es6_browserified/vehicle_journeys/containers/Filters.js @@ -10,8 +10,13 @@ const mapStateToProps = (state) => { const mapDispatchToProps = (dispatch) => { return { - onUpdateTimeFilter: (e, unit) =>{ - dispatch(actions.updateTimeFilter(e.target.value, unit)) + onUpdateStartTimeFilter: (e, unit) =>{ + e.preventDefault() + dispatch(actions.updateStartTimeFilter(e.target.value, unit)) + }, + onUpdateEndTimeFilter: (e, unit) =>{ + e.preventDefault() + dispatch(actions.updateEndTimeFilter(e.target.value, unit)) }, onToggleWithoutSchedule: () =>{ dispatch(actions.toggleWithoutSchedule()) 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 5457b6800..27ac80f21 100644 --- a/app/assets/javascripts/es6_browserified/vehicle_journeys/reducers/filters.js +++ b/app/assets/javascripts/es6_browserified/vehicle_journeys/reducers/filters.js @@ -1,7 +1,42 @@ var actions = require("../actions") +let newQuery, newInterval const filters = (state = {}, action) => { switch (action.type) { + case 'RESET_FILTERS': + let interval = { + start:{ + hour: '00', + minute: '00' + }, + end:{ + hour: '23', + minute: '59' + } + } + newQuery = Object.assign({}, state.query, {interval: interval, journeyPattern: {}, timetable: {}, withoutSchedule: false }) + return Object.assign({}, state, {query: newQuery}) + case 'TOGGLE_WITHOUT_SCHEDULE': + newQuery = Object.assign({}, state.query, {withoutSchedule: !state.query.withoutSchedule}) + return Object.assign({}, state, {query: newQuery}) + case 'UPDATE_END_TIME_FILTER': + newInterval = JSON.parse(JSON.stringify(state.query.interval)) + newInterval.end[action.unit] = actions.pad(action.val) + if(parseInt(newInterval.start.hour + newInterval.start.minute) < parseInt(newInterval.end.hour + newInterval.end.minute)){ + newQuery = Object.assign({}, state.query, {interval: newInterval}) + return Object.assign({}, state, {query: newQuery}) + }else{ + return state + } + case 'UPDATE_START_TIME_FILTER': + newInterval = JSON.parse(JSON.stringify(state.query.interval)) + newInterval.start[action.unit] = actions.pad(action.val) + if(parseInt(newInterval.start.hour + newInterval.start.minute) < parseInt(newInterval.end.hour + newInterval.end.minute)){ + newQuery = Object.assign({}, state.query, {interval: newInterval}) + return Object.assign({}, state, {query: newQuery}) + }else{ + return state + } case 'TOGGLE_ARRIVALS': return Object.assign({}, state, {toggleArrivals: !state.toggleArrivals}) default: |
