aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorZog2018-05-28 10:27:10 +0200
committerZog2018-05-28 10:27:10 +0200
commitb060a1901a18e24e8925cf65ca566d75c03cee32 (patch)
tree30005cabd1ebe16de846ea82885b4ded71dba337
parent4080e257ad35d3200b4c02742268095c617901f9 (diff)
downloadchouette-core-7031-fox-consolidated-view.tar.bz2
Refs #7031; Fix consolidated view7031-fox-consolidated-view
And remove n+1 queries
-rw-r--r--app/models/chouette/route.rb3
-rw-r--r--app/services/referential_consolidated.rb17
2 files changed, 16 insertions, 4 deletions
diff --git a/app/models/chouette/route.rb b/app/models/chouette/route.rb
index 958bec75b..6a02203ad 100644
--- a/app/models/chouette/route.rb
+++ b/app/models/chouette/route.rb
@@ -169,7 +169,8 @@ module Chouette
end
def time_tables
- vehicle_journeys.joins(:time_tables).map(&:"time_tables").flatten.uniq
+ ids = vehicle_journeys.joins(:time_tables).pluck('time_tables.id').uniq
+ Chouette::TimeTable.where(id: ids)
end
def sorted_vehicle_journeys(journey_category_model)
diff --git a/app/services/referential_consolidated.rb b/app/services/referential_consolidated.rb
index d9c8d86da..832210db3 100644
--- a/app/services/referential_consolidated.rb
+++ b/app/services/referential_consolidated.rb
@@ -81,6 +81,7 @@ class ReferentialConsolidated
ar_model.vehicle_journey_at_stops.each do |vjas|
out[vjas.vehicle_journey_id][vjas.stop_point_id] = vjas
end
+ out
end
end
@@ -103,8 +104,18 @@ class ReferentialConsolidated
(should_highlight? || matching_stop_areas) && highlighted_journeys.exists?
end
+ def stop_areas
+ @stop_areas ||= begin
+ out = {}
+ ar_model.stop_areas.select(:id, :name, :city_name, :zip_code, :time_zone).each do |sp|
+ out[sp.id] = sp
+ end
+ out
+ end
+ end
+
def stop_points
- @stop_points ||= ar_model.stop_points.map {|sp| StopPoint.new(self, sp, @all_vehicle_journeys, params) }
+ @stop_points ||= ar_model.stop_points.map {|sp| StopPoint.new(self, sp, @all_vehicle_journeys, params, stop_area: stop_areas[sp.stop_area_id]) }
end
end
@@ -116,7 +127,7 @@ class ReferentialConsolidated
end
def vehicle_journey_at_stops
- @opts[:vehicle_journey_at_stops]
+ @opts[:vehicle_journey_at_stops] || {}
end
def has_purchase_window? purchase_window
@@ -132,7 +143,7 @@ class ReferentialConsolidated
def_delegators :ar_model, :id, :arrival_time, :departure_time, :stop_area_id
def stop_area
- ar_model.stop_area_light
+ @opts[:stop_area]
end
def name