すえひろがりっっっっ! このページをアンテナに追加 RSSフィード

2010-08-21

Redmine のワークフロー視覚化をプラグイン化してみた。

昨日のワークフロー視覚化 ( http://d.hatena.ne.jp/suer/20100820/redmine_viz ) をプラグインにした、というだけのお話。

http://github.com/suer/redmine_workflow_viz

動作環境

Redmine1.0.0 でしか試してません。

0.9.x でも動くと思います。

インストール

1. Redmine の RAILS_ROOT にて以下のコマンドを発行

$ ruby script/plugin install git://github.com/suer/redmine_workflow_viz.git

2. Rails再起動

注意点

app/view/workflows/edit.rhtml の代わりにプラグイン内の同ファイルが実行されます。

同じファイルを上書きするプラグインがあった場合競合すると思いますので注意。

2010-08-20

GoogleChart の GraphViz Charts で Redmine のワークフローを視覚化してみた

Google Chart が GraphViz をサポートしたので、懸案だったワークフローの視覚化をやってみました。

http://code.google.com/intl/ja/apis/chart/docs/gallery/graphviz.html

気力とやる気の問題からプラグイン化はしていません。

環境

Redmine: 1.0.0(RC)

コード

WorkFlowHelper にチャート出力用URLパラメータ出力メソッドを追加

module WorkflowsHelper
  def generate_graph(role, tracker)
    edges = role.workflows.inject("") do |edge, workflow| 
      workflow.tracker_id == tracker.id ? "#{edge}#{workflow.old_status}->#{workflow.new_status};" : edge 
    end
    "http://chart.apis.google.com/chart?cht=gv&chl=digraph{#{CGI.escape(edges.gsub(/ /, '_').toutf8)}}&chs=500x500"
  end
end

ワークフロー編集ビューにグラフ描画を追加

app/views/workflows/edit.rhtmlの最後に以下を加える。

 <%= image_tag(generate_graph(@role, @tracker)) if @role %>

結果

こんな感じ。

f:id:suer:20100820234512p:image

うまく出力できました。

制約

  • GoogleChart API の制限として、長すぎるURLははじかれます。なので、ステータス数が増えてくると表示できなくなります。
  • さらに、漢字は以下のように化けてしまうので、基本的に日本語ステータス名は不可。

f:id:suer:20100820234823p:image

まとめ

  • GraphViz Chart の日本語サポートに期待
  • app/views/workflows/edit.rhtml の最後にビューフックが欲しい。それがあれば綺麗にプラグイン化できる。
  • GraphViz Chart のドキュメントはろくに読んでいない。それでも使える Google Chart API はすばらしい:)