#!/usr/bin/perl
#
#Quick script to read-through Mars power-obc/Data dir and generate html viewer
#####################################################

$data_dir = "Plots";
opendir(DDIR,"$data_dir") || die "Unable to open data_dir [$data_dir]\n";
@flist = sort grep(/\.png$/,readdir(DDIR)); #Only want png files


@curr_flist   = grep(/load/,@flist);
@vlt_flist    = grep(/\.v12|\.v-12|\.v48|\.v5/,@flist);
@sens_flist   = grep(/temp|humid|press/,@flist);
@switch_flist = grep(/switch/,@flist);

#print "flist is @vlt_flist\n";

#
#Create Top-Level Index.html
#
@v5_list = grep(/\.v5/,@flist); #Look at one variable to get a list of days
$prev_date = "";
@month=('null','Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec');
open(OUT_HTML,">$data_dir/index.html");
   print OUT_HTML <<"EndHTML";
        <HTML><HEAD><TITLE>MARS Power OBC: Daily Plots for Currents, Voltages, and Sensors</TITLE></HEAD>
        <META HTTP-EQUIV="Pragma" CONTENT="no-cache">
        <BODY bgcolor=#0088aa OnLoad=window.focus()>
        <center><font color=white><h3>MARS Power OBC Measurements<br>Plots for Currents, Voltages, and Sensors</h3></font></center>
        <UL>
        
EndHTML
foreach $item (@v5_list)
  {chomp($item);
   ($date) = split('\.',$item);
   next if ($date eq $prev_date);
   push(@date_list,$date);
   $prev_date = $date;
   ($yyyy) = substr($date,0,4);
   ($mm) = substr($date,4,2);
   ($dd) = substr($date,6,2);
   if ($mm != $prev_mm) {print OUT_HTML "<br><font color=white><b>$month[$mm]:</b></font> &nbsp "; $prev_mm = $mm}
   ($html_file = $item) =~ s/png/html/;
   print OUT_HTML "<a href=$html_file><font face=sans-serif size=2><b>$dd</b></font></a> &nbsp ";
}

