Files
netdisco/share/views/js/device.js
Oliver Gorwits d332eaf293 new network map (neighbors) implementation
also link to manual topology from device ports
fix tooltip reinit on datatables paging

Squashed commit of the following:

commit 85d52ed174
Merge: 66e35366 07446ed7
Author: Oliver Gorwits <oliver@cpan.org>
Date:   Sun Dec 31 08:59:19 2017 +0000

    Merge branch 'master' into og-newnetmap

commit 66e353669d
Author: Oliver Gorwits <oliver@cpan.org>
Date:   Sun Dec 31 00:16:49 2017 +0000

    add docs link

commit 809f1ede76
Author: Oliver Gorwits <oliver@cpan.org>
Date:   Sun Dec 31 00:11:29 2017 +0000

    node links to other devices

commit 187e1ea803
Author: Oliver Gorwits <oliver@cpan.org>
Date:   Sat Dec 30 23:58:56 2017 +0000

    add node infostring

commit 6453f99b28
Author: Oliver Gorwits <oliver@cpan.org>
Date:   Sat Dec 30 23:41:19 2017 +0000

    link infostrings!

commit f3ba260142
Author: Oliver Gorwits <oliver@cpan.org>
Date:   Sat Dec 30 22:42:09 2017 +0000

    maxnoderadius is now based on dynamic size calc

commit 0af415e391
Author: Oliver Gorwits <oliver@cpan.org>
Date:   Sat Dec 30 22:33:22 2017 +0000

    fix to get aggregate ports in matching order on left and right side

commit 3f36121a4c
Author: Oliver Gorwits <oliver@cpan.org>
Date:   Sat Dec 30 22:07:28 2017 +0000

    initial aggregate link summing

commit e5b96b0781
Author: Oliver Gorwits <oliver@cpan.org>
Date:   Sat Dec 30 14:55:00 2017 +0000

    tidy and refactor

commit 79f22a47b3
Author: Oliver Gorwits <oliver@cpan.org>
Date:   Sat Dec 30 13:42:58 2017 +0000

    get rid of d3 v3/v4 and only have v3

commit 18c3f16c8f
Author: Oliver Gorwits <oliver@cpan.org>
Date:   Sat Dec 30 12:54:45 2017 +0000

    fullscreen exit now works

commit 93f8181fc8
Author: Oliver Gorwits <oliver@cpan.org>
Date:   Sat Dec 30 08:58:04 2017 +0000

    implement show link speeds on links

commit 72961f172d
Author: Oliver Gorwits <oliver@cpan.org>
Date:   Thu Dec 28 23:51:26 2017 +0000

    add speed to retrieved devicelinks

commit ae5496310e
Author: Oliver Gorwits <oliver@cpan.org>
Date:   Tue Dec 26 11:21:12 2017 +0000

    remove annealing on label change

commit 885cb92bd3
Author: Oliver Gorwits <oliver@cpan.org>
Date:   Tue Dec 26 11:15:21 2017 +0000

    reorder options

commit 015a1debe0
Author: Oliver Gorwits <oliver@cpan.org>
Date:   Tue Dec 26 11:11:01 2017 +0000

    fix d3-force debug link messing up svg text elements

commit 10ccaa78b1
Author: Oliver Gorwits <oliver@cpan.org>
Date:   Tue Dec 26 10:52:47 2017 +0000

    show ips functionality; improvement to maximise icon; bugfix d3-force label wrap

commit 71a1a20909
Author: Oliver Gorwits <oliver@cpan.org>
Date:   Mon Dec 25 13:21:23 2017 +0000

    move labels on neighbor view

commit 9578215349
Author: Oliver Gorwits <oliver@cpan.org>
Date:   Mon Dec 25 13:13:13 2017 +0000

    force running spinner

commit 6618fba548
Author: Oliver Gorwits <oliver@cpan.org>
Date:   Sun Dec 24 23:13:33 2017 +0000

    fix neighbors pinning

commit 938848551e
Author: Oliver Gorwits <oliver@cpan.org>
Date:   Sun Dec 24 18:12:04 2017 +0000

    implement dynamic sizing option

commit e4b19be5d7
Author: Oliver Gorwits <oliver@cpan.org>
Date:   Sun Dec 24 13:25:00 2017 +0000

    zoom to device on neighbor show; do not save positions on neighbor show

commit 58b576b464
Author: Oliver Gorwits <oliver@cpan.org>
Date:   Sun Dec 24 13:10:48 2017 +0000

    better neighbors/save interaction

commit 2c77660f2f
Author: Oliver Gorwits <oliver@cpan.org>
Date:   Sun Dec 24 13:03:46 2017 +0000

    fix labels on checkboxes to be clickable

