# HG changeset patch # User Toshi MARUYAMA # Date 1366347457 -32400 # Node ID 2dc683112aef4f018b6b2fe09f55c6efa2d3f717 # Parent 07a2de86b1f25bbd6db8adeed41364136b2f2af7 add TODO comment about gantt issue sort (#7335) diff --git a/lib/redmine/helpers/gantt.rb b/lib/redmine/helpers/gantt.rb --- a/lib/redmine/helpers/gantt.rb +++ b/lib/redmine/helpers/gantt.rb @@ -675,7 +675,7 @@ module Redmine start_date + (end_date - start_date + 1) * (progress / 100.0) end - # Sorts a collection of issues by start_date, due_date, id for gantt rendering + # TODO: Sorts a collection of issues by start_date, due_date, id for gantt rendering def sort_issues!(issues) issues.sort! { |a, b| gantt_issue_compare(a, b) } end # HG changeset patch # User Toshi MARUYAMA # Date 1366345466 -32400 # Node ID cc2cfaf16dd51099f51c46358abc56b06a1e62e9 # Parent 2dc683112aef4f018b6b2fe09f55c6efa2d3f717 gantt issues sort (#7335) http://d.hatena.ne.jp/itto100pen/20121202 diff --git a/lib/redmine/helpers/gantt.rb b/lib/redmine/helpers/gantt.rb --- a/lib/redmine/helpers/gantt.rb +++ b/lib/redmine/helpers/gantt.rb @@ -675,18 +675,23 @@ module Redmine start_date + (end_date - start_date + 1) * (progress / 100.0) end - # TODO: Sorts a collection of issues by start_date, due_date, id for gantt rendering def sort_issues!(issues) issues.sort! { |a, b| gantt_issue_compare(a, b) } end - # TODO: top level issues should be sorted by start date def gantt_issue_compare(x, y) - if x.root_id == y.root_id - x.lft <=> y.lft - else - x.root_id <=> y.root_id + get_compare_params(x) <=> get_compare_params(y) + end + + def get_compare_params(issue) + julian_date = Date.new() + ancesters_start_date = [] + while (parent = issue.parent) + ancesters_start_date.unshift(issue.start_date || julian_date) + issue = parent end + ancesters_start_date.unshift(issue.id) + ancesters_start_date end def current_limit # HG changeset patch # User Toshi MARUYAMA # Date 1364721366 -32400 # Node ID 1ae7f93923db46ae461c7c04c7315463e31c480d # Parent cc2cfaf16dd51099f51c46358abc56b06a1e62e9 gantt versions sort (#7335) diff --git a/lib/redmine/helpers/gantt.rb b/lib/redmine/helpers/gantt.rb --- a/lib/redmine/helpers/gantt.rb +++ b/lib/redmine/helpers/gantt.rb @@ -220,6 +220,7 @@ module Redmine return if abort? end versions = project_versions(project) + sort_versions!(versions) versions.each do |version| render_version(project, version, options) end @@ -694,6 +695,16 @@ module Redmine ancesters_start_date end + def sort_versions!(versions) + versions.sort! {|a, b| gantt_version_compare(a, b)} + end + + def gantt_version_compare(x, y) + sort_dates_x = [(x.due_date or Date.new()), x.id] + sort_dates_y = [(y.due_date or Date.new()), y.id] + sort_dates_x <=> sort_dates_y + end + def current_limit if @max_rows @max_rows - @number_of_rows