#1064 display device and device port tags in web ui
This commit is contained in:
@@ -7,6 +7,8 @@ use Dancer::Plugin::Auth::Extensible;
|
||||
|
||||
use App::Netdisco::Web::Plugin;
|
||||
|
||||
use List::MoreUtils 'singleton';
|
||||
|
||||
register_device_tab({ tag => 'details', label => 'Details' });
|
||||
|
||||
# device details table
|
||||
@@ -40,10 +42,14 @@ ajax '/ajax/content/device/details' => require_login sub {
|
||||
],
|
||||
})->order_by('pos')->get_column('serial')->all;
|
||||
|
||||
# filter the tags by hide_tags setting
|
||||
my @hide = @{ setting('hide_tags')->{'device'} };
|
||||
|
||||
content_type('text/html');
|
||||
template 'ajax/device/details.tt', {
|
||||
d => $results[0], p => \@power,
|
||||
interfaces => \@interfaces,
|
||||
filtered_tags => [ singleton (@{ $device->tags || [] }, @hide, @hide) ],
|
||||
serials => [sort keys %{ { map {($_ => $_)} (@serials, ($device->serial ? $device->serial : ())) } }],
|
||||
}, { layout => undef };
|
||||
};
|
||||
|
||||
@@ -9,6 +9,8 @@ use App::Netdisco::Util::Port 'port_reconfig_check';
|
||||
use App::Netdisco::Util::Web (); # for sort_port
|
||||
use App::Netdisco::Web::Plugin;
|
||||
|
||||
use List::MoreUtils 'singleton';
|
||||
|
||||
register_device_tab({ tag => 'ports', label => 'Ports', provides_csv => 1 });
|
||||
|
||||
# device ports with a description (er, name) matching
|
||||
@@ -254,6 +256,10 @@ get '/ajax/content/device/ports' => require_login sub {
|
||||
map {$_->{portctl} = (port_reconfig_check($_, $device, logged_in_user) ? false : true)} @results;
|
||||
}
|
||||
|
||||
# filter the tags by hide_tags setting
|
||||
my @hide = @{ setting('hide_tags')->{'device_port'} };
|
||||
map { $_->{filtered_tags} = [ singleton (@{ $_->tags || [] }, @hide, @hide) ] } @results;
|
||||
|
||||
# empty set would be a 'no records' msg
|
||||
return unless scalar @results;
|
||||
|
||||
|
||||
@@ -124,22 +124,23 @@ sidebar_defaults:
|
||||
c_ifindex: { label: 'Interface Index', default: null, idx: 5 }
|
||||
c_lastchange: { label: 'Last Change', default: null, idx: 6 }
|
||||
c_name: { label: 'Name', default: checked, idx: 7 }
|
||||
c_speed_admin: { label: 'Speed (configured)', default: null, idx: 8 }
|
||||
c_speed: { label: 'Speed (running)', default: null, idx: 9 }
|
||||
c_duplex_admin: { label: 'Duplex (configured)', default: null, idx: 10 }
|
||||
c_duplex: { label: 'Duplex (running)', default: null, idx: 11 }
|
||||
c_error: { label: 'Error Message', default: null, idx: 12 }
|
||||
c_mac: { label: 'Port MAC', default: null, idx: 13 }
|
||||
c_mtu: { label: 'MTU', default: null, idx: 14 }
|
||||
c_pvid: { label: 'Native VLAN', default: checked, idx: 15 }
|
||||
c_vmember: { label: 'VLAN Membership', default: checked, idx: 16 }
|
||||
c_power: { label: 'PoE', default: null, idx: 17 }
|
||||
c_ssid: { label: 'SSID', default: null, idx: 18 }
|
||||
c_nac_summary: { label: 'NAC/802.1X Status', default: null, idx: 19 }
|
||||
c_nodes: { label: 'Connected Nodes', default: null, idx: 20 }
|
||||
c_neighbors: { label: 'Connected Devices', default: checked, idx: 21 }
|
||||
c_stp: { label: 'Spanning Tree', default: null, idx: 22 }
|
||||
c_up: { label: 'Up/Down Status', default: null, idx: 23 }
|
||||
c_tags: { label: 'Tags', default: null, idx: 8 }
|
||||
c_speed_admin: { label: 'Speed (configured)', default: null, idx: 9 }
|
||||
c_speed: { label: 'Speed (running)', default: null, idx: 10 }
|
||||
c_duplex_admin: { label: 'Duplex (configured)', default: null, idx: 11 }
|
||||
c_duplex: { label: 'Duplex (running)', default: null, idx: 12 }
|
||||
c_error: { label: 'Error Message', default: null, idx: 13 }
|
||||
c_mac: { label: 'Port MAC', default: null, idx: 14 }
|
||||
c_mtu: { label: 'MTU', default: null, idx: 15 }
|
||||
c_pvid: { label: 'Native VLAN', default: checked, idx: 16 }
|
||||
c_vmember: { label: 'VLAN Membership', default: checked, idx: 17 }
|
||||
c_power: { label: 'PoE', default: null, idx: 18 }
|
||||
c_ssid: { label: 'SSID', default: null, idx: 19 }
|
||||
c_nac_summary: { label: 'NAC/802.1X Status', default: null, idx: 20 }
|
||||
c_nodes: { label: 'Connected Nodes', default: null, idx: 21 }
|
||||
c_neighbors: { label: 'Connected Devices', default: checked, idx: 22 }
|
||||
c_stp: { label: 'Spanning Tree', default: null, idx: 23 }
|
||||
c_up: { label: 'Up/Down Status', default: null, idx: 24 }
|
||||
mac_format: { default: IEEE }
|
||||
n_inventory: { label: 'Remote Inventory', default: checked, idx: 0 }
|
||||
n_detailed_inventory: { label: 'Remote Advertisement', default: null, idx: 1 }
|
||||
@@ -167,9 +168,9 @@ sidebar_defaults:
|
||||
report_portutilization:
|
||||
age_num: { default: 3 }
|
||||
age_unit: { default: months }
|
||||
device_port_col_idx_left: 7
|
||||
device_port_col_idx_mid: 19
|
||||
device_port_col_idx_right: 23
|
||||
device_port_col_idx_left: 8
|
||||
device_port_col_idx_mid: 20
|
||||
device_port_col_idx_right: 24
|
||||
jobqueue_refresh: 10
|
||||
safe_password_store: true
|
||||
reports: []
|
||||
|
||||
@@ -79,6 +79,14 @@
|
||||
<td>Description</td>
|
||||
<td>[% d.description | html_entity | html_line_break %]</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Tags</td>
|
||||
<td>
|
||||
[% FOREACH t IN filtered_tags %]
|
||||
<span class="badge badge-success">[% t | html_entity %]</span>
|
||||
[% END %]
|
||||
</td>
|
||||
</tr>
|
||||
[% IF settings._extra_device_details.size %]
|
||||
[% FOREACH config IN settings._extra_device_details %]
|
||||
<tr>
|
||||
|
||||
@@ -145,6 +145,14 @@
|
||||
</td>
|
||||
[% END %]
|
||||
|
||||
[% IF params.c_tags %]
|
||||
<td>
|
||||
[% FOREACH t IN row.filtered_tags.sort %]
|
||||
<span class="badge badge-success">[% t | html_entity %]</span>
|
||||
[% END %]
|
||||
</td>
|
||||
[% END %]
|
||||
|
||||
[% FOREACH config IN settings._extra_device_port_cols %]
|
||||
[% NEXT UNLESS config.position == 'left' AND params.${config.name} %]
|
||||
|
||||
|
||||
@@ -67,6 +67,10 @@
|
||||
[% myport.push(row.name) %]
|
||||
[% END %]
|
||||
|
||||
[% IF params.c_tags %]
|
||||
[% myport.push(row.filtered_tags.join(':')) %]
|
||||
[% END %]
|
||||
|
||||
[% FOREACH config IN settings._extra_device_port_cols %]
|
||||
[% NEXT UNLESS config.position == 'left' AND params.${config.name} %]
|
||||
[% TRY %]
|
||||
|
||||
Reference in New Issue
Block a user