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 | 
