diff options
| -rw-r--r-- | app/controllers/referential_vehicle_journeys_controller.rb | 1 | ||||
| -rw-r--r-- | app/models/chouette/vehicle_journey.rb | 11 | ||||
| -rw-r--r-- | app/views/referential_vehicle_journeys/_filters.html.slim | 17 | 
3 files changed, 28 insertions, 1 deletions
| diff --git a/app/controllers/referential_vehicle_journeys_controller.rb b/app/controllers/referential_vehicle_journeys_controller.rb index 2ce28a5cc..935b52d93 100644 --- a/app/controllers/referential_vehicle_journeys_controller.rb +++ b/app/controllers/referential_vehicle_journeys_controller.rb @@ -16,6 +16,7 @@ class ReferentialVehicleJourneysController < ChouetteController    def collection      @q ||= end_of_association_chain +    @q = @q.with_line_id(params[:q][:line_id]) if params[:q] && params[:q][:line_id]      @q = @q.with_stop_area_ids(params[:q][:stop_area_ids]) if params[:q] && params[:q][:stop_area_ids]      @q = ransack_period_range(scope: @q, error_message:  t('vehicle_journeys.errors.purchase_window'), query: :in_purchase_window, prefix: :purchase_window)      @q = ransack_period_range(scope: @q, error_message:  t('vehicle_journeys.errors.time_table'), query: :with_matching_timetable, prefix: :time_table) diff --git a/app/models/chouette/vehicle_journey.rb b/app/models/chouette/vehicle_journey.rb index 1756a7098..918ca07aa 100644 --- a/app/models/chouette/vehicle_journey.rb +++ b/app/models/chouette/vehicle_journey.rb @@ -52,6 +52,10 @@ module Chouette        end      } +    scope :with_line_id, ->(id) { +      joins(:route).where(routes: { line_id: id }) +    } +      scope :in_purchase_window, ->(range){        purchase_windows = Chouette::PurchaseWindow.overlap_dates(range)        sql = purchase_windows.joins(:vehicle_journeys).select('vehicle_journeys.id').uniq.to_sql @@ -59,8 +63,9 @@ module Chouette      }      # We need this for the ransack object in the filters -    ransacker :stop_area_ids +    ransacker :line_id      ransacker :purchase_window_date_gt +    ransacker :stop_area_ids      # returns VehicleJourneys with at least 1 day in their time_tables      # included in the given range @@ -375,5 +380,9 @@ module Chouette          ')          .where('"time_tables_vehicle_journeys"."vehicle_journey_id" IS NULL')      end + +    def self.lines +      Chouette::Line.joins(routes: :vehicle_journeys).distinct +    end    end  end diff --git a/app/views/referential_vehicle_journeys/_filters.html.slim b/app/views/referential_vehicle_journeys/_filters.html.slim index bfb5b77dd..838150d2c 100644 --- a/app/views/referential_vehicle_journeys/_filters.html.slim +++ b/app/views/referential_vehicle_journeys/_filters.html.slim @@ -15,6 +15,23 @@          = f.input :company_id_eq_any, collection: @all_companies.select(:id, :name).order(name: :asc), as: :check_boxes, label: false, label_method: lambda{|l| ("<span>" + l.name + "</span>").html_safe}, required: false, wrapper_html: { class: 'checkbox_list'}        - else          = f.input :company_id_eq_any, collection: [[I18n.t('companies.search_no_results_for_filter'), nil]], as: :check_boxes, label: false, disabled: true, required: false, wrapper_html: { class: 'checkbox_list disabled'} + +    .form-group.togglable +      = f.label Chouette::Line.model_name.human, +          required: false, +          class: 'control-label' +      .inputs.form-inline.checkbox_list +        = f.input :line_id, +            as: :select, +            collection: @vehicle_journeys.lines, +            input_html: { \ +              'data-select2ed': 'true', +              'data-select2ed-placeholder': t('referentials.filters.line') \ +            }, +            label: false, +            label_method: :display_name, +            wrapper_html: { class: 'select2ed' } +      .form-group.togglable.name-filter        = f.label Chouette::VehicleJourney.human_attribute_name(:published_journey_name), required: false, class: 'control-label'        .inputs.form-inline.checkbox_list | 
