From a90a7cbf003ded70478eec6afdfee2581a06eaed Mon Sep 17 00:00:00 2001 From: Zog Date: Thu, 17 May 2018 16:18:46 +0200 Subject: Refs #7031; Page loading optimizations --- app/services/referential_consolidated.rb | 32 +++++++++++++++++++++++++++----- 1 file changed, 27 insertions(+), 5 deletions(-) (limited to 'app/services/referential_consolidated.rb') diff --git a/app/services/referential_consolidated.rb b/app/services/referential_consolidated.rb index 465eab405..d9c8d86da 100644 --- a/app/services/referential_consolidated.rb +++ b/app/services/referential_consolidated.rb @@ -48,11 +48,12 @@ class ReferentialConsolidated attr_reader :parent attr_reader :ar_model - def initialize parent, ar_model, vehicle_journeys, params + def initialize parent, ar_model, vehicle_journeys, params, opts={} @parent = parent @ar_model = ar_model @all_vehicle_journeys = vehicle_journeys @params = params + @opts = opts end def should_highlight? @@ -74,9 +75,18 @@ class ReferentialConsolidated class Route < Base def_delegators :ar_model, :name, :id, :time_tables, :purchase_windows, :stop_area_ids + def vehicle_journey_at_stops + @vehicle_journey_at_stops ||= begin + out = Hash.new{|h, k| h[k] = {}} + ar_model.vehicle_journey_at_stops.each do |vjas| + out[vjas.vehicle_journey_id][vjas.stop_point_id] = vjas + end + end + end + def vehicle_journeys @vehicle_journeys ||= begin - ar_model.vehicle_journeys.map {|vj| VehicleJourney.new(self, vj, @all_vehicle_journeys, params) } + ar_model.vehicle_journeys.select(:id, :published_journey_name, :route_id, :journey_pattern_id).map {|vj| VehicleJourney.new(self, vj, @all_vehicle_journeys, params, vehicle_journey_at_stops: vehicle_journey_at_stops[vj.id]) } end end @@ -85,7 +95,7 @@ class ReferentialConsolidated end def highlighted_count - highlighted_journeys.count + highlighted_journeys.except(:select).count end def highlighted? @@ -99,12 +109,16 @@ class ReferentialConsolidated end class VehicleJourney < Base - def_delegators :ar_model, :id, :published_journey_name, :journey_pattern, :time_tables, :purchase_windows, :vehicle_journey_at_stops, :time_table_ids, :purchase_window_ids, :route + def_delegators :ar_model, :id, :published_journey_name, :journey_pattern, :time_tables, :purchase_windows, :time_table_ids, :purchase_window_ids, :route, :journey_pattern_only_objectid def highlighted? should_highlight? && @all_vehicle_journeys.where(id: self.id).exists? end + def vehicle_journey_at_stops + @opts[:vehicle_journey_at_stops] + end + def has_purchase_window? purchase_window purchase_window_ids.include?(purchase_window.id) end @@ -115,7 +129,15 @@ class ReferentialConsolidated end class StopPoint < Base - def_delegators :ar_model, :id, :arrival_time, :departure_time, :name, :stop_area, :stop_area_id + def_delegators :ar_model, :id, :arrival_time, :departure_time, :stop_area_id + + def stop_area + ar_model.stop_area_light + end + + def name + stop_area.name + end def highlighted? params[:q] && params[:q]["stop_areas"] && params[:q]["stop_areas"].values.any?{|v| v.to_s == stop_area_id.to_s} -- cgit v1.2.3