Ability to sort the issue list by text, int and float custom fields (#1139).

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@2258 e93f8b46-1217-0410-a6f0-8f06a7374b81
This commit is contained in:
Jean-Philippe Lang
2009-01-11 18:38:07 +00:00
parent 3a28848ca0
commit da01ee7c37
5 changed files with 85 additions and 10 deletions
+12
View File
@@ -69,4 +69,16 @@ custom_fields_005:
is_required: false
field_format: float
default_value: ""
custom_fields_006:
name: Float field
min_length: 0
regexp: ""
is_for_all: true
type: IssueCustomField
max_length: 0
possible_values: ""
id: 6
is_required: false
field_format: float
default_value: ""
+9
View File
@@ -8,3 +8,12 @@ custom_fields_trackers_002:
custom_fields_trackers_003:
custom_field_id: 2
tracker_id: 3
custom_fields_trackers_004:
custom_field_id: 6
tracker_id: 1
custom_fields_trackers_005:
custom_field_id: 6
tracker_id: 2
custom_fields_trackers_006:
custom_field_id: 6
tracker_id: 3
+39 -9
View File
@@ -3,54 +3,84 @@ custom_values_006:
customized_type: Issue
custom_field_id: 2
customized_id: 3
id: 9
id: 6
value: "125"
custom_values_007:
customized_type: Project
custom_field_id: 3
customized_id: 1
id: 10
id: 7
value: Stable
custom_values_001:
customized_type: User
custom_field_id: 4
customized_id: 3
id: 2
id: 1
value: ""
custom_values_002:
customized_type: User
custom_field_id: 4
customized_id: 4
id: 3
id: 2
value: 01 23 45 67 89
custom_values_003:
customized_type: User
custom_field_id: 4
customized_id: 2
id: 4
id: 3
value: ""
custom_values_004:
customized_type: Issue
custom_field_id: 2
customized_id: 1
id: 7
id: 4
value: "125"
custom_values_005:
customized_type: Issue
custom_field_id: 2
customized_id: 2
id: 8
id: 5
value: ""
custom_values_008:
customized_type: Issue
custom_field_id: 1
customized_id: 3
id: 11
id: 8
value: "MySQL"
custom_values_009:
customized_type: Issue
custom_field_id: 2
customized_id: 3
id: 12
id: 9
value: "this is a stringforcustomfield search"
custom_values_010:
customized_type: Issue
custom_field_id: 6
customized_id: 1
id: 10
value: "2.1"
custom_values_011:
customized_type: Issue
custom_field_id: 6
customized_id: 2
id: 11
value: "2.05"
custom_values_012:
customized_type: Issue
custom_field_id: 6
customized_id: 3
id: 12
value: "11.65"
custom_values_013:
customized_type: Issue
custom_field_id: 6
customized_id: 7
id: 13
value: ""
custom_values_014:
customized_type: Issue
custom_field_id: 6
customized_id: 5
id: 14
value: "-7.6"
+16
View File
@@ -185,6 +185,7 @@ class QueryTest < Test::Unit::TestCase
:conditions => q.statement,
:order => "#{c.sortable} ASC"
values = issues.collect {|i| i.custom_value_for(c.custom_field).to_s}
assert !values.empty?
assert_equal values.sort, values
end
@@ -198,9 +199,24 @@ class QueryTest < Test::Unit::TestCase
:conditions => q.statement,
:order => "#{c.sortable} DESC"
values = issues.collect {|i| i.custom_value_for(c.custom_field).to_s}
assert !values.empty?
assert_equal values.sort.reverse, values
end
def test_sort_by_float_custom_field_asc
q = Query.new
c = q.available_columns.find {|col| col.is_a?(QueryCustomFieldColumn) && col.custom_field.field_format == 'float' }
assert c
assert c.sortable
issues = Issue.find :all,
:include => [ :assigned_to, :status, :tracker, :project, :priority ],
:conditions => q.statement,
:order => "#{c.sortable} ASC"
values = issues.collect {|i| begin; Kernel.Float(i.custom_value_for(c.custom_field).to_s); rescue; nil; end}.compact
assert !values.empty?
assert_equal values.sort, values
end
def test_label_for
q = Query.new
assert_equal 'assigned_to', q.label_for('assigned_to_id')