From f5829373006cf87ec009c4420eea841c6e15c358 Mon Sep 17 00:00:00 2001 From: Daniel Supernault Date: Tue, 20 Apr 2021 22:03:41 -0600 Subject: [PATCH] Update admin instance page, add search and improve performance --- .../Admin/AdminInstanceController.php | 45 ++++- .../views/admin/instances/home.blade.php | 165 +++++++++--------- 2 files changed, 115 insertions(+), 95 deletions(-) diff --git a/app/Http/Controllers/Admin/AdminInstanceController.php b/app/Http/Controllers/Admin/AdminInstanceController.php index 061fefb4d..43a429791 100644 --- a/app/Http/Controllers/Admin/AdminInstanceController.php +++ b/app/Http/Controllers/Admin/AdminInstanceController.php @@ -14,29 +14,58 @@ trait AdminInstanceController public function instances(Request $request) { $this->validate($request, [ + 'filter' => [ 'nullable', 'string', 'min:1', 'max:20', - Rule::in(['autocw', 'unlisted', 'banned']) + Rule::in([ + 'cw', + 'unlisted', + 'banned', + // 'popular', + 'new', + 'all' + ]) ], ]); - if($request->has('filter') && $request->filled('filter')) { + if($request->has('q') && $request->filled('q')) { + $instances = Instance::where('domain', 'like', '%' . $request->input('q') . '%')->simplePaginate(10); + } else if($request->has('filter') && $request->filled('filter')) { switch ($request->filter) { - case 'autocw': - $instances = Instance::whereAutoCw(true)->orderByDesc('id')->paginate(5); + case 'cw': + $instances = Instance::select('id', 'domain', 'unlisted', 'auto_cw', 'banned')->whereAutoCw(true)->orderByDesc('id')->simplePaginate(10); break; case 'unlisted': - $instances = Instance::whereUnlisted(true)->orderByDesc('id')->paginate(5); + $instances = Instance::select('id', 'domain', 'unlisted', 'auto_cw', 'banned')->whereUnlisted(true)->orderByDesc('id')->simplePaginate(10); break; case 'banned': - $instances = Instance::whereBanned(true)->orderByDesc('id')->paginate(5); + $instances = Instance::select('id', 'domain', 'unlisted', 'auto_cw', 'banned')->whereBanned(true)->orderByDesc('id')->simplePaginate(10); break; + case 'new': + $instances = Instance::select('id', 'domain', 'unlisted', 'auto_cw', 'banned')->latest()->simplePaginate(10); + break; + // case 'popular': + // $popular = Profile::selectRaw('*, count(domain) as count') + // ->whereNotNull('domain') + // ->groupBy('domain') + // ->orderByDesc('count') + // ->take(10) + // ->get() + // ->pluck('domain') + // ->toArray(); + // $instances = Instance::whereIn('domain', $popular)->simplePaginate(10); + // break; + + default: + $instances = Instance::select('id', 'domain', 'unlisted', 'auto_cw', 'banned')->orderByDesc('id')->simplePaginate(10); + break; } } else { - $instances = Instance::orderByDesc('id')->paginate(5); + $instances = Instance::select('id', 'domain', 'unlisted', 'auto_cw', 'banned')->orderByDesc('id')->simplePaginate(10); } + return view('admin.instances.home', compact('instances')); } @@ -99,4 +128,4 @@ trait AdminInstanceController return response()->json([]); } -} \ No newline at end of file +} diff --git a/resources/views/admin/instances/home.blade.php b/resources/views/admin/instances/home.blade.php index 8e73e3398..5bd16119d 100644 --- a/resources/views/admin/instances/home.blade.php +++ b/resources/views/admin/instances/home.blade.php @@ -1,96 +1,87 @@ @extends('admin.partial.template-full') @section('section') -
-

Instances

- - - +
+

Instances

+
+ All + {{-- Popular --}} + New + CW + Banned + Unlisted +
+
+
+
+ +

-@if($instances->count() == 0 && request()->has('filter') == false) -
-

Warning

-

No instances were found.

-
-

Do you want to scan and populate instances from Profiles and Statuses?

-

-

- @csrf - -
-

-@else - -
- {{$instances->links()}} +

Do you want to scan and populate instances from Profiles and Statuses?

+

+

+ @csrf + +
+

+ @else +
    + @foreach($instances as $instance) +
  • +
    +
    +

    + {{$instance->domain}} +

    +

    + @if($instance->unlisted) + + @endif + @if($instance->auto_cw) + + @endif + @if($instance->banned) + + @endif + Overview + +

    +
    +
    +
  • + @endforeach +
+
+ {{$instances->links()}} +
+ @endif + + @if(request()->filled('q') && $instances->count() == 0) +

No results found

+

Go back

+ @endif + @if(request()->filled('filter') && $instances->count() == 0) +

No results found

+

Go back

+ @endif +
-@endif @endsection @push('scripts') @@ -109,7 +100,7 @@ let banned = this.getAttribute('data-instance-banned'); swal({ title: 'Instance Actions', - text: text, + text: text, icon: 'warning', buttons: { unlist: { @@ -224,4 +215,4 @@ }) }); -@endpush \ No newline at end of file +@endpush