boinc/html/ops/user_graph.php

132 lines
3.1 KiB
PHP
Raw Normal View History

<?php
function draw_graph($xarr, $arr) {
require_once ("jpgraph/jpgraph.php");
require_once ("jpgraph/jpgraph_line.php");
require_once ("jpgraph/jpgraph_bar.php");
require_once ("jpgraph/jpgraph_log.php");
// Create the graph. These two calls are always required
$graph = new Graph(350,250,"auto");
//$graph->SetScale("lin");
//$graph->SetScale("textlin");
$graph->SetScale("loglin");
// Create the linear plot
$lineplot=new BarPlot($arr, $xarr);
$lineplot->SetColor("blue");
// Add the plot to the graph
$graph->Add($lineplot);
// Display the graph
$graph->Stroke();
}
function show_text($xarr, $yarr) {
$n = sizeof($xarr);
for ($i=0; $i<$n; $i++) {
echo "<br>$xarr[$i] $yarr[$i]\n";
}
}
function show_graph() {
require_once("../inc/db.inc");
db_init();
$xaxis = $_GET['xaxis'];
$yaxis = $_GET['yaxis'];
$granularity = $_GET['granularity'];
$active = $_GET['active'];
$inactive = $_GET['inactive'];
$show_text = $_GET['show_text'];
if (!$active && !$inactive) {
echo "You must select at least one of (active, inactive)";
exit();
}
$fields = 'host.id, user.create_time';
if ($xaxis == 'active' || !$active || !$inactive) {
$query = "select $fields, max(rpc_time) as max_rpc_time from host, user where host.userid=user.id group by userid";
} else {
$query = 'select $fields from user';
}
$result = mysql_query($query);
$yarr = array();
$now = time();
$maxind = 0;
$active_thresh = time() - 30*86400;
while ($user = mysql_fetch_object($result)) {
$val = $now - $user->max_rpc_time;
if (!$active) {
if ($user->max_rpc_time > $active_thresh) continue;
}
if (!$inactive) {
if ($user->max_rpc_time < $active_thresh) continue;
}
$life = $user->max_rpc_time - $user->create_time;
$ind = $life/$granularity;
$ind = (int)$ind;
$yarr[$ind]++;
if ($ind > $maxind) $maxind = $ind;
}
$xarr = array();
for ($i=0; $i<=$maxind; $i++) {
$xarr[$i] = $i;
if (is_null($yarr[$i])) $yarr[$i]=0;
}
if ($show_text) {
show_text($xarr, $yarr);
} else {
draw_graph($xarr, $yarr);
}
}
function show_form() {
echo "
<form action=user_graph.php>
X axis:
<select name=xaxis>
<option value=active>Active time
</select>
<p>
Y axis:
<select name=yaxis>
<option value='count'>Count
<option value='rac'>RAC
<option value='tc'>Total credit
</select>
<p>
Show active users?
<input type=checkbox name=active>
<p>
Show inactive users?
<input type=checkbox name=inactive>
<p>
Granularity:
<input name=granularity value=86400>
<p>
Show as text?
<input type=checkbox name=show_text>
<p>
<input type=submit name=submit value=OK>
</form>
";
}
if ($_GET['submit']) {
show_graph();
} else {
show_form();
}
?>