<!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.0 Strict//EN”
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns=“www.w3.org/1999/xhtml” xml:lang=“en” lang=“en”> <head> <title><%= project.name %> Issue Tracker</title> <meta http-equiv=“Content-Type” content=“text/html; charset=utf-8” /> <link rel=“stylesheet” href=“style.css” type=“text/css” /> </head> <body>
<div class=“main”> <h1><%= project.name %> Issue Tracker</h1>
<h2>Upcoming Releases</h2> <% if upcoming_releases.empty? %>
<p>No upcoming releases.</p>
<% else %>
<table> <tbody> <% upcoming_releases.each do |r| %> <% issues = project.issues_for_release r num_done = issues.count_of { |i| i.closed? } pct_done = issues.size == 0 ? 1.0 : (num_done.to_f / issues.size.to_f) open_issues = issues.select { |i| i.open? } %> <tr><td> <%= link_to r, "#{r.name}" %> </td> <td> <% if issues.empty? %> no issues <% elsif open_issues.empty? %> ready for release! <% else %> <%= progress_meter pct_done %> <%= sprintf "%.0f%%", pct_done * 100.0 %> complete </td> </tr><tr><td></td><td> <%= num_done %> / <%= issues.size %> issues. <%= link_to r, "See issues »" %> <% end %> </td> </tr> <% end %> </tbody> </table>
<% end %>
<h2>Past Releases</h2> <% if past_releases.empty? %>
<p>No past releases.</p>
<% else %>
<table> <tbody> <% past_releases.sort_by { |r| r.release_time }.reverse.each do |r| %> <tr><td><%= link_to r, r.name %></td><td class="littledate">on <%= r.release_time.pretty_date %></td></tr> <% end %> </tbody> </table>
<% end %>
<h2>Unassigned issues</h2> <%
issues = project.unassigned_issues open_issues = issues.select { |i| i.open? }
%> <p>
<% if issues.empty? %> No unassigned issues. <% else %> <%= link_to "unassigned", "unassigned issue".pluralize(issues.size).capitalize %> (<%= open_issues.size.to_pretty_s %> open). <% end %>
</p>
<% if components.size > 1 %>
<h2>Open Issues by component</h2> <table> <tbody> <% components.each do |c| %> <% issues = project.issues_for_component c num_done = issues.count_of { |i| i.closed? } pct_done = issues.size == 0 ? 1.0 : (num_done.to_f / issues.size.to_f) open_issues = issues.select { |i| i.open? } %> <% if open_issues.empty? %> <tr class="dimmed"> <% else %> <tr> <% end %> <td> <%= link_to c, c.name %> </td><td> <%= "open issue".pluralize(open_issues.size) %> </td></tr> <% end %> </tbody> </table>
<% end %>
<h2>Recent activity</h2>
<table class=“log”>
<tbody> <% project.issues.map { |i| i.log_events.map { |e| [e, i] } }. flatten_one_level. sort_by { |e| e.first.first }. reverse[0 ... 10]. each_with_index do |((date, who, what, comment), i), idx| %> <tr class="<%= idx % 2 == 0 ? "even-row" : "odd-row" %>"> <td class="date"><%= date.pretty_date %></td> <td class="issuename"> <%= issue_link_for i, :status_image => true %> </td> <td> <%= what %> </td> </tr> <tr><td></td></tr> <% end %> </tbody>
</table>
</div>
<div class=“footer”>Generated by <a href=“ditz.ditz.rubyforge.org/”>ditz.>
</body> </html>