]> git.ipfire.org Git - thirdparty/bugzilla.git/commitdiff
Bug 215918 - All graphs that show numeric value on x-axis are useless and misleading...
authorgerv%gerv.net <>
Fri, 12 Sep 2003 05:34:04 +0000 (05:34 +0000)
committergerv%gerv.net <>
Fri, 12 Sep 2003 05:34:04 +0000 (05:34 +0000)
report.cgi

index 487859190bdf2a25ab80d62797d5d925df0efd41..9701907424398f79e742b797d13b4b8113571a32 100755 (executable)
@@ -156,6 +156,13 @@ my %names;
 
 # Read the bug data and count the bugs for each possible value of row, column
 # and table.
+#
+# We detect a numerical field, and sort appropriately, if all the values are
+# numeric.
+my $col_isnumeric = 1;
+my $row_isnumeric = 1;
+my $tbl_isnumeric = 1;
+
 while (MoreSQLData()) {
     my ($row, $col, $tbl) = FetchSQLData();
     $row = "" if ($row eq $columns{''});
@@ -166,11 +173,35 @@ while (MoreSQLData()) {
     $names{"col"}{$col}++;
     $names{"row"}{$row}++;
     $names{"tbl"}{$tbl}++;
+    
+    $col_isnumeric &&= ($col =~ /^-?\d+(\.\d+)?$/o);
+    $row_isnumeric &&= ($row =~ /^-?\d+(\.\d+)?$/o);
+    $tbl_isnumeric &&= ($tbl =~ /^-?\d+(\.\d+)?$/o);
 }
 
-my @col_names = sort(keys(%{$names{"col"}}));
-my @row_names = sort(keys(%{$names{"row"}}));
-my @tbl_names = sort(keys(%{$names{"tbl"}}));
+my @col_names;
+my @row_names;
+my @tbl_names;
+sub numerically { $a <=> $b }
+
+# Use the appropriate sort for each dimension
+if ($col_isnumeric) {
+    @col_names = sort numerically keys(%{$names{"col"}});
+} else {
+    @col_names = sort(keys(%{$names{"col"}}));
+}
+
+if ($row_isnumeric) {
+    @row_names = sort numerically keys(%{$names{"row"}});
+} else {
+    @row_names = sort(keys(%{$names{"row"}}));
+}
+
+if ($tbl_isnumeric) {
+    @tbl_names = sort numerically keys(%{$names{"tbl"}});
+} else {
+    @tbl_names = sort(keys(%{$names{"tbl"}}));
+}
 
 # The GD::Graph package requires a particular format of data, so once we've
 # gathered everything into the hashes and made sure we know the size of the