Feature #35559 » 35559-v2.patch
app/helpers/issues_helper.rb | ||
---|---|---|
152 | 152 | |
153 | 153 |
open_subtasks = subtasks_grouped[false].to_i |
154 | 154 |
closed_subtasks = subtasks_grouped[true].to_i |
155 |
all_subtasks = open_subtasks + closed_subtasks |
|
155 |
render_issues_stats(open_subtasks, closed_subtasks, {:parent_id => "~#{issue.id}"}) |
|
156 |
end |
|
157 | ||
158 |
# Renders relations stats (total relations (open - closed)) with query links |
|
159 |
def render_relations_stats(issue, relations) |
|
160 |
open_relations = relations.count{|r| (r.other_issue(issue).closed?)==false} |
|
161 |
closed_relations = relations.count{|r| r.other_issue(issue).closed?} |
|
162 |
render_issues_stats(open_relations, closed_relations, {:issue_id => relations.map{|r| r.other_issue(issue).id}.join(',')}) |
|
163 |
end |
|
156 | 164 | |
157 |
return if all_subtasks == 0 |
|
165 |
# Renders issues stats (total relations (open - closed)) with query links |
|
166 |
def render_issues_stats(open_issues=0, closed_issues=0, issues_path_attr={}) |
|
167 |
total_issues = open_issues + closed_issues |
|
168 |
return if total_issues == 0 |
|
158 | 169 | |
159 | 170 |
all_block = content_tag( |
160 | 171 |
'span', |
161 |
link_to(all_subtasks, issues_path(parent_id: "~#{issue.id}", set_filter: true, status_id: '*')),
|
|
172 |
link_to(total_issues, issues_path(issues_path_attr.merge({:set_filter => true, :status_id => '*'}))),
|
|
162 | 173 |
class: 'badge badge-issues-count' |
163 | 174 |
) |
164 | ||
165 | 175 |
closed_block = content_tag( |
166 | 176 |
'span', |
167 | 177 |
link_to_if( |
168 |
closed_subtasks > 0,
|
|
169 |
l(:label_x_closed_issues_abbr, count: closed_subtasks),
|
|
170 |
issues_path(parent_id: "~#{issue.id}", set_filter: true, status_id: 'c')
|
|
178 |
closed_issues > 0,
|
|
179 |
l(:label_x_closed_issues_abbr, count: closed_issues),
|
|
180 |
issues_path(issues_path_attr.merge({:set_filter => true, :status_id => 'c'}))
|
|
171 | 181 |
), |
172 | 182 |
class: 'closed' |
173 | 183 |
) |
174 | ||
175 | 184 |
open_block = content_tag( |
176 | 185 |
'span', |
177 | 186 |
link_to_if( |
178 |
open_subtasks > 0,
|
|
179 |
l(:label_x_open_issues_abbr, :count => open_subtasks),
|
|
180 |
issues_path(:parent_id => "~#{issue.id}", :set_filter => true, :status_id => 'o')
|
|
187 |
open_issues > 0,
|
|
188 |
l(:label_x_open_issues_abbr, :count => open_issues),
|
|
189 |
issues_path(issues_path_attr.merge({:set_filter => true, :status_id => 'o'}))
|
|
181 | 190 |
), |
182 | 191 |
class: 'open' |
183 | 192 |
) |
184 | ||
185 | 193 |
content_tag( |
186 | 194 |
'span', |
187 | 195 |
"#{all_block} (#{open_block} — #{closed_block})".html_safe, |
app/views/issues/_relations.html.erb | ||
---|---|---|
4 | 4 |
<% end %> |
5 | 5 |
</div> |
6 | 6 | |
7 |
<p><strong><%=l(:label_related_issues)%></strong></p> |
|
7 |
<p> |
|
8 |
<strong><%=l(:label_related_issues)%></strong> |
|
9 |
<%= render_relations_stats(@issue, @relations) if @relations.present? %> |
|
10 |
</p> |
|
8 | 11 | |
9 | 12 |
<% if @relations.present? %> |
10 | 13 |
<%= form_tag({}, :data => {:cm_url => issues_context_menu_path}) do %> |
public/stylesheets/application.css | ||
---|---|---|
550 | 550 |
#issue_tree td.checkbox, #relations td.checkbox {display:none;} |
551 | 551 |
#issue_tree td.subject, #relations td.subject {width: 50%;} |
552 | 552 |
#issue_tree td.buttons, #relations td.buttons {padding:0;} |
553 |
#issue_tree .issues-stat {font-size: 80%} |
|
554 |
#issue_tree .issues-stat .badge {bottom: initial;} |
|
553 |
#issue_tree .issues-stat, #relations .issues-stat {font-size: 80%}
|
|
554 |
#issue_tree .issues-stat .badge, #relations .issues-stat .badge {bottom: initial;}
|
|
555 | 555 | |
556 | 556 |
#trackers_description {display:none;} |
557 | 557 |
#trackers_description dt {font-weight: bold; text-decoration: underline;} |
test/helpers/issues_helper_test.rb | ||
---|---|---|
397 | 397 |
end |
398 | 398 |
end |
399 | 399 |
end |
400 | ||
401 |
def test_render_issues_stats |
|
402 |
html = render_issues_stats(1, 1, {:issue_id => '15,16'}) |
|
403 | ||
404 |
assert_include '<a href="/issues?issue_id=15%2C16&set_filter=true&status_id=%2A">2</a>', html |
|
405 |
assert_include '<a href="/issues?issue_id=15%2C16&set_filter=true&status_id=o">1 open</a>', html |
|
406 |
assert_include '<a href="/issues?issue_id=15%2C16&set_filter=true&status_id=c">1 closed</a>', html |
|
407 |
end |
|
408 | ||
409 |
def test_render_descendants_stats |
|
410 |
parent = Issue.generate!(:status_id => 1) |
|
411 |
child = Issue.generate!(:parent_issue_id => parent.id, :status_id => 1) |
|
412 |
Issue.generate!(:parent_issue_id => child.id, :status_id => 5) |
|
413 |
parent.reload |
|
414 |
html = render_descendants_stats(parent) |
|
415 | ||
416 |
assert_include "<a href=\"/issues?parent_id=~#{parent.id}&set_filter=true&status_id=%2A\">2</a>", html |
|
417 |
assert_include "<a href=\"/issues?parent_id=~#{parent.id}&set_filter=true&status_id=o\">1 open</a>", html |
|
418 |
assert_include "<a href=\"/issues?parent_id=~#{parent.id}&set_filter=true&status_id=c\">1 closed</a>", html |
|
419 |
end |
|
420 | ||
421 |
def test_render_relations_stats |
|
422 |
issue = Issue.generate!(:status_id => 1) |
|
423 |
relations = [] |
|
424 |
open_issue = Issue.generate!(:status_id => 1) |
|
425 |
relations << IssueRelation.create!(:issue_from => open_issue, |
|
426 |
:issue_to => issue, |
|
427 |
:relation_type => IssueRelation::TYPE_RELATES) |
|
428 |
closed_issue = Issue.generate!(:status_id => 5) |
|
429 |
relations << IssueRelation.create!(:issue_from => closed_issue, |
|
430 |
:issue_to => issue, |
|
431 |
:relation_type => IssueRelation::TYPE_FOLLOWS) |
|
432 |
html = render_relations_stats(issue, relations) |
|
433 | ||
434 |
assert_include "<a href=\"/issues?issue_id=#{open_issue.id}%2C#{closed_issue.id}&set_filter=true&status_id=%2A\">2</a></span>", html |
|
435 |
assert_include "<a href=\"/issues?issue_id=#{open_issue.id}%2C#{closed_issue.id}&set_filter=true&status_id=o\">1 open</a>", html |
|
436 |
assert_include "<a href=\"/issues?issue_id=#{open_issue.id}%2C#{closed_issue.id}&set_filter=true&status_id=c\">1 closed</a>", html |
|
437 |
end |
|
400 | 438 |
end |
- « Previous
- 1
- 2
- 3
- Next »