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. 左位置(昇順)

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

しかしこのままだとある親の子供たちの中で開始日順に並ぶまでで、まだ微妙ですw最初のソートで親の開始日順になるとよいですが、ぺろっと修正するだけでは無理そうです。 割とばくっとした概念で親子関係を作ってしまうのがとりあえずの対策かなと思います。

参考