series-common.html.tmpl 3.61 KB
Newer Older
1 2 3
[%# This Source Code Form is subject to the terms of the Mozilla Public
  # License, v. 2.0. If a copy of the MPL was not distributed with this
  # file, You can obtain one at http://mozilla.org/MPL/2.0/.
4
  #
5 6
  # This Source Code Form is "Incompatible With Secondary Licenses", as
  # defined by the Mozilla Public License, v. 2.0.
7 8 9 10 11 12 13 14 15 16 17 18 19
  #%]

[%# INTERFACE:
  # donames: boolean. True if we have a multi-select for names as well as
  #          categories and subcategories. 
  # 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.
  #%]

[% subcategory = category.${default.category} %]
[% name = subcategory.${default.subcategory} %]

20
<script type="text/javascript">
21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56
[%# This structure holds details of the series the user can select from. %]
var series = {
[% FOREACH c = category.keys.sort %]
  "[%+ c FILTER js %]" : {
    [% FOREACH s = category.$c.keys.sort %]
      "[%+ s FILTER js %]" : {
        [% IF donames %]
          [% FOREACH n = category.$c.$s.keys.sort %]
            "[% n FILTER js %]": 
             [% category.$c.$s.$n FILTER js %][% ", " UNLESS loop.last %]
          [% END %]
        [% END %]
      }[% ", " UNLESS loop.last %]
    [% END %]
  }[% ", " UNLESS loop.last %]
[% END %] 
};

[%# This function takes necessary action on selection of a category %]
function catSelected() {
  var cat = document.chartform.category.value;
  var subcats = series[cat];
  
  var subcatwidget = document.chartform.subcategory;
  
  subcatwidget.options.length = 0;
  var i = 0;
  
  for (x in subcats) {
    subcatwidget.options[i] = new Option(x, x);
    i++;
  }
  
  [% IF newtext %]
    subcatwidget.options[i] = new Option("[% newtext FILTER js %]", "");
  [% END %]  
57 58

  subcatwidget.disabled = false;
59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88
  subcatwidget.options[0].selected = true;
  
  if (document.chartform.action[1]) {
    [%# On the query form, select the right radio button. %]
    document.chartform.action[1].checked = true;
  }
  
  checkNewState();  
}

[%# This function updates the disabled state of the two "new" textboxes %]
function checkNewState() {
  var fm = document.chartform;
  if (fm.newcategory) {
    fm.newcategory.disabled = 
                       (fm.category.value != "" || 
                        fm.action[1] && fm.action[1].checked == false);
    fm.newsubcategory.disabled = 
                    (fm.subcategory.value != "" || 
                     fm.action[1] && fm.action[1].checked == false);
  }
}
</script>

[%###########################################################################%]
[%# Block for SELECT fields - pinched from search/form.html.tmpl            #%]
[%###########################################################################%]

[% BLOCK series_select %]
  <td align="left">
89 90
    <select name="[% sel.name %]" id="[% sel.name %]"
            size="[% sel.size %]" style="width: 15em"
91
            [%+ 'multiple="multiple"' IF sel.multiple %]
92 93 94
            [%+ "disabled=\"disabled\"" UNLESS ${sel.name}.keys.size || newtext %]
            [%+ "onchange=\"$sel.onchange\"" IF sel.onchange %]>
      [% FOREACH x = ${sel.name}.keys.sort %]
95 96 97
        [% value = sel.value_in_hash ? ${sel.name}.$x : x %]
        <option value="[% value FILTER html %]"
          [% " selected" IF default.${sel.name} == value %]>
98 99 100 101 102 103 104 105
          [% x FILTER html %]</option>
      [% END %]
      [% IF newtext %]
        <option value="">[% newtext FILTER html %]</option>
      [% ELSIF NOT ${sel.name}.keys.size %]
        <option value="" disabled="disabled"></option>
      [% END %]
    </select>
106 107
  </td>
[% END %]