From 4715a37937cb30192df17a7db18c5f31f24463b0 Mon Sep 17 00:00:00 2001 From: Jean-Philippe Lang Date: Tue, 7 Dec 2010 19:29:47 +0000 Subject: [PATCH] Gantt: Avoid unnecessary queries before rendering. git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@4476 e93f8b46-1217-0410-a6f0-8f06a7374b81 --- app/views/gantts/show.html.erb | 6 ++++-- 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) + %> 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.