aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--app/models/chouette/stop_point.rb3
-rw-r--r--app/models/chouette/vehicle_journey.rb10
-rw-r--r--app/models/chouette/vehicle_journey_at_stop.rb2
-rw-r--r--app/models/chouette/vehicle_journey_at_stops_day_offset.rb3
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