| [%# 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/. |
| # |
| # This Source Code Form is "Incompatible With Secondary Licenses", as |
| # defined by the Mozilla Public License, v. 2.0. |
| #%] |
| |
| [%# 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} %] |
| |
| <script type="text/javascript"> |
| [%# 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 %] |
| |
| subcatwidget.disabled = false; |
| 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> |
| <select name="[% sel.name %]" id="[% sel.name %]" |
| size="[% sel.size %]" |
| [%+ 'multiple="multiple"' IF sel.multiple %] |
| [%+ "disabled=\"disabled\"" UNLESS ${sel.name}.keys.size || newtext %] |
| [%+ "onchange=\"$sel.onchange\"" IF sel.onchange %]> |
| [% FOREACH x = ${sel.name}.keys.sort %] |
| [% value = sel.value_in_hash ? ${sel.name}.$x : x %] |
| <option value="[% value FILTER html %]" |
| [% " selected" IF default.${sel.name} == value %]> |
| [% 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> |
| </td> |
| [% END %] |