home wiki.fukuchiharuki.me
Menu

#author("2017-06-14T01:57:25+00:00","default:haruki","haruki")
*キーワード [#a81c779d]
-Redmine

*関連 [#ccef8095]
-[[RDBで階層構造を表現する方法(の考え方)>http://fukuchiharuki.blogspot.jp/2011/10/rdb.html]]
-[[RDBで階層構造を表現する方法(の実装)>http://fukuchiharuki.blogspot.jp/2011/10/rdb_15.html]]

*概要 [#q0bd5354]
Redmineガントチャートのソート順が微妙なので次のようにします。
-親子関係を崩さず
-その中で開始日順に並べる

*方法 [#p4691ff9]

gantt.rbを探して
 $ find / -name "gantt.rb"

次のようにファイルを書き換えます。
- (環境による)/lib/redmine/helpers/gantt.rb

 646|      # TODO: top level issues should be sorted by start date
 647|      def gantt_issue_compare(x, y)
 648|        if x.root_id == y.root_id
 649|          if x.start_date == y.start_date
 650|            x.lft <=> y.lft
 651|          else
 652|            x.start_date <=> y.start_date
 653|          end
 654|        else
 655|          x.root_id <=> y.root_id
 656|        end
 657|      end

*解説 [#z1895fda]

次の順にしています。
+ 親ID(昇順)
+ 開始日(昇順)
+ 左位置(昇順)

左位置というのは[[入れ子集合モデル>http://fukuchiharuki.blogspot.jp/2011/10/rdb.html]]の[[実装>http://fukuchiharuki.blogspot.jp/2011/10/rdb_15.html]]だと思います。
左位置の昇順だと親が先に来ます。

しかしこのままだと''ある親の子供たち(しかも1階層まで)の中で開始日順に並ぶまで''です。。最初のソートで''親の開始日順''にできるとよいですが、少しの修正では無理そうです。
ばくっとした概念(開発やUTなどのフェーズ)で親子関係を作ってしまうのがとりあえずの対策かなと思います。

*参考 [#n6cf11fb]
-[[【Redmine 1.1.2】ガントチャートを開始日順にソートする|渋谷ではたらくマー君の技術とかブログ。>http://ameblo.jp/hihihihiroki/entry-10854421155.html]]
-[[redmine ガントチャート チケットの開始日順でソートする>http://doruby.kbmj.com/everyday_is_everyday/20120927/redmine____]]