Patch #4776 » sumEstimatedTimeByGroup.patch
| controllers/issues_controller.rb (working copy) | ||
|---|---|---|
| 73 | 73 |
:offset => @issue_pages.current.offset, |
| 74 | 74 |
:limit => limit) |
| 75 | 75 |
@issue_count_by_group = @query.issue_count_by_group |
| 76 |
@issue_sum_by_group = @query.issue_sum_by_group |
|
| 76 | 77 |
|
| 77 | 78 |
respond_to do |format| |
| 78 | 79 |
format.html { render :template => 'issues/index.rhtml', :layout => !request.xhr? }
|
| models/query.rb (working copy) | ||
|---|---|---|
| 415 | 415 |
raise StatementInvalid.new(e.message) |
| 416 | 416 |
end |
| 417 | 417 |
|
| 418 |
# Returns sum of all the issue's estimated_hours |
|
| 419 |
def issue_sum |
|
| 420 |
Issue.sum(:estimated_hours, :include => [:status, :project], :conditions => statement) |
|
| 421 |
rescue ::ActiveRecord::StatementInvalid => e |
|
| 422 |
raise StatementInvalid.new(e.message) |
|
| 423 |
end |
|
| 424 |
|
|
| 418 | 425 |
# Returns the issue count by group or nil if query is not grouped |
| 419 | 426 |
def issue_count_by_group |
| 420 | 427 |
r = nil |
| ... | ... | |
| 435 | 442 |
raise StatementInvalid.new(e.message) |
| 436 | 443 |
end |
| 437 | 444 |
|
| 445 |
# Returns sum of the issue's estimated_hours by group or nil if query is not grouped |
|
| 446 |
def issue_sum_by_group |
|
| 447 |
r = nil |
|
| 448 |
if grouped? |
|
| 449 |
begin |
|
| 450 |
r = Issue.sum(:estimated_hours, :group => group_by_statement, :include => [:status, :project], :conditions => statement) |
|
| 451 |
rescue ActiveRecord::RecordNotFound |
|
| 452 |
r= {r => issue_sum}
|
|
| 453 |
end |
|
| 454 |
|
|
| 455 |
c = group_by_column |
|
| 456 |
if c.is_a?(QueryCustomFieldColumn) |
|
| 457 |
r = r.keys.inject({}) {|h, k| h[c.custom_field.cast_value(k)] = r[k]; h}
|
|
| 458 |
end |
|
| 459 |
end |
|
| 460 |
r |
|
| 461 |
rescue ::ActiveRecord::StatementInvalid => e |
|
| 462 |
raise StatementInvalid.new(e.message) |
|
| 463 |
end |
|
| 464 |
|
|
| 438 | 465 |
# Returns the issues |
| 439 | 466 |
# Valid options are :order, :offset, :limit, :include, :conditions |
| 440 | 467 |
def issues(options={})
|
| views/issues/_list.rhtml (working copy) | ||
|---|---|---|
| 18 | 18 |
<tr class="group open"> |
| 19 | 19 |
<td colspan="<%= query.columns.size + 2 %>"> |
| 20 | 20 |
<span class="expander" onclick="toggleRowGroup(this); return false;"> </span> |
| 21 |
<%= group.blank? ? 'None' : column_content(@query.group_by_column, issue) %> <span class="count">(<%= @issue_count_by_group[group] %>)</span> |
|
| 21 |
<%= group.blank? ? 'None' : column_content(@query.group_by_column, issue) %> <span class="count">(<%= @issue_count_by_group[group] %>, <%= l(:label_total) %>:<%= @issue_sum_by_group[group] %>)</span>
|
|
| 22 | 22 |
</td> |
| 23 | 23 |
</tr> |
| 24 | 24 |
<% previous_group = group %> |