Patch #4776 » estimated_hour_exclude_parent.diff
| app/models/query.rb (working copy) | ||
|---|---|---|
| 503 | 503 |
raise StatementInvalid.new(e.message) |
| 504 | 504 |
end |
| 505 | 505 |
|
| 506 |
# Returns sum of all the issue's estimated_hours |
|
| 507 |
def issue_sum |
|
| 508 |
Issue.sum(:estimated_hours, :include => [:status, :project], |
|
| 509 |
:conditions => Issue.merge_conditions(statement , "#{Issue.table_name}.rgt - #{Issue.table_name}.lft = 1"))
|
|
| 510 |
rescue ::ActiveRecord::StatementInvalid => e |
|
| 511 |
raise StatementInvalid.new(e.message) |
|
| 512 |
end |
|
| 513 |
|
|
| 506 | 514 |
# Returns the issue count by group or nil if query is not grouped |
| 507 | 515 |
def issue_count_by_group |
| 508 | 516 |
r = nil |
| ... | ... | |
| 523 | 531 |
raise StatementInvalid.new(e.message) |
| 524 | 532 |
end |
| 525 | 533 |
|
| 534 |
# Returns sum of the issue's estimated_hours by group or nil if query is not grouped |
|
| 535 |
def issue_sum_by_group |
|
| 536 |
r = nil |
|
| 537 |
if grouped? |
|
| 538 |
begin |
|
| 539 |
r = Issue.sum(:estimated_hours, :group => group_by_statement, :include => [:status, :project], |
|
| 540 |
:conditions => Issue.merge_conditions(statement , "#{Issue.table_name}.rgt - #{Issue.table_name}.lft = 1"))
|
|
| 541 |
rescue ActiveRecord::RecordNotFound |
|
| 542 |
r= {r => issue_sum}
|
|
| 543 |
end |
|
| 544 |
|
|
| 545 |
c = group_by_column |
|
| 546 |
if c.is_a?(QueryCustomFieldColumn) |
|
| 547 |
r = r.keys.inject({}) {|h, k| h[c.custom_field.cast_value(k)] = r[k]; h}
|
|
| 548 |
end |
|
| 549 |
end |
|
| 550 |
r |
|
| 551 |
rescue ::ActiveRecord::StatementInvalid => e |
|
| 552 |
raise StatementInvalid.new(e.message) |
|
| 553 |
end |
|
| 554 |
|
|
| 526 | 555 |
# Returns the issues |
| 527 | 556 |
# Valid options are :order, :offset, :limit, :include, :conditions |
| 528 | 557 |
def issues(options={})
|
| app/controllers/issues_controller.rb (working copy) | ||
|---|---|---|
| 85 | 85 |
:order => sort_clause, |
| 86 | 86 |
:offset => @offset, |
| 87 | 87 |
:limit => @limit) |
| 88 |
@issue_count_by_group = @query.issue_count_by_group |
|
| 88 |
@issue_count_by_group = @query.issue_count_by_group |
|
| 89 |
@issue_sum_by_group = @query.issue_sum_by_group |
|
| 89 | 90 |
|
| 90 | 91 |
respond_to do |format| |
| 91 | 92 |
format.html { render :template => 'issues/index.rhtml', :layout => !request.xhr? }
|
| app/views/issues/_list.rhtml (working copy) | ||
|---|---|---|
| 19 | 19 |
<tr class="group open"> |
| 20 | 20 |
<td colspan="<%= query.columns.size + 2 %>"> |
| 21 | 21 |
<span class="expander" onclick="toggleRowGroup(this); return false;"> </span> |
| 22 |
<%= group.blank? ? 'None' : column_content(@query.group_by_column, issue) %> <span class="count">(<%= @issue_count_by_group[group] %>)</span> |
|
| 22 |
<%= 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>
|
|
| 23 | 23 |
</td> |
| 24 | 24 |
</tr> |
| 25 | 25 |
<% previous_group = group %> |
| ... | ... | |
| 34 | 34 |
</table> |
| 35 | 35 |
</div> |
| 36 | 36 |
<% end -%> |
| 37 |
<p align="right" |
|
| 38 |
Current page: <b><%=issues.reject{|issue| issue.children?}.collect(&:estimated_hours).reject {|hours| hours.nil?}.sum %></b>
|
|
| 39 |
<%= l(:label_total) %>: <b><%=@query.issue_sum %></b> |
|
| 40 |
</p> |
|