#!perl.exe use strict; use warnings; use CGI qw(:standard); use CGI::Carp qw(fatalsToBrowser); use GD; use GD::Graph; use GD::Graph::bars; use GD::Graph::Map; use DBI; use DBD::ODBC; my $query = new CGI; print $query->header; print ""; print $query->start_html( -title =>'Number Of Calls', -BGCOLOR=>"#A8A8DO"); # Print the first form print $query->startform; print "
\n"; print "

Total Calls Graph v1.0.1

\n"; print "


\n"; my @mds = (); my @tmp_mds = ("ServerA","ServerB","ServerC","ServerD"); my @vals = (); my $tot_call = 0; my @urls = ["../cgi-bin/CallWeb.pl?Md=ServerA", "../cgi-bin/CallWeb.pl?Md=ServerB", "../cgi-bin/CallWeb.pl?Md=ServerC", "../cgi-bin/CallWeb.pl?Md=ServerD", ]; my $dbh = DBI->connect("dbi:ODBC:driver={SQL Server};server=DBServer;database=Calls;uid=sa;pwd=password;") or die "Cannot connect to DB :$!\n"; foreach my $md ( @tmp_mds ) { my $sql_query = "SELECT COUNT(MD) from OpenCalls where MD like '%$md%'"; my $sth = $dbh->prepare($sql_query) or die "Problems Preparing the SQL Statement\n"; $sth->execute() or die "Problems Executing the SQL Statement\n"; my $num = $sth->fetchrow; push (@vals, $num); } foreach my $call (@vals) { $tot_call = $tot_call + $call; } $mds[0] = [@tmp_mds]; $mds[1] = [@vals]; my $graph = GD::Graph::bars->new(800, 500); my $maxval = $vals[ my $index = 0 ] if @vals; for (0 .. $#vals) { if ($maxval < $vals[$_]) { $index = $_; $maxval = $vals[$_]; } } $maxval = ($maxval + 10); $graph->set( x_label => 'Servers', x_label_position => '.5', y_label => 'Number of Calls', title => "Auto Calls PER Server - Total Calls = $tot_call", y_max_value => $maxval, y_tick_number => ($maxval/5), y_label_skip => 2, #Set the bar colours to Green dclrs => [ qw(green) ], # Draw bars with width 3 pixels bar_width => 3, # Sepearte the bars with 4 pixels bar_spacing => 10, # Show values on top of each bar show_values => 1, #Add a drop shadow shadow_depth => 4, shadowclr => 'dgreen', ); open PNG, ">../htdocs/pics/call_graph.png"; binmode PNG; print PNG $graph->plot(\@mds)->png; close PNG; my $map = new GD::Graph::Map($graph, hrefs =>\@urls , noImgMarkup =>1, img_TARGET => 'query', mapName =>"call_graph", info => 'No. of Calls for %x : %y' ); #finally, show the html print '', ($map->imagemap("call_graph.png", \@mds)), "\n"; print "

Number of events in buffer : " . &Num_Event; print "


\n";