tutorial - Redmine: agregue el campo "Tiempo gastado" a la pantalla de problemas
redmine tutorial (6)
¿Cómo podría agregar el "Tiempo transcurrido" como una columna para mostrar en la lista de problemas?
También puede hacer esto agregando la columna en tiempo de ejecución. Esto agregará la columna de horas gastadas sin modificar el núcleo de Redmine. Simplemente coloque el siguiente código en un archivo en lib /
Adaptado de:
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
Además, sería genial, si la columna "Tiempo transcurrido" fuera ordenable.
Después de buscar el SQL producido, acabo de implementar la función ordenable de esta manera:
base.add_available_column(QueryColumn.new(:spent_hours,
:sortable => "(select sum(hours) from time_entries where time_entries.issue_id = t0_r0)")
)
Reemplace la línea respectiva. Solo espero que el nombre de la columna issue_id sea siempre "t0_r0" ...
PD: puedes encontrar muchos ejemplos en las aplicaciones / modelos / líneas query.rb 122 ++
Problema de 2 dígitos: desafortunadamente, tuve que hackear uno de los archivos principales: app / helpers / queries_helper.rb
Alrededor de la línea 44, cambia esto:
when ''Fixnum'', ''Float''
if column.name == :done_ratio
progress_bar(value, :width => ''80px'')
else
value.to_s
end
dentro:
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
EDITAR: Usar un parche en lugar de manipular la fuente Recientemente, hicimos una actualización del sistema redmine, por lo que la reparación mencionada anteriormente también se eliminó. Esta vez, decidimos implementar eso como un parche.
Abre cualquier complemento (creamos un complemento para nuestros cambios de parche de mono en el núcleo). abrir proveedor / 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
Al consolidar las respuestas de Eric y Joel, esto es lo que necesitaba hacer para agregar una columna de "Tiempo de uso" a Redmine 1.0.3. No estoy seguro de si hay una forma mejor de agregar texto de traducción.
Para darle al nuevo campo un nombre localizado, agregado a config / locales / en.yml alrededor de la línea 299 al final de las definiciones de campo:
field_spent_hours: Spent time
Para agregar la nueva columna, creó lib / spent_time_query_patch.rb con contenido:
# 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
Para obtener el tiempo pasado_query_patch arriba para cargar realmente, creó config / initializers / spent_time_query_patch.rb con contenido:
require ''spent_time_query_patch''
Query.class_eval do
include QueryPatch
end
Esta característica se construye a partir de la versión 1.4.0
mediante el uso del complemento AgileDwarf . Puede haber pasado tiempo y puede decir lo que pasó esta vez (desarrollo - diseño -...)
Dado que nadie respondió, simplemente empujé la fuente hasta que arrojó resultados. Luego comencé un blog para explicar cómo lo hice.
Agregue la columna de tiempo gastado a la lista de problemas predeterminados en Redmine