Skip to content

Commit ceb40fa

Browse files
authored
Merge pull request #78 from cmu-delphi/OKRS24-72-Add-signals-sorting-functionality
Okrs24 72 add signals sorting functionality
2 parents 5318ca8 + 268c427 commit ceb40fa

File tree

5 files changed

+48
-18
lines changed

5 files changed

+48
-18
lines changed

src/assets/css/style.css

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1228,3 +1228,11 @@ h6 {
12281228
font-size: 13px;
12291229
color: #012970;
12301230
}
1231+
1232+
#id_order_by {
1233+
border-top-left-radius: 0;
1234+
border-bottom-left-radius: 0;
1235+
}
1236+
#order_by_label{
1237+
margin-bottom: 1rem;
1238+
}

src/signals/filters.py

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
import django_filters
44
from django.db.models import Q
5-
from django_filters.filters import CharFilter
5+
from django_filters.filters import CharFilter, OrderingFilter
66

77
from signals.models import Signal
88

@@ -13,6 +13,13 @@ class SignalFilter(django_filters.FilterSet):
1313
"""
1414

1515
search = CharFilter(method='filter_search')
16+
order_by = OrderingFilter(
17+
fields=(
18+
('display_name', 'name'),
19+
('source__name', 'source'),
20+
('last_updated', 'last_updated'),
21+
)
22+
)
1623

1724
class Meta:
1825
model = Signal

src/signals/forms.py

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,14 @@ class SignalFilterForm(forms.ModelForm):
1616
"""
1717
A form for filtering signals.
1818
"""
19+
order_by = forms.ChoiceField(choices=[
20+
('', '---------'),
21+
('name', 'Name'),
22+
('source__name', 'Source'),
23+
('last_updated', 'Last Updated'),
24+
],
25+
required=False,
26+
)
1927
search = forms.CharField(min_length=3)
2028
pathogen = forms.ModelChoiceField(queryset=Pathogen.objects.all(), empty_label='---------')
2129
active = forms.NullBooleanField(initial=None)
@@ -26,6 +34,7 @@ class SignalFilterForm(forms.ModelForm):
2634
class Meta:
2735
model = Signal
2836
fields: list[str] = [
37+
'order_by',
2938
'search',
3039
'pathogen',
3140
'active',
@@ -38,6 +47,11 @@ class Meta:
3847
]
3948

4049
widgets = {
50+
'order_by': forms.Select(attrs={
51+
'class': 'form-select',
52+
'id': 'order_by',
53+
'aria-label': 'Order by',
54+
}),
4155
'search': forms.TextInput(attrs={'class': 'form-control', 'placeholder': 'Enter search term'}),
4256
'pathogen': forms.Select(attrs={'class': 'form-select'}),
4357
'active': forms.NullBooleanSelect(attrs={'class': 'form-check mt-3', 'label': "Test <i class='ri-stack-line'></i>"},),

src/templates/signals/signals.html

Lines changed: 12 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -4,11 +4,11 @@
44
{% load crispy_forms_tags %}
55

66
{% block content %}
7+
<form method="GET" id="filters-form">
78
<div class="container-fluid">
89
<div class="row">
910
<div class="col-3">
1011
<div class="card">
11-
<form method="GET">
1212
<div class="form-group">
1313
<br />
1414
<div class="card-body">
@@ -269,26 +269,17 @@ <h5 class="modal-title">Time Label</h5>
269269
</div>
270270
</div>
271271
</div>
272-
</form>
273272
</div>
274273
</div>
275274
<div class="col-9">
276275
<div class="row margin-bottom-1rem">
277276
<div class="col-8 text-left-center">
278277
</div>
279278
<div class="col-4 no-padding">
280-
<form id="orderByForm">
281-
<div class="input-group">
282-
<label class="input-group-text" for="orderSelect">Sort By</label>
283-
<select class="form-select" id="orderSelect" name="orderBy" aria-label="Order By"
284-
onchange="document.getElementById('orderByForm').submit();">
285-
<option value="default" selected>Default</option>
286-
<option value="name">Name</option>
287-
<option value="date">Date</option>
288-
<option value="price">Price</option>
289-
</select>
290-
</div>
291-
</form>
279+
<div class="input-group mb-3">
280+
<label class="input-group-text form-label" for="id_order_by" id="order_by_label">Sort By</label>
281+
{{ form.order_by|as_crispy_field }}
282+
</div>
292283
</div>
293284
</div>
294285
<div class="row">
@@ -314,4 +305,10 @@ <h5 class="modal-title">Time Label</h5>
314305
</div>
315306
</div>
316307
</div>
317-
{% endblock %}
308+
</form>
309+
<script>
310+
document.getElementById('id_order_by').addEventListener('change', function() {
311+
document.getElementById('filters-form').submit();
312+
});
313+
</script>
314+
{% endblock %}

src/templates/signals/signals_list.html

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,11 @@
2121
{% endif %}
2222
</td>
2323
<td>
24-
Last Updated
24+
{% if signal.last_updated %}
25+
{{ signal.last_updated|date:"Y-m-d" }}
26+
{% else %}
27+
--/--
28+
{% endif %}
2529
</td>
2630
</tr>
27-
{% endfor %}
31+
{% endfor %}

0 commit comments

Comments
 (0)