Move vendor to grouping bar in node search results and link to node vendor report

Change DataTables search box description to 'Filter records: '
This commit is contained in:
Eric A. Miller
2014-06-11 19:28:20 -04:00
parent 86d02cc088
commit c8f5a5a508
2 changed files with 64 additions and 72 deletions

View File

@@ -4,11 +4,8 @@
<thead> <thead>
<tr> <tr>
<th>MAC</th> <th>MAC</th>
[% IF params.show_vendor %]
<th>Vendor</th>
[% END %]
<th>Match</th> <th>Match</th>
<th>Device or Node</th> <th class="nd_center-cell">Device or Node</th>
[% IF params.stamps %] [% IF params.stamps %]
<th>First Seen</th> <th>First Seen</th>
<th>Last Seen</th> <th>Last Seen</th>
@@ -19,11 +16,13 @@
[% WHILE (row = macs.next) %] [% WHILE (row = macs.next) %]
[% IF row.nbname %] [% IF row.nbname %]
<tr> <tr>
<td><a href="[% search_node %]&q=[% row.net_mac.$mac_format_call | uri %]"> <td>MAC: <a href="[% search_node %]&q=[% row.net_mac.$mac_format_call | uri %]">
[% row.net_mac.$mac_format_call | html_entity %]</a></td> [% row.net_mac.$mac_format_call | html_entity %]</a>
[% IF params.show_vendor %] [% IF params.show_vendor %]
<td>[% row.oui.company | html_entity %]</td> ( <a href="[% uri_for('/report/nodevendor') %]?vendor=[% row.oui.abbrev | uri %]">
[% row.oui.company | html_entity %]</a> )
[% END %] [% END %]
</td>
<td>NetBIOS</td> <td>NetBIOS</td>
<td class="nd_linkcell nd_center-cell">\\<a href="[% uri_for('/report/netbios') %]?domain=[% row.domain | uri %]" title="Devices in this Domain">[% row.domain | html_entity %]</a>\<a href="[% search_node %]&q=[% row.nbname | uri %]">[% row.nbname | html_entity %]</a> <td class="nd_linkcell nd_center-cell">\\<a href="[% uri_for('/report/netbios') %]?domain=[% row.domain | uri %]" title="Devices in this Domain">[% row.domain | html_entity %]</a>\<a href="[% search_node %]&q=[% row.nbname | uri %]">[% row.nbname | html_entity %]</a>
<br>[% row.nbuser || '[No User]' | html_entity %]@<a href="[% search_node %]&q=[% row.ip | uri %]">[% row.ip | html_entity %]</a> <br>[% row.nbuser || '[No User]' | html_entity %]@<a href="[% search_node %]&q=[% row.ip | uri %]">[% row.ip | html_entity %]</a>
@@ -35,11 +34,13 @@
</tr> </tr>
[% ELSE %] [% ELSE %]
<tr> <tr>
<td><a href="[% search_node %]&q=[% row.net_mac.$mac_format_call | uri %]"> <td>MAC: <a href="[% search_node %]&q=[% row.net_mac.$mac_format_call | uri %]">
[% row.net_mac.$mac_format_call | html_entity %]</a></td> [% row.net_mac.$mac_format_call | html_entity %]</a>
[% IF params.show_vendor %] [% IF params.show_vendor %]
<td>[% row.oui.company | html_entity %]</td> ( <a href="[% uri_for('/report/nodevendor') %]?vendor=[% row.oui.abbrev | uri %]">
[% row.oui.company | html_entity %]</a> )
[% END %] [% END %]
</td>
<td>IP &rarr; MAC</td> <td>IP &rarr; MAC</td>
<td class="nd_center-cell"> <td class="nd_center-cell">
<a href="[% search_node %]&q=[% row.ip | uri %]">[% row.ip | html_entity %]</a> <a href="[% search_node %]&q=[% row.ip | uri %]">[% row.ip | html_entity %]</a>
@@ -54,13 +55,13 @@
[% END %] [% END %]
[% FOREACH nbt IN row.netbios %] [% FOREACH nbt IN row.netbios %]
<tr> <tr>
<td><a href="[% search_node %]&q=[% nbt.net_mac.$mac_format_call | uri %]"> <td>MAC: <a href="[% search_node %]&q=[% nbt.net_mac.$mac_format_call | uri %]">
[% nbt.net_mac.$mac_format_call | html_entity %]</a></td> [% nbt.net_mac.$mac_format_call | html_entity %]</a>
[% IF params.show_vendor %] [% IF params.show_vendor %]
<td> ( <a href="[% uri_for('/report/nodevendor') %]?vendor=[% nbt.oui.abbrev | uri %]">
[% nbt.oui.company | html_entity %] [% nbt.oui.company | html_entity %]</a> )
</td>
[% END %] [% END %]
</td>
<td>NetBIOS</td> <td>NetBIOS</td>
<td class="nd_linkcell nd_center-cell">\\<a href="[% uri_for('/report/netbios') %]?domain=[% nbt.domain | uri %]" title="Devices in this Domain">[% nbt.domain | html_entity %]</a>\<a href="[% search_node %]&q=[% nbt.nbname | uri %]">[% nbt.nbname | html_entity %]</a> <td class="nd_linkcell nd_center-cell">\\<a href="[% uri_for('/report/netbios') %]?domain=[% nbt.domain | uri %]" title="Devices in this Domain">[% nbt.domain | html_entity %]</a>\<a href="[% search_node %]&q=[% nbt.nbname | uri %]">[% nbt.nbname | html_entity %]</a>
<br>[% nbt.nbuser || '[No User]' | html_entity %]@<a href="[% search_node %]&q=[% nbt.ip | uri %]">[% nbt.ip | html_entity %]</a> <br>[% nbt.nbuser || '[No User]' | html_entity %]@<a href="[% search_node %]&q=[% nbt.ip | uri %]">[% nbt.ip | html_entity %]</a>
@@ -73,13 +74,13 @@
[% END %] [% END %]
[% FOREACH ni IN row.nodeips %] [% FOREACH ni IN row.nodeips %]
<tr> <tr>
<td><a href="[% search_node %]&q=[% ni.net_mac.$mac_format_call | uri %]"> <td>MAC: <a href="[% search_node %]&q=[% ni.net_mac.$mac_format_call | uri %]">
[% ni.net_mac.$mac_format_call | html_entity %]</a></td> [% ni.net_mac.$mac_format_call | html_entity %]</a>
[% IF params.show_vendor %] [% IF params.show_vendor %]
<td> ( <a href="[% uri_for('/report/nodevendor') %]?vendor=[% ni.oui.abbrev | uri %]">
[% ni.oui.company | html_entity %] [% ni.oui.company | html_entity %]</a> )
</td>
[% END %] [% END %]
</td>
<td>IP &rarr; MAC</td> <td>IP &rarr; MAC</td>
<td class="nd_center-cell"> <td class="nd_center-cell">
<a href="[% search_node %]&q=[% ni.ip | uri %]">[% ni.ip | html_entity %]</a> <a href="[% search_node %]&q=[% ni.ip | uri %]">[% ni.ip | html_entity %]</a>
@@ -94,13 +95,13 @@
[% END %] [% END %]
[% FOREACH node IN row.node_sightings(archive_filter) %] [% FOREACH node IN row.node_sightings(archive_filter) %]
<tr> <tr>
<td><a href="[% search_node %]&q=[% node.net_mac.$mac_format_call | uri %]"> <td>MAC: <a href="[% search_node %]&q=[% node.net_mac.$mac_format_call | uri %]">
[% node.net_mac.$mac_format_call | html_entity %]</a></td> [% node.net_mac.$mac_format_call | html_entity %]</a>
[% IF params.show_vendor %] [% IF params.show_vendor %]
<td> ( <a href="[% uri_for('/report/nodevendor') %]?vendor=[% node.oui.abbrev | uri %]">
[% node.oui.company | html_entity %] [% node.oui.company | html_entity %]</a> )
</td>
[% END %] [% END %]
</td>
<td>Switch Port</td> <td>Switch Port</td>
<td><a class="nd_linkcell nd_center-cell" <td><a class="nd_linkcell nd_center-cell"
href="[% device_ports %]&q=[% node.switch | uri %]&f=[% node.port | uri %]&c_nodes=on&c_neighbors=on"> href="[% device_ports %]&q=[% node.switch | uri %]&f=[% node.port | uri %]&c_nodes=on&c_neighbors=on">
@@ -117,13 +118,13 @@
</tr> </tr>
[% FOREACH wlan IN node.wireless %] [% FOREACH wlan IN node.wireless %]
<tr> <tr>
<td><a href="[% search_node %]&q=[% wlan.net_mac.$mac_format_call | uri %]"> <td>MAC: <a href="[% search_node %]&q=[% wlan.net_mac.$mac_format_call | uri %]">
[% wlan.net_mac.$mac_format_call | html_entity %]</a></td> [% wlan.net_mac.$mac_format_call | html_entity %]</a>
[% IF params.show_vendor %] [% IF params.show_vendor %]
<td> ( <a href="[% uri_for('/report/nodevendor') %]?vendor=[% wlan.oui.abbrev | uri %]">
[% wlan.oui.company | html_entity %] [% wlan.oui.company | html_entity %]</a> )
</td>
[% END %] [% END %]
</td>
<td>Wireless Info</td> <td>Wireless Info</td>
<td class="nd_center-cell">SSID: [% wlan.ssid | html_entity %]<br> <td class="nd_center-cell">SSID: [% wlan.ssid | html_entity %]<br>
MaxRate: [% wlan.maxrate | html_entity %]Mbps TxRate: [% wlan.txrate | html_entity %]Mbps<br> MaxRate: [% wlan.maxrate | html_entity %]Mbps TxRate: [% wlan.txrate | html_entity %]Mbps<br>
@@ -140,13 +141,13 @@
[% END %] [% END %]
[% FOREACH nodeip IN row.ip_aliases(archive_filter) %] [% FOREACH nodeip IN row.ip_aliases(archive_filter) %]
<tr> <tr>
<td><a href="[% search_node %]&q=[% nodeip.net_mac.$mac_format_call | uri %]"> <td>MAC: <a href="[% search_node %]&q=[% nodeip.net_mac.$mac_format_call | uri %]">
[% nodeip.net_mac.$mac_format_call | html_entity %]</a></td> [% nodeip.net_mac.$mac_format_call | html_entity %]</a>
[% IF params.show_vendor %] [% IF params.show_vendor %]
<td> ( <a href="[% uri_for('/report/nodevendor') %]?vendor=[% nodeip.oui.abbrev | uri %]">
[% nodeip.oui.company | html_entity %] [% nodeip.oui.company | html_entity %]</a> )
</td>
[% END %] [% END %]
</td>
<td>MAC &rarr; IP</td> <td>MAC &rarr; IP</td>
<td class="nd_center-cell"> <td class="nd_center-cell">
<a href="[% search_node %]&q=[% nodeip.ip | uri %]">[% nodeip.ip | html_entity %]</a> <a href="[% search_node %]&q=[% nodeip.ip | uri %]">[% nodeip.ip | html_entity %]</a>
@@ -179,6 +180,9 @@ $(document).ready(function() {
"order": [[ 0, 'asc' ]], "order": [[ 0, 'asc' ]],
"stateSave": true, "stateSave": true,
"pageLength": 25, "pageLength": 25,
"language": {
"search": 'Filter records: '
},
"drawCallback": function ( settings ) { "drawCallback": function ( settings ) {
var api = this.api(); var api = this.api();
var rows = api.rows( {page:'current'} ).nodes(); var rows = api.rows( {page:'current'} ).nodes();
@@ -187,12 +191,8 @@ $(document).ready(function() {
api.column(0, {page:'current'} ).data().each( function ( group, i ) { api.column(0, {page:'current'} ).data().each( function ( group, i ) {
if ( last !== group ) { if ( last !== group ) {
$(rows).eq( i ).before( $(rows).eq( i ).before(
[% IF params.show_vendor && params.stamps %] [% IF params.stamps %]
'<tr class="group"><td colspan="5">'+group+'</td></tr>'
[% ELSIF params.stamps %]
'<tr class="group"><td colspan="4">'+group+'</td></tr>' '<tr class="group"><td colspan="4">'+group+'</td></tr>'
[% ELSIF params.show_vendor %]
'<tr class="group"><td colspan="3">'+group+'</td></tr>'
[% ELSE %] [% ELSE %]
'<tr class="group"><td colspan="2">'+group+'</td></tr>' '<tr class="group"><td colspan="2">'+group+'</td></tr>'
[% END %] [% END %]

View File

@@ -3,9 +3,6 @@
<thead> <thead>
<tr> <tr>
<th>MAC</th> <th>MAC</th>
[% IF params.show_vendor %]
<th>Vendor</th>
[% END %]
<th>Match</th> <th>Match</th>
<th class="nd_center-cell">Device or Node</th> <th class="nd_center-cell">Device or Node</th>
[% IF params.stamps %] [% IF params.stamps %]
@@ -18,13 +15,13 @@
[% WHILE (row = ips.next) %] [% WHILE (row = ips.next) %]
<tr> <tr>
<td> <td>
<a href="[% search_node %]&q=[% row.net_mac.$mac_format_call | uri %]"> MAC: <a href="[% search_node %]&q=[% row.net_mac.$mac_format_call | uri %]">
[% row.net_mac.$mac_format_call | html_entity %]</a> [% row.net_mac.$mac_format_call | html_entity %]</a>
[% IF params.show_vendor %] [% IF params.show_vendor %]
<td> ( <a href="[% uri_for('/report/nodevendor') %]?vendor=[% row.oui.abbrev | uri %]">
[% row.oui.company | html_entity %] [% row.oui.company | html_entity %]</a> )
</td>
[% END %] [% END %]
</td>
<td>MAC &rarr; IP</td> <td>MAC &rarr; IP</td>
<td class="nd_center-cell"><a href="[% search_node %]&q=[% row.ip | uri %]">[% row.ip | html_entity %]</a> <td class="nd_center-cell"><a href="[% search_node %]&q=[% row.ip | uri %]">[% row.ip | html_entity %]</a>
[% '&nbsp;<i class="icon-book text-warning"></i>&nbsp;' IF NOT row.active %] [% '&nbsp;<i class="icon-book text-warning"></i>&nbsp;' IF NOT row.active %]
@@ -39,14 +36,13 @@
[% WHILE (node = sightings.next) %] [% WHILE (node = sightings.next) %]
<tr> <tr>
<td> <td>
<a href="[% search_node %]&q=[% node.net_mac.$mac_format_call | uri %]"> MAC: <a href="[% search_node %]&q=[% node.net_mac.$mac_format_call | uri %]">
[% node.net_mac.$mac_format_call | html_entity %]</a> [% node.net_mac.$mac_format_call | html_entity %]</a>
</td>
[% IF params.show_vendor %] [% IF params.show_vendor %]
<td> ( <a href="[% uri_for('/report/nodevendor') %]?vendor=[% node.oui.abbrev | uri %]">
[% node.oui.company | html_entity %] [% node.oui.company | html_entity %]</a> )
</td>
[% END %] [% END %]
</td>
<td>Switch Port</td> <td>Switch Port</td>
<td class="nd_center-cell"> <td class="nd_center-cell">
<a href="[% device_ports %]&q=[% node.switch | uri %]&f=[% node.port | uri %]&c_nodes=on&c_neighbors=on"> <a href="[% device_ports %]&q=[% node.switch | uri %]&f=[% node.port | uri %]&c_nodes=on&c_neighbors=on">
@@ -65,13 +61,12 @@
[% WHILE (port = ports.next) %] [% WHILE (port = ports.next) %]
<tr> <tr>
<td> <td>
<a href="[% search_node %]&q=[% port.net_mac.$mac_format_call | uri %]">[% port.net_mac.$mac_format_call | html_entity %]</a> MAC: <a href="[% search_node %]&q=[% port.net_mac.$mac_format_call | uri %]">[% port.net_mac.$mac_format_call | html_entity %]</a>
</td>
[% IF params.show_vendor %] [% IF params.show_vendor %]
<td> ( <a href="[% uri_for('/report/nodevendor') %]?vendor=[% port.oui.abbrev | uri %]">
[% port.oui.company | html_entity %] [% port.oui.company | html_entity %]</a> )
</td>
[% END %] [% END %]
</td>
<td>Switch Port</td> <td>Switch Port</td>
<td class="nd_center-cell"> <td class="nd_center-cell">
<a href="[% device_ports %]&q=[% port.ip | uri %]&f=[% port.port | uri %]&c_mac=on&c_nodes=on&c_neighbors=on"> <a href="[% device_ports %]&q=[% port.ip | uri %]&f=[% port.port | uri %]&c_mac=on&c_nodes=on&c_neighbors=on">
@@ -89,13 +84,12 @@
[% WHILE (nbt = netbios.next) %] [% WHILE (nbt = netbios.next) %]
<tr> <tr>
<td> <td>
<a href="[% search_node %]&q=[% nbt.net_mac.$mac_format_call | uri %]">[% nbt.net_mac.$mac_format_call | html_entity %]</a> MAC: <a href="[% search_node %]&q=[% nbt.net_mac.$mac_format_call | uri %]">[% nbt.net_mac.$mac_format_call | html_entity %]</a>
</td>
[% IF params.show_vendor %] [% IF params.show_vendor %]
<td> ( <a href="[% uri_for('/report/nodevendor') %]?vendor=[% nbt.oui.abbrev | uri %]">
[% nbt.oui.company | html_entity %] [% nbt.oui.company | html_entity %]</a> )
</td>
[% END %] [% END %]
</td>
<td>NetBIOS</td> <td>NetBIOS</td>
<td class="nd_center-cell">\\<a href="[% uri_for('/report/netbios') %]?domain=[% nbt.domain | uri %]" title="Devices in this Domain">[% nbt.domain | html_entity %]</a>\<a href="[% search_node %]&q=[% nbt.nbname | uri %]">[% nbt.nbname | html_entity %]</a> <td class="nd_center-cell">\\<a href="[% uri_for('/report/netbios') %]?domain=[% nbt.domain | uri %]" title="Devices in this Domain">[% nbt.domain | html_entity %]</a>\<a href="[% search_node %]&q=[% nbt.nbname | uri %]">[% nbt.nbname | html_entity %]</a>
<br>[% nbt.nbuser || '[No User]' | html_entity %]@<a href="[% search_node %]&q=[% nbt.ip | uri %]">[% nbt.ip | html_entity %]</a> <br>[% nbt.nbuser || '[No User]' | html_entity %]@<a href="[% search_node %]&q=[% nbt.ip | uri %]">[% nbt.ip | html_entity %]</a>
@@ -109,13 +103,12 @@
[% WHILE (wlan = wireless.next) %] [% WHILE (wlan = wireless.next) %]
<tr> <tr>
<td> <td>
<a href="[% search_node %]&q=[% wlan.net_mac.$mac_format_call | uri %]">[% wlan.net_mac.$mac_format_call | html_entity %]</a> MAC: <a href="[% search_node %]&q=[% wlan.net_mac.$mac_format_call | uri %]">[% wlan.net_mac.$mac_format_call | html_entity %]</a>
</td>
[% IF params.show_vendor %] [% IF params.show_vendor %]
<td> ( <a href="[% uri_for('/report/nodevendor') %]?vendor=[% wlan.oui.abbrev | uri %]">
[% wlan.oui.company | html_entity %] [% wlan.oui.company | html_entity %]</a> )
</td>
[% END %] [% END %]
</td>
<td>Wireless Info</td> <td>Wireless Info</td>
<td class="nd_center-cell">SSID: [% wlan.ssid | html_entity %]<br> <td class="nd_center-cell">SSID: [% wlan.ssid | html_entity %]<br>
MaxRate: [% wlan.maxrate | html_entity %]Mbps TxRate: [% wlan.txrate | html_entity %]Mbps<br> MaxRate: [% wlan.maxrate | html_entity %]Mbps TxRate: [% wlan.txrate | html_entity %]Mbps<br>
@@ -148,6 +141,9 @@ $(document).ready(function() {
"order": [[ 0, 'asc' ]], "order": [[ 0, 'asc' ]],
"stateSave": true, "stateSave": true,
"pageLength": 25, "pageLength": 25,
"language": {
"search": 'Filter records: '
},
"drawCallback": function ( settings ) { "drawCallback": function ( settings ) {
var api = this.api(); var api = this.api();
var rows = api.rows( {page:'current'} ).nodes(); var rows = api.rows( {page:'current'} ).nodes();
@@ -156,12 +152,8 @@ $(document).ready(function() {
api.column(0, {page:'current'} ).data().each( function ( group, i ) { api.column(0, {page:'current'} ).data().each( function ( group, i ) {
if ( last !== group ) { if ( last !== group ) {
$(rows).eq( i ).before( $(rows).eq( i ).before(
[% IF params.show_vendor && params.stamps %] [% IF params.stamps %]
'<tr class="group"><td colspan="5">'+group+'</td></tr>'
[% ELSIF params.stamps %]
'<tr class="group"><td colspan="4">'+group+'</td></tr>' '<tr class="group"><td colspan="4">'+group+'</td></tr>'
[% ELSIF params.show_vendor %]
'<tr class="group"><td colspan="3">'+group+'</td></tr>'
[% ELSE %] [% ELSE %]
'<tr class="group"><td colspan="2">'+group+'</td></tr>' '<tr class="group"><td colspan="2">'+group+'</td></tr>'
[% END %] [% END %]