X-Git-Url: http://git.freeside.biz/gitweb/?p=freeside.git;a=blobdiff_plain;f=rt%2Fshare%2Fhtml%2FSearch%2FElements%2FChart;h=74dc8cec2f8901c567c2ae6cb3c9a838175c90f6;hp=3db92c4d8c44038672dd27f61ceb87d59744f3de;hb=7322f2afedcc2f427e997d1535a503613a83f088;hpb=63a268637b2d51a8766412617724b9436439deb6 diff --git a/rt/share/html/Search/Elements/Chart b/rt/share/html/Search/Elements/Chart index 3db92c4d8..74dc8cec2 100644 --- a/rt/share/html/Search/Elements/Chart +++ b/rt/share/html/Search/Elements/Chart @@ -1,40 +1,40 @@ %# BEGIN BPS TAGGED BLOCK {{{ -%# +%# %# COPYRIGHT: -%# -%# This software is Copyright (c) 1996-2009 Best Practical Solutions, LLC -%# -%# +%# +%# This software is Copyright (c) 1996-2016 Best Practical Solutions, LLC +%# +%# %# (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., 51 Franklin Street, Fifth Floor, Boston, MA %# 02110-1301 or visit their web page on the internet at %# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html. -%# -%# +%# +%# %# 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 @@ -43,105 +43,48 @@ %# 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> $Query => "id > 0" -$PrimaryGroupBy => 'Queue' -$SecondaryGroupBy => undef -$ChartStyle => 'bars' +@GroupBy => () +$ChartStyle => 'bar+table+sql' +@ChartFunction => 'COUNT' <%init> use RT::Report::Tickets; -$PrimaryGroupBy ||= 'Queue'; # make sure PrimaryGroupBy is not undef -my $tix = RT::Report::Tickets->new( $session{'CurrentUser'} ); -my ($count_name, $value_name) = $tix->SetupGroupings( - Query => $Query, GroupBy => $PrimaryGroupBy, -); +my $report = RT::Report::Tickets->new( $session{'CurrentUser'} ); -my %class = ( - Queue => 'RT::Queue', - Owner => 'RT::User', - Creator => 'RT::User', - LastUpdatedBy => 'RT::User', +my %columns = $report->SetupGroupings( + Query => $Query, + GroupBy => \@GroupBy, + Function => \@ChartFunction, ); -my $class = $class{ $PrimaryGroupBy }; - -my (@keys, @values); -while ( my $entry = $tix->Next ) { - if ($class) { - my $q = $class->new( $session{'CurrentUser'} ); - $q->Load( $entry->__Value( $value_name ) ); - push @keys, $q->Name; - } - else { - push @keys, $entry->__Value( $value_name ); - } - $keys[-1] ||= loc('(no value)'); - push @values, $entry->__Value( $count_name ); -} - -# XXX: Convert 1970-01-01 date to the 'Not Set' -# this code should be generalized!!! -if ( $PrimaryGroupBy =~ /(Daily|Monthly|Annually)$/ ) { - my $re; - $re = qr{1970-01-01} if $PrimaryGroupBy =~ /Daily$/; - $re = qr{1970-01} if $PrimaryGroupBy =~ /Monthly$/; - $re = qr{1970} if $PrimaryGroupBy =~ /Annually$/; - foreach (@keys) { - s/^$re/loc('Not Set')/e; - } -} -my %data; -my %loc_keys; -foreach my $key (@keys) { $data{$key} = shift @values; $loc_keys{$key} = loc($key); } -my @sorted_keys = map { $loc_keys{$_}} sort { $loc_keys{$a} cmp $loc_keys{$b} } keys %loc_keys; -my @sorted_values = map { $data{$_}} sort { $loc_keys{$a} cmp $loc_keys{$b} } keys %loc_keys; +$report->SortEntries; - -my $query_string = $m->comp('/Elements/QueryString', %ARGS); +my $query_string = $m->comp('/Elements/QueryString', %ARGS, GroupBy => \@GroupBy ); - -<% loc('Query:') %> <% $Query %>
- +
+% if ( ($ChartStyle || '') =~ /\b(pie|bar)\b/ ) { + % if (RT->Config->Get('DisableGD')) { <% loc('Graphical charts are not available.') %>
% } else { -
+% my $key = Digest::MD5::md5_hex( rand(1024) ); +% $session{'charts_cache'}{$key} = { columns => \%columns, report => $report->Serialize }; +% $session{'i'}++; + % } - - - - - - -% my ($i,$total); -% while (my $key = shift @sorted_keys) { -% $i++; -% my $value = shift @sorted_values; -% $total += $value; - - - - + % } -%$i++; - - - - +% if ( ($ChartStyle || '') =~ /\btable\b/ ) { +<& ChartTable, %ARGS, Table => { $report->FormatTable( %columns ) } &> +% } -
<% loc($tix->Label($PrimaryGroupBy)) %> -<&|/l&>Tickets -
-<%$key%> - -<%$value%> -
-<%loc('Total')%> - -<%$total||''%> -
+% if ( ($ChartStyle || '') =~ /\bsql\b/ ) { +
<% loc('Query') %>:<% $Query %>
+% } +