diff options
| author | Xinhui | 2017-05-16 16:19:06 +0200 |
|---|---|---|
| committer | Xinhui | 2017-05-16 16:26:37 +0200 |
| commit | 4066aaea24fb1ebdbbe7791089a30fdaf638f2c1 (patch) | |
| tree | c5d7e9bd71e3225ae03bbc13a01ea3126f3b64c0 /app/controllers/time_tables_controller.rb | |
| parent | 1ad1dacf55de155826378b5f09a3d1132c8f485c (diff) | |
| download | chouette-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.rb | 17 |
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 |
