From bd3bcb36f85e6585be84758d8301c51063bb7a59 Mon Sep 17 00:00:00 2001 From: Oliver Gorwits Date: Sat, 25 Oct 2014 19:19:56 +0100 Subject: [PATCH] sidebar built from config, colvis defaults from sidebar --- Netdisco/lib/App/Netdisco/Web.pm | 5 ++ Netdisco/share/config.yml | 90 +++++++++++++------ Netdisco/share/public/javascripts/netdisco.js | 33 +++++++ .../share/views/ajax/datatabledefaults.tt | 33 ++++--- Netdisco/share/views/ajax/device/ports.tt | 36 +------- Netdisco/share/views/device.tt | 2 +- Netdisco/share/views/sidebar/device/ports.tt | 61 ++++++++++--- 7 files changed, 168 insertions(+), 92 deletions(-) diff --git a/Netdisco/lib/App/Netdisco/Web.pm b/Netdisco/lib/App/Netdisco/Web.pm index 07c403c2..64a0e197 100644 --- a/Netdisco/lib/App/Netdisco/Web.pm +++ b/Netdisco/lib/App/Netdisco/Web.pm @@ -84,6 +84,11 @@ hook 'before_template' => sub { $tokens->{$_} = $tokens->{$_}->path_query for qw/search_node search_device device_ports/; + # shorthand access to section and tabname + my @parts = split m{/}, request->path; + $tokens->{section} ||= $parts[-2]; + $tokens->{tabname} ||= $parts[-1]; + # allow very long lists of ports $Template::Directive::WHILE_MAX = 10_000; diff --git a/Netdisco/share/config.yml b/Netdisco/share/config.yml index b793adfd..163beeec 100644 --- a/Netdisco/share/config.yml +++ b/Netdisco/share/config.yml @@ -88,31 +88,71 @@ table_showrecordsmenu: table_display: device: ports: - c_admin: off - c_port: on - c_descr: off - c_type: off - c_duplex: off - c_lastchange: off - c_name: on - c_speed: off - c_mac: off - c_mtu: off - c_pvid: on - c_vmember: on - c_power: off - c_ssid: off - c_nodes: off - c_neighbors: on - c_stp: off - c_up: off - n_age: off - n_ip: on - n_netbios: on - n_ssid: on - n_vendor: off - n_archived: off - neigh_id: off + columns: + - c_admin: + label: 'Port Controls' + default: false + highlight: true + - c_port: + label: 'Port' + default: true + - c_descr: + label: 'Description' + default: false + - c_type: + label: 'Type' + default: false + - c_duplex: + label: 'Duplex' + default: false + - c_lastchange: + label: 'Last Change' + default: false + - c_name: + label: 'Name' + default: true + - c_speed: + label: 'Speed' + default: false + - c_mac: + label: 'Port MAC' + default: false + - c_mtu: + label: 'MTU' + default: false + - c_pvid: + label: 'Native VLAN' + default: true + - c_vmember: + label: 'VLAN Membership' + default: true + - c_power: + label: 'PoE' + default: false + - c_ssid: + label: 'SSID' + default: false + - c_neighbors: + label: 'Connected Devices' + default: true + - c_nodes: + label: 'Show Nodes' + default: false + - c_stp: + label: 'Spanning Tree' + default: false + - c_up: + label: 'Status' + default: false + content: + c_nodes: false + n_age: false + n_ip: true + n_netbios: true + n_ssid: true + n_vendor: false + n_archived: false + neigh_id: false # ------------- # NETDISCO CORE diff --git a/Netdisco/share/public/javascripts/netdisco.js b/Netdisco/share/public/javascripts/netdisco.js index 103f6fb0..8ce5925d 100644 --- a/Netdisco/share/public/javascripts/netdisco.js +++ b/Netdisco/share/public/javascripts/netdisco.js @@ -50,6 +50,7 @@ function do_search (event, tab) { scrollingTop: 40 ,useAbsolutePositioning: false }); + global_inner_view_processing(tab); inner_view_processing(tab); } ); @@ -102,6 +103,38 @@ function update_content(from, to) { $(to_form).trigger("submit"); } +// called after every ajax, in case updating anything is required +function global_inner_view_processing(tab) { + // find the current tab's datatables object + // then update sidebar checkboxes to hook the datatables colvis + var table = $('#' + tab + '_pane').find('table').first(); + var colvis = new $.fn.dataTable.ColVis( table ); + var columns = colvis.s.dt.aoColumns; + + if ( $.inArray( 'all', colvis.s.exclude ) === -1 ) { + for ( var i=0, iLen=columns.length ; i diff --git a/Netdisco/share/views/device.tt b/Netdisco/share/views/device.tt index 7f56b79c..59880e1a 100644 --- a/Netdisco/share/views/device.tt +++ b/Netdisco/share/views/device.tt @@ -18,7 +18,7 @@ method="get" action="[% uri_for("/device/${tab.tag}") %]"> [% TRY %] - [% INCLUDE "sidebar/device/${tab.tag}.tt" %] + [% PROCESS "sidebar/device/${tab.tag}.tt" %] [% CATCH %] diff --git a/Netdisco/share/views/sidebar/device/ports.tt b/Netdisco/share/views/sidebar/device/ports.tt index add65c38..9f176388 100644 --- a/Netdisco/share/views/sidebar/device/ports.tt +++ b/Netdisco/share/views/sidebar/device/ports.tt @@ -57,22 +57,22 @@
    - [% FOREACH item IN vars.port_columns %] - [% NEXT IF item.name == 'c_admin' AND NOT user_has_role('port_control') %] - [% IF item.name == 'c_admin' OR item.name == 'c_nodes' %] + [% FOREACH entry IN settings.table_display.$section.${tab.tag}.columns %] + [% NEXT IF entry.keys.first == 'c_admin' AND NOT user_has_role('port_control') %]
  • [% END %] - [% END %]
@@ -132,15 +132,48 @@ [% END %] - [% FOREACH item IN vars.connected_properties %]
  • +
  • +
  • + +
  • +
  • + +
  • +
  • + +
  • +
  • + +
  • +
  • +
  • - [% END %]