diff options
author | Jean-Philippe Lang <jp_lang@yahoo.fr> | 2010-12-07 19:29:47 +0000 |
---|---|---|
committer | Jean-Philippe Lang <jp_lang@yahoo.fr> | 2010-12-07 19:29:47 +0000 |
commit | 4715a37937cb30192df17a7db18c5f31f24463b0 (patch) | |
tree | e9ceee4d8106aa9d68d9ba31faab0ab24caaf08c | |
parent | 318bd10c7f4dcbbb3dff472380929f70be53c863 (diff) | |
download | redmine-4715a37937cb30192df17a7db18c5f31f24463b0.tar.gz redmine-4715a37937cb30192df17a7db18c5f31f24463b0.zip |
Gantt: Avoid unnecessary queries before rendering.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@4476 e93f8b46-1217-0410-a6f0-8f06a7374b81
-rw-r--r-- | app/views/gantts/show.html.erb | 6 | ||||
-rw-r--r-- | lib/redmine/helpers/gantt.rb | 9 |
2 files changed, 12 insertions, 3 deletions
diff --git a/app/views/gantts/show.html.erb b/app/views/gantts/show.html.erb index 05d5c0171..4f3026065 100644 --- a/app/views/gantts/show.html.erb +++ b/app/views/gantts/show.html.erb @@ -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> diff --git a/lib/redmine/helpers/gantt.rb b/lib/redmine/helpers/gantt.rb index b64347343..274b4442f 100644 --- a/lib/redmine/helpers/gantt.rb +++ b/lib/redmine/helpers/gantt.rb @@ -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. |