summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Bugzilla/Search.pm13
-rwxr-xr-xreport.cgi33
-rw-r--r--template/en/default/reports/report-table.html.tmpl2
3 files changed, 25 insertions, 23 deletions
diff --git a/Bugzilla/Search.pm b/Bugzilla/Search.pm
index 5c9d37d9a..3ec5394b9 100644
--- a/Bugzilla/Search.pm
+++ b/Bugzilla/Search.pm
@@ -36,8 +36,6 @@ use strict;
package Bugzilla::Search;
use base qw(Exporter);
@Bugzilla::Search::EXPORT = qw(
- EMPTY_COLUMN
-
IsValidQueryType
split_order_term
translate_old_column
@@ -397,11 +395,7 @@ use constant FIELD_MAP => {
long_desc => 'longdesc',
};
-# A SELECTed expression that we use as a placeholder if somebody selects
-# <none> for the X, Y, or Z axis in report.cgi.
-use constant EMPTY_COLUMN => '-1';
-
-# Some fields are not sorted on themselves, but on other fields.
+# Some fields are not sorted on themselves, but on other fields.
# We need to have a list of these fields and what they map to.
use constant SPECIAL_ORDER => {
'target_milestone' => {
@@ -644,7 +638,7 @@ sub REPORT_COLUMNS {
# These are fields that never go into the GROUP BY on any DB. bug_id
# is here because it *always* goes into the GROUP BY as the first item,
# so it should be skipped when determining extra GROUP BY columns.
-use constant GROUP_BY_SKIP => EMPTY_COLUMN, qw(
+use constant GROUP_BY_SKIP => qw(
bug_id
flagtypes.name
keywords
@@ -828,8 +822,7 @@ sub _sql_select {
my $alias = $column;
# Aliases cannot contain dots in them. We convert them to underscores.
$alias =~ s/\./_/g;
- my $sql = ($column eq EMPTY_COLUMN)
- ? EMPTY_COLUMN : COLUMNS->{$column}->{name} . " AS $alias";
+ my $sql = COLUMNS->{$column}->{name} . " AS $alias";
push(@sql_fields, $sql);
}
return @sql_fields;
diff --git a/report.cgi b/report.cgi
index 8d80b192f..a71776bfe 100755
--- a/report.cgi
+++ b/report.cgi
@@ -121,9 +121,7 @@ my $valid_columns = Bugzilla::Search::REPORT_COLUMNS;
|| ($valid_columns->{$tbl_field} && trick_taint($tbl_field))
|| ThrowCodeError("report_axis_invalid", {fld => "z", val => $tbl_field});
-my @axis_fields = ($row_field || EMPTY_COLUMN,
- $col_field || EMPTY_COLUMN,
- $tbl_field || EMPTY_COLUMN);
+my @axis_fields = grep { $_ } ($row_field, $col_field, $tbl_field);
# Clone the params, so that Bugzilla::Search can modify them
my $params = new Bugzilla::CGI($cgi);
@@ -154,16 +152,10 @@ my $row_isnumeric = 1;
my $tbl_isnumeric = 1;
foreach my $result (@$results) {
- my ($row, $col, $tbl) = @$result;
-
# handle empty dimension member names
- $row = ' ' if ($row eq '');
- $col = ' ' if ($col eq '');
- $tbl = ' ' if ($tbl eq '');
-
- $row = "" if ($row eq EMPTY_COLUMN);
- $col = "" if ($col eq EMPTY_COLUMN);
- $tbl = "" if ($tbl eq EMPTY_COLUMN);
+ my $row = check_value($row_field, $result);
+ my $col = check_value($col_field, $result);
+ my $tbl = check_value($tbl_field, $result);
$data{$tbl}{$col}{$row}++;
$names{"col"}{$col}++;
@@ -337,3 +329,20 @@ sub get_names {
return @sorted;
}
+
+sub check_value {
+ my ($field, $result) = @_;
+
+ my $value;
+ if (!defined $field) {
+ $value = '';
+ }
+ elsif ($field eq '') {
+ $value = ' ';
+ }
+ else {
+ $value = shift @$result;
+ $value = ' ' if (!defined $value || $value eq '');
+ }
+ return $value;
+}
diff --git a/template/en/default/reports/report-table.html.tmpl b/template/en/default/reports/report-table.html.tmpl
index cd854230f..f1418e6a9 100644
--- a/template/en/default/reports/report-table.html.tmpl
+++ b/template/en/default/reports/report-table.html.tmpl
@@ -187,7 +187,7 @@ YAHOO.util.Event.addListener(window, "load", function() {
[% FOREACH col = col_names %]
[% row_total = row_total + data.$tbl.$col.$row %]
[% NEXT IF col == "" %]
- [% col_totals.$col = col_totals.$col + data.$tbl.$col.$row %]
+ [% col_totals.$col = (col_totals.$col || 0) + data.$tbl.$col.$row %]
[% col_idx = 1 - col_idx %]
<td class="[% classes.$row_idx.$col_idx %]" align="center">