& /Elements/Header, Title => loc("Tickets per day in Queue:" . $QueueObj->Name()) &>
<& /RTx/Statistics/Elements/Tabs, Title => loc("Tickets by status per day in Queue:" . $QueueObj->Name()) &>
Description
This page displays details about tickets in the selected queue over the date range chosen. It shows how many tickets were created on
each day in the chosen range, and how many of those were either Resolved or Deleted.
To always show the current month to date, bookmark this link, or
for a spreadsheet, use this link.
<&|/l&>Bookmarkable link&> |
<&|/l&>spreadsheet&>
% Statistics::DebugLog("ref of eMonth is " . ref($eMonth) . "\n");
% Statistics::DebugInit( $m );
<%ARGS>
$Queue => undef
$weekends => $Statistics::PerDayWeekends;
$sMonth=>undef
$sDay=>undef
$sYear=>undef
$eMonth=>undef
$eDay=>undef
$eYear=>undef
$days=>undef
$currentMonth=>undef
$AllowSorting => undef
$Order => undef
$OrderBy => undef
$ShowNavigation => 1
$ShowHeader => 1
$Rows => 50
$Page => 1
$BaseURL => undef
%ARGS>
<%INIT>
use RTx::Statistics;
use Time::Local;
my $selected;
my $n = 0;
my @data = ([]);
my @dates;
my @msgs;
my $diff;
my $sEpoch=0;
my $eEpoch=0;
my %Totals;
my $QueryString;
my $maxitems = 4;
my %record;
my %values;
my $record = \%record;
$record{values} = \%values;
# If debugging, set things up and display all the args
Statistics::DebugClear();
Statistics::DebugLog("CallsQueueDay/index.html ARGS:\n");
for my $key (keys %ARGS) {
Statistics::DebugLog("ARG{ $key }=" . $ARGS{$key} . "\n");
}
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{ '__Statistics_Date__',
'__Statistics_Created_Count__/STYLE:text-align:right;',
'__Statistics_Resolved_Count__/STYLE:text-align:right;',
'__Statistics_Deleted_Count__/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);
Statistics::DebugLog("CallsQueueDay/index.html Format array=" . join(',', @Format) . "\n");
if (!defined $Queue) {
my $QueueObj = new RT::Queue($session{'CurrentUser'});
$QueueObj->Load($Statistics::PerDayQueue);
$Queue = $QueueObj->Id();
}
if ($sDay > $Statistics::monthsMaxDay{$sMonth}) {
$sDay = $Statistics::monthsMaxDay{$sMonth};
}
if ($eDay > $Statistics::monthsMaxDay{$eMonth}) {
$eDay = $Statistics::monthsMaxDay{$eMonth};
}
if ($sYear){
$sEpoch = timelocal(0, 0, 0, $sDay, $sMonth, $sYear-1900);
}
if ($eYear){
Statistics::DebugLog("eMonth = " . $eMonth . "\n");
$eEpoch = timelocal(0, 0, 0, $eDay, $eMonth, $eYear-1900);
} else {
# This case happens when the page is first loaded
my @local = localtime(time);
($eDay, $eMonth, $eYear) = ($local[3], $local[4], $local[5]);
$eYear += 1900;
$eEpoch = timelocal(0, 0, 0, $local[3], $local[4], $local[5], $local[6], $local[7], $local[8]);
Statistics::DebugLog("Setting eEpoch=$eEpoch from current time.\n");
}
if (($eEpoch < $sEpoch) || ($sEpoch == 0)) {
# We have an end, but not a start, or, overlapping.
# if $currentMonth is set, just set the day to 1
if($currentMonth) {
# set start vars from end, but with day set to 1
(undef, undef, undef, $sDay, $sMonth, $sYear) = localtime($eEpoch);
$sDay=1;
$sEpoch = timelocal(0, 0, 0, $sDay, $sMonth, $sYear);
} else {
# If the user has specified how many days back to go, use that,
# If not, set start to configured default period before end
if(defined $days) {
$sEpoch = $eEpoch - ($days * $Statistics::secsPerDay);
} else {
$sEpoch = $eEpoch - ($Statistics::PerDayPeriod * $Statistics::secsPerDay);
}
(undef, undef, undef, $sDay, $sMonth, $sYear) = localtime($sEpoch);
}
$sYear += 1900;
}
# Compute days to chart.
# The +1 is because we need to generate one more date. If the user
# selected a 10 day range, we need to generate 11 days.
$diff = int(($eEpoch - $sEpoch + $Statistics::secsPerDay - 1) / $Statistics::secsPerDay)+1;
Statistics::DebugLog("Setting diff=$diff\n");
Statistics::DebugLog("sEpoch=$sEpoch, components=" . join(',', localtime($sEpoch)) . "\n");
Statistics::DebugLog("eEpoch=$eEpoch, components=" . join(',', localtime($eEpoch)) . "\n");
# Set up the string for the current query for bookmarkable link
$QueryString = "sDay=$sDay&sMonth=$sMonth&sYear=$sYear&eDay=$eDay&eMonth=$eMonth&eYear=$eYear&weekends=$weekends&Queue=$Queue";
# Set up the end date to be midnight(morning) of the date after the one the user wanted.
my $endRange = $eEpoch + $Statistics::secsPerDay;
my $QueueObj = new RT::Queue($session{'CurrentUser'});
$QueueObj->Load($Queue);
$n = 0;
until ($#dates == $diff) {
my $date = new RT::Date($session{CurrentUser});
$date->Set(Value=>$endRange - $n, Format => 'unix');
# Note: we used to adjust the time to local midnight, but
# none of the other date entry fields in RT seem to adjust, so we've stopped.
#Statistics::DebugLog("Before adjust to midnight date " . Statistics::FormatDate("%c", $date) . "\n");
$n+= $Statistics::secsPerDay;
# If we aren't showing weekends and this is one, decrement the number
# of days to show and skip to the next date.
if(!$weekends and Statistics::RTDateIsWeekend($date)) {$diff--; next;}
unshift @dates, $date;
Statistics::DebugLog("pushing date " . Statistics::FormatDate("%c", $date) . "\n");
unshift @{ $data[0] }, Statistics::FormatDate($Statistics::PerDayLabelDateFormat, $date);
}
# We put an extra day into the lists to cover up till midnight of the next day,
# But we don't want that to appear in the labels, so pop it off.
pop( @{ $data[0] } );
%INIT>