Redmine - Aggiungi il campo "Tempo trascorso" alla visualizzazione dei problemi

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

  •  11-07-2019
  •  | 
  •  

Domanda

Come potrei aggiungere l'aggiunta di " Tempo trascorso " come colonna da visualizzare nell'elenco dei problemi?

È stato utile?

Soluzione

Puoi anche farlo aggiungendo la colonna in fase di esecuzione. Ciò aggiungerà la colonna delle ore trascorse senza modificare il core di Redmine. Rilascia il seguente codice in un file in lib /

Adattato da:

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 

Altri suggerimenti

Consolidando le risposte di Eric e Joel, questo è ciò che dovevo fare per ottenere una colonna "Tempo trascorso" aggiunta a Redmine 1.0.3. Non sono sicuro se esiste un modo migliore per aggiungere il testo della traduzione.

Per assegnare un nome localizzato al nuovo campo, aggiunto a config / locales / en.yml intorno alla riga 299 alla fine delle definizioni del campo:

  field_spent_hours: Spent time

Per aggiungere la nuova colonna, hai creato lib / spend_time_query_patch.rb con contenuto:

# 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

Per fare in modo che il file paid_time_query_patch sopra si carichi effettivamente, ho creato config / initializer / spend_time_query_patch.rb con contenuto:

require 'spent_time_query_patch'

Query.class_eval do
  include QueryPatch
end
  

Inoltre, sarebbe interessante se la colonna "Tempo trascorso" era ordinabile.

Dopo aver cercato l'SQL prodotto, ho appena implementato la funzione ordinabile in questo modo:

base.add_available_column(QueryColumn.new(:spent_hours, 
 :sortable => "(select sum(hours) from time_entries where time_entries.issue_id = t0_r0)")
) 

Sostituisci la rispettiva riga. Spero solo che il nome della colonna issue_id sia sempre " t0_r0 " ...

PS: puoi trovare molti esempi nelle righe app / models / query.rb 122 ++

Problema a 2 cifre: Purtroppo, ho dovuto hackerare uno dei file principali: app / helpers / queries_helper.rb

Intorno alla linea 44, cambia questo:

when 'Fixnum', 'Float'                              
  if column.name == :done_ratio
    progress_bar(value, :width => '80px')
  else
    value.to_s
  end

in:

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

MODIFICA: utilizzando una patch invece di manipolare la sorgente di recente, abbiamo effettuato un aggiornamento del sistema Redmine, quindi anche la correzione sopra menzionata è stata rimossa. Questa volta, abbiamo deciso di implementarlo come patch.

Apri qualsiasi plug-in (Abbiamo creato un plug-in per le nostre modifiche alla patch delle scimmie sul core). apri fornitore / plugin / 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

Questa funzione incorporata dalla versione 1.4.0

utilizzando il plug-in AgileDwarf . Puoi aver trascorso del tempo & amp; puoi dire per quello che hai passato questa volta (sviluppo - design -...)

Dato che nessuno ha risposto, ho solo dato un'occhiata alla fonte fino a quando non ha prodotto risultati. Quindi ho aperto un blog per spiegare come l'ho fatto.

Aggiungi colonna del tempo trascorso a elenco di problemi predefiniti in Redmine

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top