Defect #7335 » gantt-sort-trunk-r11856.diff
lib/redmine/helpers/gantt.rb | ||
---|---|---|
675 | 675 |
start_date + (end_date - start_date + 1) * (progress / 100.0) |
676 | 676 |
end |
677 | 677 | |
678 |
# TODO: Sorts a collection of issues by start_date, due_date, id for gantt rendering |
|
679 | 678 |
def self.sort_issues!(issues) |
680 |
issues.sort! { |a, b| gantt_issue_compare(a, b) }
|
|
679 |
issues.sort! {|a, b| sort_issue_logic(a) <=> sort_issue_logic(b)}
|
|
681 | 680 |
end |
682 | 681 | |
683 |
# TODO: top level issues should be sorted by start date |
|
684 |
def self.gantt_issue_compare(x, y) |
|
685 |
if x.root_id == y.root_id |
|
686 |
x.lft <=> y.lft |
|
687 |
else |
|
688 |
x.root_id <=> y.root_id |
|
689 |
end |
|
682 |
def self.sort_issue_logic(issue) |
|
683 |
julian_date = Date.new() |
|
684 |
ancesters_start_date = [] |
|
685 |
current_issue = issue |
|
686 |
begin |
|
687 |
ancesters_start_date.unshift([current_issue.start_date || julian_date, current_issue.id]) |
|
688 |
current_issue = current_issue.parent |
|
689 |
end while (current_issue) |
|
690 |
ancesters_start_date |
|
690 | 691 |
end |
691 | 692 | |
692 | 693 |
def current_limit |
lib/redmine/helpers/gantt.rb | ||
---|---|---|
220 | 220 |
return if abort? |
221 | 221 |
end |
222 | 222 |
versions = project_versions(project) |
223 |
self.class.sort_versions!(versions) |
|
223 | 224 |
versions.each do |version| |
224 | 225 |
render_version(project, version, options) |
225 | 226 |
end |
... | ... | |
690 | 691 |
ancesters_start_date |
691 | 692 |
end |
692 | 693 | |
694 |
def self.sort_versions!(versions) |
|
695 |
versions.sort! {|a, b| sort_version_logic(a) <=> sort_version_logic(b)} |
|
696 |
end |
|
697 | ||
698 |
def self.sort_version_logic(version) |
|
699 |
[(version.due_date || Date.new()), version.id] |
|
700 |
end |
|
701 | ||
693 | 702 |
def current_limit |
694 | 703 |
if @max_rows |
695 | 704 |
@max_rows - @number_of_rows |