##// END OF EJS Templates
Pass the order option as an array to satisfy sqlserver adapter (#12713)....
Jean-Philippe Lang -
r10885:a8083fb9a81d
parent child
Show More
@@ -80,12 +80,13 module SortHelper
80 @criteria.collect {|k,o| k + (o ? '' : ':desc')}.join(',')
80 @criteria.collect {|k,o| k + (o ? '' : ':desc')}.join(',')
81 end
81 end
82
82
83 # Returns an array of SQL fragments used to sort the list
83 def to_sql
84 def to_sql
84 sql = @criteria.collect do |k,o|
85 sql = @criteria.collect do |k,o|
85 if s = @available_criteria[k]
86 if s = @available_criteria[k]
86 (o ? s.to_a : s.to_a.collect {|c| append_desc(c)}).join(', ')
87 (o ? s.to_a : s.to_a.collect {|c| append_desc(c)})
87 end
88 end
88 end.compact.join(', ')
89 end.flatten.compact
89 sql.blank? ? nil : sql
90 sql.blank? ? nil : sql
90 end
91 end
91
92
@@ -270,14 +270,13 class IssueQuery < Query
270 # Returns the issues
270 # Returns the issues
271 # Valid options are :order, :offset, :limit, :include, :conditions
271 # Valid options are :order, :offset, :limit, :include, :conditions
272 def issues(options={})
272 def issues(options={})
273 order_option = [group_by_sort_order, options[:order]].reject {|s| s.blank?}.join(',')
273 order_option = [group_by_sort_order, options[:order]].flatten.reject(&:blank?)
274 order_option = nil if order_option.blank?
275
274
276 issues = Issue.visible.where(options[:conditions]).all(
275 issues = Issue.visible.where(options[:conditions]).all(
277 :include => ([:status, :project] + (options[:include] || [])).uniq,
276 :include => ([:status, :project] + (options[:include] || [])).uniq,
278 :conditions => statement,
277 :conditions => statement,
279 :order => order_option,
278 :order => order_option,
280 :joins => joins_for_order_statement(order_option),
279 :joins => joins_for_order_statement(order_option.join(',')),
281 :limit => options[:limit],
280 :limit => options[:limit],
282 :offset => options[:offset]
281 :offset => options[:offset]
283 )
282 )
@@ -295,13 +294,12 class IssueQuery < Query
295
294
296 # Returns the issues ids
295 # Returns the issues ids
297 def issue_ids(options={})
296 def issue_ids(options={})
298 order_option = [group_by_sort_order, options[:order]].reject {|s| s.blank?}.join(',')
297 order_option = [group_by_sort_order, options[:order]].flatten.reject(&:blank?)
299 order_option = nil if order_option.blank?
300
298
301 Issue.visible.scoped(:conditions => options[:conditions]).scoped(:include => ([:status, :project] + (options[:include] || [])).uniq,
299 Issue.visible.scoped(:conditions => options[:conditions]).scoped(:include => ([:status, :project] + (options[:include] || [])).uniq,
302 :conditions => statement,
300 :conditions => statement,
303 :order => order_option,
301 :order => order_option,
304 :joins => joins_for_order_statement(order_option),
302 :joins => joins_for_order_statement(order_option.join(',')),
305 :limit => options[:limit],
303 :limit => options[:limit],
306 :offset => options[:offset]).find_ids
304 :offset => options[:offset]).find_ids
307 rescue ::ActiveRecord::StatementInvalid => e
305 rescue ::ActiveRecord::StatementInvalid => e
@@ -30,21 +30,21 class SortHelperTest < ActionView::TestCase
30 sort_init 'attr1', 'desc'
30 sort_init 'attr1', 'desc'
31 sort_update(['attr1', 'attr2'])
31 sort_update(['attr1', 'attr2'])
32
32
33 assert_equal 'attr1 DESC', sort_clause
33 assert_equal ['attr1 DESC'], sort_clause
34 end
34 end
35
35
36 def test_default_sort_clause_with_hash
36 def test_default_sort_clause_with_hash
37 sort_init 'attr1', 'desc'
37 sort_init 'attr1', 'desc'
38 sort_update({'attr1' => 'table1.attr1', 'attr2' => 'table2.attr2'})
38 sort_update({'attr1' => 'table1.attr1', 'attr2' => 'table2.attr2'})
39
39
40 assert_equal 'table1.attr1 DESC', sort_clause
40 assert_equal ['table1.attr1 DESC'], sort_clause
41 end
41 end
42
42
43 def test_default_sort_clause_with_multiple_columns
43 def test_default_sort_clause_with_multiple_columns
44 sort_init 'attr1', 'desc'
44 sort_init 'attr1', 'desc'
45 sort_update({'attr1' => ['table1.attr1', 'table1.attr2'], 'attr2' => 'table2.attr2'})
45 sort_update({'attr1' => ['table1.attr1', 'table1.attr2'], 'attr2' => 'table2.attr2'})
46
46
47 assert_equal 'table1.attr1 DESC, table1.attr2 DESC', sort_clause
47 assert_equal ['table1.attr1 DESC', 'table1.attr2 DESC'], sort_clause
48 end
48 end
49
49
50 def test_params_sort
50 def test_params_sort
@@ -53,7 +53,7 class SortHelperTest < ActionView::TestCase
53 sort_init 'attr1', 'desc'
53 sort_init 'attr1', 'desc'
54 sort_update({'attr1' => 'table1.attr1', 'attr2' => 'table2.attr2'})
54 sort_update({'attr1' => 'table1.attr1', 'attr2' => 'table2.attr2'})
55
55
56 assert_equal 'table1.attr1, table2.attr2 DESC', sort_clause
56 assert_equal ['table1.attr1', 'table2.attr2 DESC'], sort_clause
57 assert_equal 'attr1,attr2:desc', @session['foo_bar_sort']
57 assert_equal 'attr1,attr2:desc', @session['foo_bar_sort']
58 end
58 end
59
59
@@ -63,7 +63,7 class SortHelperTest < ActionView::TestCase
63 sort_init 'attr1', 'desc'
63 sort_init 'attr1', 'desc'
64 sort_update({'attr1' => 'table1.attr1', 'attr2' => 'table2.attr2'})
64 sort_update({'attr1' => 'table1.attr1', 'attr2' => 'table2.attr2'})
65
65
66 assert_equal 'table1.attr1 DESC', sort_clause
66 assert_equal ['table1.attr1 DESC'], sort_clause
67 assert_equal 'attr1:desc', @session['foo_bar_sort']
67 assert_equal 'attr1:desc', @session['foo_bar_sort']
68 end
68 end
69
69
@@ -73,7 +73,7 class SortHelperTest < ActionView::TestCase
73 sort_init 'attr1', 'desc'
73 sort_init 'attr1', 'desc'
74 sort_update({'attr1' => 'table1.attr1', 'attr2' => 'table2.attr2'})
74 sort_update({'attr1' => 'table1.attr1', 'attr2' => 'table2.attr2'})
75
75
76 assert_equal 'table1.attr1, table2.attr2', sort_clause
76 assert_equal ['table1.attr1', 'table2.attr2'], sort_clause
77 assert_equal 'attr1,attr2', @session['foo_bar_sort']
77 assert_equal 'attr1,attr2', @session['foo_bar_sort']
78 end
78 end
79
79
General Comments 0
You need to be logged in to leave comments. Login now