From 630f4d9cbda9b0d5e7ea301f605e893ebd4e263b Mon Sep 17 00:00:00 2001 From: Zog Date: Thu, 25 Jan 2018 14:42:08 +0100 Subject: Refs #5718; Show times at stops in ReferentialVehicleJourneys#index When 1 or 2 stops have been selected --- .../referential_vehicle_journeys_controller.rb | 2 ++ app/helpers/vehicle_journeys_helper.rb | 24 ++++++++++++++-------- .../referential_vehicle_journeys/index.html.slim | 3 ++- 3 files changed, 20 insertions(+), 9 deletions(-) diff --git a/app/controllers/referential_vehicle_journeys_controller.rb b/app/controllers/referential_vehicle_journeys_controller.rb index f93de29cc..09c268f7e 100644 --- a/app/controllers/referential_vehicle_journeys_controller.rb +++ b/app/controllers/referential_vehicle_journeys_controller.rb @@ -16,6 +16,8 @@ class ReferentialVehicleJourneysController < ChouetteController @vehicle_journeys ||= @q.result.order(:published_journey_name).includes(:vehicle_journey_at_stops).paginate page: params[:page], per_page: 10 @all_companies = Chouette::Company.where("id IN (#{@referential.vehicle_journeys.select(:company_id).to_sql})").distinct @all_stop_areas = Chouette::StopArea.where("id IN (#{@referential.vehicle_journeys.joins(:stop_areas).select("stop_areas.id").to_sql})").distinct + stop_area_ids = params[:q][:stop_area_ids].select(&:present?) + @filters_stop_areas = Chouette::StopArea.find(stop_area_ids) if stop_area_ids.present? && stop_area_ids.size <= 2 end end diff --git a/app/helpers/vehicle_journeys_helper.rb b/app/helpers/vehicle_journeys_helper.rb index 6877abd11..1cc865c62 100644 --- a/app/helpers/vehicle_journeys_helper.rb +++ b/app/helpers/vehicle_journeys_helper.rb @@ -1,5 +1,5 @@ module VehicleJourneysHelper - + def vehicle_name( vehicle) if !vehicle.published_journey_name.blank? vehicle.published_journey_name.first(8) @@ -11,11 +11,11 @@ module VehicleJourneysHelper vehicle.id end end - + def missing_time_check( is_present) return "missing" if (is_present && is_present.departure_time.nil?) end - + def vehicle_departure(vehicle, departure_time=nil) unless departure_time first_vjas = vehicle.vehicle_journey_at_stops.first @@ -24,7 +24,7 @@ module VehicleJourneysHelper end l(departure_time, :format => :hour).gsub( / /, ' ') end - + def vehicle_title(vehicle, journey_frequency=nil) return t("vehicle_journeys.vehicle_journey#{'_frequency' if vehicle.frequency?}.title_stopless", :name => vehicle_name( vehicle)) if vehicle.vehicle_journey_at_stops.empty? first_vjas = vehicle.vehicle_journey_at_stops.first @@ -40,7 +40,7 @@ module VehicleJourneysHelper :time => vehicle_departure(vehicle, (journey_frequency ? journey_frequency.first_departure_time : nil ))) end end - + def route_journey_pattern_label_pairs route route .journey_patterns @@ -50,7 +50,7 @@ module VehicleJourneysHelper def edit_vehicle_title( vehicle) return t('vehicle_journeys.edit.title_stopless', :name => vehicle_name( vehicle)) if vehicle.vehicle_journey_at_stops.empty? first_vjas = vehicle.vehicle_journey_at_stops.first - t('vehicle_journeys.edit.title', + t('vehicle_journeys.edit.title', :name => vehicle_name( vehicle), :stop => first_vjas.stop_point.stop_area.name, :time => vehicle_departure(vehicle)) @@ -59,6 +59,14 @@ module VehicleJourneysHelper def exist_vehicle_journeys?(route) route.vehicle_journeys.count > 0 end - -end + def table_builder_column_for_stop_area stop_area + return nil unless stop_area + TableBuilderHelper::Column.new( + name: stop_area.name, + attribute: Proc.new {|v| v.vehicle_journey_at_stops.find{|vjas| vjas.stop_point.stop_area_id == stop_area.id}&.departure }, + sortable: false + ) + end + +end diff --git a/app/views/referential_vehicle_journeys/index.html.slim b/app/views/referential_vehicle_journeys/index.html.slim index d29a78a6c..69e29597c 100644 --- a/app/views/referential_vehicle_journeys/index.html.slim +++ b/app/views/referential_vehicle_journeys/index.html.slim @@ -42,12 +42,13 @@ attribute: Proc.new {|v| v.vehicle_journey_at_stops.first&.departure }, \ sortable: false \ ), \ + @filters_stop_areas&.map{|s| table_builder_column_for_stop_area(s)}, TableBuilderHelper::Column.new( \ key: :arrival_time, \ attribute: Proc.new {|v| v.vehicle_journey_at_stops.last&.arrival }, \ sortable: false \ ), \ - ], + ].flatten.compact, cls: 'table has-filter has-search' = new_pagination @vehicle_journeys, 'pull-right' -- cgit v1.2.3