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 Status - [% FOREACH m IN d.power_modules %] + [% FOREACH m IN p %] [% UNLESS m.module == 1 %]
[% END %] - Module [% m.module %]: [% m.status | html_entity %], [% m.capable_ports %] power-capable ports, [% m.powered_ports %] powered ([% m.disabled_ports %] admin disabled, [% m.errored_ports %] errors), [% m.pwr_committed %]/[% m.power %] watts committed. + Module [% m.module %]: [% m.status | html_entity %], [% m.poe_capable_ports %] power-capable ports, [% m.poe_powered_ports %] powered ([% m.poe_disabled_ports %] admin disabled, [% m.poe_errored_ports %] errors), [% m.poe_power_committed %]/[% m.power %] watts committed. [% END %] diff --git a/Netdisco/share/views/ajax/report/devicepoestatus.tt b/Netdisco/share/views/ajax/report/devicepoestatus.tt index df168682..4cd3c097 100644 --- a/Netdisco/share/views/ajax/report/devicepoestatus.tt +++ b/Netdisco/share/views/ajax/report/devicepoestatus.tt @@ -1,60 +1,185 @@ -[% USE Number.Format %] -
-[% count = 0 %] -[% FOREACH row IN results %] - [% NEXT UNLESS row.power_modules.size %] - [% count = count + 1 %] -
- -
-
- - - - - - - - - - - - - - - - [% FOREACH m IN row.power_modules %] - - - - - - - - - - - - [% END %] - -
PoE
Module
Power
(W)
SupplyCapable
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 %]
-
-
-
-[%END%] -
+ + + + + + + + + + + + + + + + + + + + + [% FOREACH row IN results %] + + + + + + + + + + + + + + + + + [% END %] + +
IPDNSNameModelLocationPoE
Module
SupplyPower
(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 %]
+ + diff --git a/Netdisco/share/views/ajax/report/devicepoestatus_csv.tt b/Netdisco/share/views/ajax/report/devicepoestatus_csv.tt index 8f19ca6f..001fc125 100644 --- a/Netdisco/share/views/ajax/report/devicepoestatus_csv.tt +++ b/Netdisco/share/views/ajax/report/devicepoestatus_csv.tt @@ -4,22 +4,16 @@ 'Errored Ports' 'Committed (W)' 'Delivering (W)' ]) %] [% FOREACH row IN results %] - [% NEXT UNLESS row.power_modules.size %] [% mydlist = [] %] - [% mydevice = row.dns || row.name %] + [% mydevice = row.dns || row.name || row.ip %] [% mydlist.push(mydevice) %] - [% mydlist.push(row.model) %] - [% mydlist.push(row.location) %] - [% FOREACH m IN row.power_modules %] - [% myplist = [] %] - [% FOREACH col IN [ m.module m.power m.status m.capable_ports - m.powered_ports m.disabled_ports m.errored_ports - m.pwr_committed m.pwr_delivering - ] %] - [% myplist.push(col) %] - [% END %] - [% CALL mydlist.splice(3, 9, myplist ) %] - [% CSV.dump(mydlist) %] - + [% FOREACH col IN [ 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 + ] %] + [% mydlist.push(col) %] [% END %] + [% CSV.dump(mydlist) %] + [%END%] \ No newline at end of file