DataTables for ports that are blocking report

This commit is contained in:
Eric A. Miller
2014-05-26 23:35:57 -04:00
parent 95161c4cd5
commit 4105319987
2 changed files with 39 additions and 11 deletions

View File

@@ -17,22 +17,21 @@ register_report(
get '/ajax/content/report/portblocking' => require_login sub {
my @results = schema('netdisco')->resultset('Device')->search(
{ 'stp' => [ 'blocking', 'broken' ], 'up' => { '!=', 'down' } },
{ result_class => 'DBIx::Class::ResultClass::HashRefInflator',
select => [ 'ip', 'dns', 'name' ],
{ select => [ 'ip', 'dns', 'name' ],
join => ['ports'],
'+columns' => [
{ 'port' => 'ports.port' },
{ 'description' => 'ports.name' },
{ 'stp' => 'ports.stp' },
],
order_by => { -asc => [qw/me.ip ports.port/] },
]
}
)->all;
)->hri->all;
return unless scalar @results;
if ( request->is_ajax ) {
template 'ajax/report/portblocking.tt', { results => \@results, },
my $results = to_json (\@results);
template 'ajax/report/portblocking.tt', { results => $results, },
{ layout => undef };
}
else {

View File

@@ -1,11 +1,10 @@
[% USE Number.Format %]
<table class="table table-bordered table-condensed table-striped nd_floatinghead">
<table id="data-table" class="table table-striped table-bordered" width="100%" cellspacing="0">
<thead>
<tr>
<th>Device</th>
<th class="nd_center-cell">Port</th>
<th class="nd_center-cell">Port Description</th>
<th class="nd_center-cell">STP Status</th>
<th>Port</th>
<th>Port Description</th>
<th>STP Status</th>
</tr>
</thead>
</tbody>
@@ -21,3 +20,33 @@
</tbody>
</table>
<script type="text/javascript">
$(document).ready(function() {
var table = $('#data-table').dataTable({
"deferRender": true,
"order": [[ 0, "asc" ], [1, "asc"]],
"data": [% results %],
"columns": [
{
"data": 'ip',
"render": function(data, type, row, meta) {
return (row.dns || row.name || row.ip);
}
}, {
"data": 'port',
"render": function(data, type, row, meta) {
return '<a href="[% device_ports %]&q=' + row.ip + '&f=' + data + '&c_nodes=on">' + data + '</a>';
}
}, {
"data": 'description'
}, {
"data": 'stp',
"orderable": false,
"searchable": false,
}
]
});
});
</script>