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 e031e4952..f16d7606e 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 4ca8bd73b..6683dffad 100644 --- a/app/javascript/vehicle_journeys/actions/index.js +++ b/app/javascript/vehicle_journeys/actions/index.js @@ -527,6 +527,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([{ | 
