diff options
| author | Zog | 2017-12-22 15:12:10 +0100 |
|---|---|---|
| committer | Zog | 2017-12-22 15:12:10 +0100 |
| commit | 8091f1ecd1f712dcb50344e6b4839b820e6e94ab (patch) | |
| tree | f71acc25a6b33a08aaf2fffdda84d707ea025d64 | |
| parent | 705676378698b457c051e5f7324a18ee0714bec6 (diff) | |
| download | chouette-core-8091f1ecd1f712dcb50344e6b4839b820e6e94ab.tar.bz2 | |
Optimize VehicleJourneysController
| -rw-r--r-- | app/controllers/vehicle_journeys_controller.rb | 19 | ||||
| -rw-r--r-- | app/models/chouette/vehicle_journey.rb | 8 |
2 files changed, 13 insertions, 14 deletions
diff --git a/app/controllers/vehicle_journeys_controller.rb b/app/controllers/vehicle_journeys_controller.rb index c941aeae4..f44553098 100644 --- a/app/controllers/vehicle_journeys_controller.rb +++ b/app/controllers/vehicle_journeys_controller.rb @@ -41,8 +41,8 @@ class VehicleJourneysController < ChouetteController def index @stop_points_list = [] - route.stop_points.each do |sp| - @stop_points_list << { + @stop_points_list = route.stop_points.joins(:stop_area).map do |sp| + { :id => sp.stop_area.id, :route_id => sp.try(:route_id), :object_id => sp.try(:objectid), @@ -64,7 +64,6 @@ class VehicleJourneysController < ChouetteController :street_name => sp.stop_area.try(:street_name) } end - @transport_mode = route.line['transport_mode'] @transport_submode = route.line['transport_submode'] @@ -92,13 +91,15 @@ class VehicleJourneysController < ChouetteController scope = maybe_filter_by_departure_time(scope) scope = maybe_filter_out_journeys_with_time_tables(scope) - @q = scope.search filtered_ransack_params + @vehicle_journeys ||= begin + @q = scope.search filtered_ransack_params - @ppage = 20 - @vehicle_journeys = @q.result.paginate(:page => params[:page], :per_page => @ppage) - @footnotes = route.line.footnotes.to_json - @matrix = resource_class.matrix(@vehicle_journeys) - @vehicle_journeys + @ppage = 20 + @vehicle_journeys = @q.result.paginate(:page => params[:page], :per_page => @ppage) + @footnotes = route.line.footnotes.to_json + @matrix = resource_class.matrix(@vehicle_journeys) + @vehicle_journeys + end end def maybe_filter_by_departure_time(scope) diff --git a/app/models/chouette/vehicle_journey.rb b/app/models/chouette/vehicle_journey.rb index 247c30668..67bbbe927 100644 --- a/app/models/chouette/vehicle_journey.rb +++ b/app/models/chouette/vehicle_journey.rb @@ -241,11 +241,9 @@ module Chouette end def self.matrix(vehicle_journeys) - {}.tap do |hash| - vehicle_journeys.map{ |vj| - vj.vehicle_journey_at_stops.map{ |vjas |hash[ "#{vj.id}-#{vjas.stop_point_id}"] = vjas } - } - end + Hash[*VehicleJourneyAtStop.where(vehicle_journey_id: vehicle_journeys.pluck(:id)).map do |vjas| + [ "#{vjas.vehicle_journey_id}-#{vjas.stop_point_id}", vjas] + end.flatten] end def self.with_stops |
