]> source.dussan.org Git - redmine.git/commitdiff
Simple issue sort method to make sure subtasks appear under their parent on the gantt...
authorJean-Philippe Lang <jp_lang@yahoo.fr>
Wed, 29 Dec 2010 20:21:39 +0000 (20:21 +0000)
committerJean-Philippe Lang <jp_lang@yahoo.fr>
Wed, 29 Dec 2010 20:21:39 +0000 (20:21 +0000)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@4581 e93f8b46-1217-0410-a6f0-8f06a7374b81

lib/redmine/helpers/gantt.rb

index 4954434ce4855f2315f2701b2ca5b60649ade03d..fbdf09411d438004d0d5536919af6e2cfab5d2c4 100644 (file)
@@ -676,31 +676,12 @@ module Redmine
         issues.sort! { |a, b| gantt_issue_compare(a, b, issues) }
       end
   
+      # TODO: top level issues should be sorted by start date
       def gantt_issue_compare(x, y, issues)
-        if x.parent_id == y.parent_id
-          gantt_start_compare(x, y)
-        elsif x.is_ancestor_of?(y)
-          -1
-        elsif y.is_ancestor_of?(x)
-          1
+        if x.root_id == y.root_id
+          x.lft <=> y.lft
         else
-          ax = issues.select {|i| i.is_a?(Issue) && i.is_ancestor_of?(x) && !i.is_ancestor_of?(y) }.sort_by(&:lft).first
-          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
+          x.root_id <=> y.root_id
         end
       end