aboutsummaryrefslogtreecommitdiffstats
path: root/app/controllers/time_tables_controller.rb
diff options
context:
space:
mode:
authorXinhui2017-05-16 16:19:06 +0200
committerXinhui2017-05-16 16:26:37 +0200
commit4066aaea24fb1ebdbbe7791089a30fdaf638f2c1 (patch)
treec5d7e9bd71e3225ae03bbc13a01ea3126f3b64c0 /app/controllers/time_tables_controller.rb
parent1ad1dacf55de155826378b5f09a3d1132c8f485c (diff)
downloadchouette-core-4066aaea24fb1ebdbbe7791089a30fdaf638f2c1.tar.bz2
Filter TimeTable by overlapping period
Refs #3384
Diffstat (limited to 'app/controllers/time_tables_controller.rb')
-rw-r--r--app/controllers/time_tables_controller.rb17
1 files changed, 11 insertions, 6 deletions
diff --git a/app/controllers/time_tables_controller.rb b/app/controllers/time_tables_controller.rb
index 8436dc020..228b31c05 100644
--- a/app/controllers/time_tables_controller.rb
+++ b/app/controllers/time_tables_controller.rb
@@ -112,8 +112,8 @@ class TimeTablesController < ChouetteController
scope = select_time_tables.tagged_with(tags, :wild => true, :any => true) if tags.any?
end
scope = ransack_periode(scope)
-
@q = scope.search(params[:q])
+
if sort_column && sort_direction
@time_tables ||= @q.result(:distinct => true).order("#{sort_column} #{sort_direction}")
else
@@ -139,24 +139,29 @@ class TimeTablesController < ChouetteController
end
private
- # Fake ransack filter
def ransack_periode scope
return scope unless params[:q]
- periode = params[:q]
- return scope if periode['end_date_lteq(1i)'].empty? || periode['start_date_gteq(1i)'].empty?
+ return scope unless params[:q]['end_date_lteq(1i)'].present?
- begin_range = Date.civil(periode["start_date_gteq(1i)"].to_i, periode["start_date_gteq(2i)"].to_i, periode["start_date_gteq(3i)"].to_i)
- end_range = Date.civil(periode["end_date_lteq(1i)"].to_i, periode["end_date_lteq(2i)"].to_i, periode["end_date_lteq(3i)"].to_i)
+ begin_range = flatten_date('start_date_gteq')
+ end_range = flatten_date('end_date_lteq')
if begin_range > end_range
flash.now[:error] = t('referentials.errors.validity_period')
else
+ scope = scope.overlapping(begin_range, end_range)
+ params[:q] = params[:q].slice('comment_cont', 'color_cont_any')
@begin_range = begin_range
@end_range = end_range
end
scope
end
+ def flatten_date key
+ date_int = %w(1 2 3).map {|e| params[:q]["#{key}(#{e}i)"].to_i }
+ Date.new(*date_int)
+ end
+
def sort_column
referential.time_tables.column_names.include?(params[:sort]) ? params[:sort] : 'comment'
end