diff options
Diffstat (limited to 'app')
| -rw-r--r-- | app/controllers/vehicle_journeys_controller.rb | 1 | ||||
| -rw-r--r-- | app/javascript/helpers/stop_area_header_manager.js | 9 | ||||
| -rw-r--r-- | app/javascript/vehicle_journeys/components/VehicleJourneys.js | 2 | ||||
| -rw-r--r-- | app/models/chouette/stop_area.rb | 6 | ||||
| -rw-r--r-- | app/models/chouette/vehicle_journey.rb | 6 | ||||
| -rw-r--r-- | app/models/chouette/vehicle_journey_at_stop.rb | 30 | ||||
| -rw-r--r-- | app/views/vehicle_journeys/show.rabl | 8 |
7 files changed, 53 insertions, 9 deletions
diff --git a/app/controllers/vehicle_journeys_controller.rb b/app/controllers/vehicle_journeys_controller.rb index e3e067782..c5466abe5 100644 --- a/app/controllers/vehicle_journeys_controller.rb +++ b/app/controllers/vehicle_journeys_controller.rb @@ -59,6 +59,7 @@ class VehicleJourneysController < ChouetteController :for_boarding => sp.try(:for_boarding), :for_alighting => sp.try(:for_alighting), :name => sp.stop_area.try(:name), + :time_zone_formatted_offset => sp.stop_area.try(:time_zone_formatted_offset), :zip_code => sp.stop_area.try(:zip_code), :city_name => sp.stop_area.try(:city_name), :comment => sp.stop_area.try(:comment), diff --git a/app/javascript/helpers/stop_area_header_manager.js b/app/javascript/helpers/stop_area_header_manager.js index 54d957be9..c9f397dee 100644 --- a/app/javascript/helpers/stop_area_header_manager.js +++ b/app/javascript/helpers/stop_area_header_manager.js @@ -21,7 +21,14 @@ export default class StopAreaHeaderManager { data-headline={showHeadline} title={sp.city_name + ' (' + sp.zip_code +')'} > - <span><span>{sp.name}</span></span> + <span> + <span> + {sp.name} + {sp.time_zone_formatted_offset && <span className="small"> + ({sp.time_zone_formatted_offset}) + </span>} + </span> + </span> </div> ) } diff --git a/app/javascript/vehicle_journeys/components/VehicleJourneys.js b/app/javascript/vehicle_journeys/components/VehicleJourneys.js index b188962c2..36721b55b 100644 --- a/app/javascript/vehicle_journeys/components/VehicleJourneys.js +++ b/app/javascript/vehicle_journeys/components/VehicleJourneys.js @@ -109,8 +109,8 @@ export default class VehicleJourneys extends Component { <div className='th'> <div className='strong mb-xs'>ID course</div> <div>Nom course</div> - <div>ID mission</div> <div>Transporteur</div> + <div>ID mission</div> <div>Calendriers</div> { this.hasFeature('purchase_windows') && <div>Calendriers Commerciaux</div> } </div> diff --git a/app/models/chouette/stop_area.rb b/app/models/chouette/stop_area.rb index 52602be9f..b16bbb487 100644 --- a/app/models/chouette/stop_area.rb +++ b/app/models/chouette/stop_area.rb @@ -358,11 +358,17 @@ module Chouette update_attribute :deleted_at, Time.now end + def country_name return unless country_code country = ISO3166::Country[country_code] country.translations[I18n.locale.to_s] || country.name end + + def time_zone_formatted_offset + return nil unless time_zone.present? + ActiveSupport::TimeZone[time_zone].formatted_offset + end end end diff --git a/app/models/chouette/vehicle_journey.rb b/app/models/chouette/vehicle_journey.rb index 1904e1b92..67216e422 100644 --- a/app/models/chouette/vehicle_journey.rb +++ b/app/models/chouette/vehicle_journey.rb @@ -132,10 +132,14 @@ module Chouette def update_vjas_from_state state state.each do |vjas| next if vjas["dummy"] + stop_point = Chouette::StopPoint.find_by(objectid: vjas['stop_point_objectid']) + stop_area = stop_point&.stop_area + tz = stop_area&.time_zone + tz = tz && ActiveSupport::TimeZone[tz] params = {}.tap do |el| ['arrival_time', 'departure_time'].each do |field| time = "#{vjas[field]['hour']}:#{vjas[field]['minute']}" - el[field.to_sym] = Time.parse("2000-01-01 #{time}:00 UTC") + el[field.to_sym] = Time.parse("2000-01-01 #{time}:00 #{tz&.formatted_offset || "UTC"}") end end stop = create_or_find_vjas_from_state(vjas) diff --git a/app/models/chouette/vehicle_journey_at_stop.rb b/app/models/chouette/vehicle_journey_at_stop.rb index 6b3c1e7de..f1a3cdcaa 100644 --- a/app/models/chouette/vehicle_journey_at_stop.rb +++ b/app/models/chouette/vehicle_journey_at_stop.rb @@ -77,11 +77,37 @@ module Chouette end def departure - departure_time.utc.strftime "%H:%M" if departure_time + format_time departure_time.utc end def arrival - arrival_time.utc.strftime "%H:%M" if arrival_time + format_time arrival_time.utc + end + + def departure_local_time + local_time departure_time + end + + def arrival_local_time + local_time arrival_time + end + + def departure_local + format_time departure_local_time + end + + def arrival_local + format_time arrival_local_time + end + + private + def local_time time + return time unless stop_point&.stop_area&.time_zone.present? + time + ActiveSupport::TimeZone[stop_point.stop_area.time_zone].utc_offset + end + + def format_time time + time.strftime "%H:%M" if time end end diff --git a/app/views/vehicle_journeys/show.rabl b/app/views/vehicle_journeys/show.rabl index eeed79b34..df1eca016 100644 --- a/app/views/vehicle_journeys/show.rabl +++ b/app/views/vehicle_journeys/show.rabl @@ -59,11 +59,11 @@ child(:vehicle_journey_at_stops_matrix, :object_root => false) do |vehicle_stops vehicle_stop.stop_point.stop_area.city_name end - [:arrival_time, :departure_time].each do |att| - node(att) do |vs| + [:arrival, :departure].each do |att| + node("#{att}_time") do |vs| { - hour: vs.send(att).try(:strftime, '%H'), - minute: vs.send(att).try(:strftime, '%M') + hour: vs.send("#{att}_local_time").try(:strftime, '%H'), + minute: vs.send("#{att}_local_time").try(:strftime, '%M') } end end |
