Filter unwanted data in Routes Ajax reply (#12847)

* filter unwanted data in AJAX reply

filter unwanted data in AJAX reply

filter unwanted data in AJAX reply

filter unwanted data in AJAX reply

cleaner fix now

* add tooltips, except when text contains 'overlib' calls

* readability

DestType lost in the game

DestType lost in the game
This commit is contained in:
PipoCanaja
2021-05-25 15:39:20 +02:00
committed by GitHub
parent 556c265934
commit 96479ab9b9
2 changed files with 40 additions and 32 deletions

View File

@@ -169,37 +169,31 @@ class RoutesTablesController extends TableController
*/
public function formatItem($route_entry)
{
$item = $route_entry->toArray();
$item['updated_at'] = $route_entry->updated_at ? $route_entry->updated_at->diffForHumans() : $route_entry->updated_at;
$item['created_at'] = $route_entry->created_at ? $route_entry->created_at->toDateTimeString() : $route_entry->created_at;
$item['inetCidrRouteIfIndex'] = $route_entry->inetCidrRouteIfIndex == 0 ? 'Undefined' : $route_entry->inetCidrRouteIfIndex;
$item['inetCidrRouteMetric1'] = $route_entry->inetCidrRouteMetric1;
$item['inetCidrRoutePfxLen'] = $route_entry->inetCidrRoutePfxLen;
$item['inetCidrRouteDestType'] = $route_entry->inetCidrRouteDestType;
if ($route_entry->updated_at) {
$item['updated_at'] = $route_entry->updated_at->diffForHumans();
try {
$obj_inetCidrRouteDest = IP::parse($route_entry->inetCidrRouteDest);
$item['inetCidrRouteDest'] = $obj_inetCidrRouteDest->compressed();
} catch (\Exception $e) {
$item['inetCidrRouteDest'] = $route_entry->inetCidrRouteDest;
}
if ($route_entry->created_at) {
$item['created_at'] = $route_entry->created_at->toDateTimeString();
}
if ($item['inetCidrRouteIfIndex'] == 0) {
$item['inetCidrRouteIfIndex'] = 'Undefined';
}
if ($route_entry->inetCidrRouteNextHop) {
try {
$obj_inetCidrRouteNextHop = IP::parse($route_entry->inetCidrRouteNextHop);
$item['inetCidrRouteNextHop'] = $obj_inetCidrRouteNextHop->compressed();
} catch (\Exception $e) {
$item['inetCidrRouteNextHop'] = $route_entry->inetCidrRouteNextHop;
}
}
if ($route_entry->inetCidrRouteDest) {
try {
$obj_inetCidrRouteDest = IP::parse($route_entry->inetCidrRouteDest);
$item['inetCidrRouteDest'] = $obj_inetCidrRouteDest->compressed();
} catch (\Exception $e) {
$item['inetCidrRouteDest'] = $route_entry->inetCidrRouteDest;
}
}
$item['inetCidrRouteIfIndex'] = 'ifIndex ' . $item['inetCidrRouteIfIndex'];
$item['inetCidrRouteIfIndex'] = $route_entry->inetCidrRouteIfIndex == 0 ? 'Undefined' : 'IfIndex ' . $route_entry->inetCidrRouteIfIndex;
if ($port = $route_entry->port()->first()) {
$item['inetCidrRouteIfIndex'] = Url::portLink($port, htmlspecialchars($port->getShortLabel()));
}
try {
$obj_inetCidrRouteNextHop = IP::parse($route_entry->inetCidrRouteNextHop);
$item['inetCidrRouteNextHop'] = $obj_inetCidrRouteNextHop->compressed();
} catch (\Exception $e) {
$item['inetCidrRouteNextHop'] = $route_entry->inetCidrRouteNextHop;
}
$device = Device::findByIp($route_entry->inetCidrRouteNextHop);
if ($device) {
if ($device->device_id == $route_entry->device_id || in_array($route_entry->inetCidrRouteNextHop, ['127.0.0.1', '::1'])) {
@@ -208,12 +202,17 @@ class RoutesTablesController extends TableController
$item['inetCidrRouteNextHop'] = $item['inetCidrRouteNextHop'] . '<br>(' . Url::deviceLink($device) . ')';
}
}
$item['inetCidrRouteProto'] = $route_entry->inetCidrRouteProto;
if ($route_entry->inetCidrRouteProto && $route_entry::$translateProto[$route_entry->inetCidrRouteProto]) {
$item['inetCidrRouteProto'] = $route_entry::$translateProto[$route_entry->inetCidrRouteProto];
}
$item['inetCidrRouteType'] = $route_entry->inetCidrRouteType;
if ($route_entry->inetCidrRouteType && $route_entry::$translateType[$route_entry->inetCidrRouteType]) {
$item['inetCidrRouteType'] = $route_entry::$translateType[$route_entry->inetCidrRouteType];
}
$item['context_name'] = '[global]';
if ($route_entry->context_name != '') {
$item['context_name'] = '<a href="' . Url::generate(['page' => 'routing', 'protocol' => 'vrf', 'vrf' => $route_entry->context_name]) . '">' . htmlspecialchars($route_entry->context_name) . '</a>';

View File

@@ -6,17 +6,17 @@ $no_refresh = true;
<table id="routes" class="table table-condensed table-hover table-striped">
<thead>
<tr>
<th data-column-id="context_name" data-width="125px">VRF</th>
<th data-column-id="context_name" data-width="125px" data-formatter="tooltip">VRF</th>
<th data-column-id="inetCidrRouteDestType" data-width="70px">Proto</th>
<th data-column-id="inetCidrRouteDest">Destination</th>
<th data-column-id="inetCidrRouteDest" data-formatter="tooltip">Destination</th>
<th data-column-id="inetCidrRoutePfxLen" data-width="80px">Mask</th>
<th data-column-id="inetCidrRouteNextHop">Next hop</th>
<th data-column-id="inetCidrRouteIfIndex">Interface</th>
<th data-column-id="inetCidrRouteNextHop" data-formatter="tooltip">Next hop</th>
<th data-column-id="inetCidrRouteIfIndex" data-formatter="tooltip">Interface</th>
<th data-column-id="inetCidrRouteMetric1" data-width="85px">Metric</th>
<th data-column-id="inetCidrRouteType" data-width="85px">Type</th>
<th data-column-id="inetCidrRouteProto" data-width="85px">Proto</th>
<th data-column-id="created_at" data-width="165px">First seen</th>
<th data-column-id="updated_at" data-width="165px">Last seen</th>
<th data-column-id="created_at" data-width="165px" data-formatter="tooltip">First seen</th>
<th data-column-id="updated_at" data-width="165px" data-formatter="tooltip">Last seen</th>
</tr>
</thead>
</table>
@@ -46,6 +46,15 @@ var grid = $("#routes").bootgrid({
showProtocols: list_showProtocols
};
},
formatters: {
"tooltip": function (column, row) {
var value = row[column.id];
if (value.includes('onmouseover=')) {
return value;
}
return "<span title=\'" + value + "\' data-toggle=\'tooltip\'>" + value + "</span>";
},
},
url: "ajax/table/routes"
});