[%# 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 search/form.html.tmpl, reports/series.html.tmpl and
  # search/boolean-charts.html.tmpl.
  #%]

[% PROCESS global/variables.none.tmpl %]

[% js_data = BLOCK %]
    var queryform = "chartform";
[% END %]

[% PROCESS global/header.html.tmpl 
  title = "Create New Data Set"
  onload = "selectProduct(document.forms['chartform']);"
  javascript = js_data 
  javascript_urls = [ "js/productform.js" ]
%]

<form method="get" action="chart.cgi" name="chartform">
  
[% PROCESS search/form.html.tmpl %]

<p>
  <input type="submit" name="action-search" value="Run Search">
  to see which [% terms.bugs %] would be included in this data set.
</p>
    
<h3>Data Set Parameters</h3>
      
[% PROCESS reports/series.html.tmpl 
   button_name = "Create Data Set" %]
  <input type="hidden" name="action" value="create">

<script type="text/javascript">
  document.chartform.category[0].selected = true;
  catSelected();
  checkNewState();
</script>
      
<hr>

[% PROCESS "search/boolean-charts.html.tmpl" %]

</form>

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