[Rt-commit] rt branch, 4.2/date-time-improvements-in-charts, updated. rt-3.8.10-70-g1f46079
Ruslan Zakirov
ruz at bestpractical.com
Wed Jun 15 15:08:47 EDT 2011
The branch, 4.2/date-time-improvements-in-charts has been updated
via 1f46079b3fa549eab9d7e3789e769af914ab0d65 (commit)
via 0b414bf5726570a22ec8a190e2dc96cbb5a18df4 (commit)
via a80ced57895db66633d783196cd641a13e74f2c7 (commit)
via c6578a24aeeca615d9ff4a208e1115d8a4175698 (commit)
via 925366c113139c86325c544fe39b20b144f4a25f (commit)
via df37639b42f74c3f95d769f28b9c91b440de813e (commit)
from fc88cc548e6828f7171dd6331e54d60e5e565891 (commit)
Summary of changes:
TODO.charts | 12 +++-
lib/RT/Report/Tickets.pm | 36 +++++++------
lib/RT/Report/Tickets/Entry.pm | 15 +++--
share/html/Search/Chart | 65 +++++++++++------------
share/html/Search/Chart.html | 33 +++++++++---
share/html/Search/Elements/Chart | 40 +++++++++------
share/html/Search/Elements/SelectChartFunction | 5 ++
7 files changed, 122 insertions(+), 84 deletions(-)
- Log -----------------------------------------------------------------
commit df37639b42f74c3f95d769f28b9c91b440de813e
Author: Ruslan Zakirov <ruz at bestpractical.com>
Date: Wed Jun 15 12:18:50 2011 +0400
incidently deleted index increment
diff --git a/share/html/Search/Elements/Chart b/share/html/Search/Elements/Chart
index 836898f..789e8af 100644
--- a/share/html/Search/Elements/Chart
+++ b/share/html/Search/Elements/Chart
@@ -95,7 +95,7 @@ my $query_string = $m->comp('/Elements/QueryString', %ARGS);
% my ($i,$total) = (0, 0);
% while ( my $entry = $tix->Next ) {
-<tr class="<% $i%2 ? 'evenline' : 'oddline' %>">
+<tr class="<% ++$i%2 ? 'evenline' : 'oddline' %>">
<td class="label collection-as-table">
% my $key = $entry->LabelValue( $value_name ) || loc('(no value)');
commit 925366c113139c86325c544fe39b20b144f4a25f
Author: Ruslan Zakirov <ruz at bestpractical.com>
Date: Wed Jun 15 12:22:16 2011 +0400
localize reports' values in libs
diff --git a/lib/RT/Report/Tickets.pm b/lib/RT/Report/Tickets.pm
index d80e87a..2aa0b65 100644
--- a/lib/RT/Report/Tickets.pm
+++ b/lib/RT/Report/Tickets.pm
@@ -90,6 +90,7 @@ our %GROUPINGS_META = (
$queue->Load( $args{'VALUE'} );
return $queue->Name;
},
+ Localize => 1,
},
User => {
SubFields => [qw(
@@ -128,10 +129,10 @@ our %GROUPINGS_META = (
return $raw unless defined $raw;
if ( $args{'SUBKEY'} eq 'DayOfWeek' ) {
- return $RT::Date::DAYS_OF_WEEK[ int $raw ];
+ return $self->loc($RT::Date::DAYS_OF_WEEK[ int $raw ]);
}
elsif ( $args{'SUBKEY'} eq 'Month' ) {
- return $RT::Date::MONTHS[ int $raw ];
+ return $self->loc($RT::Date::MONTHS[ int $raw ]);
}
return $raw;
},
@@ -188,6 +189,7 @@ our %GROUPINGS_META = (
},
},
Enum => {
+ Localize => 1,
},
);
@@ -496,7 +498,7 @@ sub Next {
sub NewItem {
my $self = shift;
- my $res = RT::Report::Tickets::Entry->new($RT::SystemUser); # $self->CurrentUser);
+ my $res = RT::Report::Tickets::Entry->new($self->CurrentUser);
$res->{'column_info'} = $self->{'column_info'};
return $res;
}
diff --git a/lib/RT/Report/Tickets/Entry.pm b/lib/RT/Report/Tickets/Entry.pm
index d322174..7cd5e1a 100644
--- a/lib/RT/Report/Tickets/Entry.pm
+++ b/lib/RT/Report/Tickets/Entry.pm
@@ -81,16 +81,19 @@ sub LabelValue {
my $name = shift;
my $raw = $self->RawValue( $name, @_ );
-
my $info = $self->ColumnInfo( $name );
-
my $meta = $info->{'META'};
- return $raw unless $meta && $meta->{'Display'};
- my $code = $self->FindImplementationCode( $meta->{'Display'} );
- return $raw unless $code;
+ if (
+ $meta and $meta->{'Display'}
+ and my $code = $self->FindImplementationCode( $meta->{'Display'} )
+ ) {
+ return $code->( $self, %$info, VALUE => $raw );
+ }
- return $code->( $self, %$info, VALUE => $raw );
+ return $self->loc('(no value)') unless defined $raw && length $raw;
+ return $self->loc($raw) if $info->{'META'}{'Localize'};
+ return $raw;
}
sub RawValue {
diff --git a/share/html/Search/Chart b/share/html/Search/Chart
index a8337e9..07858f8 100644
--- a/share/html/Search/Chart
+++ b/share/html/Search/Chart
@@ -80,14 +80,11 @@ my %data;
my $max_value = 0;
my $max_key_length = 0;
while ( my $entry = $tix->Next ) {
- my $key = $entry->LabelValue($value_name)
- || '(no value)';
+ my $key = $entry->LabelValue($value_name);
- my $value = $entry->__Value( $count_name );
+ my $value = $entry->RawValue( $count_name );
if ($chart_class eq 'GD::Graph::pie') {
- $key = loc($key) ." - ". $value;
- } else {
- $key = loc($key);
+ $key .= ' - '. $value;
}
$data{ $key } = $value;
$max_value = $value if $max_value < $value;
diff --git a/share/html/Search/Elements/Chart b/share/html/Search/Elements/Chart
index 789e8af..ffc73ad 100644
--- a/share/html/Search/Elements/Chart
+++ b/share/html/Search/Elements/Chart
@@ -98,7 +98,7 @@ my $query_string = $m->comp('/Elements/QueryString', %ARGS);
<tr class="<% ++$i%2 ? 'evenline' : 'oddline' %>">
<td class="label collection-as-table">
-% my $key = $entry->LabelValue( $value_name ) || loc('(no value)');
+% my $key = $entry->LabelValue( $value_name );
% my $entry_query = $entry->Query;
% if ( $entry_query ) {
<a href="<% RT->Config->Get('WebPath') %>/Search/Results.html?Query=<% "$Query AND $entry_query" |u %>&<% $base_query |hn %>"><% $key %></a>
commit c6578a24aeeca615d9ff4a208e1115d8a4175698
Author: Ruslan Zakirov <ruz at bestpractical.com>
Date: Wed Jun 15 12:50:50 2011 +0400
deal with 'no data' earlier
diff --git a/share/html/Search/Chart b/share/html/Search/Chart
index 07858f8..1955617 100644
--- a/share/html/Search/Chart
+++ b/share/html/Search/Chart
@@ -91,31 +91,15 @@ while ( my $entry = $tix->Next ) {
$max_key_length = length $key if $max_key_length < length $key;
}
-unless (keys %data) {
- $data{''} = 0;
-}
-
-
-my $chart = $chart_class->new( 600 => 400 );
-$chart->set( pie_height => 60 ) if $chart_class eq 'GD::Graph::pie';
my %font_config = RT->Config->Get('ChartFont');
my $font = $font_config{ $session{CurrentUser}->UserObj->Lang || '' }
- || $font_config{'others'};
-$chart->set_title_font( $font, 16 ) if $chart->can('set_title_font');
-$chart->set_legend_font( $font, 16 ) if $chart->can('set_legend_font');
-$chart->set_x_label_font( $font, 14 ) if $chart->can('set_x_label_font');
-$chart->set_y_label_font( $font, 14 ) if $chart->can('set_y_label_font');
-$chart->set_label_font( $font, 14 ) if $chart->can('set_label_font');
-$chart->set_x_axis_font( $font, 12 ) if $chart->can('set_x_axis_font');
-$chart->set_y_axis_font( $font, 12 ) if $chart->can('set_y_axis_font');
-$chart->set_values_font( $font, 12 ) if $chart->can('set_values_font');
-$chart->set_value_font( $font, 12 ) if $chart->can('set_value_font');
+ || $font_config{'others'};
# Pie charts don't like having no input, so we show a special image
# that indicates an error message. Because this is used in an <img>
# context, it can't be a simple error message. Without this check,
# the chart will just be a non-loading image.
-if ($tix->Count == 0) {
+unless ( $tix->Count ) {
my $plot = GD::Image->new(600 => 400);
$plot->colorAllocate(255, 255, 255); # background
my $black = $plot->colorAllocate(0, 0, 0);
@@ -131,6 +115,18 @@ if ($tix->Count == 0) {
$m->comp( 'SELF:Plot', plot => $plot, %ARGS );
}
+my $chart = $chart_class->new( 600 => 400 );
+$chart->set( pie_height => 60 ) if $chart_class eq 'GD::Graph::pie';
+$chart->set_title_font( $font, 16 ) if $chart->can('set_title_font');
+$chart->set_legend_font( $font, 16 ) if $chart->can('set_legend_font');
+$chart->set_x_label_font( $font, 14 ) if $chart->can('set_x_label_font');
+$chart->set_y_label_font( $font, 14 ) if $chart->can('set_y_label_font');
+$chart->set_label_font( $font, 14 ) if $chart->can('set_label_font');
+$chart->set_x_axis_font( $font, 12 ) if $chart->can('set_x_axis_font');
+$chart->set_y_axis_font( $font, 12 ) if $chart->can('set_y_axis_font');
+$chart->set_values_font( $font, 12 ) if $chart->can('set_values_font');
+$chart->set_value_font( $font, 12 ) if $chart->can('set_value_font');
+
if ($chart_class eq "GD::Graph::bars") {
my $count = keys %data;
$chart->set(
commit a80ced57895db66633d783196cd641a13e74f2c7
Author: Ruslan Zakirov <ruz at bestpractical.com>
Date: Wed Jun 15 13:05:20 2011 +0400
use new sorting method for image chart
diff --git a/share/html/Search/Chart b/share/html/Search/Chart
index 1955617..03de74f 100644
--- a/share/html/Search/Chart
+++ b/share/html/Search/Chart
@@ -76,17 +76,21 @@ my ($count_name, $value_name) = $tix->SetupGroupings(
Function => $ChartFunction,
);
-my %data;
+$tix->SortEntries;
+
+my @data = ([],[]);
my $max_value = 0;
my $max_key_length = 0;
while ( my $entry = $tix->Next ) {
my $key = $entry->LabelValue($value_name);
-
my $value = $entry->RawValue( $count_name );
if ($chart_class eq 'GD::Graph::pie') {
$key .= ' - '. $value;
}
- $data{ $key } = $value;
+
+ push @{ $data[0] }, $key;
+ push @{ $data[1] }, $value;
+
$max_value = $value if $max_value < $value;
$max_key_length = length $key if $max_key_length < length $key;
}
@@ -128,7 +132,7 @@ $chart->set_values_font( $font, 12 ) if $chart->can('set_values_font');
$chart->set_value_font( $font, 12 ) if $chart->can('set_value_font');
if ($chart_class eq "GD::Graph::bars") {
- my $count = keys %data;
+ my $count = @{ $data[0] };
$chart->set(
x_label => $tix->Label( $value_name ),
y_label => $tix->Label( $count_name ),
@@ -165,7 +169,7 @@ $chart->{dclrs} = [
};
}
-my $plot = $chart->plot( [ [sort keys %data], [map $data{$_}, sort keys %data] ] ) or die $chart->error;
+my $plot = $chart->plot( \@data ) or die $chart->error;
$m->comp( 'SELF:Plot', plot => $plot, %ARGS );
</%init>
commit 0b414bf5726570a22ec8a190e2dc96cbb5a18df4
Author: Ruslan Zakirov <ruz at bestpractical.com>
Date: Wed Jun 15 13:07:03 2011 +0400
update TODO
diff --git a/TODO.charts b/TODO.charts
index 7c7362a..646d6a3 100644
--- a/TODO.charts
+++ b/TODO.charts
@@ -8,7 +8,3 @@ to dot
it'd be nice if full day and month names worked in
"Created.DayOfWeek = 'Thu'" searches.
-we shouldn't sort "day of week" bars according to translated
-values. Now we get Mon, Fri, Wed, Sat, Thu... in russian, so
-it's very annoying to look at.
-
commit 1f46079b3fa549eab9d7e3789e769af914ab0d65
Author: Ruslan Zakirov <ruz at bestpractical.com>
Date: Wed Jun 15 23:05:45 2011 +0400
make it possible to calculate multiple functions
* pictures only show first function
* had to change return value of SetupGroupings
diff --git a/TODO.charts b/TODO.charts
index 646d6a3..bd79628 100644
--- a/TODO.charts
+++ b/TODO.charts
@@ -8,3 +8,13 @@ to dot
it'd be nice if full day and month names worked in
"Created.DayOfWeek = 'Thu'" searches.
+support more than one calculated function in diagrams,
+at least in bars
+
+support multiple groupings
+
+ support putting grouppings as columns of the table
+
+ support horizontal totals when there are gropings as columns
+
+
diff --git a/lib/RT/Report/Tickets.pm b/lib/RT/Report/Tickets.pm
index 2aa0b65..9562c39 100644
--- a/lib/RT/Report/Tickets.pm
+++ b/lib/RT/Report/Tickets.pm
@@ -377,7 +377,8 @@ sub SetupGroupings {
%GROUPINGS = @GROUPINGS unless keys %GROUPINGS;
- my @group_by = ref( $args{'GroupBy'} )? @{ $args{'GroupBy'} } : ($args{'GroupBy'});
+ my @group_by = grep defined && length,
+ ref( $args{'GroupBy'} )? @{ $args{'GroupBy'} } : ($args{'GroupBy'});
foreach my $e ( @group_by ) {
my ($key, $subkey) = split /\./, $e, 2;
$e = { $self->_FieldToFunction( KEY => $key, SUBKEY => $subkey ) };
@@ -387,29 +388,30 @@ sub SetupGroupings {
}
$self->GroupBy( @group_by );
- my (@res, %column_info);
+ my %res = (Groups => [], Functions => []);
+ my %column_info;
- my @function = ref( $args{'Function'} )? @{ $args{'Function'} } : ($args{'Function'});
+ foreach my $group_by ( @group_by ) {
+ $group_by->{'NAME'} = $self->Column( %$group_by );
+ $column_info{ $group_by->{'NAME'} } = $group_by;
+ push @{ $res{'Groups'} }, $group_by->{'NAME'};
+ }
+
+ my @function = grep defined && length,
+ ref( $args{'Function'} )? @{ $args{'Function'} } : ($args{'Function'});
foreach my $e ( @function ) {
my %args = $self->_StatsToFunction( $e );
$args{'TYPE'} = 'statistic';
$args{'INFO'} = $STATISTICS{ $e };
$args{'META'} = $STATISTICS_META{ $args{'INFO'}[1] };
- push @res, $self->Column( %args );
- $args{'NAME'} = $res[-1];
+ $args{'NAME'} = $self->Column( %args );
+ push @{ $res{'Functions'} }, $args{'NAME'};
$column_info{ $args{'NAME'} } = \%args;
}
- foreach my $group_by ( @group_by ) {
- my $alias = $self->Column( %$group_by );
- $column_info{ $alias } = $group_by;
- $group_by->{'NAME'} = $alias;
- push @res, $alias;
- }
-
$self->{'column_info'} = \%column_info;
- return @res;
+ return %res;
}
=head2 _DoSearch
diff --git a/share/html/Search/Chart b/share/html/Search/Chart
index 03de74f..35faffb1 100644
--- a/share/html/Search/Chart
+++ b/share/html/Search/Chart
@@ -49,7 +49,7 @@
$Query => "id > 0"
$PrimaryGroupBy => 'Queue'
$ChartStyle => 'bars'
-$ChartFunction => 'COUNT id'
+ at ChartFunction => 'COUNT'
</%args>
<%init>
my $chart_class;
@@ -70,10 +70,10 @@ my $tix = RT::Report::Tickets->new( $session{'CurrentUser'} );
$PrimaryGroupBy = 'Queue'
unless $tix->IsValidGrouping( Query => $Query, GroupBy => $PrimaryGroupBy );
-my ($count_name, $value_name) = $tix->SetupGroupings(
+my %columns = $tix->SetupGroupings(
Query => $Query,
GroupBy => $PrimaryGroupBy,
- Function => $ChartFunction,
+ Function => (grep defined && length, @ChartFunction)[0],
);
$tix->SortEntries;
@@ -82,8 +82,8 @@ my @data = ([],[]);
my $max_value = 0;
my $max_key_length = 0;
while ( my $entry = $tix->Next ) {
- my $key = $entry->LabelValue($value_name);
- my $value = $entry->RawValue( $count_name );
+ my $key = join ' - ', map $entry->LabelValue( $_ ), @{ $columns{'Groups'} };
+ my $value = $entry->RawValue( $columns{'Functions'}[0] );
if ($chart_class eq 'GD::Graph::pie') {
$key .= ' - '. $value;
}
@@ -134,8 +134,8 @@ $chart->set_value_font( $font, 12 ) if $chart->can('set_value_font');
if ($chart_class eq "GD::Graph::bars") {
my $count = @{ $data[0] };
$chart->set(
- x_label => $tix->Label( $value_name ),
- y_label => $tix->Label( $count_name ),
+ x_label => join( ' - ', map $tix->Label( $_ ), @{ $columns{'Groups'} } ),
+ y_label => $tix->Label( $columns{'Functions'}[0] ),
show_values => 1,
x_label_position => 0.6,
y_label_position => 0.6,
diff --git a/share/html/Search/Chart.html b/share/html/Search/Chart.html
index 5b92775..8f00726 100644
--- a/share/html/Search/Chart.html
+++ b/share/html/Search/Chart.html
@@ -48,7 +48,7 @@
<%args>
$PrimaryGroupBy => 'Queue'
$ChartStyle => 'bars'
-$ChartFunction => 'COUNT id'
+ at ChartFunction => ('COUNT')
$Description => undef
</%args>
<%init>
@@ -85,16 +85,31 @@ my @actions = $m->comp( '/Widgets/SavedSearch:process', args => \%ARGS, self =>
<& /Search/Elements/Chart, %ARGS &>
<br />
-<&| /Widgets/TitleBox, title => loc('Graph Properties')&>
-<form method="get" action="<%RT->Config->Get('WebPath')%>/Search/Chart.html">
+<form method="get" action="<% RT->Config->Get('WebPath') %>/Search/Chart.html">
<input type="hidden" class="hidden" name="Query" value="<% $ARGS{Query} %>" />
<input type="hidden" class="hidden" name="SavedChartSearchId" value="<% $saved_search->{SearchId} || 'new' %>" />
-<&|/l,
- $m->scomp('Elements/SelectChartFunction', Default => $ChartFunction),
- $m->scomp('Elements/SelectChartType', Default => $ChartStyle),
- $m->scomp('Elements/SelectGroupBy', Name => 'PrimaryGroupBy', Query => $ARGS{Query}, Default => $PrimaryGroupBy)
-&>[_1] [_2] chart by [_3]</&><input type="submit" class="button" value="<%loc('Update Graph')%>" />
-</form>
+
+<&| /Widgets/TitleBox, title => loc('Properties') &>
+<% loc('Group by') %> <& Elements/SelectGroupBy,
+ Name => 'PrimaryGroupBy',
+ Query => $ARGS{Query},
+ Default => $PrimaryGroupBy
+&><br />
+
+<% loc('Count') %> <& Elements/SelectChartFunction, Default => $ChartFunction[0] &>
+<& Elements/SelectChartFunction, Default => $ChartFunction[1], ShowEmpty => 1 &>
+<& Elements/SelectChartFunction, Default => $ChartFunction[2], ShowEmpty => 1 &><br />
+
+</&>
+
+<&| /Widgets/TitleBox, title => loc('Picture') &>
+<% loc('Style') %> <& Elements/SelectChartType, Default => $ChartStyle, Name => 'ChartStyle' &>
+</&>
+
+<&| /Widgets/TitleBox, title => loc('Table') &>
</&>
+<& /Elements/Submit, Label => loc('Update Graph'), Name => 'Update' &>
+</form>
+
<& /Widgets/SavedSearch:show, %ARGS, Action => 'Chart.html', self => $saved_search, Title => loc('Saved charts') &>
diff --git a/share/html/Search/Elements/Chart b/share/html/Search/Elements/Chart
index ffc73ad..e03a921 100644
--- a/share/html/Search/Elements/Chart
+++ b/share/html/Search/Elements/Chart
@@ -49,7 +49,7 @@
$Query => "id > 0"
$PrimaryGroupBy => 'Queue'
$ChartStyle => 'bars'
-$ChartFunction => 'COUNT id'
+ at ChartFunction => 'COUNT'
</%args>
<%init>
use RT::Report::Tickets;
@@ -60,10 +60,10 @@ my $tix = RT::Report::Tickets->new( $session{'CurrentUser'} );
$PrimaryGroupBy = 'Queue'
unless $tix->IsValidGrouping( Query => $Query, GroupBy => $PrimaryGroupBy );
-my ($count_name, $value_name) = $tix->SetupGroupings(
+my %columns = $tix->SetupGroupings(
Query => $Query,
GroupBy => $PrimaryGroupBy,
- Function => $ChartFunction,
+ Function => \@ChartFunction,
);
my $query_string = $m->comp('/Elements/QueryString', %ARGS);
@@ -80,8 +80,9 @@ my $query_string = $m->comp('/Elements/QueryString', %ARGS);
<table class="collection-as-table">
<tr>
-<th class="collection-as-table"><% $tix->Label( $value_name ) %></th>
-<th class="collection-as-table"><% $tix->Label( $count_name ) %></th>
+% foreach my $column ( @{ $columns{'Groups'} }, @{ $columns{'Functions'} } ) {
+<th class="collection-as-table"><% $tix->Label( $column ) %></th>
+% }
</tr>
% my $base_query = $m->comp('/Elements/QueryString',
@@ -93,30 +94,37 @@ my $query_string = $m->comp('/Elements/QueryString', %ARGS);
% $tix->SortEntries;
-% my ($i,$total) = (0, 0);
+% my $i = 0;
+% my %total = map { $_ => 0 } @{ $columns{Functions} };
% while ( my $entry = $tix->Next ) {
<tr class="<% ++$i%2 ? 'evenline' : 'oddline' %>">
-<td class="label collection-as-table">
-% my $key = $entry->LabelValue( $value_name );
+% foreach my $column ( @{ $columns{'Groups'} } ) {
+<td class="label collection-as-table"><% $entry->LabelValue( $column ) %></td>
+% }
+
% my $entry_query = $entry->Query;
+
+% foreach my $column ( @{ $columns{'Functions'} } ) {
+<td class="value collection-as-table">
+% $total{ $column } += my $value = $entry->RawValue( $column );
% if ( $entry_query ) {
-<a href="<% RT->Config->Get('WebPath') %>/Search/Results.html?Query=<% "$Query AND $entry_query" |u %>&<% $base_query |hn %>"><% $key %></a>
+<a href="<% RT->Config->Get('WebPath') %>/Search/Results.html?Query=<% "$Query AND $entry_query" |un %>&<% $base_query %>"><% $value %></a>
% } else {
-<% $key %>
+<% $value %>
% }
</td>
-
-% $total += my $value = $entry->RawValue( $count_name );
-<td class="value collection-as-table"><%$value%></td>
+% }
</tr>
% }
% $i++;
<tr class="<% $i%2 ? 'evenline' : 'oddline' %>">
-<td class="label collection-as-table"><% loc('Total') %></td>
-<td class="value collection-as-table"><% $total || '' %></td>
+<td class="label collection-as-table" colspan="<% scalar @{ $columns{'Groups'} } %>"><% loc('Total') %></td>
+% foreach my $column ( @{ $columns{'Functions'} } ) {
+<td class="value collection-as-table"><% $total{ $column } %></td>
+% }
</tr>
</table>
diff --git a/share/html/Search/Elements/SelectChartFunction b/share/html/Search/Elements/SelectChartFunction
index 1ee9db9..37e0b40 100644
--- a/share/html/Search/Elements/SelectChartFunction
+++ b/share/html/Search/Elements/SelectChartFunction
@@ -46,6 +46,9 @@
%#
%# END BPS TAGGED BLOCK }}}
<select name="<% $Name %>">
+% if ( $ShowEmpty ) {
+<option value=""> </option>
+% }
% while ( my ($value, $display) = splice @functions, 0, 2 ) {
<option value="<% $value %>"<% $value eq $Default ? qq[ selected="selected"] : '' |n %>><% loc( $display ) %></option>
% }
@@ -53,7 +56,9 @@
<%ARGS>
$Name => 'ChartFunction'
$Default => 'COUNT'
+$ShowEmpty => 0
</%ARGS>
<%INIT>
my @functions = RT::Report::Tickets->Statistics;
+$Default = '' unless defined $Default;
</%INIT>
-----------------------------------------------------------------------
More information about the Rt-commit
mailing list