@@ -68,8 +68,7 class Issue < ActiveRecord::Base | |||
|
68 | 68 | :conditions => ["#{Project.table_name}.status=#{Project::STATUS_ACTIVE}"] |
|
69 | 69 | named_scope :for_gantt, lambda { |
|
70 | 70 | { |
|
71 |
:include => [:tracker, :status, :assigned_to, :priority, :project, :fixed_version] |
|
|
72 | :order => "#{Issue.table_name}.due_date ASC, #{Issue.table_name}.start_date ASC, #{Issue.table_name}.id ASC" | |
|
71 | :include => [:tracker, :status, :assigned_to, :priority, :project, :fixed_version] | |
|
73 | 72 | } |
|
74 | 73 | } |
|
75 | 74 |
@@ -178,6 +178,7 module Redmine | |||
|
178 | 178 | |
|
179 | 179 | # Second, Issues without a version |
|
180 | 180 | issues = project.issues.for_gantt.without_version.with_query(@query) |
|
181 | sort_issues!(issues) | |
|
181 | 182 | if issues |
|
182 | 183 | issue_rendering = render_issues(issues, options) |
|
183 | 184 | output << issue_rendering if options[:format] == :html |
@@ -237,6 +238,7 module Redmine | |||
|
237 | 238 | |
|
238 | 239 | issues = version.fixed_issues.for_gantt.with_query(@query) |
|
239 | 240 | if issues |
|
241 | sort_issues!(issues) | |
|
240 | 242 | # Indent issues |
|
241 | 243 | options[:indent] += options[:indent_increment] |
|
242 | 244 | output << render_issues(issues, options) |
@@ -952,6 +954,17 module Redmine | |||
|
952 | 954 | |
|
953 | 955 | private |
|
954 | 956 | |
|
957 | # Sorts a collection of issues by start_date, due_date, id for gantt rendering | |
|
958 | def sort_issues!(issues) | |
|
959 | issues.sort! do |a, b| | |
|
960 | cmp = 0 | |
|
961 | cmp = (a.start_date <=> b.start_date) if a.start_date? && b.start_date? | |
|
962 | cmp = (a.due_date <=> b.due_date) if cmp == 0 && a.due_date? && b.due_date? | |
|
963 | cmp = (a.id <=> b.id) if cmp == 0 | |
|
964 | cmp | |
|
965 | end | |
|
966 | end | |
|
967 | ||
|
955 | 968 | # Renders both the subjects and lines of the Gantt chart for the |
|
956 | 969 | # PDF format |
|
957 | 970 | def pdf_subjects_and_lines(pdf, options = {}) |
General Comments 0
You need to be logged in to leave comments.
Login now