diff options
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([{ |
