Redmine-ajouter le champ "passed Time" à L'affichage des problèmes
Comment pourrais-je ajouter le "temps passé" comme colonne à afficher dans la liste des problèmes?
6 réponses
Vous pouvez aussi le faire en ajoutant la colonne à l'exécution. Ceci ajoutera la colonne des heures passées sans modifier le noyau de la Redmine. Il suffit de déposer le code suivant dans un fichier 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
en consolidant les réponses D'Eric et Joel, c'est ce que j'avais besoin de faire pour ajouter une colonne "temps passé" à Redmine 1.0.3. Vous ne savez pas si il ya une meilleure façon d'obtenir une traduction de texte ajouté.
Pour donner le nouveau champ un nom localisé, ajouté à config/locales/fr.yml autour de la ligne 299 à la fin de la définition des champs:
field_spent_hours: Spent time
pour ajouter la nouvelle colonne, créer lib / spent_time_query_patch.rb avec le contenu:
# 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 obtenir le spent_time_query_patch ci-dessus pour charger effectivement, créé config/initializers/spent_time_query_patch.rb avec le contenu:
require 'spent_time_query_patch'
Query.class_eval do
include QueryPatch
end
Aussi, ce serait cool, si la colonne "temps Passé" était sortable.
après avoir regardé le SQL produit, je viens d'implémenter la fonctionnalité sortable de cette façon:
base.add_available_column(QueryColumn.new(:spent_hours,
:sortable => "(select sum(hours) from time_entries where time_entries.issue_id = t0_r0)")
)
remplacer la ligne correspondante. J'espère juste que le nom de la colonne issue_id sera toujours "t0_r0" ...
PS: Vous pouvez trouver beaucoup d'exemples dans app/models/query.rb lignes 122++
2-Chiffres Problème: Malheureusement, j'ai eu à pirater l'un des les fichiers de base: app/helpers / queries_helper.rb
Autour de la ligne 44, modifiez ce qui suit:
when 'Fixnum', 'Float'
if column.name == :done_ratio
progress_bar(value, :width => '80px')
else
value.to_s
end
en:
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: à l'Aide d'un patch au lieu de la manipulation de la source récemment, nous avons fait une mise à jour du système redmine, donc le correctif mentionné ci-dessus a aussi été supprimé. Cette fois-ci, nous avons décidé de mettre en place ce correctif.
ouvrir n'importe quel plugin (nous avons créé un plugin pour nos changements de patch monkey sur core). ouvert jusqu' 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
en utilisant AgileDwarf plugin. Vous pouvez avoir passé du temps et vous pouvez dire ce que vous avez dépensé cette fois (développement - conception...)
comme personne n'a répondu, j'ai juste cherché la source jusqu'à ce qu'elle donne des résultats. Puis j'ai commencé un blog pour expliquer comment j'ai fait.
ajouter la colonne passed time à la liste des problèmes par défaut dans Redmine