$r->set_title('CommitFest %s (%s)', $d->{'name'},
$d->{'commitfest_status'});
+ # Filtering.
+ my $filter_sql = '';
+ my @filter_text;
+ my $status;
+ if (defined $r->cgi_id('status')) {
+ $status = $r->db->select_one(<<EOM, $r->cgi_id('status'));
+SELECT id, name FROM patch_status WHERE id = ?
+EOM
+ $r->error_exit('Unknown status.') if !defined $status;
+ $filter_sql .= sprintf(' AND patch_status_id = %s', $status->{'id'});
+ push @filter_text,
+ sprintf 'Filtering on status "%s".', $status->{'name'};
+ }
+
# Load list of patches.
my $previous_topic;
my %patch_grouping;
my $patch_list = $r->db->select(<<EOM, $d->{'id'});
SELECT id, name, patch_status_id, patch_status, author, reviewers,
commitfest_topic_id, commitfest_topic, commitfest_id, date_closed
-FROM patch_view WHERE commitfest_id = ?
+FROM patch_view WHERE commitfest_id = ? $filter_sql
ORDER BY date_closed, commitfest_topic_sortorder, commitfest_topic, id
EOM
for my $p (@$patch_list) {
}
# Load status counts.
+ my $total_count = 0;
my $status_count_list = $r->db->select(<<EOM, $d->{'id'});
SELECT patch_status_id, patch_status, sum(1) AS num_patches from patch_view
WHERE commitfest_id = ? GROUP BY 1, 2 ORDER BY 1
EOM
+ for my $scl (@$status_count_list) {
+ $total_count += $scl->{'num_patches'};
+ }
# Add links.
$r->add_link('/action/patch_form?commitfest=' . $id, 'New Patch');
# Render template.
$r->render_template('commitfest_view', {
- 'd' => $d, 'status_count_list' => $status_count_list,
- 'total_count' => 0+@$patch_list,
+ 'd' => $d, 'filter_text' => \@filter_text,
+ 'status_count_list' => $status_count_list,
+ 'total_count' => $total_count,
'patch_grouping' => [
{
'name' => 'Pending Patches',
view all the comments for a particular patch, or to add a comment or make other
changes, click on the patch name.</p>
+[% IF filter_text.size > 0 %]
+<p style='color: #00f; font-weight: bold'>[% FOREACH f = filter_text %][% f | html %][% END %]</p>
+[% END %]
+
[% IF status_count_list.size > 0 %]
<p><b>Status Summary</b>.
[% FOREACH sc = status_count_list %]
-[% sc.patch_status %]: [% sc.num_patches %][% IF !loop.last %],[% ELSE %].[% END %]
-[% END %] Total: [% total_count %].
+<a href='/action/commitfest_view?id=[% d.id %]&status=[% sc.patch_status_id %]'>[% sc.patch_status %]</a>: [% sc.num_patches %][% IF !loop.last %],[% ELSE %].[% END %]
+[% END %] <a href='/action/commitfest_view?id=[% d.id %]'>Total</a>: [% total_count %].
</p>
[% END %]
[% FOREACH g = patch_grouping %]
+[% IF g.patch_list.size > 0 || filter_text.size == 0 %]
<h2>[% g.name | htmlsafe %]</h2>
[% IF g.patch_list.size %]
[% ELSE %]
<div>No patches.</div>
[% END %]
+[% END %]
[% END %]