Redmine - добавление поля "Отработанное время" для отображения вопросов
Как мне добавить добавление "Проведенное время" в качестве столбца, который будет отображаться в списке проблем?
Ответы
Ответ 1
Вы также можете сделать это, добавив столбец во время выполнения. Это добавит столбец потраченных часов без изменения ядра Redmine. Просто отбросьте следующий код в файл в lib/
Адаптировано из:
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
Ответ 2
Консолидация ответов Эрика и Джоэла, это то, что мне нужно было сделать, чтобы добавить столбец "потраченное время" в Redmine 1.0.3. Не уверен, есть ли лучший способ получить текст перевода.
Чтобы дать новому полю локализованное имя, добавленное в 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
Чтобы загрузить потраченную_страницу_на_оценке выше, чтобы создать фактическую загрузку, создали config/initializers/spent_time_query_patch.rb с контентом:
require 'spent_time_query_patch'
Query.class_eval do
include QueryPatch
end
Ответ 3
Кроме того, было бы здорово, если бы столбец "Время выполнения" был сортируемым.
После просмотра созданного 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 ++
Проблема с двумя цифрами:
К несчастью, мне пришлось взломать один из основных файлов: 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
EDIT: использование патча вместо управления исходным текстом Недавно мы обновили систему redmine, поэтому вышеупомянутое Fix также было удалено.
На этот раз мы решили реализовать это как патч.
Откройте любой плагин (мы создали плагин для наших изменений в файле monkey-patch на ядре). открыть поставщика/плагины/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
Ответ 4
Эта функция встроена из версии 1.4.0
Ответ 5
Поскольку никто не отвечал, я просто ткнул источник, пока он не дал результаты. Затем я начал блог, чтобы объяснить, как я это сделал.
Добавить выделенный столбец времени в список проблем по умолчанию в Redmine
Ответ 6
используя AgileDwarf плагин. Вы могли потратить время, и вы можете сказать, за что вы потратили это время (разработка - дизайн -...)