diff --git a/Netdisco/lib/App/Netdisco/Web/Plugin/Search/Device.pm b/Netdisco/lib/App/Netdisco/Web/Plugin/Search/Device.pm index 9442ec31..49197b18 100644 --- a/Netdisco/lib/App/Netdisco/Web/Plugin/Search/Device.pm +++ b/Netdisco/lib/App/Netdisco/Web/Plugin/Search/Device.pm @@ -8,40 +8,46 @@ use List::MoreUtils (); use App::Netdisco::Web::Plugin; -register_search_tab({ tag => 'device', label => 'Device', provides_csv => 1 }); - -my $headers = ['Device','Contact','Location','System Name','Model','OS Version','Management IP','Serial']; +register_search_tab( + { tag => 'device', label => 'Device', provides_csv => 1 } ); # device with various properties or a default match-all get '/ajax/content/search/device' => require_login sub { - my $has_opt = List::MoreUtils::any {param($_)} - qw/name location dns ip description model os_ver vendor layers/; - my $set; + my $has_opt = List::MoreUtils::any { param($_) } + qw/name location dns ip description model os_ver vendor layers/; + my $rs; if ($has_opt) { - $set = schema('netdisco')->resultset('Device') - ->with_times->search_by_field(scalar params); + $rs = schema('netdisco')->resultset('Device')->columns( + [ "ip", "dns", "name", "contact", + "location", "model", "os_ver", "serial" + ] + )->with_times->search_by_field( scalar params ); } else { my $q = param('q'); - send_error('Missing query', 400) unless $q; + send_error( 'Missing query', 400 ) unless $q; - $set = schema('netdisco')->resultset('Device') - ->with_times->search_fuzzy($q); + $rs = schema('netdisco')->resultset('Device')->columns( + [ "ip", "dns", "name", "contact", + "location", "model", "os_ver", "serial" + ] + )->with_times->search_fuzzy($q); } - return unless $set->count; - if (request->is_ajax) { - template 'ajax/search/device.tt', {results => $set}, - { layout => undef }; + my @results = $rs->hri->all; + return unless scalar @results; + + if ( request->is_ajax ) { + my $json = to_json( \@results ); + template 'ajax/search/device.tt', { results => $json }, + { layout => undef }; } else { header( 'Content-Type' => 'text/comma-separated-values' ); - template 'ajax/search/device_csv.tt', { - results => $set, - headers => $headers, - }, { layout => undef }; + template 'ajax/search/device_csv.tt', { results => \@results, }, + { layout => undef }; } }; -true; +1; diff --git a/Netdisco/share/views/ajax/search/device.tt b/Netdisco/share/views/ajax/search/device.tt index 4fe973a2..320e04b2 100644 --- a/Netdisco/share/views/ajax/search/device.tt +++ b/Netdisco/share/views/ajax/search/device.tt @@ -1,4 +1,4 @@ - +
@@ -12,19 +12,59 @@ - - [% WHILE (row = results.next) %] - - - - - - - - - - - - [% END %] -
DeviceLast Discovered
[% row.dns || row.ip | html_entity %][% row.contact | html_entity %][% row.location | html_entity %][% row.name | html_entity %][% row.model | html_entity %][% row.os_ver | html_entity %][% row.ip | html_entity %][% row.serial | html_entity %][% row.last_discover_stamp | html_entity %]
+ + diff --git a/Netdisco/share/views/ajax/search/device_csv.tt b/Netdisco/share/views/ajax/search/device_csv.tt index 7402f87c..d84986df 100644 --- a/Netdisco/share/views/ajax/search/device_csv.tt +++ b/Netdisco/share/views/ajax/search/device_csv.tt @@ -1,7 +1,7 @@ [% USE CSV -%] -[% CSV.dump(headers) %] +[% CSV.dump(['Device','Contact','Location','System Name','Model','OS Version','Management IP','Serial']) %] -[% WHILE (row = results.next) %] +[% FOREACH row IN results %] [% mylist = [] %] [% device = row.dns || row.ip %] [% FOREACH col IN [ device row.contact row.location row.name row.model row.os_ver row.ip row.serial] %]