aboutsummaryrefslogtreecommitdiffstats
path: root/app/assets/javascripts
diff options
context:
space:
mode:
authorThomas Haddad2017-03-06 16:58:15 +0100
committerThomas Haddad2017-03-06 16:59:26 +0100
commit6e9a27ad1681a0fc8a12ea2f478856468f6cbfc4 (patch)
tree6a1236e0f6ef8f61ff58efa74cf6ba72bd84a086 /app/assets/javascripts
parentfe8e416314d24526a3b5b458cfcd92835b50706d (diff)
downloadchouette-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')
-rw-r--r--app/assets/javascripts/es6_browserified/vehicle_journeys/actions/index.js16
-rw-r--r--app/assets/javascripts/es6_browserified/vehicle_journeys/components/Filters.js13
-rw-r--r--app/assets/javascripts/es6_browserified/vehicle_journeys/containers/Filters.js9
-rw-r--r--app/assets/javascripts/es6_browserified/vehicle_journeys/reducers/filters.js35
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: