diff options
Diffstat (limited to 'rt/html/RTx/Statistics/DayOfWeek')
-rwxr-xr-x | rt/html/RTx/Statistics/DayOfWeek/Elements/Chart | 26 | ||||
-rwxr-xr-x | rt/html/RTx/Statistics/DayOfWeek/index.html | 155 |
2 files changed, 181 insertions, 0 deletions
diff --git a/rt/html/RTx/Statistics/DayOfWeek/Elements/Chart b/rt/html/RTx/Statistics/DayOfWeek/Elements/Chart new file mode 100755 index 0000000..239c095 --- /dev/null +++ b/rt/html/RTx/Statistics/DayOfWeek/Elements/Chart @@ -0,0 +1,26 @@ +% $r->content_type("image/$format"); +% $m->print($graph->plot(\@data)->$format()); +% $m->abort(); +<&|/l, $#data+1&>[_1] Elements</&>:<p> +% for (0..$#data) { +<% $data[$_] %><p> +% } +<%INIT> +use GD::Graph::bars; + +my @data; +my $graph = GD::Graph::bars->new($Statistics::GraphWidth,$Statistics::GraphHeight); +$graph->set(export_format => "png", + x_label => 'Day of Week', + y_label => 'Ticket actions per Day by type'); +$graph->set_legend(split /,/ , $ARGS{set_legend}); +push @data, [split /,/ , $ARGS{x_labels}]; +push @data, [split /,/ , $ARGS{data1}]; +push @data, [split /,/ , $ARGS{data2}]; +push @data, [split /,/ , $ARGS{data3}]; + +my $format = $graph->export_format; +$r->content_type("image/$format"); +</%INIT> +<%ARGS> +</%ARGS> diff --git a/rt/html/RTx/Statistics/DayOfWeek/index.html b/rt/html/RTx/Statistics/DayOfWeek/index.html new file mode 100755 index 0000000..2e82b9c --- /dev/null +++ b/rt/html/RTx/Statistics/DayOfWeek/index.html @@ -0,0 +1,155 @@ +<& /Elements/Header, Title =>loc('Tickets by Day Of Week in Queue:' . $QueueObj->Name()) &> +<& /RTx/Statistics/Elements/Tabs, Title =>loc('Trends in ticket status by Day Of Week in Queue:' . $QueueObj->Name()) &> + +<h3>Description</h3> +<p>The purpose of this page is to show historical trends for each day of the week. +It displays details of number of tickets created in your +selected queue for each day. It also hows how many of those created tickets were Resolved or Deleted</p> + +<form method="POST" action="index.html"> + + +%my $title = "Ticket counts by day of week in " . $QueueObj->Name(); +<&|/Elements/TitleBox, + title => $title, + title_href => "/RTx/Statistics/DayOfWeek/index.html?$QueryString" &> +<TABLE BORDER=0 cellspacing=0 cellpadding=1 WIDTH=100%> +% if ($ShowHeader) { +<& /RTx/Statistics/Elements/CollectionAsTable/Header, + Format => \@Format, + FormatString => $Format, + AllowSorting => $AllowSorting, + Order => $Order, + Query => undef, + Rows => $Rows, + Page => $Page, + OrderBy => $OrderBy , + BaseURL => $BaseURL, + maxitems => $maxitems &> +% } +% my $line = 1; +% for my $d (0..$#days) { +% my $x = 1; +% $values{Statistics_Date} = $days[$d]; +%# NOTE Show all status values??? +% $values{Statistics_Created_Count} = $counts[$d]{new}; +% $values{Statistics_Resolved_Count} = $counts[$d]{resolved}; +% $values{Statistics_Deleted_Count} = $counts[$d]{deleted}; +<& /RTx/Statistics/Elements/CollectionAsTable/Row, Format => \@Format, i => $line, record => $record, maxitems => $maxitems &> +% $line++; +% } +% $values {Statistics_Date} = "Totals"; +% $values {Statistics_Created_Count} = $Totals{new}; +% $values {Statistics_Resolved_Count} = $Totals{resolved}; +% $values {Statistics_Deleted_Count} = $Totals{deleted}; +<& /RTx/Statistics/Elements/CollectionAsTable/Row, Format => \@BoldFormat, i => $line, record => $record, maxitems => $maxitems &> +</table> +</&> + +<hr> + +<BR /> +<BR /> + +<%perl> +my $url = 'Elements/Chart?&x_labels='; +for (0..$#days) { + $url .= $days[$_] . "," ; +} +chop $url; +$url .= "&"; + +my @things = qw(new resolved deleted); +for my $th (0..$#things) { + $url .= "data".(1+$th)."=".(join ",", map { $counts[$_]{$things[$th]} } (0..6))."&"; +} +chop $url; +$url .= '&set_legend=Created,Resolved,Deleted'; +</%perl> + +<& /RTx/Statistics/Elements/GraphBox, GraphURL => $url &> + +% Statistics::DebugLog("queue name=" . $QueueObj->Id() . "\n"); + +<& /RTx/Statistics/Elements/ControlsAsTable/ControlBox, + Title => "Change Queue", + ShowSingleQueue => 1, Queue => $QueueObj->Id() + &> + +</form> + +% Statistics::DebugInit( $m ); + +<%ARGS> +$Queue => $Statistics::DayOfWeekQueue + +$AllowSorting => undef +$Order => undef +$OrderBy => undef +$ShowNavigation => 1 +$ShowHeader => 1 +$Rows => 50 +$Page => 1 +$BaseURL => undef +</%ARGS> + +<%INIT> +use GD::Graph; +use RTx::Statistics; +my @days = qw(Sun Mon Tue Wed Thu Fri Sat); +my $n = 0; +my @data = ([]); +my @msgs; +my @counts; +my %Totals = ( + resolved => 0, + deleted => 0, + new => 0 +); +my $QueryString = "Queue=$Queue"; +my $maxitems = 4; +my %record; +my %values; +my $record = \%record; + +$record{values} = \%values; + +my $Format = qq{ Statistics_Date, + '__Statistics_Created_Count__/STYLE:text-align:right;', + '__Statistics_Resolved_Count__/STYLE:text-align:right;', + '__Statistics_Deleted_Count__/STYLE:text-align:right;' }; +my $BoldFormat = qq{ '<B>__Statistics_Date__</B>', + '<B>__Statistics_Created_Count__</B>/STYLE:text-align:right;', + '<B>__Statistics_Resolved_Count__</B>/STYLE:text-align:right;', + '<B>__Statistics_Deleted_Count__</B>/STYLE:text-align:right;' }; +my (@Format) = $m->comp('/RTx/Statistics/Elements/CollectionAsTable/ParseFormat', Format => $Format); +my (@BoldFormat) = $m->comp('/RTx/Statistics/Elements/CollectionAsTable/ParseFormat', Format => $BoldFormat); + +my $QueueObj = new RT::Queue($session{'CurrentUser'}); +$QueueObj->Load($Queue); +$RT::Logger->warning("Loaded queue $Queue, name=". $QueueObj->Name()); + +my $tix = new RT::Tickets($session{'CurrentUser'}); +$tix->LimitQueue (VALUE => $Queue); +$tix->UnLimit; +if ($tix->Count) { + # Initialize the counters to zero, so that all the cells show up + foreach my $day (0..@days) { + $counts[$day]{resolved} = 0; + $counts[$day]{deleted} = 0; + $counts[$day]{new} = 0; + } + while (my $t = $tix->RT::SearchBuilder::Next) { # BLOODY HACK + if($t->Status eq "resolved") { + $counts[(localtime($t->ResolvedObj->Unix))[6]]{resolved}++; + $Totals{resolved}++; + } + if($t->Status eq "deleted") { + $counts[(localtime($t->LastUpdatedObj->Unix))[6]]{deleted}++; + $Totals{deleted}++; + } + $counts[(localtime($t->CreatedObj->Unix))[6]]{new}++; + $Totals{new}++; + } +} +</%INIT> |