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 end
if progress 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_from && progress_date > start_date
if progress_date < self.date_to 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 else
coords[:bar_progress_end] = self.date_to - self.date_from + 1 coords[:bar_progress_end] = self.date_to - self.date_from + 1
end 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 assert_select "div.version.task_done[style*=left:28px]", true, @response.body
end 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}) @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
end end
@ -707,9 +707,10 @@ class Redmine::Helpers::GanttTest < ActiveSupport::TestCase
assert_select "div.task_done[style*=left:28px]", true, @response.body assert_select "div.task_done[style*=left:28px]", true, @response.body
end 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}) @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 end
should "not be the total done width if the chart starts after issue start date" do 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}) @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*=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
end end