#!/usr/bin/perl

use Date::Calc qw( Weeks_in_Year Monday_of_Week
                   Date_to_Text Date_to_Text_Long
                   Add_Delta_Days Today Week_of_Year );
 
($y,$m,$d) = Today();
for($i =0; $i < 7; $i++){
    ($py,$pm,$pd) = Add_Delta_Days($y,$m,$d,$i-7);
    $match[7-$i] = sprintf "%4d-%02d-%02d", $py,$pm,$pd;
}

print <<Header;
<h1> backup status for $y-$m-$d </h1>

<table width=100% border=5>
 <tr>
  <th> disk </th>

Header

for($i=0; $i < 7; $i++){
    print "<th colspan=4> ", $match[7-$i] , "</th>\t\t";
}
print "<tr>\n";


while(<>){
    for($i=0; $i < 7; $i++){
	($date,$host,$disk,$level,$tape,$image,$status) = split;
	if($match[7 - $i] eq $date){
	    $found{"$host:$disk"} = 1;
	    $backups{"$host:$disk"}[7 - $i] = "$level:$tape:$image:$status";
	}
    }
}


foreach ( sort keys %found ) {
    ($host,$disk) = split /:/;
    if($host ne $oldhost){
	print "<tr><td colspan=29> <b><big> $host </big></b></td>\n";
	$oldhost = $host;
    }
    print "<tr><td>$disk</td>";
    for($i=0; $i < 7; $i++){
	if($backups{$_}[7 - $i] ){
	    ($level,$tape,$image,$status) = split /:/ , $backups{$_}[7 - $i] ;
	    if($level){
		$extra = "";
		$extraend = "";
	    } else {
		$extra = "<b>";
		$extraend = "</b>";
	    }
	    if($status eq "FAILED"){
		$extra = "$extra <font color=red>";
		$extraend = "</font> $extra";
	    }
	    print "<td> $extra $level $extraend</td>\t" ;
	    print "<td> $extra $tape $extraend</td>\t" ;
	    print "<td> $extra $image $extraend</td>\t" ;
	    print "<td> $extra $status $extraend</td>\t" ;
	}else{
	    print "<td colspan=4>--\t</td>";
	}
    }
    print "<br>\n";
}

print "</table>"

#
# (c) 2001 Gerhard den Hollander
