diff options
| -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 | 
