@@ -18,7 +18,8 @@ <h5 class="card-title">Search</h5>
18
18
</ div >
19
19
< div class ="card-body ">
20
20
< label for ="id_pathogen " class ="form-label ">
21
- Pathogen < a href ="# " data-bs-toggle ="modal " data-bs-target ="#pathogen_modal ">
21
+ Pathogen
22
+ < a href ="# " data-bs-toggle ="modal " data-bs-target ="#pathogen_modal ">
22
23
< i class ="bi bi-info-circle "> </ i >
23
24
</ a >
24
25
</ label >
@@ -42,6 +43,7 @@ <h5 class="modal-title">Pathogen</h5>
42
43
</ div >
43
44
</ div >
44
45
{{ form.pathogen|as_crispy_field }}
46
+
45
47
</ div >
46
48
< div class ="card-body ">
47
49
< label for ="id_active " class ="form-label ">
@@ -97,6 +99,10 @@ <h5 class="modal-title">Available Geography</h5>
97
99
</ div >
98
100
</ div >
99
101
</ div >
102
+ < div class ="d-flex justify-content-evenly bulk-select ">
103
+ < a role ="button "> All</ a >
104
+ < a role ="button "> Clear</ a >
105
+ </ div >
100
106
{{ form.available_geography|as_crispy_field }}
101
107
</ div >
102
108
< div class ="card-body ">
@@ -125,6 +131,10 @@ <h5 class="modal-title">Signal Type</h5>
125
131
</ div >
126
132
</ div >
127
133
</ div >
134
+ < div class ="d-flex justify-content-evenly bulk-select ">
135
+ < a role ="button "> All</ a >
136
+ < a role ="button "> Clear</ a >
137
+ </ div >
128
138
{{ form.signal_type|as_crispy_field }}
129
139
</ div >
130
140
< div class ="card-body ">
@@ -153,6 +163,10 @@ <h5 class="modal-title">Category</h5>
153
163
</ div >
154
164
</ div >
155
165
</ div >
166
+ < div class ="d-flex justify-content-evenly bulk-select ">
167
+ < a role ="button "> All</ a >
168
+ < a role ="button "> Clear</ a >
169
+ </ div >
156
170
{{ form.category|as_crispy_field }}
157
171
</ div >
158
172
< div class ="card-body ">
@@ -181,6 +195,10 @@ <h5 class="modal-title">Format Type</h5>
181
195
</ div >
182
196
</ div >
183
197
</ div >
198
+ < div class ="d-flex justify-content-evenly bulk-select ">
199
+ < a role ="button "> All</ a >
200
+ < a role ="button "> Clear</ a >
201
+ </ div >
184
202
{{ form.format_type|as_crispy_field }}
185
203
</ div >
186
204
< div class ="card-body ">
@@ -209,6 +227,10 @@ <h5 class="modal-title">Source</h5>
209
227
</ div >
210
228
</ div >
211
229
</ div >
230
+ < div class ="d-flex justify-content-evenly bulk-select ">
231
+ < a role ="button "> All</ a >
232
+ < a role ="button "> Clear</ a >
233
+ </ div >
212
234
{{ form.source|as_crispy_field }}
213
235
</ div >
214
236
< div class ="card-body ">
@@ -285,9 +307,28 @@ <h5 class="modal-title">Time Label</h5>
285
307
</ form >
286
308
287
309
< script >
310
+
311
+ // Add an event listener to the 'order_by' select element
288
312
document . getElementById ( 'id_order_by' ) . addEventListener ( 'change' , function ( ) {
289
313
document . getElementById ( 'filters-form' ) . submit ( ) ;
290
314
} ) ;
315
+
316
+
317
+ // Add an event listener to each 'bulk-select' element
318
+ let bulkSelectDivs = document . querySelectorAll ( '.bulk-select' ) ;
319
+ bulkSelectDivs . forEach ( div => {
320
+ div . addEventListener ( 'click' , function ( event ) {
321
+ let form = this . nextElementSibling ;
322
+ let checkboxes = form . querySelectorAll ( 'input[type="checkbox"]' ) ;
323
+
324
+ if ( event . target . innerText === 'All' ) {
325
+ checkboxes . forEach ( checkbox => checkbox . checked = true ) ;
326
+ } else if ( event . target . innerText === 'Clear' ) {
327
+ checkboxes . forEach ( checkbox => checkbox . checked = false ) ;
328
+ }
329
+ } ) ;
330
+ } ) ;
331
+
291
332
</ script >
292
333
293
334
{% endblock %}
0 commit comments