From a6e1c11b0c491b45158d73b45008a656640cef5d Mon Sep 17 00:00:00 2001 From: Tony Murray Date: Tue, 22 Nov 2022 15:52:29 -0600 Subject: [PATCH] Remove ungrouped devices panel (#14664) The panel destroyed the page performance on larger installs. Now has a link to the devices list with new group=none filter. --- .../Controllers/DeviceGroupController.php | 6 ---- .../Controllers/Table/DeviceController.php | 12 +++++--- resources/views/device-group/index.blade.php | 28 ++----------------- 3 files changed, 11 insertions(+), 35 deletions(-) diff --git a/app/Http/Controllers/DeviceGroupController.php b/app/Http/Controllers/DeviceGroupController.php index 5375a7366d..afd7740f63 100644 --- a/app/Http/Controllers/DeviceGroupController.php +++ b/app/Http/Controllers/DeviceGroupController.php @@ -2,7 +2,6 @@ namespace App\Http\Controllers; -use App\Models\Device; use App\Models\DeviceGroup; use Flasher\Prime\FlasherInterface; use Illuminate\Http\Request; @@ -26,13 +25,8 @@ class DeviceGroupController extends Controller { $this->authorize('manage', DeviceGroup::class); - $ungrouped_devices = Device::orderBy('hostname')->whereNotIn('device_id', function ($query) { - $query->select('device_id')->from('device_group_device'); - })->get(); - return view('device-group.index', [ 'device_groups' => DeviceGroup::orderBy('name')->withCount('devices')->get(), - 'ungrouped_devices' => $ungrouped_devices, ]); } diff --git a/app/Http/Controllers/Table/DeviceController.php b/app/Http/Controllers/Table/DeviceController.php index 240c6715ee..e74b96fa91 100644 --- a/app/Http/Controllers/Table/DeviceController.php +++ b/app/Http/Controllers/Table/DeviceController.php @@ -54,7 +54,7 @@ class DeviceController extends TableController 'disabled' => 'nullable|in:0,1', 'ignore' => 'nullable|in:0,1', 'disable_notify' => 'nullable|in:0,1', - 'group' => 'nullable|int', + 'group' => ['nullable', 'regex:/^(\d+|none)$/'], 'poller_group' => 'nullable|int', 'device_id' => 'nullable|int', ]; @@ -102,9 +102,13 @@ class DeviceController extends TableController // filter device group, not sure this is the most efficient query if ($group = $request->get('group')) { - $query->whereHas('groups', function ($query) use ($group) { - $query->where('id', $group); - }); + if ($group == 'none') { + $query->whereDoesntHave('groups'); + } else { + $query->whereHas('groups', function ($query) use ($group) { + $query->where('id', $group); + }); + } } if ($request->get('poller_group') !== null) { diff --git a/resources/views/device-group/index.blade.php b/resources/views/device-group/index.blade.php index 5cfba8a25d..400bb7c414 100644 --- a/resources/views/device-group/index.blade.php +++ b/resources/views/device-group/index.blade.php @@ -14,6 +14,9 @@ {{ __('New Device Group') }} + + {{ __('View Ungrouped Devices') }} +
@@ -61,31 +64,6 @@
- - -
- - - - - - - - - - - @foreach($ungrouped_devices as $device) - - - - - - - @endforeach - -
{{ __('Vendor') }}{{ __('Device') }}{{ __('Platform') }}{{ __('Operating System') }}
{{ $device->os }}
{{ $device->sysName }}
{{ $device->hardware }}{{ $device->os }} {{ $device->version }} @if($device->features) ({{ $device->features }}) @endif
-
-
@endsection