~bestpractical/rt/master

« back to all changes in this revision

Viewing changes to share/html/Search/Elements/Chart

  • Committer: sunnavy
  • Date: 2008-05-14 13:22:46 UTC
  • Revision ID: git-v1:0f0c8baef62a06a13d6fb54683d6c7d75d5f1283
source layout change! html now lives in share/html

git-svn-id: svn+ssh://svn.bestpractical.com/svn/bps-public/rt/branches/3.8-TESTING@12308 e417ac7c-1bcc-0310-8ffa-8f5827389a85

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
%# BEGIN BPS TAGGED BLOCK {{{
 
2
%# 
 
3
%# COPYRIGHT:
 
4
%#  
 
5
%# This software is Copyright (c) 1996-2008 Best Practical Solutions, LLC 
 
6
%#                                          <jesse@bestpractical.com>
 
7
%# 
 
8
%# (Except where explicitly superseded by other copyright notices)
 
9
%# 
 
10
%# 
 
11
%# LICENSE:
 
12
%# 
 
13
%# This work is made available to you under the terms of Version 2 of
 
14
%# the GNU General Public License. A copy of that license should have
 
15
%# been provided with this software, but in any event can be snarfed
 
16
%# from www.gnu.org.
 
17
%# 
 
18
%# This work is distributed in the hope that it will be useful, but
 
19
%# WITHOUT ANY WARRANTY; without even the implied warranty of
 
20
%# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 
21
%# General Public License for more details.
 
22
%# 
 
23
%# You should have received a copy of the GNU General Public License
 
24
%# along with this program; if not, write to the Free Software
 
25
%# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
 
26
%# 02110-1301 or visit their web page on the internet at
 
27
%# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html.
 
28
%# 
 
29
%# 
 
30
%# CONTRIBUTION SUBMISSION POLICY:
 
31
%# 
 
32
%# (The following paragraph is not intended to limit the rights granted
 
33
%# to you to modify and distribute this software under the terms of
 
34
%# the GNU General Public License and is only of importance to you if
 
35
%# you choose to contribute your changes and enhancements to the
 
36
%# community by submitting them to Best Practical Solutions, LLC.)
 
37
%# 
 
38
%# By intentionally submitting any modifications, corrections or
 
39
%# derivatives to this work, or any other work intended for use with
 
40
%# Request Tracker, to Best Practical Solutions, LLC, you confirm that
 
41
%# you are the copyright holder for those contributions and you grant
 
42
%# Best Practical Solutions,  LLC a nonexclusive, worldwide, irrevocable,
 
43
%# royalty-free, perpetual, license to use, copy, create derivative
 
44
%# works based on those contributions, and sublicense and distribute
 
45
%# those contributions and any derivatives thereof.
 
46
%# 
 
47
%# END BPS TAGGED BLOCK }}}
 
48
<%args>
 
49
$Query => "id > 0"
 
50
$PrimaryGroupBy => 'Queue'
 
51
$SecondaryGroupBy => undef
 
52
$ChartStyle => 'bars'
 
53
</%args>
 
54
<%init>
 
55
use RT::Report::Tickets;
 
56
my $tix = RT::Report::Tickets->new( $session{'CurrentUser'} );
 
57
$tix->FromSQL( $Query );
 
58
my $count_name = $tix->Column( FUNCTION => 'COUNT', FIELD => 'id' );
 
59
$tix->GroupBy( FIELD => $PrimaryGroupBy );
 
60
my $value_name = $tix->Column( FIELD => $PrimaryGroupBy );
 
61
 
 
62
my %class = (
 
63
    Queue => 'RT::Queue',
 
64
    Owner => 'RT::User',
 
65
);
 
66
my $class = $class{ $PrimaryGroupBy };
 
67
 
 
68
my (@keys, @values);
 
69
while ( my $entry = $tix->Next ) {
 
70
    if ($class) {
 
71
        my $q = $class->new( $session{'CurrentUser'} );
 
72
        $q->Load( $entry->__Value( $value_name ) );
 
73
        push @keys, $q->Name;
 
74
    }
 
75
    else {
 
76
        push @keys, $entry->__Value( $value_name );
 
77
    }
 
78
    $keys[-1] ||= loc('(no value)');
 
79
    push @values, $entry->__Value( $count_name );
 
80
}
 
81
 
 
82
# XXX: Convert 1970-01-01 date to the 'Not Set'
 
83
# this code should be generalized!!!
 
84
if ( $PrimaryGroupBy =~ /(Daily|Monthly|Annually)$/ ) {
 
85
    my $re;
 
86
    $re = qr{1970-01-01} if $PrimaryGroupBy =~ /Daily$/;
 
87
    $re = qr{1970-01} if $PrimaryGroupBy =~ /Monthly$/;
 
88
    $re = qr{1970} if $PrimaryGroupBy =~ /Annually$/;
 
89
    foreach (@keys) {
 
90
        s/^$re/loc('Not Set')/e;
 
91
    }
 
92
}
 
93
 
 
94
my %data;
 
95
foreach my $key (@keys) { $data{$key} = shift @values; }
 
96
my @sorted_keys = sort @keys;
 
97
my @sorted_values = map { $data{$_}} @sorted_keys;
 
98
 
 
99
 
 
100
my $query_string = $m->comp('/Elements/QueryString', %ARGS);
 
101
</%init>
 
102
 
 
103
<% loc('Query:') %>&nbsp;<% $Query %><br />
 
104
 
 
105
<img src="<%RT->Config->Get('WebPath')%>/Search/Chart?<%$query_string|n%>" /><br />
 
106
 
 
107
<table class="collection-as-table">
 
108
<tr>
 
109
<th class="collection-as-table"><% $tix->Label($PrimaryGroupBy) %>
 
110
</th>
 
111
<th class="collection-as-table"><&|/l&>Tickets</&>
 
112
</th>
 
113
</tr>
 
114
% my ($i,$total);
 
115
% while (my $key = shift @sorted_keys) {
 
116
% $i++;
 
117
% my $value = shift @sorted_values;
 
118
% $total += $value;
 
119
<tr class="<%$i%2 ? 'evenline' : 'oddline' %>">
 
120
<td class="label collection-as-table">
 
121
<%$key%>
 
122
</td>
 
123
<td class="value collection-as-table">
 
124
<%$value%>
 
125
</td>
 
126
</tr>
 
127
% }
 
128
 
 
129
%$i++;
 
130
<tr class="<%$i%2 ? 'evenline' : 'oddline' %>">
 
131
<td class="label collection-as-table">
 
132
<%loc('Total')%>
 
133
</td>
 
134
<td class="value collection-as-table">
 
135
<%$total||''%>
 
136
</td>
 
137
</tr>
 
138
 
 
139
</table>