diff options
| author | cedricnjanga | 2017-12-21 18:25:18 +0100 | 
|---|---|---|
| committer | cedricnjanga | 2017-12-21 18:25:18 +0100 | 
| commit | 938dae71ae29a0c2934a1027046d61dd5dcaf135 (patch) | |
| tree | d9d9a835e8e2cae3179ffa8aa4d555eb23dc2fd2 | |
| parent | 7874077b48a3912855c7b8912a03a68d859e4394 (diff) | |
| download | chouette-core-938dae71ae29a0c2934a1027046d61dd5dcaf135.tar.bz2 | |
Refs #5301 Add ransackable scope to PurchaseWindow for date_ranges
| -rw-r--r-- | app/controllers/purchase_windows_controller.rb | 27 | ||||
| -rw-r--r-- | app/models/chouette/purchase_window.rb | 4 | ||||
| -rw-r--r-- | app/views/purchase_windows/_filters.html.slim | 6 | ||||
| -rw-r--r-- | app/views/purchase_windows/index.html.slim | 3 | ||||
| -rw-r--r-- | spec/features/purchase_windows_permission_spec.rb | 4 | 
5 files changed, 34 insertions, 10 deletions
| diff --git a/app/controllers/purchase_windows_controller.rb b/app/controllers/purchase_windows_controller.rb index 4965b14c7..04b5736bb 100644 --- a/app/controllers/purchase_windows_controller.rb +++ b/app/controllers/purchase_windows_controller.rb @@ -10,9 +10,7 @@ class PurchaseWindowsController < ChouetteController    def index      index! do -      scope = self.ransack_period_range(scope: @purchase_windows, error_message: t('compliance_check_sets.filters.error_period_filter'), query: :overlapping) -      @q = scope.ransack(params[:q]) -      @purchase_windows = decorate_purchase_windows(@q.result.paginate(page: params[:page], per_page: 30)) +      @purchase_windows = decorate_purchase_windows(@purchase_windows)      end    end @@ -47,14 +45,31 @@ class PurchaseWindowsController < ChouetteController        )    end +   def sort_column +    Chouette::PurchaseWindow.column_names.include?(params[:sort]) ? params[:sort] : 'name' +  end + +  def sort_direction +    %w[asc desc].include?(params[:direction]) ?  params[:direction] : 'asc' +  end + +  def collection +    return @purchase_windows if @purchase_windows +    @q = Chouette::PurchaseWindow.ransack(params[:q]) + +    purchase_windows = @q.result +    purchase_windows = purchase_windows.order(sort_column + ' ' + sort_direction) if sort_column && sort_direction +    @purchase_windows = purchase_windows.paginate(page: params[:page]) +  end +    def ransack_contains_date      date =[] -    if params[:q] && params[:q]['date_ranges(1i)'].present? -      ['date_ranges(1i)', 'date_ranges(2i)', 'date_ranges(3i)'].each do |key| +    if params[:q] && params[:q]['contains_date(1i)'].present? +      ['contains_date(1i)', 'contains_date(2i)', 'contains_date(3i)'].each do |key|          date << params[:q][key].to_i          params[:q].delete(key)        end -      params[:q]['date_ranges'] = Date.new(*date) rescue nil +      params[:q]['contains_date'] = @date = Date.new(*date) rescue nil      end    end  end diff --git a/app/models/chouette/purchase_window.rb b/app/models/chouette/purchase_window.rb index 8786c7252..5368d790a 100644 --- a/app/models/chouette/purchase_window.rb +++ b/app/models/chouette/purchase_window.rb @@ -16,6 +16,10 @@ module Chouette      scope :contains_date, ->(date) { where('date ? <@ any (date_ranges)', date) } +  def self.ransackable_scopes(auth_object = nil) +    [:contains_date] +  end +      def local_id        "IBOO-#{self.referential.id}-#{self.id}"      end diff --git a/app/views/purchase_windows/_filters.html.slim b/app/views/purchase_windows/_filters.html.slim index 6d659a6b5..4d7c8ce26 100644 --- a/app/views/purchase_windows/_filters.html.slim +++ b/app/views/purchase_windows/_filters.html.slim @@ -6,9 +6,9 @@          button.btn.btn-default#search_btn type='submit'            span.fa.fa-search -    / .form-group -    /   = f.label Chouette::PurchaseWindow.human_attribute_name(:date), class: 'control-label' -    /   = f.input :date_ranges, as: :date, label: false, wrapper_html: { class: 'date smart_date' }, class: 'form-control', include_blank: true +    .form-group +      = f.label Chouette::PurchaseWindow.human_attribute_name(:date), class: 'control-label' +      = f.input :contains_date, as: :date, label: false, wrapper_html: { class: 'date smart_date' }, class: 'form-control', default: @date, include_blank: @date ? false : true    .actions      = link_to t('actions.erase'), referential_purchase_windows_path, class: 'btn btn-link' diff --git a/app/views/purchase_windows/index.html.slim b/app/views/purchase_windows/index.html.slim index 38954b5dc..04f9fb0a8 100644 --- a/app/views/purchase_windows/index.html.slim +++ b/app/views/purchase_windows/index.html.slim @@ -28,7 +28,8 @@                ), \                TableBuilderHelper::Column.new( \                  key: :bounding_dates, \ -                attribute: Proc.new {|w| w.bounding_dates.nil? ? '-' : t('validity_range', debut: l(w.bounding_dates.begin, format: :short), end: l(w.bounding_dates.end, format: :short))}  \ +                attribute: Proc.new {|w| w.bounding_dates.nil? ? '-' : t('validity_range', debut: l(w.bounding_dates.begin, format: :short), end: l(w.bounding_dates.end, format: :short))},  \ +                sortable: false \                ) \              ],              links: [:show], diff --git a/spec/features/purchase_windows_permission_spec.rb b/spec/features/purchase_windows_permission_spec.rb index e74fb5c17..9f155a1e8 100644 --- a/spec/features/purchase_windows_permission_spec.rb +++ b/spec/features/purchase_windows_permission_spec.rb @@ -4,6 +4,10 @@ require 'spec_helper'  describe "PurchaseWindows", :type => :feature do    login_user +  before do +    @user.organisation.update features: %w{purchase_windows} +  end +    let(:purchase_window) { create :purchase_window, referential: first_referential}    describe 'permissions' do | 
