Simple issue sort method to make sure subtasks appear under their parent on the gantt (#7128).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@4581 e93f8b46-1217-0410-a6f0-8f06a7374b81
This commit is contained in:
parent
d2cc2861de
commit
f2ae2e9239
|
@ -676,31 +676,12 @@ module Redmine
|
||||||
issues.sort! { |a, b| gantt_issue_compare(a, b, issues) }
|
issues.sort! { |a, b| gantt_issue_compare(a, b, issues) }
|
||||||
end
|
end
|
||||||
|
|
||||||
|
# TODO: top level issues should be sorted by start date
|
||||||
def gantt_issue_compare(x, y, issues)
|
def gantt_issue_compare(x, y, issues)
|
||||||
if x.parent_id == y.parent_id
|
if x.root_id == y.root_id
|
||||||
gantt_start_compare(x, y)
|
x.lft <=> y.lft
|
||||||
elsif x.is_ancestor_of?(y)
|
|
||||||
-1
|
|
||||||
elsif y.is_ancestor_of?(x)
|
|
||||||
1
|
|
||||||
else
|
else
|
||||||
ax = issues.select {|i| i.is_a?(Issue) && i.is_ancestor_of?(x) && !i.is_ancestor_of?(y) }.sort_by(&:lft).first
|
x.root_id <=> y.root_id
|
||||||
ay = issues.select {|i| i.is_a?(Issue) && i.is_ancestor_of?(y) && !i.is_ancestor_of?(x) }.sort_by(&:lft).first
|
|
||||||
if ax.nil? && ay.nil?
|
|
||||||
gantt_start_compare(x, y)
|
|
||||||
else
|
|
||||||
gantt_issue_compare(ax || x, ay || y, issues)
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
def gantt_start_compare(x, y)
|
|
||||||
if x.start_date.nil?
|
|
||||||
-1
|
|
||||||
elsif y.start_date.nil?
|
|
||||||
1
|
|
||||||
else
|
|
||||||
x.start_date <=> y.start_date
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue