Redmine - Aggiungi il campo "Tempo trascorso" alla visualizzazione dei problemi
-
11-07-2019 - |
Domanda
Come potrei aggiungere l'aggiunta di " Tempo trascorso " come colonna da visualizzare nell'elenco dei problemi?
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