diff --git a/Netdisco/lib/App/Netdisco/Web/Plugin/Report/NodeVendor.pm b/Netdisco/lib/App/Netdisco/Web/Plugin/Report/NodeVendor.pm index 06ac0742..0c375363 100644 --- a/Netdisco/lib/App/Netdisco/Web/Plugin/Report/NodeVendor.pm +++ b/Netdisco/lib/App/Netdisco/Web/Plugin/Report/NodeVendor.pm @@ -14,20 +14,6 @@ register_report( } ); -hook 'before' => sub { - - return - unless ( - request->path eq uri_for('/report/nodevendor')->path - or index( request->path, - uri_for('/ajax/content/report/nodevendor')->path ) == 0 - ); - - params->{'limit'} ||= 1024; - params->{'order'} ||= 'MAC'; - -}; - hook 'before_template' => sub { my $tokens = shift; @@ -59,21 +45,15 @@ get '/ajax/content/report/nodevendor' => require_login sub { my $match = $vendor eq 'blank' ? undef : $vendor; - my $order = { - MAC => 'me.mac', - Device => 'me.switch', - Vendor => 'oui.company' - }; - - $rs = $rs->search( { 'oui.abbrev' => $match } ) - ->prefetch( [qw/ oui device /] ); + $rs = $rs->search( { 'oui.abbrev' => $match }, + { '+columns' => [qw/ device.dns device.name oui.abbrev /], + join => [qw/ oui device /], + collapse => 1, + }); unless ( param('archived') ) { $rs = $rs->search( { -bool => 'me.active' } ); } - - $rs = $rs->order_by( $order->{ param('order') } ) - ->limit( param('limit') )->hri; } else { $rs = $rs->search( @@ -83,20 +63,22 @@ get '/ajax/content/report/nodevendor' => require_login sub { as => [qw/ vendor count /], group_by => [qw/ oui.abbrev /] } - )->order_by( { -desc => 'count' } )->hri; + )->order_by( { -desc => 'count' } ); } - return unless $rs->has_rows; + my @results = $rs->hri->all; + return unless scalar @results; if ( request->is_ajax ) { + my $json = to_json( \@results ); template 'ajax/report/nodevendor.tt', - { results => $rs, opt => $vendor }, + { results => $json, opt => $vendor }, { layout => undef }; } else { header( 'Content-Type' => 'text/comma-separated-values' ); template 'ajax/report/nodevendor_csv.tt', - { results => $rs, opt => $vendor }, + { results => \@results, opt => $vendor }, { layout => undef }; } }; diff --git a/Netdisco/share/views/ajax/report/nodevendor.tt b/Netdisco/share/views/ajax/report/nodevendor.tt index fc80b8a3..066e54df 100644 --- a/Netdisco/share/views/ajax/report/nodevendor.tt +++ b/Netdisco/share/views/ajax/report/nodevendor.tt @@ -1,6 +1,5 @@ -[% USE Number.Format %] [% IF opt %] - +
@@ -8,52 +7,62 @@ - - [% WHILE (row = results.next) %] - - - - - - [% END %] -
MACDevice (Port)
- - [% row.mac.upper | html_entity %][% '   ' IF NOT row.active %] - - - [% row.oui.abbrev | html_entity %] ( [% row.oui.company | html_entity %] ) - [% ELSE %] - href="[% uri_for('/report/nodevendor') %]?vendor=blank"> - (Unknown Vendor) - [% END %] - - - [% row.device.dns || row.device.name || row.switch | html_entity %] ( [% row.port | html_entity %] ) -
[% ELSE %] - +
- - [% WHILE (row = results.next) %] - - - - - [% END %] -
Vendor Count
- - [% row.vendor || '(Unknown Vendor)' | html_entity %] - [% row.count | format_number %]
[% END %] + + diff --git a/Netdisco/share/views/ajax/report/nodevendor_csv.tt b/Netdisco/share/views/ajax/report/nodevendor_csv.tt index 356d7b9c..3f28ec7e 100644 --- a/Netdisco/share/views/ajax/report/nodevendor_csv.tt +++ b/Netdisco/share/views/ajax/report/nodevendor_csv.tt @@ -2,7 +2,7 @@ [% IF opt %] [% CSV.dump(['MAC' 'Vendor' 'Company' 'Device' 'Port']) %] - [% WHILE (row = results.next) %] + [% FOREACH row IN results %] [% mylist = [] %] [% device = row.device.dns || row.device.name || row.switch %] [% FOREACH col IN [ row.mac.upper row.oui.abbrev row.oui.company device row.port ] %] @@ -14,7 +14,7 @@ [% ELSE %] [% CSV.dump(['Vendor' 'Count']) %] - [% WHILE (row = results.next) %] + [% FOREACH row IN results %] [% mylist = [] %] [% vendor = row.vendor || '(Unknown Vendor)' %] [% FOREACH col IN [ vendor row.count ] %] diff --git a/Netdisco/share/views/sidebar/report/nodevendor.tt b/Netdisco/share/views/sidebar/report/nodevendor.tt index cf2539ea..9d04624f 100644 --- a/Netdisco/share/views/sidebar/report/nodevendor.tt +++ b/Netdisco/share/views/sidebar/report/nodevendor.tt @@ -23,25 +23,6 @@ -
-
-