aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--app/controllers/purchase_windows_controller.rb27
-rw-r--r--app/models/chouette/purchase_window.rb4
-rw-r--r--app/views/purchase_windows/_filters.html.slim6
-rw-r--r--app/views/purchase_windows/index.html.slim3
-rw-r--r--spec/features/purchase_windows_permission_spec.rb4
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