ガントチャートをバージョン名でソートしたい

3,124 views
Skip to first unread message

hshs

unread,
May 23, 2012, 11:58:59 AM5/23/12
to Redmine Users (japanese)
はじめまして!
Redmine 1.4.2を最近導入したのですが、
ガントチャートの並び順で困っているので質問させて下さい。

私の環境ではバージョン名に1.1, 1.2 ・・・ のように数字を付けています。
現状、チケットID順にソートされてしまうため、1.2の下に1.1が来る場合があります。
そこで、バージョン名でソートする方法を探しているのですが、見つかりません。

お手数をおかけしますが、何かプラグインや、どのようにソースを弄れば良いかなど、
教えて頂けないでしょうか?

よろしくお願いします。

nobu_toyofuku

unread,
May 25, 2012, 9:00:33 AM5/25/12
to redmine-...@googlegroups.com
豊福です。

2012年5月24日 0:58 hshs <hiros...@gmail.com>:
> ガントチャートの並び順で困っているので質問させて下さい。
>
> 私の環境ではバージョン名に1.1, 1.2 ・・・ のように数字を付けています。
> 現状、チケットID順にソートされてしまうため、1.2の下に1.1が来る場合があります。
> そこで、バージョン名でソートする方法を探しているのですが、見つかりません。

redmine-1.4.1 ですが

--- lib/redmine/helpers/gantt.rb.org
+++ lib/redmine/helpers/gantt.rb
@@ -164,5 +164,5 @@
# Returns the distinct versions of the issues that belong to +project+
def project_versions(project)
- project_issues(project).collect(&:fixed_version).compact.uniq
+ project_issues(project).collect(&:fixed_version).compact.uniq.sort_by{|version|
version.name}
end

でしょうか。
ruby-1.9 以降なら sort_by(&:name) でいけると思います。
---

nobu_toyofuku

unread,
May 25, 2012, 11:37:29 AM5/25/12
to redmine-...@googlegroups.com
豊福です。

2012年5月25日 22:00 nobu_toyofuku <nobu.t...@gmail.com>:
> + project_issues(project).collect(&:fixed_version).compact.uniq.sort_by{|version|
> version.name}
...
> ruby-1.9 以降なら sort_by(&:name) でいけると思います。

いけるもなにもすぐ前で collect(&:fixed_version) してましたね。
ruby-1.8.7 でも使えました。ということで

project_issues(project).collect(&:fixed_version).compact.uniq.sort_by(&:name)
---

hshs

unread,
May 28, 2012, 2:24:33 AM5/28/12
to Redmine Users (japanese)
回答が遅くなってしまい申し訳ありませんでした。

教えて頂いた修正で、狙い通りになりました。

本当にありがとうございました。

nobu_toyofuku

unread,
Sep 6, 2012, 5:43:08 AM9/6/12
to redmine-...@googlegroups.com
豊福です。

約3ヶ月前の話題ですが、
2012/5/26 nobu_toyofuku <nobu.t...@gmail.com>:
> project_issues(project).collect(&:fixed_version).compact.uniq.sort_by(&:name)

プロジェクトのバージョンタブ表示では名前順になっているので
本家ではどうソートしているのかと思い
app/views/projects/settings/_versions.html.erb を見たところ
<% for version in @project.shared_versions.sort %>
となってました。
sort_by(&:name) ではないのに?と思って調べたところ
app/models/version.rb に def <=>(version) で
「期日」、「名前」の順に比較するように定義されていました。
ということでプロジェクトのバージョン表示順と同じにしたければ
project_issues(project).collect(&:fixed_version).compact.uniq.sort_by(&:name)
と sort_by(&:name) を使うのではなく
project_issues(project).collect(&:fixed_version).compact.uniq.sort
と sort の方を使ってください。

ちなみに
Better Gantt Chart プラグイン
http://www.redmine.org/plugins/redmine_better_gantt_chart
を入れるとバージョンも上記の sort した順に表示してくれて
チケットの順番に開始日を考慮してくれて、先行/後行関係も
矢印で表示してくれるようです。
---
Reply all
Reply to author
Forward
0 new messages