From: Jean-Philippe Lang Date: Sun, 21 Nov 2010 13:54:26 +0000 (+0000) Subject: Fixed: gantt displays issues by date of creation. X-Git-Tag: 1.1.0~162 X-Git-Url: https://source.dussan.org/?a=commitdiff_plain;h=77c6188ec27288470d5270213aa0aef3be0eb655;p=redmine.git Fixed: gantt displays issues by date of creation. git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@4421 e93f8b46-1217-0410-a6f0-8f06a7374b81 --- diff --git a/app/models/issue.rb b/app/models/issue.rb index 8fdf4b39c..0b08f0c16 100644 --- a/app/models/issue.rb +++ b/app/models/issue.rb @@ -68,8 +68,7 @@ class Issue < ActiveRecord::Base :conditions => ["#{Project.table_name}.status=#{Project::STATUS_ACTIVE}"] named_scope :for_gantt, lambda { { - :include => [:tracker, :status, :assigned_to, :priority, :project, :fixed_version], - :order => "#{Issue.table_name}.due_date ASC, #{Issue.table_name}.start_date ASC, #{Issue.table_name}.id ASC" + :include => [:tracker, :status, :assigned_to, :priority, :project, :fixed_version] } } diff --git a/lib/redmine/helpers/gantt.rb b/lib/redmine/helpers/gantt.rb index ea7f1417a..ac8f80d0f 100644 --- a/lib/redmine/helpers/gantt.rb +++ b/lib/redmine/helpers/gantt.rb @@ -178,6 +178,7 @@ module Redmine # Second, Issues without a version issues = project.issues.for_gantt.without_version.with_query(@query) + sort_issues!(issues) if issues issue_rendering = render_issues(issues, options) output << issue_rendering if options[:format] == :html @@ -237,6 +238,7 @@ module Redmine issues = version.fixed_issues.for_gantt.with_query(@query) if issues + sort_issues!(issues) # Indent issues options[:indent] += options[:indent_increment] output << render_issues(issues, options) @@ -952,6 +954,17 @@ module Redmine private + # Sorts a collection of issues by start_date, due_date, id for gantt rendering + def sort_issues!(issues) + issues.sort! do |a, b| + cmp = 0 + cmp = (a.start_date <=> b.start_date) if a.start_date? && b.start_date? + cmp = (a.due_date <=> b.due_date) if cmp == 0 && a.due_date? && b.due_date? + cmp = (a.id <=> b.id) if cmp == 0 + cmp + end + end + # Renders both the subjects and lines of the Gantt chart for the # PDF format def pdf_subjects_and_lines(pdf, options = {})