Redmine - Ajouter & # 8220; Temps passé & # 8221; Affichage de champ à problèmes

StackOverflow https://stackoverflow.com/questions/321403

  •  11-07-2019
  •  | 
  •  

Question

Comment puis-je ajouter le " Temps passé " sous forme de colonne à afficher dans la liste des problèmes?

Était-ce utile?

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

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top