チケット一覧に作業時間の記録を表示する

チケット一覧に出せそうで出ていない項目の一つに「作業時間の記録」がある。
Redmineでは一つのチケットに費やした時間を「活動」とセットで積み上げていく計測方法になる。
これはDB的にみれば、1つのチケットに複数の時間レコードを追加していくことだ。
つまり、チケット(isues)と時間(time_entries)とで格納先テーブルが異なり、このため、チケット一覧に表示しない仕様となっているようだ。

もちろん、時間については「作業時間の記録」として詳細やレポート画面に表示できる(月別等の時間を表示するには、この画面が便利)。
ただ、最もよく使うチケット一覧(カスタムクエリー)で、単純にその時点で積み上げられた時間を確認したいこともある。
また、チケットの他属性項目含めたCSV出力でも、チケット一覧の方が使い勝手が良い。

そこで以下の改造。

<Redmineソースの改造>(v.1.3.0ベース)
  • チケット一覧に「時間」のチケット毎の合計値を表示させる。
  • また、その時間をリンクにして、「作業時間の記録」の詳細画面へリンクさせる。
  • ただし、ソートやフィルターへは未対応。
     when 'Fixnum', 'Float'
       if column.name == :done_ratio
         progress_bar(value, :width => '80px')
+      elsif column.name == :spent_hours
+        link_to(("%.2f" % issue.spent_hours.to_f), {:controller => 'timelog', :action => 'index', :project_id => @project, :issue_id => issue}) if issue.spent_hours > 0
       else
         h(value.to_s)
       end
     QueryColumn.new(:start_date, :sortable => "#{Issue.table_name}.start_date"),
     QueryColumn.new(:due_date, :sortable => "#{Issue.table_name}.due_date"),
     QueryColumn.new(:estimated_hours, :sortable => "#{Issue.table_name}.estimated_hours"),
+    QueryColumn.new(:spent_hours),
     QueryColumn.new(:done_ratio, :sortable => "#{Issue.table_name}.done_ratio", :groupable => true),
     QueryColumn.new(:created_on, :sortable => "#{Issue.table_name}.created_on", :default_order => 'desc'),
   field_redirect_existing_links: Redirect existing links
   field_estimated_hours: Estimated time
+  field_spent_hours: Spent time
   field_column_names: Columns
   field_time_entries: Log time
他言語も必要に応じて適宜修正。

0 件のコメント:

コメントを投稿