mirror of
				https://github.com/netbox-community/netbox.git
				synced 2024-05-10 07:54:54 +00:00 
			
		
		
		
	Merge branch 'develop' into 3668-address-assign-dns-filter
This commit is contained in:
		@@ -2950,6 +2950,8 @@ class Cable(ChangeLoggedModel):
 | 
			
		||||
        # Store the given length (if any) in meters for use in database ordering
 | 
			
		||||
        if self.length and self.length_unit:
 | 
			
		||||
            self._abs_length = to_meters(self.length, self.length_unit)
 | 
			
		||||
        else:
 | 
			
		||||
            self._abs_length = None
 | 
			
		||||
 | 
			
		||||
        # Store the parent Device for the A and B terminations (if applicable) to enable filtering
 | 
			
		||||
        if hasattr(self.termination_a, 'device'):
 | 
			
		||||
 
 | 
			
		||||
@@ -1754,10 +1754,13 @@ class CableTraceView(PermissionRequiredMixin, View):
 | 
			
		||||
    def get(self, request, model, pk):
 | 
			
		||||
 | 
			
		||||
        obj = get_object_or_404(model, pk=pk)
 | 
			
		||||
        trace = obj.trace(follow_circuits=True)
 | 
			
		||||
        total_length = sum([entry[1]._abs_length for entry in trace if entry[1] and entry[1]._abs_length])
 | 
			
		||||
 | 
			
		||||
        return render(request, 'dcim/cable_trace.html', {
 | 
			
		||||
            'obj': obj,
 | 
			
		||||
            'trace': obj.trace(follow_circuits=True),
 | 
			
		||||
            'trace': trace,
 | 
			
		||||
            'total_length': total_length,
 | 
			
		||||
        })
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -7,7 +7,7 @@ $(document).ready(function() {
 | 
			
		||||
 | 
			
		||||
    // "Toggle" checkbox for object lists (PK column)
 | 
			
		||||
    $('input:checkbox.toggle').click(function() {
 | 
			
		||||
        $(this).closest('table').find('input:checkbox[name=pk]').prop('checked', $(this).prop('checked'));
 | 
			
		||||
        $(this).closest('table').find('input:checkbox[name=pk]:visible').prop('checked', $(this).prop('checked'));
 | 
			
		||||
 | 
			
		||||
        // Show the "select all" box if present
 | 
			
		||||
        if ($(this).is(':checked')) {
 | 
			
		||||
@@ -400,8 +400,8 @@ $(document).ready(function() {
 | 
			
		||||
    window.addEventListener('hashchange', headerOffsetScroll);
 | 
			
		||||
 | 
			
		||||
    // Offset between the preview window and the window edges
 | 
			
		||||
    const IMAGE_PREVIEW_OFFSET_X = 20
 | 
			
		||||
    const IMAGE_PREVIEW_OFFSET_Y = 10
 | 
			
		||||
    const IMAGE_PREVIEW_OFFSET_X = 20;
 | 
			
		||||
    const IMAGE_PREVIEW_OFFSET_Y = 10;
 | 
			
		||||
 | 
			
		||||
    // Preview an image attachment when the link is hovered over
 | 
			
		||||
    $('a.image-preview').on('mouseover', function(e) {
 | 
			
		||||
@@ -435,6 +435,6 @@ $(document).ready(function() {
 | 
			
		||||
 | 
			
		||||
    // Fade the image out; it will be deleted when another one is previewed
 | 
			
		||||
    $('a.image-preview').on('mouseout', function() {
 | 
			
		||||
        $('#image-preview-window').fadeOut('fast')
 | 
			
		||||
        $('#image-preview-window').fadeOut('fast');
 | 
			
		||||
    });
 | 
			
		||||
});
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										30
									
								
								netbox/project-static/js/interface_toggles.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										30
									
								
								netbox/project-static/js/interface_toggles.js
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,30 @@
 | 
			
		||||
// Toggle the display of IP addresses under interfaces
 | 
			
		||||
$('button.toggle-ips').click(function() {
 | 
			
		||||
    var selected = $(this).attr('selected');
 | 
			
		||||
    if (selected) {
 | 
			
		||||
        $('#interfaces_table tr.ipaddresses').hide();
 | 
			
		||||
    } else {
 | 
			
		||||
        $('#interfaces_table tr.ipaddresses').show();
 | 
			
		||||
    }
 | 
			
		||||
    $(this).attr('selected', !selected);
 | 
			
		||||
    $(this).children('span').toggleClass('glyphicon-check glyphicon-unchecked');
 | 
			
		||||
    return false;
 | 
			
		||||
});
 | 
			
		||||
 | 
			
		||||
// Inteface filtering
 | 
			
		||||
$('input.interface-filter').on('input', function() {
 | 
			
		||||
    var filter = new RegExp(this.value);
 | 
			
		||||
 | 
			
		||||
    for (interface of $(this).closest('form').find('tbody > tr')) {
 | 
			
		||||
        // Slice off 'interface_' at the start of the ID
 | 
			
		||||
        if (filter && filter.test(interface.id.slice(10))) {
 | 
			
		||||
            // Match the toggle in case the filter now matches the interface
 | 
			
		||||
            $(interface).find('input:checkbox[name=pk]').prop('checked', $('input.toggle').prop('checked'));
 | 
			
		||||
            $(interface).show();
 | 
			
		||||
        } else {
 | 
			
		||||
            // Uncheck to prevent actions from including it when it doesn't match
 | 
			
		||||
            $(interface).find('input:checkbox[name=pk]').prop('checked', false);
 | 
			
		||||
            $(interface).hide();
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
});
 | 
			
		||||
@@ -10,7 +10,10 @@
 | 
			
		||||
        <div class="col-md-4 col-md-offset-1 text-center">
 | 
			
		||||
            <h4>Near End</h4>
 | 
			
		||||
        </div>
 | 
			
		||||
        <div class="col-md-4 col-md-offset-3 text-center">
 | 
			
		||||
        <div class="col-md-3 text-center">
 | 
			
		||||
            {% if total_length %}<h5>Total length: {{ total_length|floatformat:"-2" }} Meters<h5>{% endif %}
 | 
			
		||||
        </div>
 | 
			
		||||
        <div class="col-md-4 text-center">
 | 
			
		||||
            <h4>Far End</h4>
 | 
			
		||||
        </div>
 | 
			
		||||
    </div>
 | 
			
		||||
 
 | 
			
		||||
@@ -556,6 +556,9 @@
 | 
			
		||||
                                <span class="glyphicon glyphicon-check" aria-hidden="true"></span> Show IPs
 | 
			
		||||
                            </button>
 | 
			
		||||
                        </div>
 | 
			
		||||
                        <div class="col-md-2 pull-right noprint">
 | 
			
		||||
                            <input class="form-control interface-filter" type="text" placeholder="Filter" title="RegEx-enabled" style="height: 23px" />
 | 
			
		||||
                        </div>
 | 
			
		||||
                    </div>
 | 
			
		||||
                    <table id="interfaces_table" class="table table-hover table-headings panel-body component-list">
 | 
			
		||||
                        <thead>
 | 
			
		||||
@@ -900,19 +903,8 @@ function toggleConnection(elem) {
 | 
			
		||||
$(".cable-toggle").click(function() {
 | 
			
		||||
    return toggleConnection($(this));
 | 
			
		||||
});
 | 
			
		||||
// Toggle the display of IP addresses under interfaces
 | 
			
		||||
$('button.toggle-ips').click(function() {
 | 
			
		||||
    var selected = $(this).attr('selected');
 | 
			
		||||
    if (selected) {
 | 
			
		||||
        $('#interfaces_table tr.ipaddresses').hide();
 | 
			
		||||
    } else {
 | 
			
		||||
        $('#interfaces_table tr.ipaddresses').show();
 | 
			
		||||
    }
 | 
			
		||||
    $(this).attr('selected', !selected);
 | 
			
		||||
    $(this).children('span').toggleClass('glyphicon-check glyphicon-unchecked');
 | 
			
		||||
    return false;
 | 
			
		||||
});
 | 
			
		||||
</script>
 | 
			
		||||
<script src="{% static 'js/interface_toggles.js' %}?v{{ settings.VERSION }}"></script>
 | 
			
		||||
<script src="{% static 'js/graphs.js' %}?v{{ settings.VERSION }}"></script>
 | 
			
		||||
<script src="{% static 'js/secrets.js' %}?v{{ settings.VERSION }}"></script>
 | 
			
		||||
{% endblock %}
 | 
			
		||||
 
 | 
			
		||||
@@ -1,5 +1,6 @@
 | 
			
		||||
{% extends '_base.html' %}
 | 
			
		||||
{% load custom_links %}
 | 
			
		||||
{% load static %}
 | 
			
		||||
{% load helpers %}
 | 
			
		||||
 | 
			
		||||
{% block header %}
 | 
			
		||||
@@ -253,6 +254,9 @@
 | 
			
		||||
                        <span class="glyphicon glyphicon-check" aria-hidden="true"></span> Show IPs
 | 
			
		||||
                    </button>
 | 
			
		||||
                </div>
 | 
			
		||||
                <div class="col-md-2 pull-right noprint">
 | 
			
		||||
                    <input class="form-control interface-filter" type="text" placeholder="Filter" title="RegEx-enabled" style="height: 23px" />
 | 
			
		||||
                </div>
 | 
			
		||||
            </div>
 | 
			
		||||
            <table id="interfaces_table" class="table table-hover table-headings panel-body component-list">
 | 
			
		||||
                <thead>
 | 
			
		||||
@@ -312,18 +316,5 @@
 | 
			
		||||
{% endblock %}
 | 
			
		||||
 | 
			
		||||
{% block javascript %}
 | 
			
		||||
<script type="text/javascript">
 | 
			
		||||
// Toggle the display of IP addresses under interfaces
 | 
			
		||||
$('button.toggle-ips').click(function() {
 | 
			
		||||
    var selected = $(this).attr('selected');
 | 
			
		||||
    if (selected) {
 | 
			
		||||
        $('#interfaces_table tr.ipaddresses').hide();
 | 
			
		||||
    } else {
 | 
			
		||||
        $('#interfaces_table tr.ipaddresses').show();
 | 
			
		||||
    }
 | 
			
		||||
    $(this).attr('selected', !selected);
 | 
			
		||||
    $(this).children('span').toggleClass('glyphicon-check glyphicon-unchecked');
 | 
			
		||||
    return false;
 | 
			
		||||
});
 | 
			
		||||
</script>
 | 
			
		||||
<script src="{% static 'js/interface_toggles.js' %}?v{{ settings.VERSION }}"></script>
 | 
			
		||||
{% endblock %}
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user