#!/usr/bin/perl
use CGI qw(:standard);
use CGI::Carp qw(fatalsToBrowser);
use Chart::Lines;
$url=param('url');
$tableNumber=param('tableNumber');
$datacol=param('datacol');
$labelcol=param('labelcol');
if(!$datacol) { $datacol=2 }
if(!$labelcol) { $labelcol=1 }
if(param('skiprows')) { $skiprows=param('skiprows'); }
if(param('endrows')) { $endrows=param('endrows'); }
# Store the content of url
@lines=`curl "${url}"`;
#@content=`curl "${url}"`;
# Split lines into an array
#@lines = split("/\r?\n|\r/", @content); # turn the content in rows
# Set flag for number of tables - you may not want the current one
$flag=0;
$col=0;
@data_array=();
$newrow=0;
ROWS: foreach $val (@lines) {
if(!($title) && $val=~/
//g;
}
if($val =~ ///g;
if($val =~ / 0) { $row++; }
else { $row=0; $newrow=1; }
$val =~ s/
//;
}
if($skiprows && ($row < $skiprows)) { next ROWS; }
if($endrows && (($row + $skiprows) > $endrows)) { last ROWS; }
if($val =~ /<\/tr>/) {
$col=0;
$val =~ s/<\/tr>//;
}
if($val =~ /<\/td>/) {
$col++;
}
if($val =~ /<\/table *>/) { next; }
$val=~s/<.*?>//g;
$val=~s/,//g;
chomp($val);
if($val) {
if($col==${labelcol}) {
push(@labels,"$val");
#$data_array[$row][$col]="$val";
#print STDERR "setting label $val for $row : $col\n";
} elsif($col==${datacol}) {
$val+=0;
if($val =~ /^-?(?:\d+(?:\.\d*)?|\.\d+)$/ || $val =~ /^-?\d+$/) {
push(@values,$val);
#print STDERR "setting $val for $row : $col\n";
}
}
}
}
}
$y=param('y');
if(param('width')) {
$width=param('width');
} else {
$width="750";
}
if(param('height')) {
$height=param('height');
} else {
$height="500";
}
print STDERR join(",",@labels)." values ".join(",",@values)."\n";
my $img=Chart::Lines->new(${width},${height});
if(param('reverse')) {
@labels=reverse(@labels);
@values=reverse(@values);
}
if(defined($values[0])) { @data=([@labels],[@values]);
} else { @data=(['no','data','available'],[30.2,23.5,92.1]); }
@legend=('query');
my %settings= (
"title" => "courtesy techie-blogs.com",
"x_label" => "$title",
"y_label" => "$y",
#"skip_x_ticks" => 5,
"x_ticks" => "vertical",
"y_grid_lines" => "true",
"x_grid_lines" => "true",
"transparent" => "true",
"grey_background" => "false",
);
$img->set(%settings);
print <png(\*STDOUT,[ @data ]);
exit(0);
__END__