#Make prev and next day hash table
for ($i=0;$i<=$#date_list;$i++)
  {if ($i==0) {$prev_day{$date_list[$i]} = $date_list[$i];}
         else {$prev_day{$date_list[$i]} = $date_list[$i-1];}
   if ($i>=$#date_list) 
              {$next_day{$date_list[$i]} = $date_list[$#date_list];}
         else {$next_day{$date_list[$i]} = $date_list[$i+1];}
   }

$timestamp = gmtimestamp();
print OUT_HTML "<br><br><font size=2>View:</font> <a href=\"/power_obc/data\"><font size=2>Raw Data</font></a>\n";


#Add link to real-time values
print OUT_HTML <<"EndHTML";
&nbsp <a href=/mars-bin/display_powerdat.pl><font size=2>Real-Time Data</a></font>
EndHTML

#Add table to list DCS loads
print OUT_HTML <<"EndHTML";
<br><br>
<table bgcolor=44ccaa cellspacing=5>
<th colspan=10><font color=brown>DCS Loads</font></th></tr><tr>
<td valign=top>
<table border=1 cellspacing=0 cellpadding=0>
<th>DCS</th><th><font size=2>Description</th>
<tr><td><font size=2>&nbsp Load 3 &nbsp</td><td><font size=2>&nbsp Cisco MRA01-01</td><tr>
<tr><td><font size=2>&nbsp Load 4 &nbsp</td><td><font size=2>&nbsp Cisco MRA01-02</td><tr>

<tr><td><font size=2>&nbsp Load 5 &nbsp</td><td><font size=2>&nbsp OE West 75</td><tr>
<tr><td><font size=2>&nbsp Load 6 &nbsp</td><td><font size=2>&nbsp Cyclades</td><tr>
</table>

<td valign=top>
<table border=1 cellspacing=0 cellpadding=0>
<th>DCS</th><th><font size=2>Description</th>

<tr><td><font size=2>&nbsp Load 7 &nbsp</td><td><font size=2>&nbsp OE East 75</td><tr>
<tr><td><font size=2>&nbsp Load 8 &nbsp</td><td><font size=2>&nbsp OE East 98</td><tr>
<tr><td><font size=2>&nbsp Load 9 &nbsp</td><td><font size=2>&nbsp OE West 98</td><tr>
<tr><td><font size=2>&nbsp Load 10 &nbsp</td><td><font size=2>&nbsp West Optical Switch (NE)</td><tr>

</table>

<td valign=top>
<table border=1 cellspacing=0 cellpadding=0>
<th>DCS</th><th><font size=2>Description</th>
<tr><td><font size=2>&nbsp Load 11 &nbsp</td><td><font size=2>&nbsp West EDFA</td><tr>
<tr><td><font size=2>&nbsp Load 13 &nbsp</td><td><font size=2>&nbsp East Optical Switch (NE)</td><tr>

<tr><td><font size=2>&nbsp Load 14 &nbsp</td><td><font size=2>&nbsp East EDFA</td><tr>
<tr><td><font size=2>&nbsp Load 15 &nbsp</td><td><font size=2>&nbsp OBC A</td><tr>
<tr><td><font size=2>&nbsp Load 16 &nbsp</td><td><font size=2>&nbsp OBC B</td><tr>
</table>

</table>
EndHTML

print OUT_HTML "</html>\n";

close(OUT_HTML);



#
#Generate HTML for Current Measurements
#
foreach $file (@curr_flist)
  {($html_file = $file) =~ s/png/html/;
   ($date,$label) = split('\.',$file);
   open(OUT_HTML,">$data_dir/$html_file");
   if (!defined($prev_day{$date})) {$PrevDay="$html_file";}
                      else {$PrevDay = "$prev_day{$date}.$label.html";}
   if (!defined($next_day{$date})) {$NextDay="$html_file";}
                      else {$NextDay = "$next_day{$date}.$label.html";}
   print OUT_HTML <<"EndHTML";
        <HTML><HEAD><TITLE>MARS Power OBC: $label Daily Plot</TITLE></HEAD>
        <!-- <META HTTP-EQUIV="Pragma" CONTENT="no-cache"> -->
        <BODY bgcolor=#0088aa OnLoad=window.focus()>
        <table border=0 align=center bgcolor=#ddeeff>
          <td><a href=$PrevDay>PrevDay</a><br><a href=$NextDay>NextDay</a></td>
          <th bgcolor=#ddeeff colspan=1 align=center>
          <font face=sans-serif>MARS Power OBC Daily Plot: $file</font></th>
        </tr><tr><td valign=top>
EndHTML
   #List other variables to plot
   print OUT_HTML "<br><table bgcolor=white><th><u>Currents</u></th></tr><tr><td align=center>\n";
   foreach $file2 (@curr_flist)
     {($html_file2 = $file2) =~ s/png/html/;
      ($date2,$label2) = split('\.',$file2);
      next if ($date2 ne $date);
      if ($file2 eq "$file")
        {print OUT_HTML "<a href=\"$html_file\"><font face=sans-serif color=#00aa00 size=2><b>$label</a></b></font><br>\n";}
      else
        {print OUT_HTML "<a href=\"$html_file2\"><font face=sans-serif color=blue size=2>$label2</a></font><br>\n";}
      }
   print OUT_HTML "</td></tr>";
   $vlt_html = "$date.v-12.html";
   print OUT_HTML "<tr><td><a href=\"$vlt_html\">Voltages</a></td></tr>\n";
   $sens_html = "$date.humid.humid.html";
   print OUT_HTML "<tr><td><a href=\"$sens_html\">Sensors</a></td></tr>\n";
   $switch_html = "$date.switch01.html";
   print OUT_HTML "<tr><td><a href=\"$switch_html\">Switches</a></td></tr>\n";
   print OUT_HTML "<tr> &nbsp </tr><tr><td><a href=\"index.html\"><font size=2>Home</font></a></td></tr>\n";
   print OUT_HTML "</table>\n";
   print OUT_HTML "</td>\n";

   print OUT_HTML <<"EndHTML";
        </td>
        <td align=center width=600><IMG src="$file"> 
        </table>

<center>
<table bgcolor=44aa88 cellspacing=5>
<td valign=top>
<table border=1 cellspacing=0 cellpadding=0>
<th>DCS</th><th><font size=2>Description</th>
<tr><td><font size=2>&nbsp Load 3 &nbsp</td><td><font size=2>&nbsp Cisco MRA01-01</td><tr>
<tr><td><font size=2>&nbsp Load 4 &nbsp</td><td><font size=2>&nbsp Cisco MRA01-02</td><tr>
<tr><td><font size=2>&nbsp Load 5 &nbsp</td><td><font size=2>&nbsp OE West 75</td><tr>
<tr><td><font size=2>&nbsp Load 6 &nbsp</td><td><font size=2>&nbsp Cyclades</td><tr>
</table>

<td valign=top>
<table border=1 cellspacing=0 cellpadding=0>
<th>DCS</th><th><font size=2>Description</th>
<tr><td><font size=2>&nbsp Load 7 &nbsp</td><td><font size=2>&nbsp OE East 75</td><tr>
<tr><td><font size=2>&nbsp Load 8 &nbsp</td><td><font size=2>&nbsp OE East 98</td><tr>
<tr><td><font size=2>&nbsp Load 9 &nbsp</td><td><font size=2>&nbsp OE West 98</td><tr>
<tr><td><font size=2>&nbsp Load 10 &nbsp</td><td><font size=2>&nbsp West Optical Switch (NE)</td><tr>
</table>

<td valign=top>
<table border=1 cellspacing=0 cellpadding=0>
<th>DCS</th><th><font size=2>Description</th>
<tr><td><font size=2>&nbsp Load 11 &nbsp</td><td><font size=2>&nbsp West EDFA</td><tr>
<tr><td><font size=2>&nbsp Load 13 &nbsp</td><td><font size=2>&nbsp East Optical Switch (NE)</td><tr>
<tr><td><font size=2>&nbsp Load 14 &nbsp</td><td><font size=2>&nbsp East EDFA</td><tr>
<tr><td><font size=2>&nbsp Load 15 &nbsp</td><td><font size=2>&nbsp OBC A</td><tr>
<tr><td><font size=2>&nbsp Load 16 &nbsp</td><td><font size=2>&nbsp OBC B</td><tr>
</table>

</table>

        </BODY></HTML>
EndHTML
   close(OUT_HTML);
   }





#
#Generate HTML for switch States 
#
foreach $file (@switch_flist)
  {($html_file = $file) =~ s/png/html/;
   ($date,$label) = split('\.',$file);

   open(OUT_HTML,">$data_dir/$html_file");


   if (!defined($prev_day{$date})) {$PrevDay="$html_file";}
                      else {$PrevDay = "$prev_day{$date}.$label.html";}
   if (!defined($next_day{$date})) {$NextDay="$html_file";}
                      else {$NextDay = "$next_day{$date}.$label.html";}
   print OUT_HTML <<"EndHTML";
        <HTML><HEAD><TITLE>MARS Power OBC: $label Daily Plot</TITLE></HEAD>
        <!-- <META HTTP-EQUIV="Pragma" CONTENT="no-cache"> -->
        <BODY bgcolor=#0088aa OnLoad=window.focus()>
        <table border=0 align=center bgcolor=#ddeeff>
          <td><a href=$PrevDay>PrevDay</a><br><a href=$NextDay>NextDay</a></td>
          <th bgcolor=#ddeeff colspan=1 align=center>
          <font face=sans-serif>MARS Power OBC Daily Plot: $file</font></th>
        </tr><tr><td valign=top>
EndHTML
   #List other variables to plot
   print OUT_HTML "<br><table bgcolor=white><th><u>Switch State</u></th></tr><tr><td align=center>\n";
   foreach $file2 (@switch_flist)
     {($html_file2 = $file2) =~ s/png/html/;
      ($date2,$label2) = split('\.',$file2);
      next if ($date2 ne $date);
      if ($file2 eq "$file")
        {print OUT_HTML "<a href=\"$html_file\"><font face=sans-serif color=#00aa00 size=2><b>$label</a></b></font><br>\n";}
      else
        {print OUT_HTML "<a href=\"$html_file2\"><font face=sans-serif color=blue size=2>$label2</a></font><br>\n";}
   }
   print OUT_HTML "</td></tr>";
   $vlt_html = "$date.v-12.html";
   print OUT_HTML "<tr><td><a href=\"$vlt_html\">Voltages</a></td></tr>\n";
   $curr_html = "$date.load01.html";
   print OUT_HTML "<tr><td><a href=\"$curr_html\">Currents</a></td></tr>\n";
   $sens_html = "$date.humid.humid.html";
   print OUT_HTML "<tr><td><a href=\"$sens_html\">Sensors</a></td></tr>\n";
   print OUT_HTML "<tr> &nbsp </tr><tr><td><a href=\"index.html\"><font size=2>Home</font></a></td></tr>\n";
   print OUT_HTML "</table>\n";
   print OUT_HTML "</td>\n";

   print OUT_HTML <<"EndHTML";
        </td>
        <td align=center width=600><IMG src="$file"> 
        </table>

<center>
<table bgcolor=44aa88 cellspacing=5>
<td valign=top>
<table border=1 cellspacing=0 cellpadding=0>
<th>DCS</th><th><font size=2>Description</th>
<tr><td><font size=2>&nbsp Switch 3 &nbsp</td><td><font size=2>&nbsp Cisco MRA01-01</td><tr>
<tr><td><font size=2>&nbsp Switch 4 &nbsp</td><td><font size=2>&nbsp Cisco MRA01-02</td><tr>
<tr><td><font size=2>&nbsp Switch 5 &nbsp</td><td><font size=2>&nbsp OE West 75</td><tr>
<tr><td><font size=2>&nbsp Switch 6 &nbsp</td><td><font size=2>&nbsp Cyclades</td><tr>
</table>

<td valign=top>
<table border=1 cellspacing=0 cellpadding=0>
<th>DCS</th><th><font size=2>Description</th>
<tr><td><font size=2>&nbsp Switch 7 &nbsp</td><td><font size=2>&nbsp OE East 75</td><tr>
<tr><td><font size=2>&nbsp Switch 8 &nbsp</td><td><font size=2>&nbsp OE East 98</td><tr>
<tr><td><font size=2>&nbsp Switch 9 &nbsp</td><td><font size=2>&nbsp OE West 98</td><tr>
<tr><td><font size=2>&nbsp Switch 10 &nbsp</td><td><font size=2>&nbsp West Optical Switch (NE)</td><tr>
</table>

<td valign=top>
<table border=1 cellspacing=0 cellpadding=0>
<th>DCS</th><th><font size=2>Description</th>
<tr><td><font size=2>&nbsp Switch 11 &nbsp</td><td><font size=2>&nbsp West EDFA</td><tr>
<tr><td><font size=2>&nbsp Switch 13 &nbsp</td><td><font size=2>&nbsp East Optical Switch (NE)</td><tr>
<tr><td><font size=2>&nbsp Switch 14 &nbsp</td><td><font size=2>&nbsp East EDFA</td><tr>
<tr><td><font size=2>&nbsp Switch 15 &nbsp</td><td><font size=2>&nbsp OBC A</td><tr>
<tr><td><font size=2>&nbsp Switch 16 &nbsp</td><td><font size=2>&nbsp OBC B</td><tr>
</table>

</table>


        </BODY></HTML>
EndHTML
   close(OUT_HTML);
   }







#
#Generate HTML for Voltages
#
foreach $file (@vlt_flist)
  {($html_file = $file) =~ s/png/html/;
   ($date,$label) = split('\.',$file);
   open(OUT_HTML,">$data_dir/$html_file");
   if (!defined($prev_day{$date})) {$PrevDay="$html_file";}
                      else {$PrevDay = "$prev_day{$date}.$label.html";}
   if (!defined($next_day{$date})) {$NextDay="$html_file";}
                      else {$NextDay = "$next_day{$date}.$label.html";}
   print OUT_HTML <<"EndHTML";
        <HTML><HEAD><TITLE>MARS Power OBC: $label Daily Plot</TITLE></HEAD>
        <!-- <META HTTP-EQUIV="Pragma" CONTENT="no-cache"> -->
        <BODY bgcolor=#0088aa OnLoad=window.focus()>
        <table border=0 align=center bgcolor=#ddeeff>
          <td><a href=$PrevDay>PrevDay</a><br><a href=$NextDay>NextDay</a></td>
          <th bgcolor=#ddeeff colspan=1 align=center>
          <font face=sans-serif>MARS Power OBC Daily Plot: $file</font> </th>
        </tr><tr><td valign=top>
EndHTML
   #List other variables to plot
   print OUT_HTML "<br><table bgcolor=white><th><u>Voltages</u></th></tr><tr><td align=center>\n";
   foreach $file2 (@vlt_flist)
     {($html_file2 = $file2) =~ s/png/html/;
      ($date2,$label2) = split('\.',$file2);
      next if ($date2 ne $date);
      if ($file2 eq "$file")
        {print OUT_HTML "<a href=\"$html_file\"><font face=sans-serif color=#00aa00 size=2><b>$label</a></b></font><br>\n";}
      else
        {print OUT_HTML "<a href=\"$html_file2\"><font face=sans-serif color=blue size=2>$label2</a></font><br>\n";}
      }
   print OUT_HTML "</td></tr>\n";
   $curr_html = "$date.load01.html";
   print OUT_HTML "<tr><td><a href=\"$curr_html\">Currents</a></td></tr>\n";
   $sens_html = "$date.humid.humid.html";
   print OUT_HTML "<tr><td><a href=\"$sens_html\">Sensors</a></td></tr>\n";
   $switch_html = "$date.switch01.html";
   print OUT_HTML "<tr><td><a href=\"$switch_html\">Switches</a></td></tr>\n";
   print OUT_HTML "<tr> &nbsp </tr><tr><td><a href=\"index.html\"><font size=2>Home</font></a></td></tr>\n";
   print OUT_HTML "</table>";
   print OUT_HTML "</td>\n";

   print OUT_HTML <<"EndHTML";
        </td>
        <td align=center width=600><IMG src="$file"> 
        </table>
        </BODY></HTML>
EndHTML
   close(OUT_HTML);
   }




#
#Generate HTML for Sensors - temp, humid, press
#
foreach $file (@sens_flist)
  {($html_file = $file) =~ s/png/html/;
   ($date,$type,$label) = split('\.',$file);

   open(OUT_HTML,">$data_dir/$html_file");
   if (!defined($prev_day{$date})) {$PrevDay="$html_file";}
                      else {$PrevDay = "$prev_day{$date}.$type.$label.html";}
   if (!defined($next_day{$date})) {$NextDay="$html_file";}
                      else {$NextDay = "$next_day{$date}.$type.$label.html";}
   print OUT_HTML <<"EndHTML";
        <HTML><HEAD><TITLE>MARS Power OBC: $label Daily Plot</TITLE></HEAD>
        <!-- <META HTTP-EQUIV="Pragma" CONTENT="no-cache"> -->
        <BODY bgcolor=#0088aa OnLoad=window.focus()>
        <table border=0 align=center bgcolor=#ddeeff>
          <td><a href=$PrevDay>PrevDay</a><br><a href=$NextDay>NextDay</a></td>
          <th bgcolor=#ddeeff colspan=1 align=center>
          <font face=sans-serif>MARS Power OBC Daily Plot: $file</font></th>
        </tr><tr><td valign=top>
EndHTML
   #List other variables to plot
   print OUT_HTML "<br><table bgcolor=white><th><u>Sensors</u></th></tr><tr><td>\n";
   foreach $file2 (@sens_flist)
     {($html_file2 = $file2) =~ s/png/html/;
      ($date2,$type,$label2) = split('\.',$file2);
      next if ($date2 ne $date);
      if ($file2 eq "$file")
        {print OUT_HTML "<a href=\"$html_file\"><font face=sans-serif color=#00aa00 size=2><b>$type $label</a></b></font><br>\n";}
      else
        {print OUT_HTML "<a href=\"$html_file2\"><font face=sans-serif color=blue size=2>$type $label2</a></font><br>\n";}
      }
   print OUT_HTML "</td></tr>";
   $vlt_html = "$date.v-12.html";
   print OUT_HTML "<tr><td><a href=\"$vlt_html\">Voltages</a></td></tr>\n";
   $curr_html = "$date.load01.html";
   print OUT_HTML "<tr><td><a href=\"$curr_html\">Currents</a></td></tr>\n";
   $switch_html = "$date.switch01.html";
   print OUT_HTML "<tr><td><a href=\"$switch_html\">Switches</a></td></tr>\n";
   print OUT_HTML "<tr> &nbsp </tr><tr><td><a href=\"index.html\"><font size=2>Home</font></a></td></tr>\n";
   print OUT_HTML "</table>";
   print OUT_HTML "</td>\n";


   print OUT_HTML <<"EndHTML";
        </td>
        <td align=center width=600><IMG src="$file"> 
        </table>


        </BODY></HTML>
EndHTML
   close(OUT_HTML);
   }

exit;


#
#Subroutines Follow
#
sub gmtimestamp {local($no_gmtlabel) = $_[0];
        local($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = gmtime;
        # zero fill hour,min,sec and month
        if ($sec < 10) {$sec = "0$sec";}
        if ($min < 10) {$min = "0$min";}
        if ($hour < 10) {$hour = "0$hour";}
        $mon += 1; #from gmtime defined 0-11, make it 1-12
        if ($mon < 10) {$mon = "0$mon";}
        if ($mday < 10) {$mday = "0$mday";}
        #make year 4-digits - Note: Year is years since 1900
        $year += 1900;
        if ($no_gmtlabel)
             {return "$year/$mon/$mday $hour:$min:$sec";}
        else {return "$year/$mon/$mday $hour:$min:$sec GMT";}
}

