use unit all over
[BackupPC.git] / lib / BackupPC / Search.pm
index 479b51d..f2dac44 100644 (file)
@@ -12,6 +12,10 @@ use XML::Writer;
 use IO::File;
 use Data::Dump qw(dump);
 
+require Exporter;
+our @ISA=qw(Exporter);
+our @EXPORT=qw(unit);
+
 my $on_page = 100;
 my $pager_pages = 10;
 
@@ -454,8 +458,6 @@ print STDERR "## sort=". ($param->{'sort'} || 'no sort param') . " burn sql orde
                        ($row->{volumes}, $row->{inc_size_calc}) = getVolumes($row->{id});
                }
 
-               $row->{size} = sprintf("%0.2f", $row->{size} / 1024 / 1024);
-
                # do some cluster calculation (approximate)
                $row->{inc_size} = int(( ($row->{inc_size} + 1023 ) / 2 )  * 2);
                $row->{inc_size_calc} ||= $row->{inc_size};
@@ -828,8 +830,8 @@ EOF3
        } .
                sort_header($param, 'Date', 'date', 'center') .
                sort_header($param, 'Age/days', 'age', 'center') .
-               sort_header($param, 'Size/Mb', 'size', 'center') .
-               sort_header($param, 'gzip size/Kb', 'incsize', 'center') .
+               sort_header($param, 'Size', 'size', 'center') .
+               sort_header($param, 'gzip size', 'incsize', 'center') .
        qq{
                        <td align="center">medias</td></tr>
        };
@@ -867,8 +869,8 @@ EOF3
                        '<td align="center">' . $backup->{'type'} . '</td>' .
                        '<td align="center">' . epoch_to_iso( $backup->{'date'} ) . '</td>' .
                        '<td align="center">' . $backup->{'age'} . '</td>' .
-                       '<td align="right">' . $backup->{'size'} . '</td>' .
-                       '<td align="right">' . sprintf("%0.1f", $backup->{'inc_size'} / 1024 ) .
+                       '<td align="right">' . unit($backup->{'size'}) . '</td>' .
+                       '<td align="right">' . unit($backup->{'inc_size'}) . '</td>' .
                        '<input type="hidden" id="fss'.$checkbox_key .'" value="'. $backup->{'inc_size_calc'} .'"></td>' .
                        '<input type="hidden" id="prt'.$checkbox_key .'" value="'. $backup->{'volumes'} .'"></td>' .
                        '<td align="left">' . ( qq{<img src="$img_url/icon-cd.gif" alt="media">} x $backup->{volumes} ) . '</td>' .
@@ -1118,4 +1120,24 @@ sub displayGrid($) {
        return $retHTML;
 }
 
+my @units = qw/b k M G/;
+sub unit {
+       my $v = shift;
+
+       my $o = 0;
+
+       while ( ( $v / 10000 ) >= 1 ) {
+               $o++;
+               $v /= 1024;
+       }
+
+       if ( $v >= 1 ) {
+               return sprintf("%d%s", $v, $units[$o]);
+       } elsif ( $v == 0 ) {
+               return 0;
+       } else {
+               return sprintf("%.1f%s", $v, $units[$o]);
+       }
+}
+
 1;