diff --git a/Netdisco/lib/App/Netdisco/Web/Plugin/Report/DevicePoeStatus.pm b/Netdisco/lib/App/Netdisco/Web/Plugin/Report/DevicePoeStatus.pm
index 54a98d2d..43ad50df 100644
--- a/Netdisco/lib/App/Netdisco/Web/Plugin/Report/DevicePoeStatus.pm
+++ b/Netdisco/lib/App/Netdisco/Web/Plugin/Report/DevicePoeStatus.pm
@@ -3,6 +3,7 @@ package App::Netdisco::Web::Plugin::Report::DevicePoeStatus;
use Dancer ':syntax';
use Dancer::Plugin::DBIC;
use Dancer::Plugin::Auth::Extensible;
+use App::Netdisco::Util::ExpandParams 'expand_hash';
use App::Netdisco::Web::Plugin;
@@ -14,20 +15,45 @@ register_report(
}
);
-get '/ajax/content/report/devicepoestatus' => require_login sub {
- my $results = schema('netdisco')->resultset('Device')
- ->with_poestats_as_hashref;
+get '/ajax/content/report/devicepoestatus/data' => require_role admin => sub {
+ send_error( 'Missing parameter', 400 )
+ unless ( param('draw') && param('draw') =~ /\d+/ );
- return unless scalar $results;
+ my $rs = schema('netdisco')->resultset('Virtual::DevicePoeStatus');
+
+ my $exp_params = expand_hash( scalar params );
+
+ my $recordsTotal = $rs->count;
+
+ my @data = $rs->get_datatables_data($exp_params)->hri->all;
+
+ my $recordsFiltered = $rs->get_datatables_filtered_count($exp_params);
+
+ content_type 'application/json';
+ return to_json(
+ { draw => int( param('draw') ),
+ recordsTotal => int($recordsTotal),
+ recordsFiltered => int($recordsFiltered),
+ data => \@data,
+ }
+ );
+};
+
+get '/ajax/content/report/devicepoestatus' => require_login sub {
if ( request->is_ajax ) {
- template 'ajax/report/devicepoestatus.tt', { results => $results, },
- { layout => undef };
+ template 'ajax/report/devicepoestatus.tt', {}, { layout => undef };
}
else {
+ my @results
+ = schema('netdisco')->resultset('Virtual::DevicePoeStatus')
+ ->hri->all;
+
+ return unless scalar @results;
+
header( 'Content-Type' => 'text/comma-separated-values' );
template 'ajax/report/devicepoestatus_csv.tt',
- { results => $results, },
+ { results => \@results, },
{ layout => undef };
}
};
diff --git a/Netdisco/share/views/ajax/device/details.tt b/Netdisco/share/views/ajax/device/details.tt
index 1f7d48d6..0882bf0c 100644
--- a/Netdisco/share/views/ajax/device/details.tt
+++ b/Netdisco/share/views/ajax/device/details.tt
@@ -114,15 +114,15 @@
PS1 [[% d.ps1_type | html_entity %]]: [% d.ps1_status | html_entity %]
PS2 [[% d.ps2_type | html_entity %]]: [% d.ps2_status | html_entity %]
- [% IF d.power_modules.size %]
+ [% IF p.size %]
| PoE Module |
- Power (W) |
- Supply | -Capable Ports |
- Powered Ports |
- Disabled Ports |
- Errored Ports |
- Committed (W) |
- Delivering (W) |
-
|---|---|---|---|---|---|---|---|---|
| [% m.module %] | -[% m.power | format_number %] | -[% m.status %] | -[% m.capable_ports %] | -[% m.powered_ports %] | -[% m.disabled_ports %] | -[% m.errored_ports %] | -[% m.pwr_committed | format_number %] | -[% m.pwr_delivering | format_number %] | -
| IP | +DNS | +Name | +Model | +Location | +PoE Module |
+ Supply | +Power (W) |
+ Capable Ports |
+ Powered Ports |
+ Disabled Ports |
+ Errored Ports |
+ Committed (W) |
+ Delivering (W) |
+
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| [% row.ip %] | +[% row.dns %] | +[% row.name %] | +[% row.model %] | +[% row.location %] | +[% row.module %] | +[% row.power %] | +[% row.status %] | +[% row.poe_capable_ports %] | +[% row.poe_powered_ports %] | +[% row.poe_disabled_ports %] | +[% row.poe_errored_ports %] | +[% row.poe_power_committed %] | +[% row.poe_power_delivering %] | +