rt 4.0.23
[freeside.git] / rt / share / html / Search / Chart
index abee3e5..2a28d62 100644 (file)
@@ -1,40 +1,40 @@
 %# BEGIN BPS TAGGED BLOCK {{{
-%# 
+%#
 %# COPYRIGHT:
-%# 
-%# This software is Copyright (c) 1996-2009 Best Practical Solutions, LLC
-%#                                          <jesse@bestpractical.com>
-%# 
+%#
+%# This software is Copyright (c) 1996-2015 Best Practical Solutions, LLC
+%#                                          <sales@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., 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
 %# 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'
+$ChartStyle => 'bar'
 </%args>
 <%init>
 my $chart_class;
@@ -66,7 +65,8 @@ if ($ChartStyle eq 'pie') {
 
 use RT::Report::Tickets;
 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,
 );
@@ -146,28 +146,31 @@ if ($tix->Count == 0) {
 }
 
 if ($chart_class eq "GD::Graph::bars") {
+    my $count = keys %data;
     $chart->set(
         x_label => $tix->Label( $PrimaryGroupBy ),
         y_label => loc('Tickets'),
         show_values => 1,
-        bar_spacing => 5,
-        bargroup_spacing => 10,
         x_label_position => 0.6,
         y_label_position => 0.6,
         values_space => -1,
+# use a top margin enough to display values over the top line if needed
+        t_margin => 18,
 # the following line to make sure there's enough space for values to show
         y_max_value => 5*(int($max_value/5) + 2),
 # if there're too many bars or at least one key is too long, use vertical
-        x_labels_vertical => ( keys(%data) * $max_key_length > 60 ) ? 1 : 0,
+        x_labels_vertical => ( $count * $max_key_length > 60 ) ? 1 : 0,
+        $count > 30 ? ( bar_spacing => 1 ) : ( $count > 20 ? ( bar_spacing => 2 ) : 
+            ( $count > 10 ? ( bar_spacing => 3 ) : ( bar_spacing => 5 ) )
+        ),
     );
 }
 
 # refine values' colors, with both Color::Scheme's help and my own tweak
 $chart->{dclrs} = [
     '66cc66', 'ff6666', 'ffcc66', '663399',
-    '3333cc', 
-    '339933', '993333', '996633', '663399',
-    '33cc33', 'cc3333', 'cc9933', '6633cc'
+    '3333cc', '339933', '993333', '996633',
+    '33cc33', 'cc3333', 'cc9933', '6633cc',
 ];
 
 {