Defect #7335 » gantt-sort-trunk-r11744.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 sort_issues!(issues) |
| 680 | 679 |
issues.sort! { |a, b| gantt_issue_compare(a, b) }
|
| 681 | 680 |
end |
| 682 | 681 | |
| 683 |
# TODO: top level issues should be sorted by start date |
|
| 684 | 682 |
def 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 |
|
| 683 |
get_compare_params(x) <=> get_compare_params(y) |
|
| 684 |
end |
|
| 685 | ||
| 686 |
def get_compare_params(issue) |
|
| 687 |
julian_date = Date.new() |
|
| 688 |
ancesters_start_date = [] |
|
| 689 |
while (parent = issue.parent) |
|
| 690 |
ancesters_start_date.unshift(issue.start_date || julian_date) |
|
| 691 |
issue = parent |
|
| 689 | 692 |
end |
| 693 |
ancesters_start_date.unshift(issue.id) |
|
| 694 |
ancesters_start_date |
|
| 690 | 695 |
end |
| 691 | 696 | |
| 692 | 697 |
def current_limit |
| lib/redmine/helpers/gantt.rb | ||
|---|---|---|
| 687 | 687 |
julian_date = Date.new() |
| 688 | 688 |
ancesters_start_date = [] |
| 689 | 689 |
while (parent = issue.parent) |
| 690 |
ancesters_start_date.unshift(issue.start_date || julian_date)
|
|
| 690 |
ancesters_start_date.unshift([issue.start_date || julian_date, issue.id])
|
|
| 691 | 691 |
issue = parent |
| 692 | 692 |
end |
| 693 | 693 |
ancesters_start_date.unshift(issue.id) |
| lib/redmine/helpers/gantt.rb | ||
|---|---|---|
| 686 | 686 |
def get_compare_params(issue) |
| 687 | 687 |
julian_date = Date.new() |
| 688 | 688 |
ancesters_start_date = [] |
| 689 |
while (parent = issue.parent)
|
|
| 690 |
ancesters_start_date.unshift([issue.start_date || julian_date, issue.id])
|
|
| 691 |
issue = parent
|
|
| 692 |
end
|
|
| 693 |
ancesters_start_date.unshift(issue.id)
|
|
| 689 |
current_issue = issue
|
|
| 690 |
begin
|
|
| 691 |
ancesters_start_date.unshift([current_issue.start_date || julian_date, current_issue.id])
|
|
| 692 |
current_issue = current_issue.parent
|
|
| 693 |
end while (current_issue)
|
|
| 694 | 694 |
ancesters_start_date |
| 695 | 695 |
end |
| 696 | 696 | |
| lib/redmine/helpers/gantt.rb | ||
|---|---|---|
| 220 | 220 |
return if abort? |
| 221 | 221 |
end |
| 222 | 222 |
versions = project_versions(project) |
| 223 |
sort_versions!(versions) |
|
| 223 | 224 |
versions.each do |version| |
| 224 | 225 |
render_version(project, version, options) |
| 225 | 226 |
end |
| ... | ... | |
| 694 | 695 |
ancesters_start_date |
| 695 | 696 |
end |
| 696 | 697 | |
| 698 |
def sort_versions!(versions) |
|
| 699 |
versions.sort! {|a, b| gantt_version_compare(a, b)}
|
|
| 700 |
end |
|
| 701 | ||
| 702 |
def gantt_version_compare(x, y) |
|
| 703 |
sort_dates_x = [(x.due_date or Date.new()), x.id] |
|
| 704 |
sort_dates_y = [(y.due_date or Date.new()), y.id] |
|
| 705 |
sort_dates_x <=> sort_dates_y |
|
| 706 |
end |
|
| 707 | ||
| 697 | 708 |
def current_limit |
| 698 | 709 |
if @max_rows |
| 699 | 710 |
@max_rows - @number_of_rows |