commit 2c2dc62cda
Author: Oliver Gorwits <oliver@cpan.org>
Date:   Sun Dec 24 12:50:26 2017 +0000

    prevent save positions when in neighbor view mode

commit 78c558b5be
Author: Oliver Gorwits <oliver@cpan.org>
Date:   Sun Dec 24 12:37:51 2017 +0000

    add tooltip to show why host groups radio is disabled

commit 7000d4b0eb
Author: Oliver Gorwits <oliver@cpan.org>
Date:   Sun Dec 24 12:12:29 2017 +0000

    allow port control role to edit manual topology

commit 547d2934cb
Author: Oliver Gorwits <oliver@cpan.org>
Date:   Sun Dec 24 12:09:40 2017 +0000

    working save/restore node positions with groups

commit bf7e231ffe
Author: Oliver Gorwits <oliver@cpan.org>
Date:   Sun Dec 24 10:09:26 2017 +0000

    node colors!

commit e23594b041
Author: Oliver Gorwits <oliver@cpan.org>
Date:   Sat Dec 23 23:42:17 2017 +0000

    wooo device group selection is working

commit b1b22c9811
Author: Oliver Gorwits <oliver@cpan.org>
Date:   Sat Dec 23 22:31:23 2017 +0000

    send full query str from netmap for json

commit 9a13bb7f9b
Author: Oliver Gorwits <oliver@cpan.org>
Date:   Sat Dec 23 22:06:24 2017 +0000

    implement host_group_displaynames and fix vlan save bug

commit 35ed34ed2f
Author: Oliver Gorwits <oliver@cpan.org>
Date:   Sat Dec 23 17:52:14 2017 +0000

    when neighbors only can restrict the links search

commit f9e5ec02ab
Author: Oliver Gorwits <oliver@cpan.org>
Date:   Sat Dec 23 17:44:41 2017 +0000

    tweak mapshow

commit 9f9971ff4e
Author: Oliver Gorwits <oliver@cpan.org>
Date:   Sat Dec 23 00:47:17 2017 +0000

    better sidebar look and layout

commit 1def41da67
Author: Oliver Gorwits <oliver@cpan.org>
Date:   Thu Dec 21 23:54:44 2017 +0000

    sidebar with many options!!

commit 4203cbb225
Merge: 7c12df6b 7db65932
Author: Oliver Gorwits <oliver@cpan.org>
Date:   Thu Dec 21 20:14:55 2017 +0000

    Merge branch 'master' into og-newnetmap

commit 7c12df6b83
Author: Oliver Gorwits <oliver@cpan.org>
Date:   Thu Dec 21 00:13:03 2017 +0000

    refresh tooltips when the datatables table is updated

commit 081b89d5dc
Author: Oliver Gorwits <oliver@cpan.org>
Date:   Wed Dec 20 23:59:15 2017 +0000

    shortcut from device port to manual topology

commit 9520438960
Author: Oliver Gorwits <oliver@cpan.org>
Date:   Wed Dec 20 23:34:44 2017 +0000

    tighten the sql for neighbor links

commit d6b0275931
Author: Oliver Gorwits <oliver@cpan.org>
Date:   Wed Dec 20 23:26:22 2017 +0000

    tweak layout again

commit 9e5e2f0ed5
Author: Oliver Gorwits <oliver@cpan.org>
Date:   Wed Dec 20 23:18:57 2017 +0000

    fullscreen mode for netmap

commit aba359d2a9
Author: Oliver Gorwits <oliver@cpan.org>
Date:   Wed Dec 20 22:05:51 2017 +0000

    save and load netmap positions for same device groups

commit b7cd0251ff
Author: Oliver Gorwits <oliver@cpan.org>
Date:   Tue Dec 19 23:24:47 2017 +0000

    basic positions upload

commit 786115ebda
Author: Oliver Gorwits <oliver@cpan.org>
Date:   Tue Dec 19 22:13:16 2017 +0000

    working group drag

commit 91f98d4f33
Author: Oliver Gorwits <oliver@cpan.org>
Date:   Mon Dec 18 23:00:16 2017 +0000

    drag all selected nodes

commit ba48eee5f7
Merge: 60412cd6 7f8e3edf
Author: Oliver Gorwits <oliver@cpan.org>
Date:   Mon Dec 18 20:14:20 2017 +0000

    Merge branch 'master' into og-newnetmap

commit 60412cd6e6
Merge: 39ca1491 7dc79f72
Author: Oliver Gorwits <oliver@cpan.org>
Date:   Sun Dec 17 20:23:41 2017 +0000

    Merge branch 'master' into og-newnetmap

commit 39ca1491b0
Merge: 69622582 c8806bea
Author: Oliver Gorwits <oliver@cpan.org>
Date:   Sun Dec 17 19:52:49 2017 +0000

    Merge branch 'master' into og-newnetmap

