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