]> source.dussan.org Git - redmine.git/commitdiff
Gantt: Avoid unnecessary queries before rendering.
authorJean-Philippe Lang <jp_lang@yahoo.fr>
Tue, 7 Dec 2010 19:29:47 +0000 (19:29 +0000)
committerJean-Philippe Lang <jp_lang@yahoo.fr>
Tue, 7 Dec 2010 19:29:47 +0000 (19:29 +0000)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@4476 e93f8b46-1217-0410-a6f0-8f06a7374b81

app/views/gantts/show.html.erb
lib/redmine/helpers/gantt.rb

index 05d5c0171f088ddf6bd70eb44d76eb1fa9d7d029..4f3026065da3bf792be1670694d3b386c8f57ef9 100644 (file)
@@ -59,11 +59,13 @@ end
 
 # Width of the entire chart    
 g_width = (@gantt.date_to - @gantt.date_from + 1)*zoom
-# Collect the number of issues on Versions
+
+@gantt.render(:top => headers_height + 8, :zoom => zoom, :g_width => g_width)
+
 g_height = [(20 * (@gantt.number_of_rows + 6))+150, 206].max
 t_height = g_height + headers_height
 
-@gantt.render(:top => headers_height + 8, :zoom => zoom, :g_width => g_width)
+
 %>
 <table width="100%" style="border:0; border-collapse: collapse;">
 <tr>
index b643473433db3902a0e3f49ae5da92f48d6b37b8..274b4442fcf986978903933d8e55078d4a73ac8c 100644 (file)
@@ -70,6 +70,7 @@ module Redmine
         
         @subjects = ''
         @lines = ''
+        @number_of_rows = nil
       end
 
       def common_params
@@ -91,6 +92,8 @@ module Redmine
             ### Extracted from the HTML view/helpers
       # Returns the number of rows that will be rendered on the Gantt chart
       def number_of_rows
+        return @number_of_rows if @number_of_rows
+        
         if @project
           return number_of_rows_on_project(@project)
         else
@@ -146,6 +149,7 @@ module Redmine
         
         @subjects = '' unless options[:only] == :lines
         @lines = '' unless options[:only] == :subjects
+        @number_of_rows = 0
         
         if @project
           render_project(@project, options)
@@ -171,6 +175,7 @@ module Redmine
         
         options[:top] += options[:top_increment]
         options[:indent] += options[:indent_increment]
+        @number_of_rows += 1
         
         # Second, Issues without a version
         issues = project.issues.for_gantt.without_version.with_query(@query)
@@ -199,6 +204,7 @@ module Redmine
           line_for_issue(i, options) unless options[:only] == :subjects
           
           options[:top] += options[:top_increment]
+          @number_of_rows += 1
         end
       end
 
@@ -208,7 +214,8 @@ module Redmine
         line_for_version(version, options) unless options[:only] == :subjects
         
         options[:top] += options[:top_increment]
-
+        @number_of_rows += 1
+        
         # Remove the project requirement for Versions because it will
         # restrict issues to only be on the current project.  This
         # ends up missing issues which are assigned to shared versions.