commit 6962258223
Author: Oliver Gorwits <oliver@cpan.org>
Date:   Sun Dec 17 19:52:26 2017 +0000

    bleed versions

commit 444e82b8a3
Author: Oliver Gorwits <oliver@cpan.org>
Date:   Sat Dec 16 15:33:41 2017 +0000

    use d3 v4 only

commit 01cd7a908d
Author: Oliver Gorwits <oliver@cpan.org>
Date:   Sat Dec 16 15:22:08 2017 +0000

    two d3 connected

commit 854f37fc94
Author: Oliver Gorwits <oliver@cpan.org>
Date:   Thu Dec 14 21:34:49 2017 +0000

    more fiddling with d3

commit 61a3a9e06d
Author: Oliver Gorwits <oliver@cpan.org>
Date:   Thu Dec 14 19:15:21 2017 +0000

    working worker

commit ebadebe69a
Author: Oliver Gorwits <oliver@cpan.org>
Date:   Thu Dec 14 07:57:55 2017 +0000

    borken worker

commit c327b28513
Author: Oliver Gorwits <oliver@cpan.org>
Date:   Wed Dec 13 13:45:03 2017 +0000

    fix node center

commit 33bd9d39da
Author: Oliver Gorwits <oliver@cpan.org>
Date:   Wed Dec 13 01:14:50 2017 +0000

    improvements to graphing

commit 6178bf2298
Merge: 1c627eaf 925940c9
Author: Oliver Gorwits <oliver@cpan.org>
Date:   Tue Dec 12 23:44:48 2017 +0000

    Merge branch 'master' into og-newnetmap

commit 1c627eaf3c
Merge: 77ca8f96 000cbaa1
Author: Oliver Gorwits <oliver@cpan.org>
Date:   Tue Dec 12 23:38:00 2017 +0000

    Merge branch 'master' into og-newnetmap

commit 77ca8f96e1
Author: Oliver Gorwits <oliver@cpan.org>
Date:   Mon Dec 11 00:09:08 2017 +0000

    working rendering using d3-force plugin

commit 187265fc03
Author: Oliver Gorwits <oliver@cpan.org>
Date:   Sun Dec 10 23:19:23 2017 +0000

    initial work on moving to d3-force-apex-plugin - json data
2017-12-31 09:13:01 +00:00

203 lines
7.4 KiB
JavaScript

