home wiki.fukuchiharuki.me
Menu

キーワード

  • Redmine

概要

Redmineガントチャートのソート順が微妙なので次のようにします。

  • 親子関係を崩さず
  • その中で開始日順に並べる

方法

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

解説

次の順にしています。

  1. 親ID(昇順)
  2. 開始日(昇順)
  3. 左位置(昇順)

左位置というのは入れ子集合モデル実装だと思います。 左位置の昇順だと親が先に来ます。

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

参考