#include <infocon.style>
#include "hwdb.inc"

<page func=InfoCon title="Hardware Database">

<h3>Available Components</h3>

<p>
<?
<dbconnect>

  function get_usage ($dbh, $component)
  {
    $query = sprintf ("SELECT compound,usage,name FROM screw,compound "
		     ."WHERE compound = id AND component = %d AND endtime is NULL "
		     ."ORDER BY starttime DESC LIMIT 1", $component);
    $sth = pg_exec ($dbh, $query) or die_query("Cannot query for current usage!");
    if (pg_NumRows ($sth) > 0) {
      $row = pg_fetch_array ($sth, 0);
      if ($row['usage']) {
        return sprintf ("%s [%s]", $row['name'], $row['usage']);
      } else {
        return $row['name'];
      }
    }
  }

   $query = "SELECT component.id,component.name,serno,types.name as type "
	   ."FROM component,types "
	   ."WHERE hwtype = types.id ";
   if (isset($_GET['status']))
     $query .= sprintf ("AND status = '%s' ", $_GET['status']);
   if (isset($_GET['type']))
     $query .= sprintf ("AND hwtype = %d ", $_GET['type']);

   $query .= "ORDER BY type,name";
   $sth = pg_exec ($dbh, $query) or die_query("Cannot issue query!", $query);

   for ($nr=0; $nr < pg_NumRows ($sth); $nr++) {
     $row = pg_fetch_array ($sth, $nr);
     $use = get_usage ($dbh, $row['id']);

     if ($use) {
       if ($row['serno']) {
         $usage = sprintf (" (%s, %s)", $row['serno'], $use);
       } else {
         $usage = sprintf (" (%s)", $use);
       }
     } else {
       if ($row['serno']) {
         $usage = sprintf (" (%s)", $row['serno']);
       } else {
         $usage = '';
       }
     }

     printf ("<br>%s <a href=\"component.php?id=%d\">%s</a>%s "
	    ."[<a href=\"edit_component.php?id=%d\">Edit</a>]\n",
	    $row['type'], $row['id'], $row['name'], $usage, $row['id']);
   }
?>
</p>

</page>

# Local variables:
# mode: text
# mode: auto-fill
# end:
