[#181] AP Client Count report was broken

The DB query was joining on the device_port_wireless table which as any fule
kno isn't using the device port subinterface name so there would always be
zero results (as wireless data is related to the subinterface).

Fixed the query to use the device_port_ssid table, and also added a dedicated
template so additional data can be displayed in the report.
This commit is contained in:
Oliver Gorwits
2015-01-25 12:28:35 +00:00
parent 26de31bbbf
commit 85ab6e15ec
7 changed files with 115 additions and 4 deletions

View File

@@ -0,0 +1,63 @@
<table id="data-table" class="table table-striped table-bordered" width="100%" cellspacing="0">
<thead>
<tr>
<th>Device</th>
<th>Model</th>
<th>Location</th>
<th>Port</th>
<th>SSID</th>
<th>Node Count</th>
</tr>
</thead>
</table>
<script type="text/javascript">
$(document).ready(function() {
var table = $('#data-table').dataTable({
"deferRender": true,
"order": [[ 5, "desc" ]],
"data": [% results %],
"columns": [
{
"data": 'ip',
"render": function(data, type, row, meta) {
return type === 'display' ?
'<a href="[% uri_for('/device') %]?tab=details&q=' + encodeURIComponent(row.ip) + '">'
+ he.encode(row.dns || row.name || row.ip) + '</a>' :
data;
}
}, {
"data": 'model',
"render": function(data, type, row, meta) {
return he.encode(data || '');
}
}, {
"data": 'location',
"render": function(data, type, row, meta) {
return he.encode(data || '');
}
}, {
"data": 'port',
"type": 'portsort',
"render": function(data, type, row, meta) {
return type === 'display' ?
'<a href="[% device_ports %]&q=' + encodeURIComponent(row.ip) + '&f=' + encodeURIComponent(data) + '&c_nodes=on">' + he.encode(data) + '</a>' :
data;
}
}, {
"data": 'ssid',
"render": function(data, type, row, meta) {
return he.encode(data || '');
}
}, {
"data": 'mac_count',
"searchable": false,
"render": function(data, type, row, meta) {
return data.replace(/\B(?=(\d{3})+(?!\d))/g, ",");
}
}
],
[% INCLUDE 'ajax/datatabledefaults.tt' -%]
});
});
</script>

View File

@@ -0,0 +1,14 @@
[% USE CSV -%]
[% CSV.dump([ 'Device' 'Model' 'Location' 'Port' 'SSID' 'Node Count' ]) %]
[% FOREACH row IN results %]
[% mylist = [] %]
[% mylist.push(row.dns || row.name || row.ip) %]
[% mylist.push(row.model) %]
[% mylist.push(row.location) %]
[% mylist.push(row.port) %]
[% mylist.push(row.ssid) %]
[% mylist.push(row.mac_count) %]
[% CSV.dump(mylist) %]
[% END %]