diff --git a/Netdisco/lib/App/Netdisco/Web/Plugin/Device/Ports.pm b/Netdisco/lib/App/Netdisco/Web/Plugin/Device/Ports.pm index e60fa9b6..7f52650e 100644 --- a/Netdisco/lib/App/Netdisco/Web/Plugin/Device/Ports.pm +++ b/Netdisco/lib/App/Netdisco/Web/Plugin/Device/Ports.pm @@ -130,15 +130,13 @@ get '/ajax/content/device/ports' => require_login sub { } # retrieve active/all connected nodes, if asked for - $rs - = $rs->search_rs( {}, + $rs = $rs->search_rs( {}, { prefetch => 'nodes', bind => [ $device->ip ], order_by => [ { -desc => 'nodes.active' }, { -asc => 'nodes.mac' }, { -asc => 'nodes.ip' }, - ] }) - if param('c_nodes'); + ] }); my @results = $rs->hri->all; return unless scalar @results; diff --git a/Netdisco/share/views/ajax/device/ports.tt b/Netdisco/share/views/ajax/device/ports.tt index 2efeee9e..d2f81df9 100644 --- a/Netdisco/share/views/ajax/device/ports.tt +++ b/Netdisco/share/views/ajax/device/ports.tt @@ -381,13 +381,8 @@ $(document).ready(function() { } } }, { - [% IF params.c_nodes %] "title": 'Connected Devices and Nodes', "name": 'c_nodes', - [% ELSE %] - "title": 'Connected Devices', - "name": 'c_neighbors', - [% END %] "data": "null", "defaultContent": "", "render": function ( data, type, row, meta ) { @@ -418,18 +413,16 @@ $(document).ready(function() { + '&prefer=port">' + he.encode(row.remote_port || '') + ''; } cell_str += '
'; - [% IF params.neigh_id %] if (row.remote_id || row.remote_type) { - cell_str += '('; + cell_str += ' ('; if (row.remote_id) { cell_str += ' id: ' + he.encode(row.remote_id); } else if (row.remote_type) { cell_str += ' type: ' + he.encode(row.remote_type); } - cell_str += ' )
'; + cell_str += ' )
'; } - [% END %] } else if (row.remote_ip) { cell_str += ' '; @@ -446,38 +439,33 @@ $(document).ready(function() { cell_str += ' - ' + he.encode(row.remote_port || ''); } cell_str += '
'; - [% IF params.neigh_id %] if (row.remote_id || row.remote_type) { - cell_str += '('; + cell_str += ' ('; if (row.remote_id) { cell_str += ' id: ' + he.encode(row.remote_id); } else if (row.remote_type) { cell_str += ' type: ' + he.encode(row.remote_type); } - cell_str += ' )
'; + cell_str += ' )
'; } - [% END %] } else { cell_str += '  (possible uplink)'; } } - [% IF params.c_nodes %] + cell_str += ''; var macfmt = '[% params.mac_format %]'; for (index = 0; index < row.nodes.length; ++index) { if ((row.remote_ip || row.is_uplink) && index === 0 ) { cell_str += '
'; } if (row.nodes[index].active === 0) { - [% IF params.n_archived %] + cell_str += ''; if (index > 0 ) { cell_str += '
'; } cell_str += '  '; - [% ELSE %] - continue; - [% END %] } else if (index > 0 && row.nodes[index].active !== 0) { cell_str += '
'; @@ -492,19 +480,21 @@ $(document).ready(function() { var fmac = formatMacAddress(row.nodes[index].mac, macfmt); cell_str += encodeURIComponent(fmac) + '">' + he.encode(fmac) + ''; - [% IF params.n_vendor %] + + // n_vendor if (row.nodes[index].abbrev) { cell_str += ' (' + '' + he.encode(row.nodes[index].abbrev || '') + ')'; } - [% END %] + if (row.nodes[index].vlans.length > 0) { var vl = row.nodes[index].vlans ? row.nodes[index].vlans.join(", ") : ""; cell_str += ' (on vlan ' + vl + ')'; } - [% IF params.n_ssid %] + + // n_ssid if (row.nodes[index].ssids && row.nodes[index].ssids.length > 0) { var arr = row.nodes[index].ssids; arr = arr.sort(); @@ -513,23 +503,20 @@ $(document).ready(function() { }); cell_str += ' (SSID: ' + arr.join(" ") + ')'; } - [% END %] - [% IF params.n_age %] - cell_str += ' ('; - var now = moment(); - var t_last = moment(row.nodes[index].time_last); - cell_str += t_last.from(now) + ')'; - [% END %] - [% IF params.n_ip %] + + // n_age + cell_str += ' ('; + var now = moment(); + var t_last = moment(row.nodes[index].time_last); + cell_str += t_last.from(now) + ')'; + + // n_ip if (row.nodes[index].ip && row.nodes[index].ip.length > 0) { cell_str += ''; for (idx = 0; idx < row.nodes[index].ip.length; ++idx) { if (row.nodes[index].ip_active[idx] === 0) { - [% IF params.n_archived %] + cell_str += ''; cell_str += '
    '; - [% ELSE %] - continue; - [% END %] } else { cell_str += '
 '; @@ -543,11 +530,14 @@ $(document).ready(function() { else { cell_str += he.encode(row.nodes[index].ip[idx]) + ''; } + if (row.nodes[index].ip_active[idx] === 0) { + cell_str += '
'; + } } cell_str += '
'; } - [% END %] - [% IF params.n_netbios %] + + // n_netbios if (row.nodes[index].nbname) { cell_str += '' + '
     \\\\' + he.encode(row.nodes[index].nb_ip) + '
'; } - [% END %] + + if (row.nodes[index].active === 0) { + cell_str += '
'; + } } - [% END %] + cell_str += '
'; return cell_str; } }, { diff --git a/Netdisco/share/views/js/device.js b/Netdisco/share/views/js/device.js index 5bfdfc7e..fca9ec65 100644 --- a/Netdisco/share/views/js/device.js +++ b/Netdisco/share/views/js/device.js @@ -95,6 +95,12 @@ } }); + // dynamic show/hide data in device ports connected nodes/devices column + $('#ports_form').on('change', "input[type=checkbox].nd_dynamic-dp", function(event) { + var target = $(this).attr('id'); + $('span.' + target).toggle(); + }); + // activity for admin tasks in device details $('#details_pane').on('click', '.nd_adminbutton', function(event) { // stop form from submitting normally diff --git a/Netdisco/share/views/sidebar/device/ports.tt b/Netdisco/share/views/sidebar/device/ports.tt index 13bfa741..add65c38 100644 --- a/Netdisco/share/views/sidebar/device/ports.tt +++ b/Netdisco/share/views/sidebar/device/ports.tt @@ -57,6 +57,22 @@
@@ -93,7 +109,7 @@
  • @@ -119,7 +135,7 @@ [% FOREACH item IN vars.connected_properties %]
  • @@ -128,24 +144,6 @@ -