// used by the tabbing interface to make sure the correct
// ajax content is loaded
var path = 'device';
// fields in the Device Search Options form (Device tab)
var form_inputs = $("#ports_form .clearfix input").not('[type="checkbox"]')
.add("#ports_form .clearfix select");
// this is called by do_search to support local code
// which might need to act on the newly inserted content
// but which cannot use jQuery delegation via .on()
function inner_view_processing(tab) {
// LT wanted the page title to reflect what's on the page :)
document.title = $('#nd_device-name').text()
+' - '+ $('#'+ tab + '_link').text();
// used for contenteditable cells to find out whether the user has made
// changes, and only reset when they submit or cancel the change
var dirty = false;
// activate modals, tooltips and popovers
$('.nd_modal').modal({show: false});
$("[rel=tooltip]").tooltip({live: true});
$("[rel=popover]").popover({live: true});
// positions save not available in netmap neighbors view
if ($("input[name='mapshow']:checked").val() == 'neighbors') {
$('#nd_netmap-save').prop('disabled', true).removeClass('btn-info');
} else {
$('#nd_netmap-save').prop('disabled', false).addClass('btn-info');
}
}
// on load, establish global delegations for now and future
$(document).ready(function() {
var tab = '[% tab.tag %]'
var target = '#' + tab + '_pane';
var portfilter = $('#ports_form').find("input[name=f]");
// sidebar form fields should change colour and have trash/copy icon
form_inputs.each(function() {device_form_state($(this))});
form_inputs.change(function() {device_form_state($(this))});
// sidebar collapser events trigger change of up/down arrow
$('.collapse').on('show', function() {
$(this).siblings().find('.nd_arrow-up-down-right')
.toggleClass('icon-chevron-up icon-chevron-down');
});
$('.collapse').on('hide', function() {
$(this).siblings().find('.nd_arrow-up-down-right')
.toggleClass('icon-chevron-up icon-chevron-down');
});
// if the user edits the filter box, revert to automagical search
$('#ports_form').on('input', "input[name=f]", function() {
$('#nd_ports-form-prefer-field').attr('value', '');
});
// handler for trashcan icon in port filter box
$('.nd_field-clear-icon').click(function() {
portfilter.val('');
$('#nd_ports-form-prefer-field').attr('value', '');
$('#ports_form').trigger('submit');
device_form_state(portfilter); // will hide copy icons
});
// allow port filter to have a preference for port/name/vlan
$('#ports_form').on('click', '.nd_device-port-submit-prefer', function() {
event.preventDefault();
$('#nd_ports-form-prefer-field').attr('value', $(this).data('prefer'));
$(this).parents('form').submit();
});
// clickable device port names can simply resubmit AJAX rather than
// fetch the whole page again.
$('#ports_pane').on('click', '.nd_this-port-only', function(event) {
event.preventDefault(); // link is real so prevent page submit
var port = $(this).text();
port = $.trim(port);
portfilter.val(port);
$('.nd_field-clear-icon').show();
// make sure we're preferring a port filter
$('#nd_ports-form-prefer-field').attr('value', 'port');
$('#ports_form').trigger('submit');
device_form_state(portfilter); // will hide copy icons
});
// VLANs column list collapser trigger
// it's a bit of a faff because we can't easily use Bootstrap's collapser
$('#ports_pane').on('click', '.nd_collapse-vlans', function() {
$(this).siblings('.nd_collapsing').toggle();
if ($(this).find('.nd_arrow-up-down-left').hasClass('icon-chevron-up')) {
$(this).html('<div class="nd_arrow-up-down-left icon-chevron-down icon-large"></div>Hide VLANs');
}
else {
$(this).html('<div class="nd_arrow-up-down-left icon-chevron-up icon-large"></div>Show VLANs');
}
});
// refresh tooltips when the datatables table is updated
$('#ports_pane').on('draw.dt', function() {
$("[rel=tooltip]").tooltip({live: true});
});
// netmap show controls
$('#nd_showips').change(function() {
if ($(this).prop('checked')) {
graph.inspect().main.nodes.each(function(n) {
if (n['ORIG_LABEL'] != n['ID']) {
n['LABEL'] = n['ORIG_LABEL'] + ' ' + n['ID'];
}
});
graph.wrapLabels(true).start();
} else {
graph.inspect().main.nodes.each(function(n) {
n['LABEL'] = n['ORIG_LABEL'];
});
graph.wrapLabels(false).start();
}
});
$('#nd_showspeed').change(function() {
$('.nd_netmap-linklabel').css('fill',
($(this).prop('checked') ? 'black' : 'none')
);
});
// netmap pin/release controls
$('#nd_netmap-releaseall').on('click', function(event) {
event.preventDefault();
graph.releaseFixedNodes().resume();
});
$('#nd_netmap-releaseonly').on('click', function(event) {
event.preventDefault();
graph.inspect().main.nodes
.filter(function(n) { return n.selected })
.each(function(n) { n.fixed = false });
graph.resume();
});
$('#nd_netmap-pinonly').on('click', function(event) {
event.preventDefault();
graph.inspect().main.nodes
.filter(function(n) { return n.selected })
.each(function(n) { n.fixed = true });
});
$('#nd_netmap-save').on('click', function(event) {
event.preventDefault();
// if user enters vlan but does not submit this will save wrong data
$.post(
'[% uri_for('/ajax/data/device/netmappositions') %]'
,$("#nd_vlan-entry, #nd_devgrp-select, input[name='mapshow']").serialize()
+ '&positions=' + JSON.stringify(graph.positions())
);
});
$('#nd_netmap-zoomtodevice').on('click', function(event) {
event.preventDefault();
var node = graph.nodeDataById( graph['nd2']['centernode'] );
graph.zoomSmooth(node.x, node.y, node.radius * 100);
});
// activity for admin tasks in device details
$('#details_pane').on('click', '.nd_adminbutton', function(event) {
// stop form from submitting normally
event.preventDefault();
// what purpose - discover/macsuck/arpnip
var mode = $(this).attr('name');
var tr = $(this).closest('tr');
// submit the query
$.ajax({
type: 'POST'
,async: true
,dataType: 'html'
,url: uri_base + '/ajax/control/admin/' + mode
,data: tr.find('input[data-form="' + mode + '"],textarea[data-form="' + mode + '"]').serializeArray()
,success: function() {
if (mode != 'delete') {
toastr.info('Requested '+ mode +' for device '+ tr.data('for-device'));
}
else {
toastr.success('Deleted device '+ tr.data('for-device'));
}
}
// skip any error reporting for now
// TODO: fix sanity_ok in Netdisco Web
,error: function() {
toastr.error('Failed to '+ mode +' device '+ tr.data('for-device'));
}
});
});
// clear any values in the delete confirm dialog
$('#details_pane').on('hidden', '.nd_modal', function () {
$('#nd_devdel-log').val('');
$('#nd_devdel-archive').attr('checked', false);
});
});