[%# 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 language="JavaScript" 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">  
  <p>
    <span style="color: red">
      Note: this new charting system is in beta. This means that retention of
      data or defined data sets is on a best-efforts basis only, and cannot be
      guaranteed. Please file any [% terms.bugs %] you find or enhancement 
      ideas you think of.
    </span>
  </p>
  
  <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>
        <noscript><th></th></noscript>
        <th>Sub-category:</th>
        <noscript><th></th></noscript>
        <th>Name:</th>
        <th><br>
        </th>
      </tr>
      <tr>
      
        [% PROCESS series_select sel = { name => 'category', 
                                         size => 5,
                                         onchange = "catSelected();
                                                     subcatSelected();" } %]
                                   
        <noscript>
          <td>
            <input type="submit" name="action-assemble" value="Update --&gt;">
          </td>
        </noscript>
        
        [% PROCESS series_select sel = { name => 'subcategory', 
                                         size => 5,
                                         onchange = "subcatSelected()" } %]
                                   
        <noscript>
          <td>
            <input type="submit" name="action-assemble" value="Update --%gt;">
          </td>
        </noscript>
        
        <td align="left">
          <label for="name" accesskey="N">
            <select name="name" id="name" style="width: 15em"
                    size="5" multiple="multiple"
              [% FOREACH x = name.keys.sort %]
                <option value="[% name.$x FILTER html %]">
                  [% x FILTER html %]</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 language="JavaScript" type="text/javascript">
    document.chartform.category[0].selected = true;
    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>
        <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 NOT series.public %]
                [% IF series.isSubscribed(user.id) %]
                  <input type="submit" value="Unsubscribe" style="width: 12ex;"
                         name="action-unsubscribe[% series.series_id %]">
                [% ELSE %]
                  <input type="submit" value="Subscribe" style="width: 12ex;"
                         name="action-subscribe[% series.series_id %]">
                [% END %]
              [% END %]
            </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&amp;namedcmd=
                [% series.category FILTER url_quote %]%20/%20
                [% series.subcategory FILTER url_quote %]%20/%20
                [% series.name FILTER url_quote -%]&amp;series_id=
                [% series.series_id %]&amp;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>
          <td></td>
        </tr>
      [% END %]
      <tr>
        <td colspan="6">&nbsp;</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" colspan="2"> 
          <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>

<h4>How Subscriptions Work</h4>

<p>
Administrators may mark data sets as public, which then show up in everyone's
list. All others are not public, and you must explicitly subscribe to them in
order for them to appear in your list.
</p>

<p>
When you 
[% IF UserInGroup('editbugs') %]
  <a href="query.cgi?format=create-series">create a new data set</a>,
[% ELSE %]
  create a new data set,
[% END %]                 
you are automatically subscribed to it. When the last person unsubscribes 
from a data set, data stops being collected.
</p>

[% PROCESS global/footer.html.tmpl %]
