DataTables for ports administratively disabled report

This commit is contained in:
Eric A. Miller
2014-05-26 23:26:36 -04:00
parent 72e558404b
commit 8b1382a6d6
2 changed files with 39 additions and 21 deletions

View File

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

View File

@@ -1,23 +1,42 @@
[% USE Number.Format %] [% 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> <thead>
<tr> <tr>
<th>Device</th> <th>Device</th>
<th class="nd_center-cell">Port</th> <th>Port</th>
<th class="nd_center-cell">Port Description</th> <th>Port Description</th>
<th class="nd_center-cell">Admin Status</th> <th>Admin Status</th>
</tr> </tr>
</thead> </thead>
</tbody>
[% FOREACH row IN results %]
<tr>
<td>[% row.dns || row.name || row.ip | html_entity %]</td>
<td class="nd_center-cell"><a href="[% device_ports %]&q=[% row.ip | uri %]&f=[% row.port | uri %]&c_nodes=on">
[% row.port | html_entity %]</a></td>
<td class="nd_center-cell">[% row.description | html_entity %]</td>
<td class="nd_center-cell">[% row.up_admin | html_entity %]</td>
</tr>
[% END %]
</tbody>
</table> </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": 'up_admin',
"orderable": false,
"searchable": false,
}
]
});
});
</script>