<b><% $title %></b>
<table border=1 cellspacing=0 cellpadding=2>
<tr>
<th class="darkheader"> Object Type </th>
<th class="darkheader"> Available </th>
<th class="darkheader" colspan=2> Linked (%) </th>
<th class="darkheader" colspan=2> Pass IOD (%) </th>
<th class="darkheader" colspan=2> Pass DIFF (%) </th>
<th class="darkheader" colspan=2> Duplicate (%) </th>
</tr>
% foreach my $item (@{$data}) {
<tr>
<td align="left">  <% $item->{objectType} %> </td>
<td class="htable1" align="right"> <% $item->{avail} %> </td>

% $color_str = _cc($item->{avail} - $item->{unlinked}, $item->{avail});
<td class="htable2" align="right" bgcolor="<% $color_str %>"> <% $item->{avail} - $item->{unlinked} %> </td>
<td class="htable2" align="right" bgcolor="<% $color_str %>"> <b><% sprintf "%.1f", 100 * (1 - $item->{unlinked} / ($item->{avail} || 1)) %></b> </td>

% $color_str = _cc($item->{avail} - $item->{unlinked} - $item->{failiod}, $item->{avail});
<td class="htable1" align="right" bgcolor="<% $color_str %>"> <% $item->{avail} - $item->{unlinked} - $item->{failiod} %> </td>
<td class="htable1" align="right" bgcolor="<% $color_str %>"> <b><% sprintf "%.1f", 100 * ($item->{avail} - $item->{unlinked} - $item->{failiod}) / ($item->{avail} || 1) %></b> </td>

<td class="htable2" align="right"> <% $item->{clean} %> </td>
<td class="htable2" align="right"> <b><% sprintf "%.1f", 100 * $item->{clean} / ($item->{avail} || 1) %></b> </td>

<td class="htable2" align="right"> <% $item->{duplicate} %> </td>
<td class="htable2" align="right"> <b><% sprintf "%.1f", 100 * ($item->{duplicate}) / ($item->{avail} || 1) %></b> </td>

</tr>
% }
</table>

<%args>
$title
$data
$category
$details
$epoch_mjd => undef
$byField => 0
</%args>

<%init>
use Data::Dumper;
my $color_str;

sub _sum {
    my @data = @_;
    my $tot = 0;
    $tot += $_ foreach @_;
    return $tot;
}

sub _cc {
    # Color code some values.
    my ($val, $ref) = @_;
    return "#FFFFFF" if ($val >= $ref);
    return "#FFFF99" if ($val >= 0.75 * $ref);
    return "#FFFF00" if ($val >= 0.50 * $ref);
    return "#FF6600" if ($val >= 0.25 * $ref);
    return "#FF0000";
}

# Create sum row.  Cheesy.
push @{$data}, {
    objectType => 'Total',
    avail => _sum(map { $_->{avail} } @{$data}),
    clean => _sum(map { $_->{clean} } @{$data}),
    unfound => _sum(map { $_->{unfound} } @{$data}),
    unlinked => _sum(map { $_->{unlinked} } @{$data}),
    failiod => _sum(map { $_->{failiod} } @{$data}),
    mixed => _sum(map { $_->{mixed} } @{$data}),
    bad => _sum(map { $_->{bad} } @{$data}),
    nonsynthetic => _sum(map { $_->{nonsynthetic} } @{$data}),
    duplicate => _sum(map { $_->{duplicate} } @{$data}),
};
</%init>
