Redmine - Ajouter & # 8220; Temps passé & # 8221; Affichage de champ à problèmes
-
11-07-2019 - |
Question
Comment puis-je ajouter le " Temps passé " sous forme de colonne à afficher dans la liste des problèmes?
La solution
Vous pouvez également le faire en ajoutant la colonne au moment de l'exécution. Cela ajoutera la colonne des heures passées sans modifier le noyau Redmine. Il suffit de déposer le code suivant dans un fichier dans lib /
Adapté 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
Autres conseils
En consolidant les réponses d'Eric et Joel, voici ce que je devais faire pour obtenir une colonne "Temps passé" ajoutée à Redmine 1.0.3. Je ne sais pas s'il existe un meilleur moyen d'obtenir le texte de traduction ajouté.
Pour attribuer un nom localisé au nouveau champ, ajouté à config / locales / en.yml autour de la ligne 299 à la fin des définitions de champ:
field_spent_hours: Spent time
Pour ajouter la nouvelle colonne, vous avez créé lib /sayed_time_query_patch.rb avec le contenu suivant:
.# 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
Pour que le message used_time_query_patch ci-dessus soit effectivement chargé, configurez / initialiseurs / inutile_temps_query_patch.rb avec le contenu suivant:
require 'spent_time_query_patch'
Query.class_eval do
include QueryPatch
end
De plus, ce serait bien si la colonne "Temps passé" était était triable.
Après avoir consulté le code SQL produit, je viens d'implémenter la fonctionnalité de tri de cette manière:
base.add_available_column(QueryColumn.new(:spent_hours,
:sortable => "(select sum(hours) from time_entries where time_entries.issue_id = t0_r0)")
)
Remplacez la ligne correspondante. J'espère seulement que le nom de la colonne issue_id est toujours " t0_r0 " ...
PS: vous trouverez de nombreux exemples dans les lignes app / models / query.rb 122 ++
.Problème à 2 chiffres: Malheureusement, j'ai dû pirater l'un des fichiers principaux: app / helpers / queries_helper.rb
Autour de la ligne 44, changez ceci:
when 'Fixnum', 'Float'
if column.name == :done_ratio
progress_bar(value, :width => '80px')
else
value.to_s
end
dans:
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: utilisation d'un correctif à la place pour manipuler la source Nous avons récemment mis à jour le système Redmine. Le correctif susmentionné a également été supprimé. Cette fois-ci, nous avons décidé de mettre cela en œuvre comme un correctif.
Ouvrez n'importe quel plugin (Nous avons créé un plugin pour les modifications de monkey-patch sur le noyau). ouvrir vendeur / 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
Cette fonctionnalité intégrer à partir de la version 1.4.0
en utilisant le plug-in AgileDwarf . Vous pouvez avoir passé du temps & amp; vous pouvez dire pour ce que vous avez passé ce temps (developement - design -...)
Comme personne n’a répondu, j’ai tapé la source jusqu’à ce qu’elle produise des résultats. J'ai ensuite lancé un blog pour expliquer comment je l'avais fait.
Ajouter une colonne de temps passé à Liste des problèmes par défaut dans Redmine