Redmine - Добавить поле “Затраченное время” к отображению проблем

StackOverflow https://stackoverflow.com/questions/321403

  •  11-07-2019
  •  | 
  •  

Вопрос

Как бы мне добавить "Затраченное время" в качестве столбца для отображения в списке проблем?

Это было полезно?

Решение

Вы также можете сделать это, добавив столбец во время выполнения.Это добавит столбец "затраченные часы" без изменения ядра 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 

Другие советы

Обобщая ответы Эрика и Джоэла, мне нужно было добавить столбец «Потраченное время» в Redmine 1.0.3. Не уверен, есть ли лучший способ добавить текст перевода.

Чтобы присвоить новому полю локализованное имя, добавьте его в config / locales / en.yml вокруг строки 299 в конце определений поля:

  field_spent_hours: Spent time

Чтобы добавить новый столбец, был создан lib / lost_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 / initializer / lost_time_query_patch.rb с содержимым:

require 'spent_time_query_patch'

Query.class_eval do
  include QueryPatch
end

Кроме того, было бы здорово, если бы столбец "Потраченное время" можно было сортировать.

После просмотра созданного 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 цифрами: К сожалению, мне пришлось взломать один из основных файлов:приложение/помощники/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, поэтому вышеупомянутое исправление также было удалено.На этот раз мы решили внедрить это в виде патча.

Откройте любой плагин (мы создали плагин для наших изменений monkey-patch в core).откройте 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

Эта функция встроена из версии 1.4.0

с помощью плагина AgileDwarf . Вы можете потратить время и Вы можете сказать, на что вы потратили это время (разработка - дизайн -...)

Поскольку никто не ответил, я просто ткнул источник, пока он не дал результатов. Затем я начал блог, чтобы объяснить, как я это сделал.

Добавить столбец затраченного времени в список проблем по умолчанию в Redmine

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top