Patch #4776 » estimatedTime.diff
models/issue_query.rb (working copy) | ||
---|---|---|
232 | 232 |
raise StatementInvalid.new(e.message) |
233 | 233 |
end |
234 | 234 | |
235 |
# Returns sum of all the issue's estimated_hours |
|
236 |
def issue_sum |
|
237 |
Issue.sum(:estimated_hours, :include => [:status, :project], |
|
238 |
:conditions => statement << " AND #{Issue.table_name}.rgt - #{Issue.table_name}.lft = 1") |
|
239 |
rescue ::ActiveRecord::StatementInvalid => e |
|
240 |
raise StatementInvalid.new(e.message) |
|
241 |
end |
|
242 | ||
235 | 243 |
# Returns the issue count by group or nil if query is not grouped |
236 | 244 |
def issue_count_by_group |
237 | 245 |
r = nil |
... | ... | |
252 | 260 |
raise StatementInvalid.new(e.message) |
253 | 261 |
end |
254 | 262 | |
263 |
# Returns sum of the issue's estimated_hours by group or nil if query is not grouped |
|
264 |
def issue_sum_by_group |
|
265 |
r = nil |
|
266 |
if grouped? |
|
267 |
begin |
|
268 |
r = Issue.sum(:estimated_hours, :group => group_by_statement, :include => [:status, :project], |
|
269 |
:conditions => statement << " AND #{Issue.table_name}.rgt - #{Issue.table_name}.lft = 1") |
|
270 |
rescue ActiveRecord::RecordNotFound |
|
271 |
r= {r => issue_sum} |
|
272 |
end |
|
273 |
|
|
274 |
c = group_by_column |
|
275 |
if c.is_a?(QueryCustomFieldColumn) |
|
276 |
r = r.keys.inject({}) {|h, k| h[c.custom_field.cast_value(k)] = r[k]; h} |
|
277 |
end |
|
278 |
end |
|
279 |
r |
|
280 |
rescue ::ActiveRecord::StatementInvalid => e |
|
281 |
raise StatementInvalid.new(e.message) |
|
282 |
end |
|
283 | ||
255 | 284 |
# Returns the issues |
256 | 285 |
# Valid options are :order, :offset, :limit, :include, :conditions |
257 | 286 |
def issues(options={}) |
controllers/issues_controller.rb (working copy) | ||
---|---|---|
78 | 78 |
:offset => @offset, |
79 | 79 |
:limit => @limit) |
80 | 80 |
@issue_count_by_group = @query.issue_count_by_group |
81 |
@issue_sum_by_group = @query.issue_sum_by_group |
|
81 | 82 | |
82 | 83 |
respond_to do |format| |
83 | 84 |
format.html { render :template => 'issues/index', :layout => !request.xhr? } |
views/issues/_list.html.erb (working copy) | ||
---|---|---|
22 | 22 |
<tr class="group open"> |
23 | 23 |
<td colspan="<%= query.inline_columns.size + 2 %>"> |
24 | 24 |
<span class="expander" onclick="toggleRowGroup(this);"> </span> |
25 |
<%= group.blank? ? l(:label_none) : column_content(@query.group_by_column, issue) %> <span class="count"><%= @issue_count_by_group[group] %></span> |
|
25 |
<%= group.blank? ? l(:label_none) : column_content(@query.group_by_column, issue) %> <span class="count"><%= @issue_count_by_group[group] %> (<%= l(:field_estimated_hours) %>: <%= l(:label_f_hour_plural, :value => @issue_sum_by_group[group]) %>)</span>
|
|
26 | 26 |
<%= link_to_function("#{l(:button_collapse_all)}/#{l(:button_expand_all)}", |
27 | 27 |
"toggleAllRowGroups(this)", :class => 'toggle-all') %> |
28 | 28 |
</td> |
... | ... | |
45 | 45 |
</table> |
46 | 46 |
</div> |
47 | 47 |
<% end -%> |
48 |
<p align="right" |
|
49 |
current page: <b><%=issues.reject{|issue| issue.children?}.collect(&:estimated_hours).reject {|hours| hours.nil?}.sum %></b> |
|
50 |
<%= l(:field_estimated_hours) %>: <b><%= l(:label_f_hour_plural, :value => @query.issue_sum) %></b> |
|
51 |
</p> |