Merge pull request #11828 from murrant/fix-sort

Fix table sorts not working
This commit is contained in:
Tony Murray
2020-06-15 10:33:00 -05:00
committed by GitHub
9 changed files with 74 additions and 11 deletions

View File

@@ -171,8 +171,9 @@ abstract class PaginatedAjaxController extends Controller
$sort = $request->get('sort', $this->default_sort);
foreach ($sort as $column => $direction) {
if (isset($columns[$column])) {
$query->orderBy($columns[$column], $direction == 'desc' ? 'desc' : 'asc');
if (isset($columns[$column]) || in_array($column, $columns)) {
$name = $columns[$column] ?? $column;
$query->orderBy($name, $direction == 'desc' ? 'desc' : 'asc');
}
}

View File

@@ -38,6 +38,11 @@ class CustomersController extends TableController
return ['port_descr_descr', 'ifName', 'ifDescr', 'ifAlias', 'hostname', 'sysDescr', 'port_descr_speed', 'port_descr_notes'];
}
public function sortFields($request)
{
return ['port_descr_descr', 'hostname', 'ifDescr', 'port_descr_speed', 'port_descr_circuit', 'port_descr_notes'];
}
/**
* Defines the base query for this resource
*

View File

@@ -67,6 +67,11 @@ class DeviceController extends TableController
return ['sysName', 'hostname', 'hardware', 'os', 'locations.location'];
}
protected function sortFields($request)
{
return ['status', 'icon', 'hostname', 'hardware', 'os', 'uptime', 'location'];
}
/**
* Defines the base query for this resource
*

View File

@@ -55,6 +55,11 @@ class EventlogController extends TableController
];
}
protected function sortFields($request)
{
return ['datetime', 'type', 'device_id', 'message', 'username'];
}
/**
* Defines the base query for this resource
*

View File

@@ -114,35 +114,35 @@ class FdbTablesController extends TableController
$sort = $request->get('sort');
if (isset($sort['mac_address'])) {
$query->orderBy('mac_address', $sort['mac_address']);
$query->orderBy('mac_address', $sort['mac_address'] == 'desc' ? 'desc' : 'asc');
}
if (isset($sort['device'])) {
$query->leftJoin('devices', 'ports_fdb.device_id', 'devices.device_id')
->orderBy('hostname', $sort['device']);
->orderBy('hostname', $sort['device'] == 'desc' ? 'desc' : 'asc');
}
if (isset($sort['vlan'])) {
$query->leftJoin('vlans', 'ports_fdb.vlan_id', 'vlans.vlan_id')
->orderBy('vlan_vlan', $sort['vlan']);
->orderBy('vlan_vlan', $sort['vlan'] == 'desc' ? 'desc' : 'asc');
}
if (isset($sort['interface'])) {
$query->leftJoin('ports', 'ports_fdb.port_id', 'ports.port_id')
->orderBy('ports.ifDescr', $sort['interface']);
->orderBy('ports.ifDescr', $sort['interface'] == 'desc' ? 'desc' : 'asc');
}
if (isset($sort['description'])) {
$query->leftJoin('ports', 'ports_fdb.port_id', 'ports.port_id')
->orderBy('ports.ifDescr', $sort['description']);
->orderBy('ports.ifDescr', $sort['description'] == 'desc' ? 'desc' : 'asc');
}
if (isset($sort['last_seen'])) {
$query->orderBy('updated_at', $sort['last_seen']);
$query->orderBy('updated_at', $sort['last_seen'] == 'desc' ? 'desc' : 'asc');
}
if (isset($sort['first_seen'])) {
$query->orderBy('created_at', $sort['first_seen']);
$query->orderBy('created_at', $sort['first_seen'] == 'desc' ? 'desc' : 'asc');
}
return $query;
@@ -163,7 +163,7 @@ class FdbTablesController extends TableController
'first_seen' => 'unknown',
'last_seen' => 'unknown'
];
// diffForHumans and doDateTimeString are not safe
if ($fdb_entry->updated_at) {
$item['last_seen'] = $fdb_entry->updated_at->diffForHumans();

View File

@@ -42,6 +42,11 @@ class LocationController extends TableController
return ['location'];
}
protected function sortFields($request)
{
return ['location', 'devices', 'network', 'servers', 'firewalls', 'down'];
}
/**
* Defines the base query for this resource
*

View File

@@ -43,6 +43,26 @@ class PortNacController extends TableController
return ['username', 'ip_address', 'mac_address'];
}
protected function sortFields($request)
{
return [
'port_id',
'mac_address',
'ip_address',
'vlan',
'domain',
'host_mode',
'username',
'authz_by',
'timeout',
'time_elapsed',
'time_left',
'authc_status',
'authz_status',
'method'
];
}
/**
* Defines the base query for this resource
*

View File

@@ -59,6 +59,23 @@ class RoutesTablesController extends TableController
];
}
protected function sortFields($request)
{
return [
'context_name',
'inetCidrRouteDestType',
'inetCidrRouteDest',
'inetCidrRoutePfxLen',
'inetCidrRouteNextHop',
'inetCidrRouteIfIndex',
'inetCidrRouteMetric1',
'inetCidrRouteType',
'inetCidrRouteProto',
'created_at',
'updated_at',
];
}
/**
* Defines the base query for this resource
*
@@ -67,7 +84,7 @@ class RoutesTablesController extends TableController
*/
protected function baseQuery($request)
{
$join = function ($query) {
$join = function ($query) {
$query->on('ports.port_id', 'route.port_id');
};
$showAllRoutes = trim(\Request::get('showAllRoutes'));

View File

@@ -56,6 +56,11 @@ class SyslogController extends TableController
];
}
public function sortFields($request)
{
return ['label', 'timestamp', 'level', 'device_id', 'program', 'msg', 'priority'];
}
/**
* Defines the base query for this resource
*