diff options
| author | Luc Donnet | 2018-01-19 15:24:39 +0100 | 
|---|---|---|
| committer | GitHub | 2018-01-19 15:24:39 +0100 | 
| commit | bd6fb5c4c545fa004374df8122151b3adc752f40 (patch) | |
| tree | df7f4e1c324ca85ad6c4e69422dea8ff345ea463 | |
| parent | fc4894a6c3595050af34206beecdfefe87af3c11 (diff) | |
| parent | 2eb5225e23c91656f0f35087adfd1545218ecb23 (diff) | |
| download | chouette-core-bd6fb5c4c545fa004374df8122151b3adc752f40.tar.bz2 | |
Merge pull request #248 from af83/5623-fix-schedule-when-jp-is-prefilled
5623 fix schedule when jp is prefilled
5 files changed, 81 insertions, 10 deletions
| diff --git a/app/javascript/vehicle_journeys/reducers/modal.js b/app/javascript/vehicle_journeys/reducers/modal.js index c2556303d..fb7e16547 100644 --- a/app/javascript/vehicle_journeys/reducers/modal.js +++ b/app/javascript/vehicle_journeys/reducers/modal.js @@ -147,14 +147,7 @@ export default function modal(state = {}, action) {          let stopAreas = _.map(window.jpOriginStopPoints, (sa, i) =>{            return _.assign({}, {stop_area_short_description : {id : sa.stop_area_id}})          }) -        selectedJP = { -          id: window.jpOrigin.id, -          name: window.jpOrigin.name, -          published_name: window.jpOrigin.published_name, -          objectid: window.jpOrigin.objectid, -          stop_areas: stopAreas, -          missions: state.missions -        } +        selectedJP = _.assign({}, window.jpOrigin, {stop_areas: stopAreas})        }        return {          type: 'create', diff --git a/app/javascript/vehicle_journeys/reducers/vehicleJourneys.js b/app/javascript/vehicle_journeys/reducers/vehicleJourneys.js index 501c01175..ae45993a8 100644 --- a/app/javascript/vehicle_journeys/reducers/vehicleJourneys.js +++ b/app/javascript/vehicle_journeys/reducers/vehicleJourneys.js @@ -16,7 +16,7 @@ const vehicleJourney= (state = {}, action, keep) => {        }        if(action.data["start_time.hour"] && action.data["start_time.minute"] && action.selectedJourneyPattern.full_schedule){          current_time.hour = parseInt(action.data["start_time.hour"].value) -        current_time.minute = parseInt(action.data["start_time.minute"].value) +        current_time.minute = parseInt(action.data["start_time.minute"].value) || 0        }        _.each(action.stopPointsList, (sp) =>{          if(action.selectedJourneyPattern.full_schedule && action.selectedJourneyPattern.costs && action.selectedJourneyPattern.costs[prevSp.stop_area_id + "-" + sp.stop_area_id]){ diff --git a/app/models/chouette/vehicle_journey_at_stop.rb b/app/models/chouette/vehicle_journey_at_stop.rb index 1f7581acd..eda711ade 100644 --- a/app/models/chouette/vehicle_journey_at_stop.rb +++ b/app/models/chouette/vehicle_journey_at_stop.rb @@ -104,6 +104,7 @@ module Chouette      def local_time time        return unless time        return time unless stop_point&.stop_area&.time_zone.present? +      return time unless ActiveSupport::TimeZone[stop_point.stop_area.time_zone].present?        time + ActiveSupport::TimeZone[stop_point.stop_area.time_zone].utc_offset      end diff --git a/app/views/vehicle_journeys/index.html.slim b/app/views/vehicle_journeys/index.html.slim index f7796b188..2c7a3b97d 100644 --- a/app/views/vehicle_journeys/index.html.slim +++ b/app/views/vehicle_journeys/index.html.slim @@ -17,7 +17,7 @@  = javascript_tag do    | window.route_id = #{params[:route_id]};    | window.stopPoints = #{(@stop_points_list.to_json).html_safe}; -  | window.jpOrigin = #{(@jp_origin.to_json).html_safe}; +  | window.jpOrigin = #{(@jp_origin.attributes.update({full_schedule: @jp_origin.full_schedule?}).to_json).html_safe};    | window.jpOriginStopPoints = #{(@jp_origin_stop_points.to_json).html_safe};    | window.transportMode = #{(@transport_mode.to_json).html_safe};    | window.transportSubmode = #{(@transport_submode.to_json).html_safe}; diff --git a/spec/javascript/vehicle_journeys/reducers/vehicleJourneys_spec.js b/spec/javascript/vehicle_journeys/reducers/vehicleJourneys_spec.js index 31973b390..0d7612a80 100644 --- a/spec/javascript/vehicle_journeys/reducers/vehicleJourneys_spec.js +++ b/spec/javascript/vehicle_journeys/reducers/vehicleJourneys_spec.js @@ -241,6 +241,83 @@ describe('vehicleJourneys reducer', () => {      }, ...state])    }) +  it('should handle ADD_VEHICLEJOURNEY with a start time and a fully timed JP but the minutes are not set', () => { +    let pristineVjasList = [{ +      delta : 0, +      arrival_time : { +        hour: 22, +        minute: 0 +      }, +      departure_time : { +        hour: 22, +        minute: 0 +      }, +      stop_point_objectid: 'test-1', +      stop_area_cityname: 'city', +      dummy: false +    }, +    { +      delta : 0, +      arrival_time : { +        hour: 22, +        minute: 3 +      }, +      departure_time : { +        hour: 22, +        minute: 3 +      }, +      stop_point_objectid: 'test-2', +      stop_area_cityname: 'city', +      dummy: false +    }] +    let fakeData = { +      published_journey_name: {value: 'test'}, +      published_journey_identifier: {value : ''}, +      "start_time.hour": {value : '22'}, +      "start_time.minute": {value : ''} +    } +    let fakeSelectedJourneyPattern = { +      id: "1", +      full_schedule: true, +      stop_areas: [ +        {stop_area_short_description: {id: 1}}, +        {stop_area_short_description: {id: 2}}, +      ], +      costs: { +        "1-2": { +          distance: 10, +          time: 63 +        }, +      } +    } +    let fakeSelectedCompany = {name: "ALBATRANS"} +    expect( +      vjReducer(state, { +        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}], +        selectedCompany: fakeSelectedCompany +      }) +    ).toEqual([{ +      journey_pattern: fakeSelectedJourneyPattern, +      company: fakeSelectedCompany, +      published_journey_name: 'test', +      published_journey_identifier: '', +      short_id: '', +      objectid: '', +      footnotes: [], +      time_tables: [], +      purchase_windows: [], +      vehicle_journey_at_stops: pristineVjasList, +      selected: false, +      custom_fields: undefined, +      deletable: false, +      transport_mode: 'undefined', +      transport_submode: 'undefined' +    }, ...state]) +  }) +    it('should handle RECEIVE_VEHICLE_JOURNEYS', () => {      expect(        vjReducer(state, { | 
