) {
my $res = {};
my ($hour, $min);
if (($hour, $min, $res->{pswch}, $res->{'runq'}, $res->{'nrproc'},
$res->{'avg1'}, $res->{'avg5'}, $res->{'avg15'}) =
($line =~ m/^(\d\d)\:(\d\d)\:\d\d\s+(\d+)\s+(\d+)\s+(\d+)\s+(\d+\.\d+)\s+(\d+\.\d+)\s+(\d+\.\d+)/)) {
$found = 1;
push @$data0, $hour;
# hack: +0 to convert string to number (avoid problems with GD::GRAPH)
my $v = $res->{"$sel"} + 0;
push @$data1, $v;
$intvalue = 0 if int ($v) != $v;
$max = $v if $v && $max < $v;
}
}
close (TMP);
if (!$found) {
print OUT __("No data available.");
return;
}
$max = 1 if !$max;
my @data = ($data0, $data1);
my $graph = GD::Graph::lines->new (600, 400);
my $txt = '';
foreach my $va (@{$fdat{__sarsel}}) {
$txt = $va->[1] if $fdat{sarsel} eq $va->[0];
}
my $prec = $max < 1 ? 100 : 10;
my $rmax = int (($max * 1.1 + (1/$prec)) * $prec) / $prec;
$graph->set(
title => sprintf (decode_entities (("$txt (%s)")), $fdat{sardate}) ,
transparent => 0,
y_long_ticks => 1,
dclrs => [ qw(green lblue cyan lyellow lpurple lred lorange) ],
y_min_value => 0,
y_max_value => $rmax,
y_number_format => '%.2f',
x_labels_vertical => 1,
x_label_skip => 6,
);
if ($intvalue) {
my $maxv = int ($max * 1.1);
my $ytn = $max < 5 ? $max : 5;
$graph->set(y_number_format => '%d', y_min_value => 0, y_max_value => $maxv, y_tick_number => $ytn);
}
$graph->set_legend(decode_entities ($sel));
$graph->plot(\@data);
$out .= "";
my $fn = 'cpuload.png';
open (TMP, ">$dir$fn") or die "Cannot open $fn for write: $!";
print TMP $graph->gd->png();
close TMP;
$out .= "
";
print OUT $out;
-]