mirror of
https://github.com/netbox-community/netbox.git
synced 2025-07-26 18:38:38 -06:00
Merge branch 'develop' into develop-2.10
This commit is contained in:
commit
a0e62c6c87
@ -9,3 +9,4 @@ The `users.UserConfig` model holds individual preferences for each user in the f
|
|||||||
| extras.configcontext.format | Preferred format when rendering config context data (JSON or YAML) |
|
| extras.configcontext.format | Preferred format when rendering config context data (JSON or YAML) |
|
||||||
| pagination.per_page | The number of items to display per page of a paginated table |
|
| pagination.per_page | The number of items to display per page of a paginated table |
|
||||||
| tables.TABLE_NAME.columns | The ordered list of columns to display when viewing the table |
|
| tables.TABLE_NAME.columns | The ordered list of columns to display when viewing the table |
|
||||||
|
| rack_elevation.show_images | The bool value defining the display of device images on the rack scheme
|
||||||
|
@ -6,6 +6,7 @@ from django.core.paginator import EmptyPage, PageNotAnInteger
|
|||||||
from django.db import transaction
|
from django.db import transaction
|
||||||
from django.db.models import Count, F, Prefetch
|
from django.db.models import Count, F, Prefetch
|
||||||
from django.forms import ModelMultipleChoiceField, MultipleHiddenInput, modelformset_factory
|
from django.forms import ModelMultipleChoiceField, MultipleHiddenInput, modelformset_factory
|
||||||
|
from django.http import HttpResponse
|
||||||
from django.shortcuts import get_object_or_404, redirect, render
|
from django.shortcuts import get_object_or_404, redirect, render
|
||||||
from django.utils.html import escape
|
from django.utils.html import escape
|
||||||
from django.utils.safestring import mark_safe
|
from django.utils.safestring import mark_safe
|
||||||
@ -329,8 +330,21 @@ class RackElevationListView(generic.ObjectListView):
|
|||||||
'reverse': reverse,
|
'reverse': reverse,
|
||||||
'rack_face': rack_face,
|
'rack_face': rack_face,
|
||||||
'filter_form': forms.RackElevationFilterForm(request.GET),
|
'filter_form': forms.RackElevationFilterForm(request.GET),
|
||||||
|
'show_images': request.user.config.get('rack_elevation.show_images', False)
|
||||||
})
|
})
|
||||||
|
|
||||||
|
def post(self, request):
|
||||||
|
# Update the user's rack_elevation configuration
|
||||||
|
if "show_images" in request.POST:
|
||||||
|
value = False
|
||||||
|
if request.POST.get("show_images") == 'true' or request.POST.get("show_images") == 'True':
|
||||||
|
value = True
|
||||||
|
preference_name = "rack_elevation.show_images"
|
||||||
|
request.user.config.set(preference_name, value, commit=True)
|
||||||
|
return HttpResponse("Your preferences have been updated.")
|
||||||
|
else:
|
||||||
|
return HttpResponse("No valid parameters was provided")
|
||||||
|
|
||||||
|
|
||||||
class RackView(generic.ObjectView):
|
class RackView(generic.ObjectView):
|
||||||
queryset = Rack.objects.prefetch_related('site__region', 'tenant__group', 'group', 'role')
|
queryset = Rack.objects.prefetch_related('site__region', 'tenant__group', 'group', 'role')
|
||||||
@ -365,7 +379,8 @@ class RackView(generic.ObjectView):
|
|||||||
'nonracked_devices': nonracked_devices,
|
'nonracked_devices': nonracked_devices,
|
||||||
'next_rack': next_rack,
|
'next_rack': next_rack,
|
||||||
'prev_rack': prev_rack,
|
'prev_rack': prev_rack,
|
||||||
}
|
'show_images': request.user.config.get('rack_elevation.show_images', False)
|
||||||
|
})
|
||||||
|
|
||||||
|
|
||||||
class RackEditView(generic.ObjectEditView):
|
class RackEditView(generic.ObjectEditView):
|
||||||
|
@ -1,13 +1,39 @@
|
|||||||
// Toggle the display of device images within an SVG rack elevation
|
//Set images by boolean value
|
||||||
$('button.toggle-images').click(function() {
|
function setImages(visible){
|
||||||
var selected = $(this).attr('selected');
|
let button = $("#toggle_device_images");
|
||||||
var rack_elevation = $(".rack_elevation");
|
let rack_elevation = $(".rack_elevation");
|
||||||
if (selected) {
|
|
||||||
$('.device-image', rack_elevation.contents()).addClass('hidden');
|
button.children('span').removeClass('mdi-checkbox-marked-circle-outline mdi-checkbox-blank-circle-outline');
|
||||||
} else {
|
if(visible){
|
||||||
$('.device-image', rack_elevation.contents()).removeClass('hidden');
|
$('.device-image', rack_elevation.contents()).removeClass('hidden');
|
||||||
|
button.children('span').addClass('mdi-checkbox-marked-circle-outline');
|
||||||
|
button.attr('selected', true);
|
||||||
}
|
}
|
||||||
$(this).attr('selected', !selected);
|
else{
|
||||||
$(this).children('span').toggleClass('mdi-checkbox-marked-circle-outline mdi-checkbox-blank-circle-outline');
|
$('.device-image', rack_elevation.contents()).addClass('hidden');
|
||||||
|
button.children('span').addClass('mdi-checkbox-blank-circle-outline');
|
||||||
|
button.attr('selected', false);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Toggle the display of device images within an SVG rack elevation
|
||||||
|
$('#toggle_device_images').click(function() {
|
||||||
|
var selected = $(this).attr('selected');
|
||||||
|
$.ajax({
|
||||||
|
url: "/dcim/rack-elevations/",
|
||||||
|
type: 'POST',
|
||||||
|
data: {
|
||||||
|
'show_images': !selected,
|
||||||
|
'csrfmiddlewaretoken': $("#csrfmiddlewaretoken").val()
|
||||||
|
},
|
||||||
|
datatype: "json"
|
||||||
|
});
|
||||||
|
|
||||||
|
setImages(!selected);
|
||||||
return false;
|
return false;
|
||||||
});
|
});
|
||||||
|
|
||||||
|
//Initial images setting
|
||||||
|
$(".rack_elevation").on('load', function() {
|
||||||
|
setImages($("#toggle_device_images").attr('selected'));
|
||||||
|
});
|
||||||
|
@ -54,7 +54,8 @@
|
|||||||
<h1>{% block title %}Rack {{ object }}{% endblock %}</h1>
|
<h1>{% block title %}Rack {{ object }}{% endblock %}</h1>
|
||||||
{% include 'inc/created_updated.html' %}
|
{% include 'inc/created_updated.html' %}
|
||||||
<div class="pull-right noprint">
|
<div class="pull-right noprint">
|
||||||
<button class="btn btn-sm btn-default toggle-images" selected="selected">
|
<input type="hidden" id="csrfmiddlewaretoken" value="{{ csrf_token }}">
|
||||||
|
<button id="toggle_device_images" class="btn btn-default toggle-images" {% if show_images %} selected="selected" {% endif %}>
|
||||||
<span class="mdi mdi-checkbox-marked-circle-outline" aria-hidden="true"></span> Show Images
|
<span class="mdi mdi-checkbox-marked-circle-outline" aria-hidden="true"></span> Show Images
|
||||||
</button>
|
</button>
|
||||||
{% custom_links object %}
|
{% custom_links object %}
|
||||||
|
@ -4,7 +4,8 @@
|
|||||||
|
|
||||||
{% block content %}
|
{% block content %}
|
||||||
<div class="btn-toolbar pull-right noprint" role="toolbar">
|
<div class="btn-toolbar pull-right noprint" role="toolbar">
|
||||||
<button class="btn btn-default toggle-images" selected="selected">
|
<input type="hidden" id="csrfmiddlewaretoken" value="{{ csrf_token }}">
|
||||||
|
<button id="toggle_device_images" class="btn btn-default toggle-images" {% if show_images %} selected="selected" {% endif %}>
|
||||||
<span class="mdi mdi mdi-checkbox-marked-circle-outline" aria-hidden="true"></span> Show Images
|
<span class="mdi mdi mdi-checkbox-marked-circle-outline" aria-hidden="true"></span> Show Images
|
||||||
</button>
|
</button>
|
||||||
<div class="btn-group" role="group">
|
<div class="btn-group" role="group">
|
||||||
|
Loading…
Reference in New Issue
Block a user