diff options
author | Jean-Philippe Lang <jp_lang@yahoo.fr> | 2015-09-12 12:47:21 +0000 |
---|---|---|
committer | Jean-Philippe Lang <jp_lang@yahoo.fr> | 2015-09-12 12:47:21 +0000 |
commit | 59e4b268afbfd41c7739ba7860d1ae13d8b64d12 (patch) | |
tree | e94d3d758d232463ebd4dec544bb97570f2c99fb | |
parent | de9b8e7ef4004c6e7925be5ca9c9c5e1016e5146 (diff) | |
download | redmine-59e4b268afbfd41c7739ba7860d1ae13d8b64d12.tar.gz redmine-59e4b268afbfd41c7739ba7860d1ae13d8b64d12.zip |
Adds a Total estimated hours column on issue list (#20688).
git-svn-id: http://svn.redmine.org/redmine/trunk@14554 e93f8b46-1217-0410-a6f0-8f06a7374b81
-rw-r--r-- | app/models/issue_query.rb | 4 | ||||
-rw-r--r-- | config/locales/en.yml | 1 | ||||
-rw-r--r-- | config/locales/fr.yml | 1 | ||||
-rw-r--r-- | test/functional/issues_controller_test.rb | 12 |
4 files changed, 18 insertions, 0 deletions
diff --git a/app/models/issue_query.rb b/app/models/issue_query.rb index 8316f6b4b..e21ccf618 100644 --- a/app/models/issue_query.rb +++ b/app/models/issue_query.rb @@ -35,6 +35,10 @@ class IssueQuery < Query QueryColumn.new(:start_date, :sortable => "#{Issue.table_name}.start_date"), QueryColumn.new(:due_date, :sortable => "#{Issue.table_name}.due_date"), QueryColumn.new(:estimated_hours, :sortable => "#{Issue.table_name}.estimated_hours"), + QueryColumn.new(:total_estimated_hours, + :sortable => "COALESCE((SELECT SUM(estimated_hours) FROM #{Issue.table_name} subtasks" + + " WHERE subtasks.root_id = #{Issue.table_name}.root_id AND subtasks.lft >= #{Issue.table_name}.lft AND subtasks.rgt <= #{Issue.table_name}.rgt), 0)", + :default_order => 'desc'), QueryColumn.new(:done_ratio, :sortable => "#{Issue.table_name}.done_ratio", :groupable => true), QueryColumn.new(:created_on, :sortable => "#{Issue.table_name}.created_on", :default_order => 'desc'), QueryColumn.new(:closed_on, :sortable => "#{Issue.table_name}.closed_on", :default_order => 'desc'), diff --git a/config/locales/en.yml b/config/locales/en.yml index 56f9caceb..d38b85d81 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -347,6 +347,7 @@ en: field_default_status: Default status field_users_visibility: Users visibility field_time_entries_visibility: Time logs visibility + field_total_estimated_hours: Total estimated time setting_app_title: Application title setting_app_subtitle: Application subtitle diff --git a/config/locales/fr.yml b/config/locales/fr.yml index be08413b7..8c2a13d32 100644 --- a/config/locales/fr.yml +++ b/config/locales/fr.yml @@ -367,6 +367,7 @@ fr: field_default_status: Statut par défaut field_users_visibility: Visibilité des utilisateurs field_time_entries_visibility: Visibilité du temps passé + field_total_estimated_hours: Temps estimé total setting_app_title: Titre de l'application setting_app_subtitle: Sous-titre de l'application diff --git a/test/functional/issues_controller_test.rb b/test/functional/issues_controller_test.rb index 4aa89c64e..a69b85630 100644 --- a/test/functional/issues_controller_test.rb +++ b/test/functional/issues_controller_test.rb @@ -721,6 +721,13 @@ class IssuesControllerTest < ActionController::TestCase hours = assigns(:issues).collect(&:total_spent_hours) assert_equal hours.sort.reverse, hours end + + def test_index_sort_by_total_estimated_hours + get :index, :sort => 'total_estimated_hours:desc' + assert_response :success + hours = assigns(:issues).collect(&:total_estimated_hours) + assert_equal hours.sort.reverse, hours + end def test_index_sort_by_user_custom_field cf = IssueCustomField.create!(:name => 'User', :is_for_all => true, :tracker_ids => [1,2,3], :field_format => 'user') @@ -862,6 +869,11 @@ class IssuesControllerTest < ActionController::TestCase assert_select 'table.issues tr#issue-3 td.total_spent_hours', :text => '1.00' end + def test_index_with_total_estimated_hours_column + get :index, :set_filter => 1, :c => %w(subject total_estimated_hours) + assert_select 'table.issues td.total_estimated_hours' + end + def test_index_should_not_show_spent_hours_column_without_permission Role.anonymous.remove_permission! :view_time_entries get :index, :set_filter => 1, :c => %w(subject spent_hours) |