Index: controllers/issues_controller.rb =================================================================== --- controllers/issues_controller.rb (revision 3363) +++ controllers/issues_controller.rb (working copy) @@ -73,6 +73,7 @@ :offset => @issue_pages.current.offset, :limit => limit) @issue_count_by_group = @query.issue_count_by_group + @issue_sum_by_group = @query.issue_sum_by_group respond_to do |format| format.html { render :template => 'issues/index.rhtml', :layout => !request.xhr? } Index: models/query.rb =================================================================== --- models/query.rb (revision 3363) +++ models/query.rb (working copy) @@ -415,6 +415,13 @@ raise StatementInvalid.new(e.message) end + # Returns sum of all the issue's estimated_hours + def issue_sum + Issue.sum(:estimated_hours, :include => [:status, :project], :conditions => statement) + rescue ::ActiveRecord::StatementInvalid => e + raise StatementInvalid.new(e.message) + end + # Returns the issue count by group or nil if query is not grouped def issue_count_by_group r = nil @@ -435,6 +442,26 @@ raise StatementInvalid.new(e.message) end + # Returns sum of the issue's estimated_hours by group or nil if query is not grouped + def issue_sum_by_group + r = nil + if grouped? + begin + r = Issue.sum(:estimated_hours, :group => group_by_statement, :include => [:status, :project], :conditions => statement) + rescue ActiveRecord::RecordNotFound + r= {r => issue_sum} + end + + c = group_by_column + if c.is_a?(QueryCustomFieldColumn) + r = r.keys.inject({}) {|h, k| h[c.custom_field.cast_value(k)] = r[k]; h} + end + end + r + rescue ::ActiveRecord::StatementInvalid => e + raise StatementInvalid.new(e.message) + end + # Returns the issues # Valid options are :order, :offset, :limit, :include, :conditions def issues(options={}) Index: views/issues/_list.rhtml =================================================================== --- views/issues/_list.rhtml (revision 3369) +++ views/issues/_list.rhtml (working copy) @@ -18,7 +18,7 @@   - <%= group.blank? ? 'None' : column_content(@query.group_by_column, issue) %> (<%= @issue_count_by_group[group] %>) + <%= group.blank? ? 'None' : column_content(@query.group_by_column, issue) %> (<%= @issue_count_by_group[group] %>, <%= l(:label_total) %>:<%= @issue_sum_by_group[group] %>) <% previous_group = group %>