mirror of
				https://github.com/librenms/librenms.git
				synced 2024-10-07 16:52:45 +00:00 
			
		
		
		
	Merge pull request #11828 from murrant/fix-sort
Fix table sorts not working
This commit is contained in:
		@@ -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');
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -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
 | 
			
		||||
     *
 | 
			
		||||
 
 | 
			
		||||
@@ -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
 | 
			
		||||
     *
 | 
			
		||||
 
 | 
			
		||||
@@ -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
 | 
			
		||||
     *
 | 
			
		||||
 
 | 
			
		||||
@@ -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();
 | 
			
		||||
 
 | 
			
		||||
@@ -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
 | 
			
		||||
     *
 | 
			
		||||
 
 | 
			
		||||
@@ -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
 | 
			
		||||
     *
 | 
			
		||||
 
 | 
			
		||||
@@ -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'));
 | 
			
		||||
 
 | 
			
		||||
@@ -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
 | 
			
		||||
     *
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user