diff --git a/Netdisco/lib/Netdisco/Web.pm b/Netdisco/lib/Netdisco/Web.pm index 5069ff94..2b0ce191 100644 --- a/Netdisco/lib/Netdisco/Web.pm +++ b/Netdisco/lib/Netdisco/Web.pm @@ -22,6 +22,27 @@ ajax '/ajax/content/search/:thing' => sub { return '

Hello '. param('thing') .'.

'; }; +# devices carrying vlan xxx +ajax '/ajax/content/search/vlan' => sub { + my $q = param('q'); + return unless $q and $q =~ m/^\d+$/; + + my $set = schema('netdisco')->resultset('Device')->carrying_vlan($q); + return unless $set->count; + + content_type('text/html'); + template 'content/vlan.tt', { + results => $set, + columns => [ + { key => 'dns', label => 'Device' }, + { key => [qw/vlan description/], label => 'Description' }, + { key => 'model', label => 'Model' }, + { key => 'os', label => 'OS' }, + { key => 'vendor', label => 'Vendor' }, + ], + }, { layout => undef }; +}; + get '/search' => sub { my $q = param('q'); if ($q and not param('tab')) { diff --git a/Netdisco/views/content/vlan.tt b/Netdisco/views/content/vlan.tt new file mode 100644 index 00000000..0d3bca92 --- /dev/null +++ b/Netdisco/views/content/vlan.tt @@ -0,0 +1,22 @@ + + + + [% FOREACH col IN columns %] + + [% END %] + + + + [% WHILE (row = results.next) %] + + [% FOREACH col IN columns %] + [% SET val = row %] + [% FOREACH method IN col.key %] + [% SET val = val.$method %] + [% END %] + + [% END %] + + [% END %] + +
[% col.label %]
[% val %]