Fixes progress calculation on gantt (#7838).

Contributed by Etienne Massip.

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@5236 e93f8b46-1217-0410-a6f0-8f06a7374b81
This commit is contained in:
Jean-Philippe Lang 2011-03-28 17:35:20 +00:00
parent 927a6b045e
commit 86eed08fbf
2 changed files with 25 additions and 7 deletions

View File

@ -639,10 +639,10 @@ module Redmine
end
if progress
progress_date = start_date + (end_date - start_date) * (progress / 100.0)
progress_date = start_date + (end_date - start_date + 1) * (progress / 100.0)
if progress_date > self.date_from && progress_date > start_date
if progress_date < self.date_to
coords[:bar_progress_end] = progress_date - self.date_from + 1
coords[:bar_progress_end] = progress_date - self.date_from
else
coords[:bar_progress_end] = self.date_to - self.date_from + 1
end

View File

@ -547,9 +547,9 @@ class Redmine::Helpers::GanttTest < ActiveSupport::TestCase
assert_select "div.version.task_done[style*=left:28px]", true, @response.body
end
should "Be the total done width of the version" do
should "be the total done width of the version" do
@response.body = @gantt.line_for_version(@version, {:format => :html, :zoom => 4})
assert_select "div.version.task_done[style*=width:18px]", true, @response.body
assert_select "div.version.task_done[style*=width:16px]", true, @response.body
end
end
@ -707,9 +707,10 @@ class Redmine::Helpers::GanttTest < ActiveSupport::TestCase
assert_select "div.task_done[style*=left:28px]", true, @response.body
end
should "Be the total done width of the issue" do
should "be the total done width of the issue" do
@response.body = @gantt.line_for_issue(@issue, {:format => :html, :zoom => 4})
assert_select "div.task_done[style*=width:18px]", true, @response.body
# 15 days * 4 px * 30% - 2 px for borders = 16 px
assert_select "div.task_done[style*=width:16px]", true, @response.body
end
should "not be the total done width if the chart starts after issue start date" do
@ -717,7 +718,24 @@ class Redmine::Helpers::GanttTest < ActiveSupport::TestCase
@response.body = @gantt.line_for_issue(@issue, {:format => :html, :zoom => 4})
assert_select "div.task_done[style*=left:0px]", true, @response.body
assert_select "div.task_done[style*=width:10px]", true, @response.body
assert_select "div.task_done[style*=width:8px]", true, @response.body
end
context "for completed issue" do
setup do
@issue.done_ratio = 100
end
should "be the total width of the issue" do
@response.body = @gantt.line_for_issue(@issue, {:format => :html, :zoom => 4})
assert_select "div.task_done[style*=width:58px]", true, @response.body
end
should "be the total width of the issue with due_date=start_date" do
@issue.due_date = @issue.start_date
@response.body = @gantt.line_for_issue(@issue, {:format => :html, :zoom => 4})
assert_select "div.task_done[style*=width:2px]", true, @response.body
end
end
end