diff --git a/app/Http/Controllers/PitStopController.php b/app/Http/Controllers/PitStopController.php index 9f84674..920d4ae 100644 --- a/app/Http/Controllers/PitStopController.php +++ b/app/Http/Controllers/PitStopController.php @@ -19,10 +19,10 @@ class PitStopController extends Controller return view('pitstop.index', $data); } - public function progress() + public function progress(Request $request) { - $q = trim((string) request()->query('q', '')); - $perPage = (int) request()->query('per_page', 20); + $q = trim((string) $request->query('q', '')); + $perPage = (int) $request->query('per_page', 20); if ($perPage < 1) $perPage = 20; if ($perPage > 100) $perPage = 100; @@ -63,9 +63,26 @@ class PitStopController extends Controller ->select(DB::raw('count(distinct (p.pegawai_id, m.id)) as c')) ->value('c'); + if ($request->boolean('ajax')) { + return response()->json([ + 'error' => 0, + 'data' => [ + 'totalUsers' => $totalUsers, + 'table_html' => view('pitstop.partials.progress_rows', [ + 'users' => $users, + 'totalSteps' => $totalSteps, + ])->render(), + 'pager_html' => view('pitstop.partials.progress_pager', [ + 'users' => $users, + ])->render(), + ], + ]); + } + return view('pitstop.progress', [ 'title' => 'Dashboard Progress', 'q' => $q, + 'perPage' => $perPage, 'totalSteps' => $totalSteps, 'totalUsers' => $totalUsers, 'totalSelesai' => $totalSelesai, diff --git a/resources/views/pitstop/partials/progress_pager.blade.php b/resources/views/pitstop/partials/progress_pager.blade.php new file mode 100644 index 0000000..2b2bd14 --- /dev/null +++ b/resources/views/pitstop/partials/progress_pager.blade.php @@ -0,0 +1,51 @@ +
+
+ Halaman {{ $users->currentPage() }} dari {{ $users->lastPage() }} ({{ $users->total() }} data) +
+ + @php + $current = $users->currentPage(); + $last = $users->lastPage(); + $start = max(1, $current - 2); + $end = min($last, $current + 2); + @endphp + +
+ @if ($users->onFirstPage()) + + @else + Sebelumnya + @endif + +
+ @if ($start > 1) + 1 + @if ($start > 2) + ... + @endif + @endif + + @for ($i = $start; $i <= $end; $i++) + @if ($i === $current) + + @else + {{ $i }} + @endif + @endfor + + @if ($end < $last) + @if ($end < $last - 1) + ... + @endif + {{ $last }} + @endif +
+ + @if ($users->hasMorePages()) + Berikutnya + @else + + @endif +
+
+ diff --git a/resources/views/pitstop/partials/progress_rows.blade.php b/resources/views/pitstop/partials/progress_rows.blade.php new file mode 100644 index 0000000..b0552a7 --- /dev/null +++ b/resources/views/pitstop/partials/progress_rows.blade.php @@ -0,0 +1,31 @@ +@forelse ($users as $row) + @php + $done = (int) $row->lulus_count; + $pct = $totalSteps > 0 ? round(($done / $totalSteps) * 100) : 0; + @endphp + + + + {{ $row->nama }} + + + +
+
+ {{ $done }} / {{ $totalSteps }} +
+
+ + +@empty + + Belum ada data + +@endforelse diff --git a/resources/views/pitstop/progress.blade.php b/resources/views/pitstop/progress.blade.php index 111fb7f..8ec038a 100644 --- a/resources/views/pitstop/progress.blade.php +++ b/resources/views/pitstop/progress.blade.php @@ -25,7 +25,7 @@
Total Karyawan
-
{{ $totalUsers }}
+
{{ $totalUsers }}
@@ -49,13 +49,18 @@

Progress per Karyawan

-
+
+
@@ -67,57 +72,16 @@ Nama Progress - Step Lulus - @forelse ($users as $row) - @php - $done = (int) $row->lulus_count; - $pct = $totalSteps > 0 ? round(($done / $totalSteps) * 100) : 0; - @endphp - - - - {{ $row->nama }} - - - -
-
-
-
-
{{ $pct }}%
-
- - {{ $done }} / {{ $totalSteps }} - - @empty - - Belum ada data - - @endforelse + @include('pitstop.partials.progress_rows', ['users' => $users, 'totalSteps' => $totalSteps]) -
-
- Halaman {{ $users->currentPage() }} dari {{ $users->lastPage() }} ({{ $users->total() }} data) -
-
- @if ($users->onFirstPage()) - - @else - Sebelumnya - @endif - - @if ($users->hasMorePages()) - Berikutnya - @else - - @endif -
+
+ @include('pitstop.partials.progress_pager', ['users' => $users])
@@ -157,6 +121,11 @@ @section('custom_js')