問題リストに表示される列として「費やした時間」を追加するにはどうすればよいですか?
6 に答える
Eric と Joel の回答をまとめて、Redmine 1.0.3 に「Spent time」列を追加するために必要なことは次のとおりです。翻訳テキストを追加するためのより良い方法があるかどうかはわかりません.
新しいフィールドにローカライズされた名前を付けるには、config/locales/en.yml のフィールド定義の最後の 299 行あたりに追加します。
field_spent_hours: Spent time
新しい列を追加するには、次の内容で lib/spent_time_query_patch.rb を作成しました。
# Based on http://github.com/edavis10/question_plugin/blob/master/lib/question_query_patch.rb
require_dependency 'query'
module QueryPatch
def self.included(base) # :nodoc:
base.extend(ClassMethods)
# Same as typing in the class
base.class_eval do
unloadable # Send unloadable so it will not be unloaded in development
base.add_available_column(QueryColumn.new(:spent_hours))
end
end
module ClassMethods
unless Query.respond_to?(:available_columns=)
# Setter for +available_columns+ that isn't provided by the core.
def available_columns=(v)
self.available_columns = (v)
end
end
unless Query.respond_to?(:add_available_column)
# Method to add a column to the +available_columns+ that isn't provided by the core.
def add_available_column(column)
self.available_columns << (column)
end
end
end
end
上記の sent_time_query_patch を実際にロードするために、次の内容で config/initializers/spent_time_query_patch.rb を作成しました。
require 'spent_time_query_patch'
Query.class_eval do
include QueryPatch
end
これは、実行時に列を追加することによっても実行できます。これにより、Redmine コアを変更せずに、費やした時間の列が追加されます。次のコードを lib/ のファイルにドロップするだけです
から適応:
require_dependency 'クエリ' モジュール QueryPatch def self.included(base) # :nodoc: base.extend(クラスメソッド) # クラスで入力するのと同じ base.class_eval する unloadable # unloadable を送信して、開発中にアンロードされないようにする base.add_available_column(QueryColumn.new(:spent_hours)) 終わり 終わり モジュール ClassMethods Query.respond_to?(:available_columns=) でない限り # コアによって提供されていない +available_columns+ のセッター。 def available_columns=(v) self.available_columns = (v) 終わり 終わり Query.respond_to?(:add_available_column) でない限り # コアが提供していない +available_columns+ に列を追加するメソッド。 def add_available_column(列) self.available_columns
この機能は1.4.0バージョンから組み込まれています
また、「費やした時間」の列がソート可能であればクールです。
生成された SQL を調べた後、次の方法でソート可能な機能を実装しました。
base.add_available_column(QueryColumn.new(:spent_hours,
:sortable => "(select sum(hours) from time_entries where time_entries.issue_id = t0_r0)")
)
それぞれの行を置き換えます。issue_id 列の名前が常に「t0_r0」であることを願っています...
PS: app/models/query.rb 行 122++ で多くの例を見つけることができます
2 桁の問題: 残念ながら、コア ファイルの 1 つをハックする必要がありました: app/helpers/queries_helper.rb
44 行目あたりを次のように変更します。
when 'Fixnum', 'Float'
if column.name == :done_ratio
progress_bar(value, :width => '80px')
else
value.to_s
end
の中へ:
when 'Fixnum', 'Float'
if column.name == :done_ratio
progress_bar(value, :width => '80px')
elsif column.name == :spent_hours
sprintf "%.2f", value
else
value.to_s
end
編集: ソースを操作する代わりにパッチを使用する 最近、redmine システムの更新を行ったため、上記の修正も削除されました。今回はそれをパッチとして実装することにしました。
任意のプラグインを開きます (コアのモンキー パッチの変更用にプラグインを作成しました)。vendor/plugins/redmine_YOURPLUGIN/app/helpers/queries_helper.rb を開く
module QueriesHelper
def new_column_content(column, issue)
value = column.value(issue)
if value.class.name == "Float" and column.name == :spent_hours
sprintf "%.2f", value
else
__column_content(column, issue)
end
end
alias_method :__column_content, :column_content
alias_method :column_content, :new_column_content
end
誰も答えなかったので、結果が得られるまでソースを突き刺しました。それから、私はそれをどのように行ったかを説明するためにブログを始めました.
AgileDwarfプラグインを使用して。あなたは時間を費やしたかもしれませんし、あなたがこの時間に費やしたものについて言うことができます (開発 - 設計 -...)