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?

14
demandé sur Joel Meador 2008-11-26 19:56:05

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 
9
répondu Eric Davis 2009-01-08 06:04:32

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
11
répondu user2067021 2012-01-22 00:56:13

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
2
répondu stwienert 2012-01-21 23:41:03

Cette fonction construire depuis la version 1.4.0

2
répondu diimdeep 2012-10-04 11:09:15

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...)

1
répondu parisssss 2013-09-02 08:08:22

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

1
répondu Joel Meador 2013-09-04 18:21:04