Merge pull request #205 from laf/issue-laf-29

Updated global search both design wise and added bgp support
This commit is contained in:
Paul Gear
2014-03-29 09:18:09 +10:00
5 changed files with 72 additions and 20 deletions

View File

@ -41,7 +41,6 @@ if (isset($_REQUEST['search']))
foreach ($results as $result)
{
$name = $result['hostname'];
if (strlen($name) > 36) { $name = substr($name, 0, 36) . "..."; }
if($result['disabled'] == 1)
{
$highlight_colour = '#808080';
@ -85,15 +84,7 @@ if (isset($_REQUEST['search']))
foreach ($results as $result)
{
$name = $result['ifDescr'];
if (strlen($name) > 36)
{
$name = substr($name, 0, 36) . "...";
}
$description = $result['ifAlias'];
if (strlen($description) > 50)
{
$description = substr($description, 0, 50) . "...";
}
if($result['deleted'] == 0 && ($result['ignore'] == 0 || $result['ignore'] == 0) && ($result['ifInErrors_delta'] > 0 || $result['ifOutErrors_delta'] > 0))
{
@ -135,6 +126,54 @@ if (isset($_REQUEST['search']))
print_r($json);
exit;
} elseif($_REQUEST['type'] == 'bgp') {
// Search bgp peers
$results = dbFetchRows("SELECT `bgpPeers`.* AS B,`devices`.* AS D FROM `bgpPeers` LEFT JOIN `devices` ON `bgpPeers`.`device_id` = `devices`.`device_id` WHERE `astext` LIKE '%" . $search . "%' OR `bgpPeerIdentifier` LIKE '%" . $search . "%' OR `bgpPeerRemoteAs` LIKE '%" . $search . "%' ORDER BY `astext` LIMIT 8");
if (count($results))
{
$found = 1;
foreach ($results as $result)
{
$name = $result['bgpPeerIdentifier'];
$description = $result['astext'];
$remoteas = $result['bgpPeerRemoteAs'];
$localas = $result['bgpLocalAs'];
if($result['bgpPeerAdminStatus'] == 'start' && $result['bgpPeerState'] != 'established')
{
// Session active but errored
$port_colour = '#ffa500';
}
elseif($result['bgpPeerAdminStatus'] != 'start')
{
// Session inactive
$port_colour = '#000000';
}
elseif($result['bgpPeerAdminStatus'] == 'start' && $result['bgpPeerState'] == 'established')
{
// Session Up
$port_colour = '#008000';
}
if ($result['bgpPeerRemoteAs'] == $result['bgpLocalAs']) { $bgp_image = "images/16/brick_link.png"; } else { $bgp_image = "images/16/world_link.png"; }
$bgp[]=array('count'=>count($results),
'url'=>generate_peer_url($result),
'name'=>$name,
'description'=>$description,
'localas'=>$localas,
'bgp_image'=>$bgp_image,
'remoteas'=>$remoteas,
'colours'=>$port_colour,
'hostname'=>$result['hostname']);
}
}
$json = json_encode($bgp);
print_r($json);
exit;
}
}
}

View File

@ -1608,3 +1608,8 @@ tr.search:nth-child(odd) {
max-height: 200px;
overflow-x: hidden;
}
.tt-dropdown-menu
{
min-width: 500px;
}

View File

@ -450,6 +450,11 @@ function generate_port_url($port, $vars=array())
return generate_url(array('page' => 'device', 'device' => $port['device_id'], 'tab' => 'port', 'port' => $port['port_id']), $vars);
}
function generate_peer_url($peer, $vars=array())
{
return generate_url(array('page' => 'device', 'device' => $peer['device_id'], 'tab' => 'routing', 'proto' => 'bgp'), $vars);
}
function generate_port_image($args)
{
if (!$args['bg']) { $args['bg'] = "FFFFFF"; }

View File

@ -472,14 +472,9 @@ if(is_file("includes/print-menubar-custom.inc.php"))
<ul class="nav navbar-nav navbar-right">
<li style="padding-top:10px">
<form role="form" class="pull-left form-horizontal">
<div class="form-group row">
<div class="col-md-10">
<form role="search class="navbar-form navbar-left">
<div class="form-group">
<input class="input-large search-query" type="search" id="gsearch" name="gsearch" placeholder="Global Search" style="width: 250px">
</div>
<div class="col-md-2">
&nbsp;
</div>
</div>
</form>
</li>
@ -547,18 +542,26 @@ if ($_SESSION['authenticated'])
{
name: 'devices',
remote : 'ajax_search.php?search=%QUERY&type=device',
header: '<h5><strong>Devices</strong></h5>',
template: '<p"><img src="{{device_image}}" border="0" class="img_left"> <small><a href="{{url}}"><strong>{{name}}</strong> | {{device_os}} | {{version}} | {{device_hardware}} with {{device_ports}} port(s) | {{location}}</a></small></p>',
header : '<h5><strong>&nbsp;Devices</strong></h5>',
template: '<p><img src="{{device_image}}" border="0" class="img_left"> <small><a href="{{url}}"><strong>{{name}}</strong> | {{device_os}} | {{version}} | {{device_hardware}} with {{device_ports}} port(s) | {{location}}</a></small></p>',
valueKey:"name",
engine: Hogan
},
{
name: 'ports',
remote : 'ajax_search.php?search=%QUERY&type=ports',
header: '<h5><strong>Ports</strong></h5>',
header : '<h5><strong>&nbsp;Ports</strong></h5>',
template: '<p><small><a href="{{url}}"><img src="images/icons/port.png" /> <strong>{{name}}</strong> {{hostname}}</a></small></p>',
valueKey: "name",
engine: Hogan
},
{
name: 'bgp',
remote : 'ajax_search.php?search=%QUERY&type=bgp',
header : '<h5><strong>&nbsp;BGP</strong></h5>',
template: '<p><small><a href="{{url}}"><img src="{{bgp_image}}" border="0" class="img_left">{{name}} - {{hostname}}<br />AS{{localas}} -> AS{{remoteas}}</a></small></p>',
valueKey: 'name',
engine: Hogan
}
]);
</script>

View File

@ -127,8 +127,8 @@ if ($config['page_title']) { $config['page_title_prefix'] = $config['page_title'
if ($config['page_refresh']) { echo(' <meta http-equiv="refresh" content="'.$config['page_refresh'].'" />' . "\n"); }
?>
<link href="css/bootstrap.min.css" rel="stylesheet" type="text/css" />
<link href="<?php echo($config['stylesheet']); ?>" rel="stylesheet" type="text/css" />
<link href="css/typeahead.js-bootstrap.css" rel="stylesheet" type="text/css" />
<link href="<?php echo($config['stylesheet']); ?>" rel="stylesheet" type="text/css" />
<script src="js/jquery.min.js"></script>
<script src="js/bootstrap.min.js"></script>
<script src="js/bootstrap-hover-dropdown.min.js"></script>