diff --git a/src/assets/css/style.css b/src/assets/css/style.css index 67871f0..b6618f7 100644 --- a/src/assets/css/style.css +++ b/src/assets/css/style.css @@ -1228,3 +1228,11 @@ h6 { font-size: 13px; color: #012970; } + +#id_order_by { + border-top-left-radius: 0; + border-bottom-left-radius: 0; +} +#order_by_label{ + margin-bottom: 1rem; +} diff --git a/src/signals/filters.py b/src/signals/filters.py index c8b792e..93bb647 100644 --- a/src/signals/filters.py +++ b/src/signals/filters.py @@ -2,7 +2,7 @@ import django_filters from django.db.models import Q -from django_filters.filters import CharFilter +from django_filters.filters import CharFilter, OrderingFilter from signals.models import Signal @@ -13,6 +13,13 @@ class SignalFilter(django_filters.FilterSet): """ search = CharFilter(method='filter_search') + order_by = OrderingFilter( + fields=( + ('display_name', 'name'), + ('source__name', 'source'), + ('last_updated', 'last_updated'), + ) + ) class Meta: model = Signal diff --git a/src/signals/forms.py b/src/signals/forms.py index 94f0e78..51ff46a 100644 --- a/src/signals/forms.py +++ b/src/signals/forms.py @@ -16,6 +16,14 @@ class SignalFilterForm(forms.ModelForm): """ A form for filtering signals. """ + order_by = forms.ChoiceField(choices=[ + ('', '---------'), + ('name', 'Name'), + ('source__name', 'Source'), + ('last_updated', 'Last Updated'), + ], + required=False, + ) search = forms.CharField(min_length=3) pathogen = forms.ModelChoiceField(queryset=Pathogen.objects.all(), empty_label='---------') active = forms.NullBooleanField(initial=None) @@ -26,6 +34,7 @@ class SignalFilterForm(forms.ModelForm): class Meta: model = Signal fields: list[str] = [ + 'order_by', 'search', 'pathogen', 'active', @@ -38,6 +47,11 @@ class Meta: ] widgets = { + 'order_by': forms.Select(attrs={ + 'class': 'form-select', + 'id': 'order_by', + 'aria-label': 'Order by', + }), 'search': forms.TextInput(attrs={'class': 'form-control', 'placeholder': 'Enter search term'}), 'pathogen': forms.Select(attrs={'class': 'form-select'}), 'active': forms.NullBooleanSelect(attrs={'class': 'form-check mt-3', 'label': "Test "},), diff --git a/src/templates/signals/signals.html b/src/templates/signals/signals.html index 9d938c1..fca1ab5 100644 --- a/src/templates/signals/signals.html +++ b/src/templates/signals/signals.html @@ -4,11 +4,11 @@ {% load crispy_forms_tags %} {% block content %} +
+ +{% endblock %} diff --git a/src/templates/signals/signals_list.html b/src/templates/signals/signals_list.html index fc1b755..85d93ac 100644 --- a/src/templates/signals/signals_list.html +++ b/src/templates/signals/signals_list.html @@ -21,7 +21,11 @@ {% endif %}