summaryrefslogtreecommitdiffstats
path: root/template
diff options
context:
space:
mode:
authorgerv%gerv.net <>2002-10-29 16:43:57 +0100
committergerv%gerv.net <>2002-10-29 16:43:57 +0100
commitdad297316ae335ccc20e5d0546525d1c117131c0 (patch)
tree32ee0d8e77eb8ae137396c894926d25af6255c95 /template
parent5b6b45ec09591f41c42ce66bbd3b2ad4c41dc014 (diff)
downloadbugzilla-dad297316ae335ccc20e5d0546525d1c117131c0.tar.gz
bugzilla-dad297316ae335ccc20e5d0546525d1c117131c0.tar.xz
Bug 173005 - Add bar charts, pie charts etc. to reporting. Patch by gerv; 2xr=joel.
Diffstat (limited to 'template')
-rw-r--r--template/en/default/global/code-error.html.tmpl4
-rw-r--r--template/en/default/global/field-descs.html.tmpl2
-rw-r--r--template/en/default/global/user-error.html.tmpl13
-rw-r--r--template/en/default/index.html.tmpl2
-rw-r--r--template/en/default/reports/menu.html.tmpl8
-rw-r--r--template/en/default/reports/report-bar.png.tmpl54
-rw-r--r--template/en/default/reports/report-line.png.tmpl53
-rw-r--r--template/en/default/reports/report-pie.png.tmpl35
-rw-r--r--template/en/default/reports/report-table.csv.tmpl54
-rw-r--r--template/en/default/reports/report-table.html.tmpl123
-rw-r--r--template/en/default/reports/report.csv.tmpl26
-rw-r--r--template/en/default/reports/report.html.tmpl156
-rw-r--r--template/en/default/search/search-report-graph.html.tmpl112
-rw-r--r--template/en/default/search/search-report-select.html.tmpl47
-rw-r--r--template/en/default/search/search-report-table.html.tmpl43
15 files changed, 570 insertions, 162 deletions
diff --git a/template/en/default/global/code-error.html.tmpl b/template/en/default/global/code-error.html.tmpl
index baad2f5f0..42c07ab2d 100644
--- a/template/en/default/global/code-error.html.tmpl
+++ b/template/en/default/global/code-error.html.tmpl
@@ -119,6 +119,10 @@
The [% component FILTER html %] component doesn't exist in the
[% product FILTER html %] product.
+ [% ELSIF error == "invalid_dimensions" %]
+ [% title = "Invalid Dimensions" %]
+ The width or height specified is not a positive integer.
+
[% ELSIF error == "mismatched_bug_ids_on_obsolete" %]
Attachment [% attach_id FILTER html %] ([% description FILTER html %])
is attached to bug [% attach_bug_id FILTER html %], but you tried to
diff --git a/template/en/default/global/field-descs.html.tmpl b/template/en/default/global/field-descs.html.tmpl
index 6349b6b1b..3e83da7c0 100644
--- a/template/en/default/global/field-descs.html.tmpl
+++ b/template/en/default/global/field-descs.html.tmpl
@@ -1,4 +1,4 @@
-<!-- 1.0@bugzilla.org -->
+[%# 1.0@bugzilla.org %]
[%# The contents of this file are subject to the Mozilla Public
# License Version 1.1 (the "License"); you may not use this file
# except in compliance with the License. You may obtain a copy of
diff --git a/template/en/default/global/user-error.html.tmpl b/template/en/default/global/user-error.html.tmpl
index ddc9ce11c..d08c96c4b 100644
--- a/template/en/default/global/user-error.html.tmpl
+++ b/template/en/default/global/user-error.html.tmpl
@@ -114,6 +114,10 @@
[% title = "Bugs Not Changed" %]
Um, you apparently did not change anything on the selected bugs.
+ [% ELSIF error == "chart_too_large" %]
+ [% title = "Chart Too Large" %]
+ Sorry, but 2000 x 2000 is the maximum size for a chart.
+
[% ELSIF error == "comment_required" %]
[% title = "Comment Required" %]
You have to specify a <b>comment</b> on this change.
@@ -361,6 +365,10 @@
[% title = "New Password Missing" %]
You must enter a new password.
+ [% ELSIF error == "no_axes_defined" %]
+ [% title = "No Axes Defined" %]
+ You didn't define any axes to plot.
+
[% ELSIF error == "no_bugs_chosen" %]
[% title = "No Bugs Chosen" %]
You apparently didn't choose any bugs to modify.
@@ -547,11 +555,6 @@
[% title = "Value Out Of Range" %]
Value is out of range for field <em>[% field_descs.$field %]</em>.
- [% ELSIF error == "z_axis_defined_with_no_x_axis" %]
- [% title = "Nonsensical Options" %]
- You've defined a field for multiple tables without having defined
- a horizontal axis for those tables.
-
[% ELSIF error == "zero_length_file" %]
[% title = "File Is Empty" %]
The file you are trying to attach is empty!
diff --git a/template/en/default/index.html.tmpl b/template/en/default/index.html.tmpl
index d13ccbc43..9b34d15ee 100644
--- a/template/en/default/index.html.tmpl
+++ b/template/en/default/index.html.tmpl
@@ -55,7 +55,7 @@ function addSidebar() {
<p>
<a href="query.cgi">Query existing bug reports</a><br>
<a href="enter_bug.cgi">Enter a new bug report</a><br>
- <a href="reports.cgi">Get summary reports</a><br>
+ <a href="report.cgi">Summary reports and charts</a><br>
</p><p>
[% IF username %]
<a href="userprefs.cgi">Change password or user preferences</a><br>
diff --git a/template/en/default/reports/menu.html.tmpl b/template/en/default/reports/menu.html.tmpl
index d93717532..4e21bf4d6 100644
--- a/template/en/default/reports/menu.html.tmpl
+++ b/template/en/default/reports/menu.html.tmpl
@@ -29,7 +29,7 @@
%]
<p>
- Bugzilla allows you to view and track the state of your bug database in
+ Bugzilla allows you to view and track the state of the bug database in
all manner of exciting ways.
</p>
@@ -46,6 +46,12 @@
</strong> -
tables of bug counts in 1, 2 or 3 dimensions, as HTML or CSV.
</li>
+ <li>
+ <strong>
+ <a href="query.cgi?format=report-graph">Graphical reports</a>
+ </strong> -
+ line graphs, bar and pie charts.
+ </li>
</ul>
<h2>Change Over Time</h2>
diff --git a/template/en/default/reports/report-bar.png.tmpl b/template/en/default/reports/report-bar.png.tmpl
new file mode 100644
index 000000000..a3d73d45c
--- /dev/null
+++ b/template/en/default/reports/report-bar.png.tmpl
@@ -0,0 +1,54 @@
+[%# 1.0@bugzilla.org %]
+[%# The contents of this file are subject to the Mozilla Public
+ # License Version 1.1 (the "License"); you may not use this file
+ # except in compliance with the License. You may obtain a copy of
+ # the License at http://www.mozilla.org/MPL/
+ #
+ # Software distributed under the License is distributed on an "AS
+ # IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
+ # implied. See the License for the specific language governing
+ # rights and limitations under the License.
+ #
+ # The Original Code is the Bugzilla Bug Tracking System.
+ #
+ # The Initial Developer of the Original Code is Netscape Communications
+ # Corporation. Portions created by Netscape are
+ # Copyright (C) 1998 Netscape Communications Corporation. All
+ # Rights Reserved.
+ #
+ # Contributor(s): Gervase Markham <gerv@gerv.net>
+ #%]
+
+[% y_label = "Bugs" %]
+
+[% PROCESS "global/field-descs.html.tmpl" %]
+
+[% col_field_disp = field_descs.$col_field || col_field %]
+
+[% FILTER null;
+ USE graph = GD.Graph.bars(width, height);
+
+ graph.set(x_label => col_field_disp,
+ y_label => y_label,
+ y_tick_number => 8,
+ y_number_format => "%d",
+ x_label_position => 0.5,
+ bar_spacing => 8,
+ shadow_depth => 4,
+ shadowclr => 'dred',
+ show_values => 1,
+ legend_placement => "RT");
+
+ graph.set(cumulate => "true",
+ show_values => 0) IF cumulate;
+
+ # Workaround for the fact that set_legend won't take row_names directly,
+ # because row_names is an array reference rather than an array.
+ graph.set_legend(row_names.0, row_names.1, row_names.2, row_names.3,
+ row_names.4, row_names.5, row_names.6, row_names.7,
+ row_names.8, row_names.9, row_names.10, row_names.11,
+ row_names.12, row_names.13, row_names.14, row_names.15);
+
+ graph.plot(data.0).png | stdout(1);
+ END;
+-%]
diff --git a/template/en/default/reports/report-line.png.tmpl b/template/en/default/reports/report-line.png.tmpl
new file mode 100644
index 000000000..d0c7b2541
--- /dev/null
+++ b/template/en/default/reports/report-line.png.tmpl
@@ -0,0 +1,53 @@
+[%# 1.0@bugzilla.org %]
+[%# The contents of this file are subject to the Mozilla Public
+ # License Version 1.1 (the "License"); you may not use this file
+ # except in compliance with the License. You may obtain a copy of
+ # the License at http://www.mozilla.org/MPL/
+ #
+ # Software distributed under the License is distributed on an "AS
+ # IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
+ # implied. See the License for the specific language governing
+ # rights and limitations under the License.
+ #
+ # The Original Code is the Bugzilla Bug Tracking System.
+ #
+ # The Initial Developer of the Original Code is Netscape Communications
+ # Corporation. Portions created by Netscape are
+ # Copyright (C) 1998 Netscape Communications Corporation. All
+ # Rights Reserved.
+ #
+ # Contributor(s): Gervase Markham <gerv@gerv.net>
+ #%]
+
+[% y_label = "Bugs" %]
+
+[% PROCESS "global/field-descs.html.tmpl" %]
+
+[% col_field_disp = field_descs.$col_field || col_field %]
+
+[% IF cumulate %]
+ [% USE graph = GD.Graph.area(width, height) %]
+ [% graph.set(cumulate => "true") %]
+[% ELSE %]
+ [% USE graph = GD.Graph.lines(width, height) %]
+[% END %]
+
+[% FILTER null;
+ graph.set(x_label => col_field_disp,
+ y_label => y_label,
+ y_tick_number => 8,
+ x_label_position => 0.5,
+ legend_placement => "RT",
+ line_width => 2);
+
+ # Workaround for the fact that set_legend won't take row_names directly,
+ # because row_names is an array reference rather than an array.
+ graph.set_legend(row_names.0, row_names.1, row_names.2, row_names.3,
+ row_names.4, row_names.5, row_names.6, row_names.7,
+ row_names.8, row_names.9, row_names.10, row_names.11,
+ row_names.12, row_names.13, row_names.14, row_names.15);
+
+ graph.plot(data.0).png | stdout(1);
+ END;
+-%]
+
diff --git a/template/en/default/reports/report-pie.png.tmpl b/template/en/default/reports/report-pie.png.tmpl
new file mode 100644
index 000000000..f34397e12
--- /dev/null
+++ b/template/en/default/reports/report-pie.png.tmpl
@@ -0,0 +1,35 @@
+[%# 1.0@bugzilla.org %]
+[%# The contents of this file are subject to the Mozilla Public
+ # License Version 1.1 (the "License"); you may not use this file
+ # except in compliance with the License. You may obtain a copy of
+ # the License at http://www.mozilla.org/MPL/
+ #
+ # Software distributed under the License is distributed on an "AS
+ # IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
+ # implied. See the License for the specific language governing
+ # rights and limitations under the License.
+ #
+ # The Original Code is the Bugzilla Bug Tracking System.
+ #
+ # The Initial Developer of the Original Code is Netscape Communications
+ # Corporation. Portions created by Netscape are
+ # Copyright (C) 1998 Netscape Communications Corporation. All
+ # Rights Reserved.
+ #
+ # Contributor(s): Gervase Markham <gerv@gerv.net>
+ #%]
+
+[% PROCESS "global/field-descs.html.tmpl" %]
+
+[% col_field_disp = field_descs.$col_field || col_field %]
+
+[% FILTER null;
+ USE graph = GD.Graph.pie(width, height);
+
+ graph.set(title => col_field_disp,
+ pie_height => 20,
+ start_angle => 180);
+
+ graph.plot(data.0).png | stdout(1);
+ END;
+-%]
diff --git a/template/en/default/reports/report-table.csv.tmpl b/template/en/default/reports/report-table.csv.tmpl
index a80a618c8..60f3a4eef 100644
--- a/template/en/default/reports/report-table.csv.tmpl
+++ b/template/en/default/reports/report-table.csv.tmpl
@@ -19,39 +19,33 @@
# Contributor(s): Gervase Markham <gerv@gerv.net>
#%]
[%# INTERFACE:
- # See report.html.tmpl.
+ # See report-table.html.tmpl.
#%]
-
-[% tbl_names = names.tbl.keys.sort %]
-[% col_names = names.col.keys.sort %]
-[% row_names = names.row.keys.sort %]
+[% num_bugs = "Number of bugs" %]
+[% tbl_field_disp = field_descs.$tbl_field || tbl_field %]
+[% col_field_disp = field_descs.$col_field || col_field %]
+[% row_field_disp = field_descs.$row_field || row_field %]
-[% FOREACH tbl = tbl_names %]
- [% IF tbl_field -%]
- [% tbl FILTER html %]
- [% END %]
-
- [% row_field FILTER csv -%]
-
- [% IF col_field -%]
- \ [% col_field FILTER csv -%],
- [% FOREACH col = col_names -%]
- [% col FILTER csv -%],
- [% END -%]
- [% ELSE -%]
- [% -%],Number of bugs
- [% END %]
+[% "$tbl_field_disp: $tbl\n" FILTER csv IF tbl_field %]
+[% row_field_disp FILTER csv IF row_field %]
+[% " / " IF col_field AND row_field %]
+[% col_field_disp FILTER csv %],
+[% IF col_field -%]
+[% FOREACH col = col_names -%]
+ [% col FILTER csv -%],
+[% END -%]
+[% ELSE -%]
+ [% num_bugs %],
+[% END %]
- [% FOREACH row = row_names %]
- [% row FILTER csv -%],
- [% FOREACH col = col_names %]
- [% IF data.$tbl AND data.$tbl.$col AND data.$tbl.$col.$row %]
- [% data.$tbl.$col.$row -%],
- [% ELSE %]
- [% -%]0,
- [% END %]
+[% FOREACH row = row_names %]
+ [% row FILTER csv -%],
+ [% FOREACH col = col_names %]
+ [% IF data.$tbl AND data.$tbl.$col AND data.$tbl.$col.$row %]
+ [% data.$tbl.$col.$row -%],
+ [% ELSE %]
+ [% -%]0,
[% END %]
-
[% END %]
-
+
[% END %]
diff --git a/template/en/default/reports/report-table.html.tmpl b/template/en/default/reports/report-table.html.tmpl
index 9767f5030..5074484c3 100644
--- a/template/en/default/reports/report-table.html.tmpl
+++ b/template/en/default/reports/report-table.html.tmpl
@@ -21,92 +21,51 @@
#%]
[%# INTERFACE:
- # querybase: The base query for this table, in URL form
- # query: The query for this table, in URL form
- # data: hash of hash of hash of numbers. Bug counts.
- # names: hash of hash of strings. Names of tables, rows and columns.
+ # buglistbase: The base query for this table, in URL form
# col_field: string. Name of the field being plotted as columns.
# row_field: string. Name of the field being plotted as rows.
# tbl_field: string. Name of the field being plotted as tables.
+ # col_names: array. List of values for the field being plotted as columns.
+ # row_names: array. List of values for the field being plotted as rows.
+ # data: <depends on format>. Data to plot. Only data.$tbl is accessed.
+ # tbl: Name of a hash in data which is the table to be plotted.
#%]
[% PROCESS "global/field-descs.html.tmpl" %]
-[% tbl_field_disp = field_descs.$tbl_field || tbl_field %]
[% col_field_disp = field_descs.$col_field || col_field %]
[% row_field_disp = field_descs.$row_field || row_field %]
-
-[% title = BLOCK %]
- Report:
- [% "$tbl_field_disp / " IF tbl_field %]
- [% "$col_field_disp / " IF col_field %]
- [% row_field_disp %]
-[% END %]
-
-[% PROCESS global/header.html.tmpl
- style = "
- .t1 { background-color: #ffffff } /* white */
- .t2 { background-color: #dfefff } /* light blue */
- .t3 { background-color: #dddddd } /* grey */
- .t4 { background-color: #c3d3ed } /* darker blue */
- .ttotal { background-color: #cfffdf } /* light green */
- "
-%]
-
-<div align="right">
- [% time2str("%Y-%m-%d %H:%M:%S", time) %]
-</div>
-
-[% tbl_names = names.tbl.keys.sort %]
-[% col_names = names.col.keys.sort %]
-[% row_names = names.row.keys.sort %]
-
-[% total_name = "Total" %]
-
-[% FOREACH tbl = tbl_names %]
- [% FOREACH row = row_names %]
- [% FOREACH col = col_names %]
- [% data.$tbl.$col.$row = (data.$tbl.$col.$row || 0) %]
-
- [% IF tbl_field %]
- [%# Calculate values for the Total table %]
- [% data.$total_name.$col.$row =
- (data.$total_name.$col.$row || 0) + data.$tbl.$col.$row %]
- [% END %]
- [% END %]
- [% END %]
-[% END %]
-[% IF tbl_field %]
- [% tbl_names.push(total_name) %]
+[% IF tbl == "-total-" %]
+ [% urlbase = BLOCK %]buglist.cgi?[% buglistbase %][% END %]
+[% ELSE %]
+ [% urlbase = BLOCK %]buglist.cgi?[% buglistbase %]&amp;
+ [% tbl_field FILTER url_quote %]=[% tbl FILTER url_quote %][% END %]
[% END %]
-<div align="center">
-
-[% FOREACH tbl = tbl_names %]
- <table>
- [% IF tbl_field %]
- <tr>
- <td>
- </td>
- <td align="center">
- <h2>[% tbl FILTER html %]</h2>
- </td>
- </tr>
- [% END %]
+<table>
+ [% IF tbl_field %]
<tr>
<td>
</td>
- <td align="center">
- <strong>[% col_field_disp FILTER html %]</strong>
+ <td align="center">
+ <h2>[% tbl_disp %]</h2>
</td>
</tr>
+ [% END %]
+ <tr>
+ <td>
+ </td>
+ <td align="center">
+ <strong>[% col_field_disp FILTER html %]</strong>
+ </td>
+ </tr>
- <tr>
- <td valign="middle">
- <strong>[% row_field_disp FILTER html %]</strong>
- </td>
- <td>
+ <tr>
+ <td valign="middle">
+ <strong>[% row_field_disp FILTER html %]</strong>
+ </td>
+ <td>
[% classes = [ [ "t1", "t2" ] , [ "t3", "t4" ] ] %]
@@ -150,8 +109,7 @@
[% col_idx = 1 - col_idx %]
<td class="[% classes.$row_idx.$col_idx %]" align="center">
[% IF data.$tbl.$col.$row AND data.$tbl.$col.$row > 0 %]
- <a href="buglist.cgi?[% querybase FILTER html %]&amp;
- [% tbl_field FILTER url_quote %]=[% tbl FILTER url_quote %]&amp;
+ <a href="[% urlbase %]&amp;
[% row_field FILTER url_quote %]=[% row FILTER url_quote %]&amp;
[% col_field FILTER url_quote %]=[% col FILTER url_quote %]">
[% data.$tbl.$col.$row %]</a>
@@ -161,8 +119,7 @@
</td>
[% END %]
<td class="ttotal" align="right">
- <a href="buglist.cgi?[% querybase FILTER html %]&amp;
- [% tbl_field FILTER url_quote %]=[% tbl FILTER url_quote %]&amp;
+ <a href="[% urlbase %]&amp;
[% row_field FILTER url_quote %]=[% row FILTER url_quote %]">
[% row_total %]</a>
[% grand_total = grand_total + row_total %]
@@ -179,8 +136,7 @@
[% NEXT IF col == "" %]
<td class="ttotal" align="center">
- <a href="buglist.cgi?[% querybase FILTER html %]&amp;
- [% tbl_field FILTER url_quote %]=[% tbl FILTER url_quote %]&amp;
+ <a href="[% urlbase %]&amp;
[% col_field FILTER url_quote %]=[% col FILTER url_quote %]">
[% col_totals.$col %]</a>
<strong>
@@ -188,24 +144,13 @@
[% END %]
<td class="ttotal" align="right">
<strong>
- <a href="buglist.cgi?[% querybase FILTER html %]">[% grand_total %]</a>
+ <a href="buglist.cgi?[% urlbase %]">[% grand_total %]</a>
</strong>
</td>
</tr>
</table>
- </td>
- </tr>
- </table>
-
- <br>
-
-[% END %]
-
- <a href="query.cgi?[% query FILTER html %]&amp;format=report-table">Edit this report</a>
-</div>
-
-<br>
-
-[% PROCESS global/footer.html.tmpl %]
+ </td>
+ </tr>
+</table>
diff --git a/template/en/default/reports/report.csv.tmpl b/template/en/default/reports/report.csv.tmpl
new file mode 100644
index 000000000..727acb311
--- /dev/null
+++ b/template/en/default/reports/report.csv.tmpl
@@ -0,0 +1,26 @@
+[%# 1.0@bugzilla.org %]
+[%# The contents of this file are subject to the Mozilla Public
+ # License Version 1.1 (the "License"); you may not use this file
+ # except in compliance with the License. You may obtain a copy of
+ # the License at http://www.mozilla.org/MPL/
+ #
+ # Software distributed under the License is distributed on an "AS
+ # IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
+ # implied. See the License for the specific language governing
+ # rights and limitations under the License.
+ #
+ # The Original Code is the Bugzilla Bug Tracking System.
+ #
+ # The Initial Developer of the Original Code is Netscape Communications
+ # Corporation. Portions created by Netscape are
+ # Copyright (C) 1998 Netscape Communications Corporation. All
+ # Rights Reserved.
+ #
+ # Contributor(s): Gervase Markham <gerv@gerv.net>
+ #%]
+[% PROCESS "global/field-descs.html.tmpl" %]
+[% FOREACH tbl = tbl_names %]
+ [% PROCESS "reports/report-table.csv.tmpl" %]
+
+
+[% END %]
diff --git a/template/en/default/reports/report.html.tmpl b/template/en/default/reports/report.html.tmpl
new file mode 100644
index 000000000..c4a3edd56
--- /dev/null
+++ b/template/en/default/reports/report.html.tmpl
@@ -0,0 +1,156 @@
+ <!-- 1.0@bugzilla.org -->
+[%# The contents of this file are subject to the Mozilla Public
+ # License Version 1.1 (the "License"); you may not use this file
+ # except in compliance with the License. You may obtain a copy of
+ # the License at http://www.mozilla.org/MPL/
+ #
+ # Software distributed under the License is distributed on an "AS
+ # IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
+ # implied. See the License for the specific language governing
+ # rights and limitations under the License.
+ #
+ # The Original Code is the Bugzilla Bug Tracking System.
+ #
+ # The Initial Developer of the Original Code is Netscape Communications
+ # Corporation. Portions created by Netscape are
+ # Copyright (C) 1998 Netscape Communications Corporation. All
+ # Rights Reserved.
+ #
+ # Contributor(s): Gervase Markham <gerv@gerv.net>
+ #%]
+
+[%# INTERFACE:
+ # col_field: string. Name of the field being plotted as columns.
+ # row_field: string. Name of the field being plotted as rows.
+ # tbl_field: string. Name of the field being plotted as tables.
+ # tbl_names: array. List of values for the field being plotted as tables.
+ # time: integer. Seconds since the epoch.
+ # data: <depends on format>. Data to plot.
+ # format: string. Format of the individual reports.
+ # width: integer. For image charts, height of the image.
+ # height: integer. For image charts, width of the image.
+ # switchbase: string. Base URL for format switching.
+ # cumulate: boolean. For bar/line charts, whether to cumulate data sets.
+ #%]
+
+[% DEFAULT width = 600
+ height = 350
+%]
+
+[%# We ignore row_field for pie charts %]
+[% IF format == "pie" %]
+ [% row_field = "" %]
+[% END %]
+
+[% PROCESS "global/field-descs.html.tmpl" %]
+
+[% tbl_field_disp = field_descs.$tbl_field || tbl_field %]
+[% col_field_disp = field_descs.$col_field || col_field %]
+[% row_field_disp = field_descs.$row_field || row_field %]
+
+[% title = BLOCK %]
+ Report:
+ [% tbl_field_disp IF tbl_field %]
+ [% " / " IF tbl_field AND (col_field OR row_field) %]
+ [% row_field_disp IF row_field %]
+ [% " / " IF col_field AND row_field %]
+ [% col_field_disp %]
+[% END %]
+
+[% PROCESS global/header.html.tmpl
+ style = "
+ .t1 { background-color: #ffffff } /* white */
+ .t2 { background-color: #dfefff } /* light blue */
+ .t3 { background-color: #dddddd } /* grey */
+ .t4 { background-color: #c3d3ed } /* darker blue */
+ .ttotal { background-color: #cfffdf } /* light green */
+ "
+ h3 = time2str("%Y-%m-%d %H:%M:%S", time)
+%]
+
+[% IF debug %]
+ <p>[% query FILTER html %]</p>
+[% END %]
+
+<div align="center">
+
+ [% FOREACH tbl = tbl_names %]
+ [% IF tbl == "-total-" %]
+ [% tbl_disp = "Total" %]
+ [% ELSE %]
+ [% tbl_disp = tbl %]
+ [% END %]
+
+ [% IF format == "table" %]
+ [% PROCESS "reports/report-table.html.tmpl" %]
+ [% ELSE %]
+ [% IF tbl %]
+ <h2>[% tbl_disp FILTER html %]</h2>
+ [% END %]
+
+ [% imageurl = BLOCK %]report.cgi?[% imagebase %]&amp;format=
+ [% format FILTER url_quote %]&amp;ctype=png&amp;action=plot&amp;
+ [% IF tbl_field AND tbl != "-total-" %]
+ [% tbl_field FILTER url_quote %]=[% tbl FILTER url_quote %]&amp;
+ [% END %]width=[% width %]&amp;height=[% height %]
+ [% END %]
+
+ <img src="[% imageurl %]" width="[% width %]" height="[% height %]">
+ [% END %]
+ <br>
+ [% END %]
+
+ <table>
+ <tr>
+ <td>
+ [% formats = [ { name => "pie", description => "Pie" },
+ { name => "bar", description => "Bar" },
+ { name => "line", description => "Line" },
+ { name => "table", description => "Table" } ] %]
+
+ [% formaturl = "report.cgi?$switchbase&width=$width&height=$height" _
+ "&action=wrap" %]
+ [% FOREACH other_format = formats %]
+ [% NEXT IF other_format.name == "pie" AND row_field %]
+ [% UNLESS other_format.name == format %]
+ <a href="[% formaturl %]&format=[% other_format.name %]">
+ [% END %]
+ [% other_format.description %]
+ [% "</a>" UNLESS other_format.name == format %] |
+ [% END %]
+ <a href="[% formaturl %]&ctype=csv">CSV</a>
+ </td>
+
+ [% IF format != "table" %]
+ <td>
+ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+ </td>
+
+ [% sizeurl = "report.cgi?$switchbase&action=wrap&format=$format" %]
+ <td align="center">
+ <a href="[% sizeurl %]&width=[% width %]&height=
+ [% height + 100 %]">Taller</a><br>
+ <a href="[% sizeurl %]&width=[% width - 100 %]&height=
+ [% height %]">Thinner</a> *
+ <a href="[% sizeurl %]&width=[% width + 100 %]&height=
+ [% height %]">Fatter</a>&nbsp;&nbsp;&nbsp;&nbsp;<br>
+ <a href="[% sizeurl %]&width=[% width %]&height=
+ [% height - 100 %]">Shorter</a><br>
+ </td>
+ [% END %]
+ <tr>
+ </table>
+
+ <p>
+ [% IF format == "table" %]
+ <a href="query.cgi?[% switchbase %]&format=report-table">Edit
+ this report</a>
+ [% ELSE %]
+ <a href="query.cgi?[% switchbase %]&format=report-graph&chart_format=
+ [% format %]&cumulate=[% cumulate %]">Edit this report</a>
+ [% END %]
+ </p>
+
+</div>
+
+[% PROCESS global/footer.html.tmpl %]
diff --git a/template/en/default/search/search-report-graph.html.tmpl b/template/en/default/search/search-report-graph.html.tmpl
new file mode 100644
index 000000000..8280fb0bb
--- /dev/null
+++ b/template/en/default/search/search-report-graph.html.tmpl
@@ -0,0 +1,112 @@
+<!-- 1.0@bugzilla.org -->
+[%# The contents of this file are subject to the Mozilla Public
+ # License Version 1.1 (the "License"); you may not use this file
+ # except in compliance with the License. You may obtain a copy of
+ # the License at http://www.mozilla.org/MPL/
+ #
+ # Software distributed under the License is distributed on an "AS
+ # IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
+ # implied. See the License for the specific language governing
+ # rights and limitations under the License.
+ #
+ # The Original Code is the Bugzilla Bug Tracking System.
+ #
+ # The Initial Developer of the Original Code is Netscape Communications
+ # Corporation. Portions created by Netscape are
+ # Copyright (C) 1998 Netscape Communications Corporation. All
+ # Rights Reserved.
+ #
+ # Contributor(s): Gervase Markham <gerv@gerv.net>
+ #%]
+
+[%# INTERFACE:
+ # This template has no interface. However, to use it, you need to fulfill
+ # the interfaces of the templates it contains.
+ #%]
+
+[% PROCESS global/header.html.tmpl
+ title = "Generate Report"
+ onload = "selectProduct(document.forms['reportform']);"
+%]
+
+[% PROCESS "search/search-report-select.html.tmpl" %]
+
+<p>
+ Produce a pictorial graph of bug counts by choosing one or more fields as
+ your axes, and then refining your set of bugs using the rest of the form.
+ If you choose a third axis, it will be represented by multiple tables of data.
+ Note: vertical axis settings will be ignored for pie charts.
+</p>
+
+[% button_name = "Generate Report" %]
+
+<form method="get" action="report.cgi" name="reportform">
+
+<table align="center">
+ <tr>
+ <td valign="middle">
+ <b>Vertical Axis:</b><br>
+ [% PROCESS select name = 'y_axis_field' %]<br>
+ <br>
+ <b>Plot Data Sets:</b><br>
+ <input type="radio" name="cumulate" value="0"
+ [% " checked" IF default.cumulate.0 != "1" %]>
+ Individually<br>
+ <input type="radio" name="cumulate" value="1"
+ [% " checked" IF default.cumulate.0 == "1" %]>
+ Added
+
+ </td>
+ <td width="150px" height="150px">
+ <table border="1" width="100%" height="100%">
+ <tr>
+ <td align="center" valign="middle">
+ <b>Multiple Images:</b><br>
+ [% PROCESS select name = 'z_axis_field' %]
+ </td>
+ </tr>
+ </table>
+ </td>
+ <td rowspan="2">
+ <b>Format:</b><br>
+ [% chart_formats = [
+ { name => "line", description => "Line Graph" },
+ { name => "bar", description => "Bar Chart" },
+ { name => "pie", description => "Pie Chart" } ] %]
+ [% default.chart_format.0 = default.chart_format.0 || "bar" %]
+
+ [% FOREACH chart_format = chart_formats %]
+ <input type="radio" name="format"
+ value="[% chart_format.name FILTER html %]"
+ [% " checked" IF default.chart_format.0 == chart_format.name %]>
+ [% chart_format.description FILTER html %]<br>
+ [% END %]
+ </td>
+ </tr>
+
+ <tr>
+ <td>
+ </td>
+ <td align="center">
+ <b>Horizontal Axis:</b>
+ [% PROCESS select name = 'x_axis_field' %]
+ </td>
+ <td>
+ </td>
+ </tr>
+</table>
+
+<hr>
+
+[% PROCESS search/form.html.tmpl %]
+
+<br>
+<input type="submit" value="[% button_name %]">
+<input type="hidden" name="action" value="wrap">
+<hr>
+
+[% PROCESS "search/boolean-charts.html.tmpl" %]
+
+</form>
+
+[% PROCESS global/footer.html.tmpl %]
diff --git a/template/en/default/search/search-report-select.html.tmpl b/template/en/default/search/search-report-select.html.tmpl
new file mode 100644
index 000000000..75716eac7
--- /dev/null
+++ b/template/en/default/search/search-report-select.html.tmpl
@@ -0,0 +1,47 @@
+<!-- 1.0@bugzilla.org -->
+[%# The contents of this file are subject to the Mozilla Public
+ # License Version 1.1 (the "License"); you may not use this file
+ # except in compliance with the License. You may obtain a copy of
+ # the License at http://www.mozilla.org/MPL/
+ #
+ # Software distributed under the License is distributed on an "AS
+ # IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
+ # implied. See the License for the specific language governing
+ # rights and limitations under the License.
+ #
+ # The Original Code is the Bugzilla Bug Tracking System.
+ #
+ # The Initial Developer of the Original Code is Netscape Communications
+ # Corporation. Portions created by Netscape are
+ # Copyright (C) 1998 Netscape Communications Corporation. All
+ # Rights Reserved.
+ #
+ # Contributor(s): Gervase Markham <gerv@gerv.net>
+ #%]
+
+[%# INTERFACE:
+ # name: string. The name of the select block to output.
+ # default.$name.0: string. The default value for the block, if any.
+ #%]
+
+[% PROCESS "global/field-descs.html.tmpl" %]
+
+[% BLOCK select %]
+ [% fields = ["product", "component", "version", "rep_platform",
+ "op_sys", "bug_status", "resolution", "bug_severity",
+ "priority", "target_milestone", "keywords", "assigned_to",
+ "reporter", "qa_contact", "votes" ] %]
+
+ <select name="[% name FILTER html %]">
+ <option value="">&lt;none&gt;</option>
+
+ [% FOREACH field = fields %]
+ [% NEXT IF field == "target_milestone" AND !Param('usetargetmilestone') %]
+ [% NEXT IF field == "qa_contact" AND !Param('useqacontact') %]
+ [% NEXT IF field == "votes" AND !Param('usevotes') %]
+ <option value="[% field FILTER html %]"
+ [% " selected" IF default.$name.0 == field %]>
+ [% field_descs.$field || field FILTER html %]</option>
+ [% END %]
+ </select>
+[% END %]
diff --git a/template/en/default/search/search-report-table.html.tmpl b/template/en/default/search/search-report-table.html.tmpl
index 73d542124..a26553602 100644
--- a/template/en/default/search/search-report-table.html.tmpl
+++ b/template/en/default/search/search-report-table.html.tmpl
@@ -29,12 +29,12 @@
onload = "selectProduct(document.forms['reportform']);"
%]
-[% PROCESS "global/field-descs.html.tmpl" %]
+[% PROCESS "search/search-report-select.html.tmpl" %]
<p>
- Produce a table of bug counts by choosing one or more fields to plot against
- each other, and then refining your set of bugs using the rest of the form. If
- you choose a third axis, it will be represented by multiple tables of data.
+ Produce a table of bug counts by choosing one or more fields as your axes,
+ and then refining your set of bugs using the rest of the form.
+ If you choose a third axis, it will be represented by multiple tables of data.
</p>
[% button_name = "Generate Report" %]
@@ -47,7 +47,7 @@
</td>
<td align="center">
<b>Horizontal Axis:</b>
- [% PROCESS select sel = { name => 'x_axis_field', noop = 1 } %]
+ [% PROCESS select name = 'x_axis_field' %]
</td>
<td>&nbsp;&nbsp;</td>
<td rowspan="2">
@@ -60,14 +60,14 @@
<tr>
<td valign="middle" align="center">
<b>Vertical Axis:</b><br>
- [% PROCESS select sel = { name => 'y_axis_field' } %]
+ [% PROCESS select name = 'y_axis_field' %]
</td>
<td width="150px" height="150px">
<table border="1" width="100%" height="100%">
<tr>
<td align="center" valign="middle">
<b>Multiple Tables:</b><br>
- [% PROCESS select sel = { name => 'z_axis_field', noop = 1 } %]
+ [% PROCESS select name = 'z_axis_field' %]
</td>
</tr>
</table>
@@ -82,7 +82,7 @@
<br>
<input type="submit" value="[% button_name %]">
<input type="hidden" name="format" value="table">
-<input type="hidden" name="action" value="plot">
+<input type="hidden" name="action" value="wrap">
<hr>
[% PROCESS "search/boolean-charts.html.tmpl" %]
@@ -90,30 +90,3 @@
</form>
[% PROCESS global/footer.html.tmpl %]
-
-[%############################################################################%]
-[%# Block for SELECT fields #%]
-[%############################################################################%]
-
-[% BLOCK select %]
- [% fields = ["product", "component", "version", "rep_platform",
- "op_sys", "bug_status", "resolution", "bug_severity",
- "priority", "target_milestone", "keywords", "assigned_to",
- "reporter", "qa_contact", "votes" ] %]
-
- <select name="[% sel.name %]">
- [% IF sel.noop %]
- <option value="">&lt;none&gt;</option>
- [% END %]
-
- [% FOREACH field = fields %]
- [% NEXT IF field == "target_milestone" AND !Param('usetargetmilestone') %]
- [% NEXT IF field == "qa_contact" AND !Param('useqacontact') %]
- [% NEXT IF field == "votes" AND !Param('usevotes') %]
-
- <option value="[% field FILTER html %]"
- [% " selected" IF default.${sel.name}.0 == field %]>
- [% field_descs.$field || field FILTER html %]</option>
- [% END %]
- </select>
-[% END %]