[Rt-commit] r4451 - in RT-Extension-ActivityReports: .
html/Reports/Activity/Elements
alexmv at bestpractical.com
alexmv at bestpractical.com
Tue Jan 31 05:08:25 EST 2006
Author: alexmv
Date: Tue Jan 31 05:08:25 2006
New Revision: 4451
Added:
RT-Extension-ActivityReports/html/Reports/Activity/WorkedStatistics.html
Modified:
RT-Extension-ActivityReports/ (props changed)
RT-Extension-ActivityReports/html/Reports/Activity/Elements/LimitReport
RT-Extension-ActivityReports/html/Reports/Activity/ResolutionStatistics.html
Log:
r8854 at zoq-fot-pik: chmrr | 2006-01-31 05:07:38 -0500
* Add first pass of TimeWorked statistics
Modified: RT-Extension-ActivityReports/html/Reports/Activity/Elements/LimitReport
==============================================================================
--- RT-Extension-ActivityReports/html/Reports/Activity/Elements/LimitReport (original)
+++ RT-Extension-ActivityReports/html/Reports/Activity/Elements/LimitReport Tue Jan 31 05:08:25 2006
@@ -7,6 +7,7 @@
<option value="ActivitySummary" <% $ARGS{path} =~ /ActivitySummary/ ? 'selected' : '' %>>Activity summary</option>
<option value="ResolutionComments" <% $ARGS{path} =~ /ResolutionComments/ ? 'selected' : '' %>>Resolution comments</option>
<option value="ResolutionStatistics" <% $ARGS{path} =~ /ResolutionStatistics/ ? 'selected' : '' %>>Resolution statistics</option>
+<option value="WorkedStatistics" <% $ARGS{path} =~ /WorkedStatistics/ ? 'selected' : '' %>>Time worked statistics</option>
</select><br />
Start date: <input type="text" name="start" value="<% $start %>" /><br />
Modified: RT-Extension-ActivityReports/html/Reports/Activity/ResolutionStatistics.html
==============================================================================
--- RT-Extension-ActivityReports/html/Reports/Activity/ResolutionStatistics.html (original)
+++ RT-Extension-ActivityReports/html/Reports/Activity/ResolutionStatistics.html Tue Jan 31 05:08:25 2006
@@ -24,7 +24,7 @@
<tr>
<th><% $queue %></th>
% for my $period ('Date range','Last 30 days','Last 60 days','Last 90 days','Ever') {
-<td><% scalar @{$closed{$period}{$queue}} %> / <% $average_resolve_times{$period}{$queue} %></td>
+<td><% scalar @{$closed{$period}{$queue} || []} %> / <% $average_resolve_times{$period}{$queue} %></td>
% }
</tr>
% }
Added: RT-Extension-ActivityReports/html/Reports/Activity/WorkedStatistics.html
==============================================================================
--- (empty file)
+++ RT-Extension-ActivityReports/html/Reports/Activity/WorkedStatistics.html Tue Jan 31 05:08:25 2006
@@ -0,0 +1,98 @@
+<&|Elements/Wrapper, %ARGS, title => loc("Time worked statistics"),
+ path => "Reports/Activity/WorkedStatistics.html",
+ &>
+
+<& Elements/MiniPlot,
+ data => \%plot,
+ major => [ @order ],
+ minor => [ "Incoming", "Answered", "Answered in 24h" ]
+&>
+
+<table style="width: 100%">
+<tr class="titlerow">
+<th>Time period</th>
+<th>Incoming emails</th>
+<th>Answered</th>
+<th>Answered within 24h</th>
+<th>Time worked</th>
+<th>Avg. time / person</th>
+<th>Avg. time / email</th>
+<th>Avg. answered / person / hour</th>
+</tr>
+
+% for my $period (@order) {
+<tr>
+<th><% $period %></th>
+<td><% $plot{$period}{"Incoming"} || 0 %></td>
+<td><% $plot{$period}{"Answered"} || 0 %></td>
+<td><% $plot{$period}{"Answered in 24h"} || 0 %></td>
+<td><% $timetaken{$period} || 0 %></td>
+<td><% $emails{$period} ? $timetaken{$period} / (scalar keys %{$users{$period}}) : 0 %></td>
+<td><% $emails{$period} ? $timetaken{$period} / $emails{$period} : 0 %></td>
+<td><% $emails{$period} ? $emails{$period} / ((scalar keys %{$users{$period}}) * $days{$period}*24) : 0 %></td>
+</tr>
+% }
+
+</table>
+
+</&>
+<%args>
+$query => 'id > 0'
+$start => "2005/01/01"
+$end => "2006/01/01"
+</%args>
+<%init>
+
+my %labels = (1 => "Yesterday", 7 => "Last 7 days", 30 => "Last 30 days", 365 => "Last 365 days");
+my %days = reverse %labels;
+my @order = ("Date range", (map {$labels{$_}} sort {$a <=> $b} keys %labels));
+my %times;
+for (keys %days) {
+ $times{$_} = RT::Date->new($session{'CurrentUser'});
+ $times{$_}->Set(Format => 'Unix', Value => ( time - (86400*$days{$_})));
+}
+
+# Find out how long the hand-picked date range is
+{
+ my $startDate = RT::Date->new($session{'CurrentUser'});
+ $startDate->Set(Format => 'unknown', Value => $start);
+ my $endDate = RT::Date->new($session{'CurrentUser'});
+ $endDate->Set(Format => 'unknown', Value => $end);
+ $days{"Date range"} = $endDate->Diff($startDate)/86400;
+}
+
+my %queries;
+$queries{'Date range'} = "(Created >= '$start' AND Created <= '$end')";
+$queries{$_} = "(Created >= '".$times{$_}->ISO."')" for keys %times;
+
+my(%plot, %timetaken, %users, %emails);
+foreach my $period (@order) {
+ my $tix = RT::Tickets->new($session{'CurrentUser'});
+ $tix->FromSQL($query . " AND " .$queries{$period});
+
+ while (my $ticket = $tix->Next) {
+ $plot{$period}{"Incoming"}++;
+ $plot{$period}{"Answered"}++ if $ticket->Told;
+
+ # Find out when we *first* responded to this ticket
+ my $firstTold;
+ my $txns = $ticket->Transactions;
+ while (my $txn = $txns->Next) {
+ if (not defined $firstTold and $txn->Type eq "Correspond") {
+ $firstTold = $txn->Created;
+ }
+ if ($txn->TimeTaken) {
+ $timetaken{$period} += $txn->TimeTaken;
+ $users{$period}{$txn->Creator}++;
+ $emails{$period}++;
+ }
+ }
+ if ($firstTold) {
+ my $told = RT::Date->new($session{'CurrentUser'});
+ $told->Set(Format => 'ISO', $firstTold);
+ $plot{$period}{"Answered in 24h"}++ if $told->Diff($ticket->Created) <= 86400;
+ }
+ }
+}
+
+</%init>
More information about the Rt-commit
mailing list