aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAlban Peignier2018-02-19 21:20:54 +0100
committerGitHub2018-02-19 21:20:54 +0100
commit688ed83020fc97396382905b1409e2c61159abe3 (patch)
tree6f73f3e3957413e2bfd1a7962f44c6529def0719
parent85993d98b132f40d222bf4f68b6ca3baa3684b88 (diff)
parent27c58cb88a576a780857e666b4957f107efd9080 (diff)
downloadchouette-core-688ed83020fc97396382905b1409e2c61159abe3.tar.bz2
Merge pull request #303 from af83/5899-use-waiting-time-in-schedules
Use waiting_time in schedules computation. Refs #5899
-rw-r--r--app/controllers/vehicle_journeys_controller.rb4
-rw-r--r--app/javascript/helpers/stop_area_header_manager.js6
-rw-r--r--app/javascript/vehicle_journeys/actions/index.js16
-rw-r--r--app/javascript/vehicle_journeys/reducers/vehicleJourneys.js25
-rw-r--r--spec/javascript/vehicle_journeys/reducers/vehicleJourneys_spec.js8
5 files changed, 41 insertions, 18 deletions
diff --git a/app/controllers/vehicle_journeys_controller.rb b/app/controllers/vehicle_journeys_controller.rb
index a389f3ab0..9dbb3bc43 100644
--- a/app/controllers/vehicle_journeys_controller.rb
+++ b/app/controllers/vehicle_journeys_controller.rb
@@ -185,7 +185,9 @@ class VehicleJourneysController < ChouetteController
:long_lat_type => sp.stop_area.try(:long_lat_type),
:country_code => sp.stop_area.try(:country_code),
:country_name => sp.stop_area.try(:country_name),
- :street_name => sp.stop_area.try(:street_name)
+ :street_name => sp.stop_area.try(:street_name),
+ :waiting_time => sp.stop_area.try(:waiting_time),
+ :waiting_time_text => sp.stop_area.decorate.try(:waiting_time_text),
}
end
end
diff --git a/app/javascript/helpers/stop_area_header_manager.js b/app/javascript/helpers/stop_area_header_manager.js
index 5b18e2f63..1003b2cf6 100644
--- a/app/javascript/helpers/stop_area_header_manager.js
+++ b/app/javascript/helpers/stop_area_header_manager.js
@@ -15,11 +15,15 @@ export default class StopAreaHeaderManager {
let index = this.ids_list.indexOf(object_id)
let sp = this.stopPointsList[index]
let showHeadline = this.showHeader(object_id)
+ let title = sp.city_name ? sp.city_name + ' (' + sp.zip_code +')' : ""
+ if(sp.waiting_time > 0){
+ title += " | " + sp.waiting_time_text
+ }
return (
<div
className={(showHeadline) ? 'headlined' : ''}
data-headline={showHeadline}
- title={sp.city_name ? sp.city_name + ' (' + sp.zip_code +')' : ""}
+ title={title}
>
<span>
<span>
diff --git a/app/javascript/vehicle_journeys/actions/index.js b/app/javascript/vehicle_journeys/actions/index.js
index 51ee666e8..b398d78fa 100644
--- a/app/javascript/vehicle_journeys/actions/index.js
+++ b/app/javascript/vehicle_journeys/actions/index.js
@@ -517,6 +517,22 @@ const actions = {
minute: actions.simplePad(newArrivalDT.getUTCMinutes())
}
}
+ },
+ addMinutesToTime: (time, minutes) => {
+ let res = {
+ hour: time.hour,
+ minute: time.minute
+ }
+ let delta_hour = parseInt(minutes/60)
+ let delta_minute = minutes - 60*delta_hour
+ res.hour += delta_hour
+ res.minute += delta_minute
+ let extra_hours = parseInt(res.minute/60)
+ res.hour += extra_hours
+ res.minute -= extra_hours*60
+ res.hour = res.hour % 24
+
+ return res
}
}
diff --git a/app/javascript/vehicle_journeys/reducers/vehicleJourneys.js b/app/javascript/vehicle_journeys/reducers/vehicleJourneys.js
index 1a15ec46d..383dea4a0 100644
--- a/app/javascript/vehicle_journeys/reducers/vehicleJourneys.js
+++ b/app/javascript/vehicle_journeys/reducers/vehicleJourneys.js
@@ -19,26 +19,17 @@ const vehicleJourney= (state = {}, action, keep) => {
current_time.minute = parseInt(action.data["start_time.minute"].value) || 0
}
_.each(action.stopPointsList, (sp) =>{
+ let inJourney = false
if(action.selectedJourneyPattern.full_schedule && action.selectedJourneyPattern.costs && action.selectedJourneyPattern.costs[prevSp.stop_area_id + "-" + sp.stop_area_id]){
let delta = parseInt(action.selectedJourneyPattern.costs[prevSp.stop_area_id + "-" + sp.stop_area_id].time)
- let delta_hour = parseInt(delta/60)
- let delta_minute = delta - 60*delta_hour
- current_time.hour += delta_hour
- current_time.minute += delta_minute
- let extra_hours = parseInt(current_time.minute/60)
- current_time.hour += extra_hours
- current_time.minute -= extra_hours*60
- current_time.hour = current_time.hour % 24
+ current_time = actions.addMinutesToTime(current_time, delta)
prevSp = sp
+ inJourney = true
}
let offsetHours = sp.time_zone_offset / 3600
let offsetminutes = sp.time_zone_offset/60 - 60*offsetHours
let newVjas = {
delta: 0,
- departure_time:{
- hour: (24 + current_time.hour + offsetHours) % 24,
- minute: current_time.minute + offsetminutes
- },
arrival_time:{
hour: (24 + current_time.hour + offsetHours) % 24,
minute: current_time.minute + offsetminutes
@@ -47,6 +38,16 @@ const vehicleJourney= (state = {}, action, keep) => {
stop_area_cityname: sp.city_name,
dummy: true
}
+
+ if(sp.waiting_time && inJourney){
+ current_time = actions.addMinutesToTime(current_time, parseInt(sp.waiting_time))
+ }
+
+ newVjas.departure_time = {
+ hour: (24 + current_time.hour + offsetHours) % 24,
+ minute: current_time.minute + offsetminutes
+ }
+
if(current_time.hour + offsetHours > 24){
newVjas.departure_day_offset = 1
newVjas.arrival_day_offset = 1
diff --git a/spec/javascript/vehicle_journeys/reducers/vehicleJourneys_spec.js b/spec/javascript/vehicle_journeys/reducers/vehicleJourneys_spec.js
index 0d7612a80..389c60add 100644
--- a/spec/javascript/vehicle_journeys/reducers/vehicleJourneys_spec.js
+++ b/spec/javascript/vehicle_journeys/reducers/vehicleJourneys_spec.js
@@ -152,7 +152,7 @@ describe('vehicleJourneys reducer', () => {
},
departure_time : {
hour: 23,
- minute: 2
+ minute: 12
},
departure_day_offset: -1,
arrival_day_offset: -1,
@@ -178,11 +178,11 @@ describe('vehicleJourneys reducer', () => {
delta : 0,
arrival_time : {
hour: 0,
- minute: 32
+ minute: 42
},
departure_time : {
hour: 0,
- minute: 32
+ minute: 42
},
stop_point_objectid: 'test-4',
stop_area_cityname: 'city',
@@ -219,7 +219,7 @@ describe('vehicleJourneys reducer', () => {
type: 'ADD_VEHICLEJOURNEY',
data: fakeData,
selectedJourneyPattern: fakeSelectedJourneyPattern,
- stopPointsList: [{object_id: 'test-1', city_name: 'city', stop_area_id: 1, id: 1, time_zone_offset: 0}, {object_id: 'test-2', city_name: 'city', stop_area_id: 2, id: 2, time_zone_offset: -3600}, {object_id: 'test-3', city_name: 'city', stop_area_id: 3, id: 3, time_zone_offset: 0}, {object_id: 'test-4', city_name: 'city', stop_area_id: 4, id: 4, time_zone_offset: 0}],
+ stopPointsList: [{object_id: 'test-1', city_name: 'city', stop_area_id: 1, id: 1, time_zone_offset: 0, waiting_time: null}, {object_id: 'test-2', city_name: 'city', stop_area_id: 2, id: 2, time_zone_offset: -3600, waiting_time: 10}, {object_id: 'test-3', city_name: 'city', stop_area_id: 3, id: 3, time_zone_offset: 0, waiting_time: 20}, {object_id: 'test-4', city_name: 'city', stop_area_id: 4, id: 4, time_zone_offset: 0}],
selectedCompany: fakeSelectedCompany
})
).toEqual([{