X-Git-Url: http://git.freeside.biz/gitweb/?p=freeside.git;a=blobdiff_plain;f=rt%2Fshare%2Fhtml%2FSearch%2FElements%2FChart;h=74dc8cec2f8901c567c2ae6cb3c9a838175c90f6;hp=7343900319ad8298e5aade9dfcc442d53c4cffe1;hb=7322f2afedcc2f427e997d1535a503613a83f088;hpb=7588a4ac90a9b07c08a3107cd1107d773be1c991 diff --git a/rt/share/html/Search/Elements/Chart b/rt/share/html/Search/Elements/Chart index 734390031..74dc8cec2 100644 --- a/rt/share/html/Search/Elements/Chart +++ b/rt/share/html/Search/Elements/Chart @@ -2,7 +2,7 @@ %# %# COPYRIGHT: %# -%# This software is Copyright (c) 1996-2013 Best Practical Solutions, LLC +%# This software is Copyright (c) 1996-2016 Best Practical Solutions, LLC %# %# %# (Except where explicitly superseded by other copyright notices) @@ -47,107 +47,44 @@ %# END BPS TAGGED BLOCK }}} <%args> $Query => "id > 0" -$PrimaryGroupBy => 'Queue' -$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 %AllowedGroupings = reverse $tix->Groupings( Query => $Query ); -$PrimaryGroupBy = 'Queue' unless exists $AllowedGroupings{$PrimaryGroupBy}; -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->LabelValue( $value_name ) ); - push @keys, $q->Name; - } - else { - push @keys, $entry->LabelValue( $value_name ); - } - $keys[-1] ||= loc('(no value)'); - push @values, $entry->__Value( $count_name ); -} -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; -my $query_string = $m->comp('/Elements/QueryString', %ARGS); +$report->SortEntries; -my ($i,$total); +my $query_string = $m->comp('/Elements/QueryString', %ARGS, GroupBy => \@GroupBy );
- +% 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'}++; + % }
- - - - - -<%perl> - while (my $key = shift @sorted_keys) { - $i++; - my $value = shift @sorted_values; - $total += $value; - - -<%perl> -# TODO sadly we don't have "creator.city is null" or alike support yet -# so no link if the key is undef for now - if ( $PrimaryGroupBy !~ /(Hourly|Daily|Monthly|Annually)$/ - && $key ne loc('(no value)') ) { - my $group = $PrimaryGroupBy; $group =~ s! !.!; - my %orig_keys = reverse %loc_keys; - my $QueryString = $m->comp('/Elements/QueryString', - Query => "$Query and $group = '$orig_keys{$key}'", - Format => $ARGS{Format}, - Rows => $ARGS{Rows}, - OrderBy => $ARGS{OrderBy}, - Order => $ARGS{Order}, - ); - - - -% } else { - - -% } - % } -%$i++; - - - - +% if ( ($ChartStyle || '') =~ /\btable\b/ ) { +<& ChartTable, %ARGS, Table => { $report->FormatTable( %columns ) } &> +% } -
<% loc($tix->Label($PrimaryGroupBy)) %> -<&|/l&>Tickets -
-Config->Get('WebPath') %>/Search/Results.html?<%$QueryString%>><%$key%> - -Config->Get('WebPath') %>/Search/Results.html?<%$QueryString%>><%$value%> -<% $key %><% $value %>
<%loc('Total')%><%$total||'0'%>
+% if ( ($ChartStyle || '') =~ /\bsql\b/ ) {
<% loc('Query') %>:<% $Query %>
+% }