aboutsummaryrefslogtreecommitdiffstats
path: root/app/assets/javascripts
diff options
context:
space:
mode:
authorThomas Haddad2017-02-14 18:23:09 +0100
committerThomas Haddad2017-02-14 18:23:09 +0100
commit3c3bf04763105c5e4de8bdbf611fbb6a8dbeb03a (patch)
treeefec844ad91f185243aa4c6a236c7e63dad1c9c4 /app/assets/javascripts
parent59207bccbc809d3574e01903b5336b5af82e8128 (diff)
downloadchouette-core-3c3bf04763105c5e4de8bdbf611fbb6a8dbeb03a.tar.bz2
Refs #2521: Add vjas time modification for vehicle journeys
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.js8
-rw-r--r--app/assets/javascripts/es6_browserified/vehicle_journeys/components/VehicleJourney.js36
-rw-r--r--app/assets/javascripts/es6_browserified/vehicle_journeys/components/VehicleJourneys.js3
-rw-r--r--app/assets/javascripts/es6_browserified/vehicle_journeys/containers/VehicleJourneysList.js3
-rw-r--r--app/assets/javascripts/es6_browserified/vehicle_journeys/reducers/vehicleJourneys.js29
5 files changed, 74 insertions, 5 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 b89f52258..fff0399f6 100644
--- a/app/assets/javascripts/es6_browserified/vehicle_journeys/actions/index.js
+++ b/app/assets/javascripts/es6_browserified/vehicle_journeys/actions/index.js
@@ -32,6 +32,14 @@ const actions = {
toggleArrivals : () => ({
type: 'TOGGLE_ARRIVALS',
}),
+ updateTime : (val, subIndex, index, timeUnit, isDeparture) => ({
+ type: 'UPDATE_TIME',
+ val,
+ subIndex,
+ index,
+ timeUnit,
+ isDeparture
+ }),
fetchVehicleJourneys : (dispatch, currentPage, nextPage) => {
if(currentPage == undefined){
currentPage = 1
diff --git a/app/assets/javascripts/es6_browserified/vehicle_journeys/components/VehicleJourney.js b/app/assets/javascripts/es6_browserified/vehicle_journeys/components/VehicleJourney.js
index ab3375a32..46f1f777f 100644
--- a/app/assets/javascripts/es6_browserified/vehicle_journeys/components/VehicleJourney.js
+++ b/app/assets/javascripts/es6_browserified/vehicle_journeys/components/VehicleJourney.js
@@ -47,15 +47,39 @@ class VehicleJourney extends Component {
key={i}
>
<span>
- <input type='number' min='00' max='23' onInput={(e) => {this.format(e)}} defaultValue={moment(vj.arrival_time).format('hh')}/>
+ <input
+ type='number'
+ min='00'
+ max='23'
+ onBlur={(e) => {this.props.onUpdateTime(e, i, this.props.index, 'hour', true)}}
+ onInput={(e) => {this.format(e)}} defaultValue={moment(vj.arrival_time).utc().format('HH')}
+ />
<span>:</span>
- <input type='number' min='00' max='59' onInput={(e) => {this.format(e)}} defaultValue={moment(vj.arrival_time).format('mm')}/>
+ <input
+ type='number'
+ min='00'
+ max='59'
+ onBlur={(e) => {this.props.onUpdateTime(e, i, this.props.index, "minute", true)}}
+ onInput={(e) => {this.format(e)}} defaultValue={moment(vj.arrival_time).utc().format('mm')}
+ />
</span>
{this.props.filters.toggleArrivals &&
<span>
- <input type='number' min='00' max='23' onInput={(e) => {this.format(e)}} defaultValue={moment(vj.departure_time).format('hh')}/>
+ <input
+ type='number'
+ min='00'
+ max='23'
+ onBlur={(e) => {this.props.onUpdateTime(e, i, this.props.index, 'hour', false)}}
+ onInput={(e) => {this.format(e)}} defaultValue={moment(vj.departure_time).utc().format('HH')}
+ />
<span>:</span>
- <input type='number' min='00' max='59' onInput={(e) => {this.format(e)}} defaultValue={moment(vj.departure_time).format('mm')}/>
+ <input
+ type='number'
+ min='00'
+ max='59'
+ onBlur={(e) => {this.props.onUpdateTime(e, i, this.props.index, 'minute', false)}}
+ onInput={(e) => {this.format(e)}} defaultValue={moment(vj.departure_time).utc().format('mm')}
+ />
</span>
}
</li>
@@ -70,7 +94,9 @@ class VehicleJourney extends Component {
VehicleJourney.propTypes = {
value: PropTypes.object.isRequired,
- filters: PropTypes.object.isRequired
+ filters: PropTypes.object.isRequired,
+ index: PropTypes.number.isRequired,
+ onUpdateTime: PropTypes.func.isRequired,
}
module.exports = VehicleJourney
diff --git a/app/assets/javascripts/es6_browserified/vehicle_journeys/components/VehicleJourneys.js b/app/assets/javascripts/es6_browserified/vehicle_journeys/components/VehicleJourneys.js
index 0fbb5feaa..0c2a11bac 100644
--- a/app/assets/javascripts/es6_browserified/vehicle_journeys/components/VehicleJourneys.js
+++ b/app/assets/javascripts/es6_browserified/vehicle_journeys/components/VehicleJourneys.js
@@ -31,7 +31,9 @@ class VehicleJourneys extends Component{
<VehicleJourney
value = {vj}
key = {index}
+ index = {index}
filters = {this.props.filters}
+ onUpdateTime = {this.props.onUpdateTime}
/>
)}
</div>
@@ -43,6 +45,7 @@ class VehicleJourneys extends Component{
VehicleJourneys.propTypes = {
status: PropTypes.object.isRequired,
onLoadFirstPage: PropTypes.func.isRequired,
+ onUpdateTime: PropTypes.func.isRequired,
filters: PropTypes.object.isRequired
}
diff --git a/app/assets/javascripts/es6_browserified/vehicle_journeys/containers/VehicleJourneysList.js b/app/assets/javascripts/es6_browserified/vehicle_journeys/containers/VehicleJourneysList.js
index b9aba78af..0819fed6a 100644
--- a/app/assets/javascripts/es6_browserified/vehicle_journeys/containers/VehicleJourneysList.js
+++ b/app/assets/javascripts/es6_browserified/vehicle_journeys/containers/VehicleJourneysList.js
@@ -15,6 +15,9 @@ const mapDispatchToProps = (dispatch) => {
onLoadFirstPage: () =>{
dispatch(actions.fetchingApi())
actions.fetchVehicleJourneys(dispatch)
+ },
+ onUpdateTime: (e, subIndex, index, timeUnit, isDeparture) => {
+ dispatch(actions.updateTime(e.target.value, subIndex, index, timeUnit, isDeparture))
}
}
}
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 7d7db9930..dde247521 100644
--- a/app/assets/javascripts/es6_browserified/vehicle_journeys/reducers/vehicleJourneys.js
+++ b/app/assets/javascripts/es6_browserified/vehicle_journeys/reducers/vehicleJourneys.js
@@ -1,5 +1,26 @@
var actions = require("../actions")
+const vehicleJourney= (state = {}, action) => {
+ switch (action.type) {
+ case 'UPDATE_TIME':
+ let vj, vjas, vjasArray
+ vjasArray = state.vehicle_journey_at_stops.map((vjas, i) =>{
+ if(i == action.subIndex){
+ if (action.isDeparture){
+ return Object.assign({}, state.vehicle_journey_at_stops[action.subIndex], {departure_time: moment(state.vehicle_journey_at_stops[action.subIndex].departure_time).set(action.timeUnit, action.val).format()})
+ }else{
+ return Object.assign({}, state.vehicle_journey_at_stops[action.subIndex], {arrival_time: moment(state.vehicle_journey_at_stops[action.subIndex].arrival_time).set(action.timeUnit, action.val).format()})
+ }
+ }else{
+ return vjas
+ }
+ })
+ return Object.assign({}, state, {vehicle_journey_at_stops: vjasArray})
+ default:
+ return state
+ }
+}
+
const vehicleJourneys = (state = [], action) => {
switch (action.type) {
case 'RECEIVE_VEHICLE_JOURNEYS':
@@ -14,6 +35,14 @@ const vehicleJourneys = (state = [], action) => {
actions.fetchVehicleJourneys(action.dispatch, action.pagination.page, action.nextPage)
}
return state
+ case 'UPDATE_TIME':
+ return state.map((vj, i) =>{
+ if (i == action.index){
+ return vehicleJourney(vj, action)
+ } else {
+ return vj
+ }
+ })
default:
return state
}