Closes #11598: Add buttons to easily switch between rack list and elevations views

This commit is contained in:
jeremystretch 2023-01-26 10:53:59 -05:00
parent 22a9df82e6
commit ccc108a217
5 changed files with 41 additions and 28 deletions

View File

@ -7,6 +7,7 @@
* [#10762](https://github.com/netbox-community/netbox/issues/10762) - Permit selection custom fields to have only one choice * [#10762](https://github.com/netbox-community/netbox/issues/10762) - Permit selection custom fields to have only one choice
* [#11554](https://github.com/netbox-community/netbox/issues/11554) - Add module types count to manufacturers list * [#11554](https://github.com/netbox-community/netbox/issues/11554) - Add module types count to manufacturers list
* [#11585](https://github.com/netbox-community/netbox/issues/11585) - Add IP address filters for services * [#11585](https://github.com/netbox-community/netbox/issues/11585) - Add IP address filters for services
* [#11598](https://github.com/netbox-community/netbox/issues/11598) - Add buttons to easily switch between rack list and elevations views
### Bug Fixes ### Bug Fixes

View File

@ -642,6 +642,7 @@ class RackListView(generic.ObjectListView):
filterset = filtersets.RackFilterSet filterset = filtersets.RackFilterSet
filterset_form = forms.RackFilterForm filterset_form = forms.RackFilterForm
table = tables.RackTable table = tables.RackTable
template_name = 'dcim/rack_list.html'
class RackElevationListView(generic.ObjectListView): class RackElevationListView(generic.ObjectListView):

View File

@ -5,31 +5,34 @@
{% block title %}Rack Elevations{% endblock %} {% block title %}Rack Elevations{% endblock %}
{% block controls %} {% block controls %}
<div class="controls"> <div class="controls">
<div class="control-group"> <div class="control-group">
<div class="btn-group btn-group-sm" role="group"> <a href="{% url 'dcim:rack_list' %}{% querystring request %}" class="btn btn-sm btn-primary">
<select class="btn btn-sm btn-outline-secondary rack-view"> <i class="mdi mdi-format-list-checkbox"></i> View List
<option value="images-and-labels" selected="selected">Images and Labels</option> </a>
<option value="images-only">Images only</option> <div class="btn-group btn-group-sm" role="group">
<option value="labels-only">Labels only</option> <select class="btn btn-sm btn-outline-secondary rack-view">
</select> <option value="images-and-labels" selected="selected">Images and Labels</option>
</div> <option value="images-only">Images only</option>
<div class="btn-group btn-group-sm" role="group"> <option value="labels-only">Labels only</option>
<a href="{% url 'dcim:rack_elevation_list' %}{% querystring request face='front' %}" class="btn btn-outline-secondary{% if rack_face == 'front' %} active{% endif %}">Front</a> </select>
<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 face='front' %}" class="btn btn-outline-secondary{% if rack_face == 'front' %} active{% endif %}">Front</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 face='rear' %}" class="btn btn-outline-secondary{% if rack_face == 'rear' %} active{% endif %}">Rear</a>
<i class="mdi mdi-sort"></i>&nbsp;Sort By {{ sort_display_name }} </div>
</button> <div class="dropdown">
<ul class="dropdown-menu dropdown-menu-end"> <button type="button" class="btn btn-sm btn-outline-secondary dropdown-toggle" data-bs-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
{% for sort_key, sort_display_name in sort_choices.items %} <i class="mdi mdi-sort"></i>&nbsp;Sort By {{ sort_display_name }}
<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> </button>
{% endfor %} <ul class="dropdown-menu dropdown-menu-end">
</ul> {% for sort_key, sort_display_name in sort_choices.items %}
</div> <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>
</div> {% endfor %}
</ul>
</div>
</div> </div>
</div>
{% endblock %} {% endblock %}
{% block content-wrapper %} {% block content-wrapper %}

View File

@ -0,0 +1,9 @@
{% extends 'generic/object_list.html' %}
{% load helpers %}
{% load static %}
{% block extra_controls %}
<a href="{% url 'dcim:rack_elevation_list' %}{% querystring request %}" class="btn btn-sm btn-primary">
<i class="mdi mdi-view-day-outline"></i> View Elevations
</a>
{% endblock %}

View File

@ -26,16 +26,15 @@ Context:
<div class="controls"> <div class="controls">
<div class="control-group"> <div class="control-group">
{% plugin_list_buttons model %} {% plugin_list_buttons model %}
{% block extra_controls %}{% endblock %} {% block extra_controls %}{% endblock %}
{% if 'add' in actions %} {% if 'add' in actions %}
{% add_button model %} {% add_button model %}
{% endif %} {% endif %}
{% if 'import' in actions %} {% if 'import' in actions %}
{% import_button model %} {% import_button model %}
{% endif %} {% endif %}
{% if 'export' in actions %} {% if 'export' in actions %}
{% export_button model %} {% export_button model %}
{% endif %} {% endif %}
</div> </div>
</div> </div>