diff options
| author | Zog | 2018-04-10 10:42:57 +0200 |
|---|---|---|
| committer | Zog | 2018-04-10 10:42:57 +0200 |
| commit | 58df9586ab81067d24d9634a46d7760a78d3d664 (patch) | |
| tree | 309def86a2e7ef60dda8ecbdbc5a3dbd1d62f772 | |
| parent | bfe4bfa397c94ceeb4a86e93c0b9ac530d045de6 (diff) | |
| download | chouette-core-58df9586ab81067d24d9634a46d7760a78d3d664.tar.bz2 | |
Small improvements6217-extrapolate-border-passing-times
| -rw-r--r-- | app/models/chouette/stop_point.rb | 3 | ||||
| -rw-r--r-- | app/models/chouette/vehicle_journey.rb | 10 | ||||
| -rw-r--r-- | app/models/chouette/vehicle_journey_at_stop.rb | 2 | ||||
| -rw-r--r-- | app/models/chouette/vehicle_journey_at_stops_day_offset.rb | 3 |
4 files changed, 14 insertions, 4 deletions
diff --git a/app/models/chouette/stop_point.rb b/app/models/chouette/stop_point.rb index 6b363cd93..1cde18494 100644 --- a/app/models/chouette/stop_point.rb +++ b/app/models/chouette/stop_point.rb @@ -17,7 +17,6 @@ module Chouette acts_as_list :scope => :route, top_of_list: 0 - validates_presence_of :stop_area validate :stop_area_id_validation def stop_area_id_validation @@ -28,7 +27,7 @@ module Chouette scope :default_order, -> { order("position") } - delegate :name, to: :stop_area + delegate :name, :registration_number, to: :stop_area before_destroy :remove_dependent_journey_pattern_stop_points def remove_dependent_journey_pattern_stop_points diff --git a/app/models/chouette/vehicle_journey.rb b/app/models/chouette/vehicle_journey.rb index bad16b17a..548e46feb 100644 --- a/app/models/chouette/vehicle_journey.rb +++ b/app/models/chouette/vehicle_journey.rb @@ -346,7 +346,7 @@ module Chouette end end - def fill_passing_times + def fill_passing_times! encountered_empty_vjas = [] previous_stop = nil vehicle_journey_at_stops.each do |vjas| @@ -355,6 +355,7 @@ module Chouette encountered_empty_vjas << vjas else if encountered_empty_vjas.any? + raise "Cannot extrapolate passing times without an initial time" if previous_stop.nil? distance_between_known = 0 distance_from_last_known = 0 cost = journey_pattern.costs_between previous_stop.stop_point, encountered_empty_vjas.first.stop_point @@ -386,6 +387,13 @@ module Chouette end end + def fill_passing_times + fill_passing_times! + nil + rescue => e + e.message + end + def self.matrix(vehicle_journeys) Hash[*VehicleJourneyAtStop.where(vehicle_journey_id: vehicle_journeys.pluck(:id)).map do |vjas| [ "#{vjas.vehicle_journey_id}-#{vjas.stop_point_id}", vjas] diff --git a/app/models/chouette/vehicle_journey_at_stop.rb b/app/models/chouette/vehicle_journey_at_stop.rb index 3f5bd5abf..8f61c7f6c 100644 --- a/app/models/chouette/vehicle_journey_at_stop.rb +++ b/app/models/chouette/vehicle_journey_at_stop.rb @@ -14,6 +14,8 @@ module Chouette attr_accessor :_destroy, :dummy + delegate :registration_number, to: :stop_point + validate :arrival_must_be_before_departure def arrival_must_be_before_departure # security against nil values diff --git a/app/models/chouette/vehicle_journey_at_stops_day_offset.rb b/app/models/chouette/vehicle_journey_at_stops_day_offset.rb index cfa0e8bfc..a6edc6488 100644 --- a/app/models/chouette/vehicle_journey_at_stops_day_offset.rb +++ b/app/models/chouette/vehicle_journey_at_stops_day_offset.rb @@ -5,13 +5,14 @@ module Chouette end def time_from_fake_date fake_date + return unless fake_date.present? fake_date - fake_date.to_date.to_time end def calculate! offset = 0 tz_offset = @at_stops.first&.time_zone_offset - @at_stops.inject(nil) do |prior_stop, stop| + @at_stops.select{|s| s.arrival_time.present? && s.departure_time.present? }.inject(nil) do |prior_stop, stop| next stop if prior_stop.nil? # we only compare time of the day, not actual times |
