]> source.dussan.org Git - redmine.git/commitdiff
Fixes progress calculation on gantt (#7838).
authorJean-Philippe Lang <jp_lang@yahoo.fr>
Mon, 28 Mar 2011 17:35:20 +0000 (17:35 +0000)
committerJean-Philippe Lang <jp_lang@yahoo.fr>
Mon, 28 Mar 2011 17:35:20 +0000 (17:35 +0000)
Contributed by Etienne Massip.

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@5236 e93f8b46-1217-0410-a6f0-8f06a7374b81

lib/redmine/helpers/gantt.rb
test/unit/lib/redmine/helpers/gantt_test.rb

index 68f3dfaec7676ff1a638ca2d80de4bbf17eaf8fd..564feb209742a7addb4ebaac5fd73f986517813a 100644 (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
index 1f6d507b7c4e1662dfc7fa6b3d458478ce90561d..a32b41d27a55fcb7cb549b629d5d83f143ab1702 100644 (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