mirror of
https://github.com/netbox-community/netbox.git
synced 2025-07-20 02:06:42 -06:00
Merge pull request #10233 from netbox-community/9665-rack-elevation-sorting
#9665 Rack Elevation Sorting Enhancements
This commit is contained in:
commit
15353b7513
@ -589,10 +589,17 @@ class RackElevationListView(generic.ObjectListView):
|
|||||||
racks = filtersets.RackFilterSet(request.GET, self.queryset).qs
|
racks = filtersets.RackFilterSet(request.GET, self.queryset).qs
|
||||||
total_count = racks.count()
|
total_count = racks.count()
|
||||||
|
|
||||||
# Determine ordering
|
ORDERING_CHOICES = {
|
||||||
reverse = bool(request.GET.get('reverse', False))
|
'name': 'Name (A-Z)',
|
||||||
if reverse:
|
'-name': 'Name (Z-A)',
|
||||||
racks = racks.reverse()
|
'facility_id': 'Facility ID (A-Z)',
|
||||||
|
'-facility_id': 'Facility ID (Z-A)',
|
||||||
|
}
|
||||||
|
sort = request.GET.get('sort', "name")
|
||||||
|
if sort not in ORDERING_CHOICES:
|
||||||
|
sort = 'name'
|
||||||
|
|
||||||
|
racks = racks.order_by(sort)
|
||||||
|
|
||||||
# Pagination
|
# Pagination
|
||||||
per_page = get_paginate_count(request)
|
per_page = get_paginate_count(request)
|
||||||
@ -614,7 +621,9 @@ class RackElevationListView(generic.ObjectListView):
|
|||||||
'paginator': paginator,
|
'paginator': paginator,
|
||||||
'page': page,
|
'page': page,
|
||||||
'total_count': total_count,
|
'total_count': total_count,
|
||||||
'reverse': reverse,
|
'sort': sort,
|
||||||
|
'sort_display_name': ORDERING_CHOICES[sort],
|
||||||
|
'sort_choices': ORDERING_CHOICES,
|
||||||
'rack_face': rack_face,
|
'rack_face': rack_face,
|
||||||
'filter_form': forms.RackElevationFilterForm(request.GET),
|
'filter_form': forms.RackElevationFilterForm(request.GET),
|
||||||
})
|
})
|
||||||
|
@ -18,9 +18,15 @@
|
|||||||
<a href="{% url 'dcim:rack_elevation_list' %}{% querystring request face='front' %}" class="btn btn-outline-secondary{% if rack_face == 'front' %} active{% endif %}">Front</a>
|
<a href="{% url 'dcim:rack_elevation_list' %}{% querystring request face='front' %}" class="btn btn-outline-secondary{% if rack_face == 'front' %} active{% endif %}">Front</a>
|
||||||
<a href="{% url 'dcim:rack_elevation_list' %}{% querystring request face='rear' %}" class="btn btn-outline-secondary{% if rack_face == 'rear' %} active{% endif %}">Rear</a>
|
<a href="{% url 'dcim:rack_elevation_list' %}{% querystring request face='rear' %}" class="btn btn-outline-secondary{% if rack_face == 'rear' %} active{% endif %}">Rear</a>
|
||||||
</div>
|
</div>
|
||||||
<div class="btn-group btn-group-sm" role="group">
|
<div class="dropdown">
|
||||||
<a href="{% url 'dcim:rack_elevation_list' %}{% querystring request reverse=None %}" class="btn btn-outline-secondary{% if not reverse %} active{% endif %}">Normal</a>
|
<button type="button" class="btn btn-sm btn-outline-secondary dropdown-toggle" data-bs-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
|
||||||
<a href="{% url 'dcim:rack_elevation_list' %}{% querystring request reverse='true' %}" class="btn btn-outline-secondary{% if reverse %} active{% endif %}">Reversed</a>
|
<i class="mdi mdi-sort"></i> Sort By {{ sort_display_name }}
|
||||||
|
</button>
|
||||||
|
<ul class="dropdown-menu dropdown-menu-end">
|
||||||
|
{% for sort_key, sort_display_name in sort_choices.items %}
|
||||||
|
<li><a class="dropdown-item{% if sort == sort_key %} active{% endif %}" href="{% url 'dcim:rack_elevation_list' %}{% querystring request sort=sort_key %}">{{ sort_display_name }}</a></li>
|
||||||
|
{% endfor %}
|
||||||
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
Loading…
Reference in New Issue
Block a user