rendered paste bodysub mk_bar
{
my ($width, $map) = @_;
return '<div class="' . $map->[1] . '" style="width: ' . $width . '%;"></div>';
} ## end sub mk_bar
sub mk_completion_bar
{
my ($map, $desc) = @_;
my $out;
my @data = @$map;
my $len = @data;
if ($len==0) { return; }
# Currently percentage, change this to however many segments you want
# and change mk_bar above to match.
my $barwidth = 100;
my $err = int($len / 2);
my $w = 0;
my $state = undef;
my $cur = 0;
for (my $i = 0; $i < $len; $i++)
{
$cur = ($data[$i] > $cur) ? $data[$i] : $cur;
$err -= $barwidth;
if ($err < 0)
{
if (!defined($state) || $state != $cur)
{
if ($w > 0)
{
$out .= mk_bar($w, $desc->{$state});
}
$w = 0;
$state = $cur;
}
while ($err < 0)
{
$w++;
$err += $len;
}
$cur = 0;
}
}
if ($w > 0)
{
$out .= mk_bar($w, $desc->{$state});
}
return $out;
} ## end sub mk_completion_bar