rakheek has asked for the wisdom of the Perl Monks concerning the following question:
#!/usr/bin/perl -w # # # This is the HTML form for selecting projects for QA Metrics # use lib qw(/tools/local/lib/perl5); use CGI qw(:standard); use CGI::Carp qw(fatalsToBrowser); use DBI; use GD::Graph::linespoints; $cgi= new CGI; my @timedata = localtime(time); #print "Content-type: text/html\n\n"; #print "@timedata[0]\n, @timedata[1]\n, @timedata[2]\n,@timedata[3]\n, +@timedata[4]\n,@timedata[5]\n,@timedata[6]"; $day = @timedata[3]; $month = @timedata[4] + 1; $year = 1900 + @timedata[5]; $def_start_date = '31/3/2009'; $today_date = join('/',$day,$month,$year); $def_end_date = $today_date; #print "Content-type: text/html\n\n"; #print "$def_end_date"; if (!$cgi->param) { print $cgi->header; print $cgi->start_html(-title=>'Project Selection', -style => {'src'=> +'http://wwwin.telegent.com/sqametrics/style1.css'}); print $cgi->startform; print $cgi->h3('Select Project to view QA Metrics'); print $cgi->br; print $cgi->br; print "<em><b>Enter Start Date [dd/mm/yyyy]</b></em><br>"; print $cgi->textfield(-name=>'start_date', -default=>$def_start_date, -size=>9, -maxlength=>80); print $cgi->br; print $cgi->br; print "<em><b>Enter End Date [dd/mm/yyyy]</b></em><br>"; print $cgi->textfield(-name=>'end_date', -default=>$def_end_date, -override=>true, -size=>9, -maxlength=>80); print $cgi->br; print $cgi->br; print $cgi->br; print "<b>Select Project and DataType to View QA Metrics </b><br>" +; print $cgi->br; print $cgi->scrolling_list(-name=>'Projects', -value=>[ 'ARES', 'POSEIDON_SW', 'DEIMOS', 'MIMAS', 'JUPITER', 'POSEIDON', 'DIONYSUS'], -size=>7, -multiple=>'false', -default=>'ARES'); print $cgi->br; print $cgi->br; print $cgi->br; print "<b>Select Check Box for Plotting Verified, Closed Bug Data< +/b><br>"; print $cgi->br; print $cgi->checkbox(-name=>'verified_closed', -checked=>0, -value=> 'verified-closed'); print $cgi->br; print $cgi->br; print "<b>Select from P1, P2, or P1+P2 Bugs Data</b><br>"; print $cgi->br; print $cgi->radio_group(-name=>'P1P2_bugs', -values=> ['P1', 'P2','P1-P2','Daily-Snapshot'], -default=>['P1'], -linebreak=>'true'); print $cgi->br; print $cgi->submit(-value=>'Submit Project'); print $cgi->endform; print $cgi->end_html; } else { my $start_date = param('start_date'); my $end_date = param('end_date'); my $error_msg = ""; my $error_msg = &validate_date($start_date, $end_date, $today_date); #print "Content-type: text/html\n\n"; #print $today_date; # my $error_msg = ""; # if (!$start_date){ # $error_msg1 = "The Start Date Field is Blank. Please use Browser +Back button and enter a Valid Start Date</BR>"}; # if (!$end_date){ # $error_msg2 = "The End Date Field is Blank. Please use Browser Ba +ck button and enter a Valid End Date</BR>"}; # if(!$error_msg) { #my $start_date_newfrmt = &date_format($start_date); my @date_array = split(/\//, $start_date); my $start_date_newfrmt = join('-', @date_array[2], @date_array[1], @da +te_array[0]); my @date_array1 = split(/\//, $end_date); my $end_date_newfrmt = join('-', @date_array1[2], @date_array1[1], @da +te_array1[0]); my @selected = param('Projects'); my $turned_on = param('verified_closed'); #print "Content-type: text/html\n\n"; #print $turned_on; my $which_radio_button = param('P1P2_bugs'); # #Decide the rec_type based on the Radio button selection if ($which_radio_button eq 'P1') { $rec_type= '3'; $y_label = 'Open P1 Bugs'; } elsif ($which_radio_button eq 'P2') { $rec_type = '4'; $y_label = 'Open P2 Bugs'; } elsif ($which_radio_button eq 'P1-P2') { $rec_type = '2'; $y_label = 'Open P1-P2 Bugs'; } elsif ($which_radio_button eq 'Daily-Snapshot') { $rec_type = '1'; $y_label = 'Daily-Snapshot'; }; my $project_name1 = @selected[0]; my $num_selected = @selected; # # Check what data types are selcted and set flags for plotting the dat +a # #print "Content-type: text/html\n\n"; #print @selected[0],@turned_on[0], $new_flag, $open_flag, $reopen_flag +, $closed_flag; my $dbh = DBI->connect('dbi:mysql:bugz:bugzilla.telegent.com:3306', 's +wqa', 'sImANten') or die "Connection Error: $DBI::errstr\n"; my $sql = "Select log_date, new_cnt, open_cnt, reopen_cnt, fixed_cnt, +verified_cnt, closed_cnt from swqa.Poseidon where product like '%$pro +ject_name1%' and rec_type='$rec_type' and log_date between '$start_da +te_newfrmt' and '$end_date_newfrmt'"; my $sth = $dbh->prepare($sql); $sth->execute or die "SQL Error: $DBI::errstr\n"; my @log_date = (); my @new_bugs = (); my @open_bugs = (); my @reopen_bugs = (); my @fixed_bugs = (); my @verified_bugs = (); my @closed_bugs = (); while (my @row = $sth->fetchrow_array) { # print "<tr><td>$row[0]</tr></td><tr><td>$row[1]</td></tr><tr>< +td>$row[2]</tr></td>\n"; push @log_date, $row[0]; push @new_bugs, $row[1]; push @open_bugs, $row[2]; push @reopen_bugs, $row[3]; push @fixed_bugs, $row[4]; push @verified_bugs, $row[5]; push @closed_bugs, $row[6]; } # print @log_date; # print @deimos_open_bugs; $dbh->disconnect; #print "Content-type: text/html\n\n"; #print $new_flag, $open_flag, $reopen_flag, $fixed_flag; # if($turned_on eq 'verified-closed') { @data = (\@log_date, \@new_bugs, \@open_bugs, \@reopen_bugs, \@fix +ed_bugs, \@verified_bugs, \@closed_bugs); } else { @data = (\@log_date, \@new_bugs, \@open_bugs, \@reopen_bugs, \@fix +ed_bugs ); }; print $cgi->header( -type => 'image/png'); my $title = "Open Bugs for $project_name1"; my $mygraph = GD::Graph::linespoints->new(600, 400); #my @legend_keys = qw(new_bugs open_bugs reopen_bugs fixed_bugs verifi +ed_bugs ); my @legend_keys = qw(new_bugs open_bugs reopen_bugs fixed_bugs verifie +d_bugs closed_bugs); $mygraph->set( x_label => 'Log_Date', y_label => $y_label, x_label_skip => 30, x_labels_vertical => true, title => $title, legend_placement => 'BL', legend_marker_height => 12, dclrs => [ qw(green blue red yellow brown orange) ], ) or warn $mygraph->error; $mygraph->set_legend(@legend_keys); $mygraph->set_title_font(GD::gdGiantFont); $mygraph->set_x_label_font(GD::gdLargeFont); $mygraph->set_y_label_font(GD::gdLargeFont); my $myimage = $mygraph->plot(\@data) or die $mygraph->error; binmode STDOUT; print $myimage->png; #my $mygraph #print $cgi->end_html; } else { print "Content-type: text/html\n\n"; print $cgi->h3('Error Message'); print $cgi->h3($error_msg); } } sub date_format($date){ my @date_array = split(/\//, $date); print @date_array; my $new_date = join('-', @date_array[2], @date_array[1], @date_arr +ay[0]); return $new_date; } sub validate_date { my $start_date = $_[0]; my $end_date = $_[1]; my $today_date = $_[2]; my @start_date_array = split(/\//, $start_date); my @end_date_array = split(/\//, $end_date); my @today_date_array = split(/\//, $today_date); my $yyyymmdd_start_date = join("",@start_date_array[2],@start_date +_array[1],@start_date_array[0]); # print "Content-type: text/html\n\n"; # print $yyyymmdd_start_date; my $error_msg = ""; if (!$start_date || !$end_date){ $error_msg = "Blank Field in Date field. Please Use Browser Back b +utton and Enter Date Field"; } elsif (($start_date !~ m[^\d+\/\d+\/\d{4}$]) || ($end_date !~ m[ +^\d+\/\d+\/\d{4}$])){ $error_msg = "Invalid Characters in Date. Please Use Browser Back +button and Enter Start Date"; } else { my $error_msg = ""; } return $error_msg; }
|
|---|