<%args>
$Query => "id > 0"
$PrimaryGroupBy => 'Queue'
$SecondaryGroupBy => undef
$ChartStyle => 'bars'
</%args>
<%init>
my @keys;
my @values;
my $chart_class; 
use GD;
use GD::Text;

if ($ChartStyle eq 'pie') {
    require GD::Graph::pie;
    $chart_class= "GD::Graph::pie";
} else {
    require GD::Graph::bars;
    $chart_class= "GD::Graph::bars";
}
use RT::Report::Tickets;

my $chart = $chart_class->new( 600 => 400 );
if ($chart_class eq "GD::Graph::bars") {
    $chart->set(
        x_label => $PrimaryGroupBy,
        x_labels_vertical => 1,
        y_label => 'Tickets',
        show_values => 1
      );
    $chart->set_legend_font( ['verdana', 'arial', gdMediumBoldFont], 12);

}
my $tix   = RT::Report::Tickets->new( $session{'CurrentUser'} );

$tix->GroupBy($PrimaryGroupBy);
$tix->Column( FUNCTION => 'COUNT', FIELD => 'id' );
$tix->Column( FIELD => $PrimaryGroupBy );

$tix->FromSQL($Query);
$tix->_DoSearch();
while ( my $entry = $tix->Next ) {
    my $class;
    if ( $PrimaryGroupBy eq 'Queue' ) {
         $class = "RT::Queue";
        }
        elsif ( $PrimaryGroupBy eq 'Owner' ) {
             $class = "RT::User";
        }
        if ($class) {
            my $q = $class->new( $session{'CurrentUser'} );
            $q->Load( $entry->__Value($PrimaryGroupBy) );
            if ($chart_class eq 'GD::Graph::pie') { 
                 push @keys, $q->Name() . " - ".$entry->id;
            }
            else {
                 push @keys, $q->Name();
            }
        }
        else {
            if ($chart_class eq 'GD::Graph::pie') { 
                push @keys, $entry->__Value($PrimaryGroupBy). "- ".$entry->id;
            }   
            else {
                push @keys, $entry->__Value($PrimaryGroupBy);
                }
        }
        push @values, $entry->id;
    }

    #$chart->set( title   => loc("[_1] grouped by [_2]",$Query, $PrimaryGroupBy) ) or die $chart->error;

    unless (@keys && @values) {
        @keys = ('');
        @values = (0);
    }

    my $plot = $chart->plot( [ [@keys], [@values] ] ) or die $chart->error;
    if ($plot->can('png') ) {
        $r->content_type('image/png');
        $m->out( $plot->png );
    } elsif ($plot->can('gif')) {
        $r->content_type('image/gif');
        $m->out( $plot->gif );

    } else { 
        die "Your GD library appears to support neither PNG nor GIF";
    }
    $m->abort();
</%init>
