home wiki.fukuchiharuki.me
Menu

  • 追加された行はこの色です。
  • 削除された行はこの色です。
*関連 [#a81c779d]
#author("2017-06-14T01:57:25+00:00","default:haruki","haruki")
*キーワード [#a81c779d]
-Redmine

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

*方法 [#p4691ff9]
** 方法1 シンプル+運用でカバー [#jb379bd7]
-[[【Redmine 1.1.2】ガントチャートを開始日順にソートする|渋谷ではたらくマー君の技術とかブログ。>http://ameblo.jp/hihihihiroki/entry-10854421155.html]]

ソースコードのここを直すと日付順になるよと教えてくださっています。
ただしこのままだと親が子の下に回ってしまうことがあり、こうなるとガントチャートがいい感じ(束ねたような感じ)に表示されません。ここで
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

そりゃそうですよね、とか言わないでください。
いざとなったらディレクトリ構成だって「10.note」とかつけちゃうのと同じです。
まとめの「M:」でもバンドルの「B:」でもいいじゃない。
チケット一覧でも見分けがつきますし、悪くない方法だと思っています。
*解説 [#z1895fda]

** 方法2 全部入り [#d6537801]
-[[redmine ガントチャート チケットの開始日順でソートする>http://doruby.kbmj.com/everyday_is_everyday/20120927/redmine____]]
次の順にしています。
+ 親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____]]