From 9f148e098b07e95e2d7088844b111bb8c1280d87 Mon Sep 17 00:00:00 2001 From: Jean-Philippe Lang Date: Mon, 29 Oct 2012 18:32:41 +0000 Subject: Ability to sort issues by grouped column (#3511). git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10765 e93f8b46-1217-0410-a6f0-8f06a7374b81 --- app/models/query.rb | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) (limited to 'app/models/query.rb') diff --git a/app/models/query.rb b/app/models/query.rb index 64af16f54..efa161a62 100644 --- a/app/models/query.rb +++ b/app/models/query.rb @@ -542,7 +542,7 @@ class Query < ActiveRecord::Base if arg.is_a?(Hash) arg = arg.keys.sort.collect {|k| arg[k]} end - c = arg.select {|k,o| !k.to_s.blank?}.slice(0,3).collect {|k,o| [k.to_s, o == 'desc' ? o : 'asc']} + c = arg.select {|k,o| !k.to_s.blank?}.slice(0,3).collect {|k,o| [k.to_s, (o == 'desc' || o == false) ? 'desc' : 'asc']} write_attribute(:sort_criteria, c) end @@ -558,12 +558,17 @@ class Query < ActiveRecord::Base sort_criteria && sort_criteria[arg] && sort_criteria[arg].last end + def sort_criteria_order_for(key) + sort_criteria.detect {|k, order| key.to_s == k}.try(:last) + end + # Returns the SQL sort order that should be prepended for grouping def group_by_sort_order if grouped? && (column = group_by_column) + order = sort_criteria_order_for(column.name) || column.default_order column.sortable.is_a?(Array) ? - column.sortable.collect {|s| "#{s} #{column.default_order}"}.join(',') : - "#{column.sortable} #{column.default_order}" + column.sortable.collect {|s| "#{s} #{order}"}.join(',') : + "#{column.sortable} #{order}" end end -- cgit v1.2.3