| [%# 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: |
| # chart: Chart object representing the currently assembled chart. |
| # category: hash (keyed by category) of hashes (keyed by subcategory) of |
| # hashes (keyed by name), with value being the series_id of the |
| # series. Contains details of all series the user can see. |
| #%] |
| |
| [% PROCESS global/header.html.tmpl |
| title = "Create Chart" |
| %] |
| |
| [% PROCESS "reports/series-common.html.tmpl" |
| donames = 1 |
| %] |
| |
| <script type="text/javascript"> |
| [%# This function takes necessary action on selection of a subcategory %] |
| function subcatSelected() { |
| var cat = document.chartform.category.value; |
| var subcat = document.chartform.subcategory.value; |
| var names = series[cat][subcat]; |
| |
| var namewidget = document.chartform.name; |
| |
| namewidget.options.length = 0; |
| var i = 0; |
| |
| for (x in names) { |
| namewidget.options[i] = new Option(x, names[x]); |
| i++; |
| } |
| |
| namewidget.options[0].selected = true; |
| |
| checkNewState(); |
| } |
| </script> |
| |
| [% gttext = "Grand Total" %] |
| |
| <form method="get" action="chart.cgi" name="chartform"> |
| |
| <table cellpadding="2" cellspacing="2" border="0"> |
| [% IF NOT category OR category.size == 0 %] |
| <tr> |
| <td> |
| <i>No data sets exist, or none are visible to you.</i> |
| </td> |
| </tr> |
| [% ELSE %] |
| <tr> |
| <th>Category:</th> |
| <th></th> |
| <th>Sub-category:</th> |
| <th></th> |
| <th>Name:</th> |
| <th><br> |
| </th> |
| </tr> |
| <tr> |
| |
| [% PROCESS series_select sel = { name => 'category', |
| size => 5, |
| onchange = "catSelected(); |
| subcatSelected();" } %] |
| |
| <td> |
| <noscript> |
| <input type="submit" name="action-assemble" value="Update -->"> |
| </noscript> |
| </td> |
| |
| [% PROCESS series_select sel = { name => 'subcategory', |
| size => 5, |
| onchange = "subcatSelected()" } %] |
| |
| <td> |
| <noscript> |
| <input type="submit" name="action-assemble" value="Update -->"> |
| </noscript> |
| </td> |
| |
| <td align="left"> |
| <label for="name" accesskey="N"> |
| <select name="name" id="name" style="width: 15em" |
| size="5" multiple="multiple" |
| [%+ "disabled=\"disabled\"" UNLESS name.keys.size %]> |
| [% FOREACH x = name.keys.sort %] |
| <option value="[% name.$x FILTER html %]"> |
| [% x FILTER html %]</option> |
| [% END %] |
| [% UNLESS name.keys.size %] |
| <option value="" disabled="disabled"></option> |
| [% END %] |
| </select> |
| </label> |
| </td> |
| |
| <td align="center" valign="middle"> |
| <input type="submit" name="action-add" value="Add To List"><br> |
| </td> |
| </tr> |
| [% END %] |
| </table> |
| |
| <script type="text/javascript"> |
| document.chartform.category[0].selected = true; |
| document.chartform.subcategory.disabled = ''; |
| document.chartform.name.disabled = ''; |
| catSelected(); |
| subcatSelected(); |
| </script> |
| |
| <h3>List Of Data Sets To Plot</h3> |
| |
| [% IF chart.lines.size > 0 %] |
| <table cellspacing="2" cellpadding="2"> |
| <tr> |
| <th style="width: 5em;">Select</th> |
| <th>Label</th> |
| <th></th> |
| <th>Data Set</th> |
| <th></th> |
| </tr> |
| |
| [%# The external loop has two counters; one which keeps track of where we |
| # are in the old labels array, and one which keeps track of the new |
| # indexes for the form elements. They are different if chart.lines has |
| # empty slots in it. |
| #%] |
| [% labelidx = 0 %] |
| [% newidx = 0 %] |
| |
| [% FOREACH line = chart.lines %] |
| [% IF NOT line %] |
| [%# chart.lines has an empty slot, so chart.labels will too. We |
| # increment labelidx only to keep the labels in sync with the data. |
| #%] |
| [% labelidx = labelidx + 1 %] |
| [% NEXT %] |
| [% END %] |
| |
| [% FOREACH series = line %] |
| <tr> |
| [% IF loop.first %] |
| <td align="center" rowspan="[% line.size %]"> |
| <input type="checkbox" value="1" name="select[% newidx %]"> |
| </td> |
| <td rowspan="[% line.size %]"> |
| <input type="text" size="20" name="label[% newidx %]" |
| value="[% (chart.labels.$labelidx OR series.name) |
| FILTER html %]"> |
| </td> |
| [% END %] |
| |
| <td> |
| [% "{" IF line.size > 1 %] |
| </td> |
| |
| <td> |
| [% series.category FILTER html %] / |
| [%+ series.subcategory FILTER html %] / |
| [%+ series.name FILTER html %] |
| <input type="hidden" name="line[% newidx %]" |
| value="[% series.series_id %]"> |
| </td> |
| |
| <td align="center"> |
| [% IF user.id == series.creator OR UserInGroup("admin") %] |
| <a href="chart.cgi?action=edit&series_id= |
| [% series.series_id %]">Edit</a> | |
| [% END %] |
| <a href="buglist.cgi?cmdtype=dorem&namedcmd= |
| [% series.category FILTER url_quote %]%20/%20 |
| [% series.subcategory FILTER url_quote %]%20/%20 |
| [% series.name FILTER url_quote -%]&series_id= |
| [% series.series_id %]&remaction=runseries">Run Search</a> |
| </td> |
| </tr> |
| [% END %] |
| [% labelidx = labelidx + 1 %] |
| [% newidx = newidx + 1 %] |
| [% END %] |
| |
| [% IF chart.gt %] |
| <tr> |
| <td align="center"> |
| <input type="checkbox" value="1" name="select65536"> |
| <input type="hidden" value="1" name="gt"> |
| </td> |
| <td> |
| <input type="text" size="20" name="labelgt" |
| value="[% (chart.labelgt OR gttext) FILTER html %]"> |
| </td> |
| <td></td> |
| <td> |
| <i>[% gttext FILTER html %]</i> |
| </td> |
| <td></td> |
| </tr> |
| [% END %] |
| <tr> |
| <td colspan="6"> </td> |
| </tr> |
| |
| <tr> |
| <td valign="bottom" style="text-align: center;"> |
| <input type="submit" name="action-sum" value="Sum" |
| style="width: 5em;"><br> |
| <input type="submit" name="action-remove" value="Remove" |
| style="width: 5em;"> |
| </td> |
| |
| <td style="text-align: right; vertical-align: bottom;"> |
| <b>Cumulate:</b> |
| <input type="checkbox" name="cumulate" value="1" |
| [% " checked" IF chart.cumulate %]> |
| </td> |
| |
| <td></td> |
| <td valign="bottom"> |
| <b>Date Range:</b> |
| <input type="text" size="12" name="datefrom" |
| value="[% time2str("%Y-%m-%d", chart.datefrom) IF chart.datefrom%]"> |
| <b>to</b> |
| <input type="text" size="12" name="dateto" |
| value="[% time2str("%Y-%m-%d", chart.dateto) IF chart.dateto %]"> |
| </td> |
| |
| <td style="text-align: right" valign="bottom"> |
| <input type="submit" name="action-wrap" value="Chart This List"> |
| </td> |
| </tr> |
| </table> |
| [% ELSE %] |
| <p><i>None</i></p> |
| [% END %] |
| </form> |
| |
| [% IF UserInGroup('editbugs') %] |
| <h3><a href="query.cgi?format=create-series">Create New Data Set</a></h3> |
| [% END %] |
| |
| [% PROCESS global/footer.html.tmpl %] |
| |