[freeside-commits] freeside/rt/html/RTx/Statistics/OpenStalled Results.tsv, NONE, 1.1.2.2 index.html, NONE, 1.1.2.2

Ivan,,, ivan at wavetail.420.am
Wed Jun 20 15:29:18 PDT 2007


Update of /home/cvs/cvsroot/freeside/rt/html/RTx/Statistics/OpenStalled
In directory wavetail:/tmp/cvs-serv10375/rt/html/RTx/Statistics/OpenStalled

Added Files:
      Tag: FREESIDE_1_7_BRANCH
	Results.tsv index.html 
Log Message:
integrate RTx::Statistics, RT::Extension::ActivityReports package, and RTx::WebCronTool packages, as part of merging spiritone RT changes (#1661)

--- NEW FILE: Results.tsv ---
%# BEGIN BPS TAGGED BLOCK {{{
%# 
%# COPYRIGHT:
%#  
%# This software is Copyright (c) 1996-2005 Best Practical Solutions, LLC 
%#                                          <jesse at bestpractical.com>
%# 
%# (Except where explicitly superseded by other copyright notices)
%# 
%# 
%# LICENSE:
%# 
%# This work is made available to you under the terms of Version 2 of
%# the GNU General Public License. A copy of that license should have
%# been provided with this software, but in any event can be snarfed
%# from www.gnu.org.
%# 
%# This work is distributed in the hope that it will be useful, but
%# WITHOUT ANY WARRANTY; without even the implied warranty of
%# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
%# General Public License for more details.
%# 
%# You should have received a copy of the GNU General Public License
%# along with this program; if not, write to the Free Software
%# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
%# 
%# 
%# CONTRIBUTION SUBMISSION POLICY:
%# 
%# (The following paragraph is not intended to limit the rights granted
%# to you to modify and distribute this software under the terms of
%# the GNU General Public License and is only of importance to you if
%# you choose to contribute your changes and enhancements to the
%# community by submitting them to Best Practical Solutions, LLC.)
%# 
%# By intentionally submitting any modifications, corrections or
%# derivatives to this work, or any other work intended for use with
%# Request Tracker, to Best Practical Solutions, LLC, you confirm that
%# you are the copyright holder for those contributions and you grant
%# Best Practical Solutions,  LLC a nonexclusive, worldwide, irrevocable,
%# royalty-free, perpetual, license to use, copy, create derivative
%# works based on those contributions, and sublicense and distribute
%# those contributions and any derivatives thereof.
%# 
%# END BPS TAGGED BLOCK }}}
<%ARGS>
@queues => @Statistics::OpenStalledQueueList
</%ARGS>

<%INIT>
use RTx::Statistics;
use Time::Local;

  my $n = 0;
  my @data; 
  my @msgs;
  my %totals;
  my $QueryString;
  my $now = new RT::Date($session{CurrentUser});
  my $tix = new RT::Tickets($session{'CurrentUser'});

  my %queues = map { 
    $_ => 1;
  } (@queues);

  # set content type
  $r->content_type('application/vnd.ms-excel');

  $QueryString = "queues=" . join("&queues=", @queues);

  my $queue = new RT::Queues($session{CurrentUser});
  $queue->UnLimit;

  my $QueueObj = new RT::Queue($session{'CurrentUser'});
  $QueueObj->Load($queue);

  # Put out some data about the generation of this file
  $m->out("Tickets by Status by Queue for Queues:\t" . join(',', @queues) . "\tGenerated at:\t" . Statistics::FormatDate("%x %X", $now). "\n\n");

  # basically the same as index.html

  # Output header row
  $m->out("Status");
  for ( sort keys %queues) {
      push @data, $_;
      my $Queueobj = new RT::Queue($session{'CurrentUser'});
      $Queueobj->Load($_);
      next if !$Queueobj->CurrentUserHasRight('SeeQueue');
      $m->out("\t" . $_);
  }
  $m->out("\tTotals\n");

  foreach my $s (qw(new open stalled)) {
    $m->out("$s");
    my $total=0;
    foreach my $q (sort keys %queues)  {
      $tix = new RT::Tickets($session{'CurrentUser'});
      $tix->LimitQueue(VALUE => "$q");
      $tix->LimitStatus(VALUE => "$s");
      $totals{$q} += $tix->Count; # Add up columns for each queue
      $m->out("\t" . $tix->Count);
      $total += $tix->Count;
    }
    $m->out("\t$total\n");
    $totals{"Totals"} += $total;
  }
  $m->out("Totals");
  foreach my $q (sort keys %queues) {
    $m->out("\t" . $totals{$q});
  }
  $m->out("\t" . $totals{"Totals"} . "\n");

  $m->abort();
</%INIT>

--- NEW FILE: index.html ---
<& /Elements/Header, Title => loc('New, Open and Stalled tickets by Queue') &>
<& /RTx/Statistics/Elements/Tabs, Title => loc('New, Open and Stalled tickets by Queue') &>

<h3>Description</h3>
<p>The purpose of this page is to show a snapshot of the current status of tickets by Queue. You can multi select Queues from the dropdown
list or simply show all available queues. This will indicate how many tickets have not yet been viewed (New), how many have been at least
viewed once (Open) and how many have had their status changed to stalled.</p>

<form method="POST" action="index.html">

%my $tix = new RT::Tickets($session{'CurrentUser'});
%if ($queue) {
%        $tix->LimitQueue (VALUE => $queue);
%}


%my $title = "New, Open and Stalled Tickets in " . join(', ', @queues);
<& /Elements/TitleBoxStart, title => $title, title_href => "/RTx/Statistics/OpenStalled/index.html?$QueryString"&>
<TABLE BORDER=0 cellspacing=0 cellpadding=1 WIDTH="100%">
% if ($ShowHeader) {
<& /RTx/Statistics/Elements/CollectionAsTable/Header, 
    Format => \@RowFormat, 
    FormatString => $RowFormat,
    AllowSorting => $AllowSorting, 
    Order => $Order, 
    Query => undef,
    Rows => $Rows,
    Page => $Page,
    OrderBy => $OrderBy , 
    BaseURL => $BaseURL,
    maxitems => $maxitems &> 
% }

%    for ( sort keys %queues_to_show) {
%        push @data, $_;
%    }
%    my @legend;
%    my $total = 0;
%    my $line = 0;
%# NOTE need to handle all status values (see share/html/Elements/SelectStatus).
%    foreach my $s (qw(new open stalled)) {
%      $line++;
%      push @legend, $s;
%      $total=0;
%      foreach my $q (sort keys %queues_to_show)  {
%        $tix = new RT::Tickets($session{'CurrentUser'});
%        $tix->LimitQueue(VALUE => "$q");
%        $tix->LimitStatus(VALUE => "$s");
%        push @data, $tix->Count;
%        $totals{$q} += $tix->Count; # Add up columns for each queue
%        $total += $tix->Count;
%        $values{$q} = $tix->Count;
%      }
%      $totals{"Totals"} += $total;
%      $values{Statistics_Status} = $s;
%      $values{Statistics_Totals} = $total;
<&     /RTx/Statistics/Elements/CollectionAsTable/Row, Format => \@RowFormat, i => $line, record => $record, maxitems => $maxitems &>
%    }
%    $values{Statistics_Status} = "Totals";
%    foreach my $q (sort keys %queues_to_show) {
%      $values{$q} = $totals{$q};
%    }
%    $values{Statistics_Totals} = $totals{"Totals"};
<&   /RTx/Statistics/Elements/CollectionAsTable/Row, Format => \@BoldRowFormat, i => $line+1, record => $record, maxitems => $maxitems &>
</table>
<& /Elements/TitleBoxEnd&>

<hr>

<BR />
<BR />

% use Data::Dumper;
% Statistics::DebugLog("Dump of data array is " . Dumper(@data) . "\n");
%  my $url = 'Elements/Chart?x_labels=';
%  for (1..(scalar keys %queues_to_show)) {
%    $url .=  $m->interp->apply_escapes((shift @data),'u')  . ',';
%  }
%  chop $url;
%  $url .= '&data1=' ;
%  for (1..(scalar keys %queues_to_show)) {
%    $url .=  $m->interp->apply_escapes((shift @data),'u') . ',';
%  }
%  chop $url;
%  $url .= '&data2=' ;
%  for (1..(scalar keys %queues_to_show)) {
%    $url .=  $m->interp->apply_escapes((shift @data),'u') . ',';
%  }
%  chop $url;
%  $url .= '&data3=' ;
%  for (1..(scalar keys %queues_to_show)) {
%    $url .=  $m->interp->apply_escapes((shift @data),'u') . ',';
%  }
%  $url .= '&set_legend='.(join ",", @legend);


<& /RTx/Statistics/Elements/GraphBox, GraphURL => $url &>

<& /RTx/Statistics/Elements/ControlsAsTable/ControlBox, Title => "Select Queues", ShowMultiQueues => 1, queues_ref => \@queues &>

<a href="<%$RT::WebPath%>/RTx/Statistics/OpenStalled/index.html?<% $QueryString %>"><&|/l&>Bookmarkable link</&></a>
%# | <a href="<%$RT::WebPath%>/RTx/Statistics/OpenStalled/Results.tsv?<%$QueryString%>"><&|/l&>spreadsheet</&></a>
<BR>
<BR>

</FORM>

% Statistics::DebugInit( $m );

<%ARGS>
@queues => @Statistics::OpenStalledQueueList
$AllowSorting => undef
$Order => undef
$OrderBy => undef
$ShowNavigation => 1
$ShowHeader => 1
$Rows => 50
$Page => 1
$BaseURL => undef
$AddAllCheck => undef
</%ARGS>

<%INIT>
  use RTx::Statistics;

  my $n = 0;
  my @data; 
  my @msgs;
  my %totals;
  my $QueryString;
  my %queues_to_show;
  my $maxitems;
  my $RowFormat;
  my $BoldRowFormat;
  my %record;
  my %values;
  my $record = \%record;

  $record{values} = \%values;

  Statistics::DebugClear();

  # Handle the Add All Checkbox
  if($AddAllCheck eq "on") {
    $AddAllCheck = undef;
    undef (@queues);
    my $q=new RT::Queues($session{'CurrentUser'});
    $q->UnLimit;
    while (my $queue=$q->Next) {
      next if !$queue->CurrentUserHasRight('SeeQueue');
      push @queues, $queue->Name;
    }
  }

  # If the user has the right to see the queue, put it into the map
  for my $q (@queues) {
      my $Queueobj = new RT::Queue($session{'CurrentUser'});
      $Queueobj->Load($q);
      next if !$Queueobj->CurrentUserHasRight('SeeQueue');
      $queues_to_show{$q} = 1;
  }

  $maxitems = (scalar @queues) + 2;

  # Build the new query string
  $QueryString = "queues=" . join("&queues=", @queues);

  # Build the format strings
  $RowFormat = "'__Statistics_Status__'";
  $BoldRowFormat = "'<B>__Statistics_Status__</B>'";
  for my $q (@queues) {
      $RowFormat .= ",'__Statistics_Dynamic__/KEY:$q/TITLE:$q/STYLE:text-align:right;'";
      $BoldRowFormat .= ",'<B>__Statistics_Dynamic__</B>/KEY:$q/TITLE:$q/STYLE:text-align:right;'";
  }
  $RowFormat .= ",'<B>__Statistics_Totals__</B>/STYLE:text-align:right;'";
  $BoldRowFormat .= ",'<B>__Statistics_Totals__</B>/STYLE:text-align:right;'";
  # Parse the formats into structures.
  my (@RowFormat) = $m->comp('/RTx/Statistics/Elements/CollectionAsTable/ParseFormat', Format => $RowFormat);
  my (@BoldRowFormat) = $m->comp('/RTx/Statistics/Elements/CollectionAsTable/ParseFormat', Format => $BoldRowFormat);


  my $queue = new RT::Queues($session{CurrentUser});
  $queue->UnLimit;

  my $QueueObj = new RT::Queue($session{'CurrentUser'});
  $QueueObj->Load($queue);

</%INIT>



More information about the freeside-commits mailing list