xcat-core/xCAT-web/lib/GroupNodeTable.class.php
2007-12-03 18:16:38 +00:00

138 lines
4.2 KiB
PHP

<?php
/**
* Produces HTML for use in the interface.
*/
if (!$TOPDIR) { $TOPDIR = '..'; }
require_once "$TOPDIR/lib/functions.php";
class GroupNodeTable {
function GroupNodeTable() {}
/**
* @return A string containing the HTML for the header of the table.
*/
function insertGroupTableHeader() {
echo <<<EOS
<table border="0" cellspacing="1" cellpadding=1>
<tr class=TableHeader>
<td width="88" align=left><input type="checkbox" name="chk_node_all" id="chk_node_all">Groups</td>
<td>HW Type</td><td>OS</td><td>Mode</td><td>Status</td><td>HW Ctrl Pt</td><td>Comment</td>
</tr>
EOS;
return;
}
function insertGroupTableFooter() {
echo "</table>";
return;
}
/**
* @param String nodeGroupName The name of the node group.
*/
function getToggleString($nodeGroupName) {
global $TOPDIR;
//$colTxt = "Click to collapse section";
$exTxt = "Click to expand section";
//$bulgif = "$TOPDIR/images/h3bg_new.gif";
//$minusgif = "$TOPDIR/images/minus-sign.gif";
$plusgif = "$TOPDIR/images/plus-sign.gif";
$html = <<<EOS
<span
title="$exTxt"
id="img_gr_$nodeGroupName"
onclick="GroupNodeTableUpdater.updateNodeList('$nodeGroupName')"
ondblclick="toggleSection(this,'div_$nodeGroupName')">
<img src="$plusgif" id="div_$nodeGroupName-im" name="div_$nodeGroupName-im">
EOS;
return $html;
}
/**
* @param String nodeGroup The group.
*/
function insertGroupTableRow($nodeGroupName, $status) {
$img_string = getStatusImage(GroupNodeTable::determineStatus($status));
//echo '<tr bgcolor="#FFCC00"><td align=left>';
echo '<tr class=TableRow><td align=left>';
echo GroupNodeTable::getToggleString($nodeGroupName);
echo <<<EOE
<input type="checkbox" name="chk_node_group_$nodeGroupName" id="chk_node_group_$nodeGroupName"><b>$nodeGroupName</b></span>
</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td><img src="$img_string"></td>
<td>&nbsp;</td>
<td>&nbsp;</td>
</tr>
<tr><td colspan=7><div id=div_$nodeGroupName style="display:none"></div></td></tr>
EOE;
return;
}
// This is used by nodes_by_group.php
/**
* @param An array of node groups, each of which contains an array of attr/value pairs
* returns the table that contains all the nodes information of that group
*/
function getNodeGroupSection($group, $nodes) {
global $TOPDIR;
$imagedir = "$TOPDIR/images";
$right_arrow_gif = $imagedir . "/grey_arrow_r.gif";
$left_arrow_gif = $imagedir . "/grey_arrow_l.gif";
$html .= "<table id='$group' width='100%' cellpadding=0 cellspacing=1 border=0>\n";
foreach($nodes as $nodeName => $attrs) {
$html .= GroupNodeTable::getNodeTableRow($nodeName, $attrs);
}
$html .= "<TR bgcolor='#FFFF66'><TD colspan=9 align=right><image src='$left_arrow_gif' alt='Previous page'>&nbsp;&nbsp;&nbsp;&nbsp;<image src='$right_arrow_gif' alt='Next page'>&nbsp;&nbsp;</TD></TR>\n";
$html .= "</table>\n";
return $html;
}
/**
* @param The node for which we want to generate the html.
*/
function getNodeTableRow($nodeName, $attrs) {
$html = "<tr bgcolor='#FFFF66' class=indent>\n" .
"<td width=89><input type=checkbox name='node_$nodeName' >$nodeName</td>\n" .
"<td width=38><div align=center>" . $attrs['arch'] . "</div></td>\n" .
"<td width=22><div align=center>" . $attrs['osversion'] . "</div></td>\n" .
"<td width=43><div align=center>" . $attrs['mode'] . "</div></td>\n";
$stat = 'unknown'; //todo: implement
$img_string = '<img src="' . getStatusImage($stat) . '">';
$html .= "<td width=43><div align=center>" . $img_string . "</div></td>".
"<td width=85><div align=center>" . $attrs['power'] . "</div></td>".
"<td width=71><div align=center>" . $attrs['comment'] . "</div></td></tr>";
return $html;
}
/**
* @param String nodestatStr The status of the node as output by the nodestat command
* @return "good", "bad", "warning", or "unknown"
*/
function determineStatus($statStr) {
$status = NULL;
if ($statStr == "ready" || $statStr == "pbs" || $statStr == "sshd") { $status = "good"; }
else if ($statStr == "noping") { $status = "bad"; }
else if ($statStr == "ping") { $status = "warning"; }
else { $status = "unknown"; }
return $status;
}
} // end the class
?>