3 <script type="text/javascript" language="JavaScript">
4 var filterform_displayed = false;
5 function filter_click()
7 var form = document.getElementById('filterform');
12 if (filterform_displayed) {
13 form.style['display'] = 'none';
14 filterform_displayed = false;
16 form.style['display'] = 'block';
17 filterform_displayed = true;
22 function enable_selected_submitter(select, input)
24 select.name = 'submitter';
27 function filter_form_submit(form)
31 var submitter_select = document.getElementById("submitter_select");
32 var submitter_input = document.getElementById("submitter_input");
33 if (!submitter_select || !submitter_input) {
38 /* submitter handling. if possible, use the select box, otherwise leave
39 * as-is (and so the text box is used). */
41 if (submitter_select.options.length == 0) {
42 /* if there's no match, just use the input */
44 } else if (submitter_select.options.length == 1) {
45 /* if there's only one match, request by id */
46 submitter_select.selectedIndex = 0;
47 enable_selected_submitter(submitter_select, submitter_input);
49 } else if (submitter_select.selectedIndex != -1) {
50 /* if the user has explicitly selected, request by id */
51 enable_selected_submitter(submitter_select, submitter_input);
55 for (i = 0; i < form.elements.length; i++) {
56 var e = form.elements[i];
57 if (e.type == 'submit') {
61 /* handle submitter data */
62 if (e.type == 'select-one') {
66 if (e.selectedIndex != -1
67 && e.options[e.selectedIndex].value == '') {
82 function submitter_complete_response()
84 if (req.readyState != 4) {
89 eval("completions = " + req.responseText);
91 if (completions.length == 0) {
96 var submitter_select = document.getElementById("submitter_select");
97 var submitter_input = document.getElementById("submitter_input");
98 if (!submitter_select || !submitter_input) {
103 for (i = 0; i < completions.length; i++) {
104 name = completions[i]['fields']['name'];
106 name = completions[i]['fields']['name'] +
107 ' <' + completions[i]['fields']['email'] + '>';
109 name = completions[i]['fields']['email'];
111 o = new Option(name, completions[i]['pk']);
112 submitter_select.options[i] = o;
115 /* remove remaining options */
116 for (; i < submitter_select.length; i++) {
117 submitter_select.options[i] = null;
120 submitter_select.disabled = false;
124 function submitter_field_change(field)
127 var value = field.value;
128 if (value.length < 4) {
136 var url = '{% url 'patchwork.views.submitter_complete' %}?q=' + value +
138 req = new XMLHttpRequest();
139 req.onreadystatechange = submitter_complete_response;
140 req.open("GET", url, true);
145 <div class="filters">
146 <div id="filtersummary">
147 <strong><a href="javascript:filter_click()">Filters</a>:</strong>
148 {% if filters.applied_filters %}
149 {% for filter in filters.applied_filters %}
150 {{ filter.name }} = {{ filter.condition }}
151 {% if not filter.forced %}
152 <a href="{{ filter.url_without_me }}"><img
153 width="16" height="16" alt="remove filter" title="remove filter"
154 src="{% static "images/16-circle-blue-remove.png" %}"></a>
156 {% if not forloop.last %} | {% endif %}
160 <a href="javascript:filter_click()"><img
161 width="16" height="16" alt="add filter" title="add filter"
162 src="{% static "images/16-circle-blue-add.png" %}"></a>
165 <div id="filterform" style="padding-top: 1em; display: none">
166 <form action="" method="get" onSubmit="return filter_form_submit(this)">
168 {% for filter in filters.available_filters %}
170 <td>{{ filter.name }}</td>
171 <td>{{ filter.form }}</td>
176 <td><input type="submit" value="Apply"/></td>