diff options
author | Jean-Philippe Lang <jp_lang@yahoo.fr> | 2011-12-04 16:43:32 +0000 |
---|---|---|
committer | Jean-Philippe Lang <jp_lang@yahoo.fr> | 2011-12-04 16:43:32 +0000 |
commit | 6d498a3c46c999812f9fa78a420516657a3ddab2 (patch) | |
tree | 0f03cc39db154a292ff7e0d3906412e9922ce1cf /app/models/issue.rb | |
parent | bddd19c1e662e6e5565ec1b2968b2907780c35de (diff) | |
download | redmine-6d498a3c46c999812f9fa78a420516657a3ddab2.tar.gz redmine-6d498a3c46c999812f9fa78a420516657a3ddab2.zip |
Makes spent time column available on the issue list (#971).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8073 e93f8b46-1217-0410-a6f0-8f06a7374b81
Diffstat (limited to 'app/models/issue.rb')
-rw-r--r-- | app/models/issue.rb | 19 |
1 files changed, 17 insertions, 2 deletions
diff --git a/app/models/issue.rb b/app/models/issue.rb index cbe3dd659..9eb567c9e 100644 --- a/app/models/issue.rb +++ b/app/models/issue.rb @@ -499,13 +499,18 @@ class Issue < ActiveRecord::Base notified.collect(&:mail) end + # Returns the number of hours spent on this issue + def spent_hours + @spent_hours ||= time_entries.sum(:hours) || 0 + end + # Returns the total number of hours spent on this issue and its descendants # # Example: # spent_hours => 0.0 # spent_hours => 50.2 - def spent_hours - @spent_hours ||= self_and_descendants.sum("#{TimeEntry.table_name}.hours", :include => :time_entries).to_f || 0.0 + def total_spent_hours + @total_spent_hours ||= self_and_descendants.sum("#{TimeEntry.table_name}.hours", :include => :time_entries).to_f || 0.0 end def relations @@ -522,6 +527,16 @@ class Issue < ActiveRecord::Base end end + # Preloads visible spent time for a collection of issues + def self.load_visible_spent_hours(issues, user=User.current) + if issues.any? + hours_by_issue_id = TimeEntry.visible(user).sum(:hours, :group => :issue_id) + issues.each do |issue| + issue.instance_variable_set "@spent_hours", (hours_by_issue_id[issue.id] || 0) + end + end + end + # Finds an issue relation given its id. def find_relation(relation_id) IssueRelation.find(relation_id, :conditions => ["issue_to_id = ? OR issue_from_id = ?", id, id]) |