Roadmap: more accurate completion percentage calculation (done ratio of open issues is now taken into account).

Issues and issues list: 'done ratio' field now displayed as a progress bar.


git-svn-id: http://redmine.rubyforge.org/svn/trunk@908 e93f8b46-1217-0410-a6f0-8f06a7374b81
This commit is contained in:
Jean-Philippe Lang
2007-11-17 15:34:10 +00:00
parent 1469a4c8df
commit 9ad79612fe
7 changed files with 73 additions and 49 deletions
+33 -38
View File
@@ -14,44 +14,39 @@
<p><strong><%=l(:label_roadmap_due_in)%> <%= distance_of_time_in_words Time.now, version.effective_date %> (<%= format_date(version.effective_date) %>)</strong></p>
<% end %>
<p><%=h version.description %></p>
<% issues = version.fixed_issues.find(:all,
:include => [:status, :tracker],
:conditions => ["tracker_id in (#{@selected_tracker_ids.join(',')})"],
:order => "#{Tracker.table_name}.position") unless @selected_tracker_ids.empty?
issues ||= []
total = issues.size
complete = issues.inject(0) {|c,i| i.status.is_closed? ? c + 1 : c }
percentComplete = total == 0 ? 100 : (100.0 / total * complete).floor
percentIncomplete = 100 - percentComplete
%>
<table class="progress">
<tr>
<% if percentComplete > 0 %>
<td class="closed" style="width: <%= percentComplete %>%"></td>
<% end; if percentIncomplete > 0 %>
<td class="open" style="width: <%= percentIncomplete %>%"></td>
<% end %>
</tr>
</table>
<em><%= link_to(complete, :controller => 'issues', :action => 'index', :project_id => @project, :status_id => 'c', :fixed_version_id => version, :set_filter => 1) %> <%= lwr(:label_closed_issues, complete) %> (<%= percentComplete %>%) &#160;
<%= link_to((total - complete), :controller => 'issues', :action => 'index', :project_id => @project, :status_id => 'o', :fixed_version_id => version, :set_filter => 1) %> <%= lwr(:label_open_issues, total - complete)%> (<%= percentIncomplete %>%)</em>
<br />
<br />
<%= render(:partial => "wiki/content", :locals => {:content => version.wiki_page.content}) if version.wiki_page %>
<ul>
<% if total == 0 %>
<li><%=l(:label_roadmap_no_issues)%></li>
<% else %>
<% issues.each do |issue| %>
<li>
<%= link = link_to_issue(issue)
issue.status.is_closed? ? content_tag("del", link) : link %>: <%=h issue.subject %>
<%= content_tag "em", "(#{l(:label_closed_issues)})" if issue.status.is_closed? %>
</li>
<% end %>
<% end %>
</ul>
<% if version.fixed_issues.count > 0 %>
<%= progress_bar(version.completed_pourcent, :width => '40em', :legend => ('%0.0f%' % version.completed_pourcent)) %>
<p class="progress-info">
<%= link_to(version.closed_issues_count, :controller => 'issues', :action => 'index', :project_id => @project, :status_id => 'c', :fixed_version_id => version, :set_filter => 1) %>
<%= lwr(:label_closed_issues, version.closed_issues_count) %>
(<%= '%0.0f' % (version.closed_issues_count.to_f / version.fixed_issues.count * 100) %>%)
&#160;
<%= link_to(version.open_issues_count, :controller => 'issues', :action => 'index', :project_id => @project, :status_id => 'o', :fixed_version_id => version, :set_filter => 1) %>
<%= lwr(:label_open_issues, version.open_issues_count)%>
(<%= '%0.0f' % (version.open_issues_count.to_f / version.fixed_issues.count * 100) %>%)
</p>
<%= render(:partial => "wiki/content", :locals => {:content => version.wiki_page.content}) if version.wiki_page %>
<% issues = version.fixed_issues.find(:all,
:include => [:status, :tracker],
:conditions => ["tracker_id in (#{@selected_tracker_ids.join(',')})"],
:order => "#{Tracker.table_name}.position") unless @selected_tracker_ids.empty?
issues ||= []
%>
<ul>
<% if issues.size > 0 %>
<% issues.each do |issue| %>
<li>
<%= link = link_to_issue(issue)
issue.status.is_closed? ? content_tag("del", link) : link %>: <%=h issue.subject %>
<%= content_tag "em", "(#{l(:label_closed_issues)})" if issue.status.is_closed? %>
</li>
<% end %>
<% end %>
</ul>
<% else %>
<p><em><%= l(:label_roadmap_no_issues) %></em></p>
<% end %>
<% end %>
<% content_for :sidebar do %>