diff options
author | Marius Balteanu <marius.balteanu@zitec.com> | 2024-06-04 20:17:01 +0000 |
---|---|---|
committer | Marius Balteanu <marius.balteanu@zitec.com> | 2024-06-04 20:17:01 +0000 |
commit | 82c88b370058a37a972fdd27f3b523fae79cb252 (patch) | |
tree | fe2c608ed50bd8ecd05b63da39a93e57e489d120 | |
parent | d9ca32b9d14bc5b2b260fee343a012b43fdf6e80 (diff) | |
download | redmine-82c88b370058a37a972fdd27f3b523fae79cb252.tar.gz redmine-82c88b370058a37a972fdd27f3b523fae79cb252.zip |
Adds estimated remaining time to version page (#37862, #1671).
git-svn-id: https://svn.redmine.org/redmine/trunk@22858 e93f8b46-1217-0410-a6f0-8f06a7374b81
-rw-r--r-- | app/models/version.rb | 12 | ||||
-rw-r--r-- | app/views/versions/show.html.erb | 7 | ||||
-rw-r--r-- | test/unit/version_test.rb | 20 |
3 files changed, 31 insertions, 8 deletions
diff --git a/app/models/version.rb b/app/models/version.rb index 937ec9221..c0d4d0dee 100644 --- a/app/models/version.rb +++ b/app/models/version.rb @@ -24,6 +24,12 @@ module FixedIssuesExtension @estimated_hours ||= sum(:estimated_hours).to_f end + # Returns the total estimated remaining time for this version + # (sum of leaves remaining_estimated_hours) + def estimated_remaining_hours + @estimated_remaining_hours ||= sum(IssueQuery::ESTIMATED_REMAINING_HOURS_SQL).to_f + end + # Returns the total amount of open issues for this version. def open_count load_counts @@ -241,6 +247,12 @@ class Version < ApplicationRecord fixed_issues.estimated_hours end + # Returns the total estimated remaining time for this version + # (sum of leaves estimated_remaining_hours) + def estimated_remaining_hours + @remaining_hours ||= fixed_issues.estimated_remaining_hours + end + # Returns the total reported time for this version def spent_hours @spent_hours ||= TimeEntry.joins(:issue).where("#{Issue.table_name}.fixed_version_id = ?", id).sum(:hours).to_f diff --git a/app/views/versions/show.html.erb b/app/views/versions/show.html.erb index e17571075..88eb4b841 100644 --- a/app/views/versions/show.html.erb +++ b/app/views/versions/show.html.erb @@ -22,6 +22,13 @@ <td class="total-hours"><%= link_to html_hours(l_hours(@version.visible_fixed_issues.estimated_hours)), project_issues_path(@version.project, :set_filter => 1, :status_id => '*', :fixed_version_id => @version.id, :c => [:tracker, :status, :subject, :estimated_hours], :t => [:estimated_hours]) %></td> </tr> +<tr> + <th><%= l(:field_estimated_remaining_hours) %></th> + <td class="total-hours"> + <%= link_to html_hours(l_hours(@version.visible_fixed_issues.estimated_remaining_hours)), + project_issues_path(@version.project, :set_filter => 1, :status_id => '*', :fixed_version_id => @version.id, :c => [:tracker, :status, :subject, :estimated_remaining_hours], :t => [:estimated_remaining_hours]) %> + </td> +</tr> <% if User.current.allowed_to_view_all_time_entries?(@project) %> <tr> <th><%= l(:label_spent_time) %></th> diff --git a/test/unit/version_test.rb b/test/unit/version_test.rb index d7274ca9a..409f1494c 100644 --- a/test/unit/version_test.rb +++ b/test/unit/version_test.rb @@ -225,30 +225,34 @@ class VersionTest < ActiveSupport::TestCase assert_equal false, version.behind_schedule? end - test "#estimated_hours should return 0 with no assigned issues" do + test "#estimated_hours and estimated_remaining_hours should return 0 with no assigned issues" do version = Version.generate! assert_equal 0, version.estimated_hours + assert_equal 0, version.estimated_remaining_hours end - test "#estimated_hours should return 0 with no estimated hours" do + test "#estimated_hours and estimated_remaining_hours should return 0 with no estimated hours" do version = Version.create!(:project_id => 1, :name => 'test') add_issue(version) assert_equal 0, version.estimated_hours + assert_equal 0, version.estimated_remaining_hours end - test "#estimated_hours should return return the sum of estimated hours" do + test "#estimated_hours and estimated_remaining_hours should return the sum of estimated hours and estimated remaining hours" do version = Version.create!(:project_id => 1, :name => 'test') - add_issue(version, :estimated_hours => 2.5) - add_issue(version, :estimated_hours => 5) + add_issue(version, :estimated_hours => 2.5, :done_ratio => 90) + add_issue(version, :estimated_hours => 5, :done_ratio => 50) assert_equal 7.5, version.estimated_hours + assert_equal 2.75, version.estimated_remaining_hours end - test "#estimated_hours should return the sum of leaves estimated hours" do + test "#estimated_hours and remaining_hours should return the sum of leaves estimated hours and estimated remaining hours" do version = Version.create!(:project_id => 1, :name => 'test') parent = add_issue(version) - add_issue(version, :estimated_hours => 2.5, :parent_issue_id => parent.id) - add_issue(version, :estimated_hours => 5, :parent_issue_id => parent.id) + add_issue(version, :estimated_hours => 2.5, :done_ratio => 90, :parent_issue_id => parent.id) + add_issue(version, :estimated_hours => 5, :done_ratio => 50, :parent_issue_id => parent.id) assert_equal 7.5, version.estimated_hours + assert_equal 2.75, version.estimated_remaining_hours end test "should update all issue's fixed_version associations in case the hierarchy changed XXX" do |