refactor: remove unused class session actions and implement empty state for today's sessions view
This commit is contained in:
parent
c15f429032
commit
d09ef22945
@ -2,17 +2,11 @@
|
|||||||
|
|
||||||
namespace App\Filament\Resources\Learning\ClassSessions\Pages;
|
namespace App\Filament\Resources\Learning\ClassSessions\Pages;
|
||||||
|
|
||||||
use App\Filament\Resources\Learning\ClassSessions\Actions\ViewAssignmentDetailAction;
|
|
||||||
use App\Filament\Resources\Learning\ClassSessions\Actions\ViewAssignmentsAction;
|
|
||||||
use App\Filament\Resources\Learning\ClassSessions\Actions\ViewAttendanceAction;
|
|
||||||
use App\Filament\Resources\Learning\ClassSessions\Actions\ViewMaterialDetailAction;
|
|
||||||
use App\Filament\Resources\Learning\ClassSessions\Actions\ViewMaterialsAction;
|
|
||||||
use App\Filament\Resources\Learning\ClassSessions\ClassSessionResource;
|
use App\Filament\Resources\Learning\ClassSessions\ClassSessionResource;
|
||||||
use App\Models\ClassSession;
|
use App\Models\ClassSession;
|
||||||
use App\Models\Course;
|
use App\Models\Course;
|
||||||
use App\Models\Student;
|
use App\Models\Student;
|
||||||
use App\Settings\GeneralSettings;
|
use App\Settings\GeneralSettings;
|
||||||
use Filament\Actions\Action;
|
|
||||||
use Filament\Actions\Concerns\InteractsWithActions;
|
use Filament\Actions\Concerns\InteractsWithActions;
|
||||||
use Filament\Actions\Contracts\HasActions;
|
use Filament\Actions\Contracts\HasActions;
|
||||||
use Filament\Forms\Components\TextInput;
|
use Filament\Forms\Components\TextInput;
|
||||||
@ -135,40 +129,4 @@ public function courses(): Collection
|
|||||||
];
|
];
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
protected function getActions(): array
|
|
||||||
{
|
|
||||||
return [
|
|
||||||
$this->viewAttendanceAction(),
|
|
||||||
$this->viewMaterialsAction(),
|
|
||||||
$this->viewAssignmentsAction(),
|
|
||||||
$this->viewMaterialDetailAction(),
|
|
||||||
$this->viewAssignmentDetailAction(),
|
|
||||||
];
|
|
||||||
}
|
|
||||||
|
|
||||||
public function viewAttendanceAction(): Action
|
|
||||||
{
|
|
||||||
return ViewAttendanceAction::make();
|
|
||||||
}
|
|
||||||
|
|
||||||
public function viewMaterialsAction(): Action
|
|
||||||
{
|
|
||||||
return ViewMaterialsAction::make();
|
|
||||||
}
|
|
||||||
|
|
||||||
public function viewAssignmentsAction(): Action
|
|
||||||
{
|
|
||||||
return ViewAssignmentsAction::make();
|
|
||||||
}
|
|
||||||
|
|
||||||
public function viewMaterialDetailAction(): Action
|
|
||||||
{
|
|
||||||
return ViewMaterialDetailAction::make();
|
|
||||||
}
|
|
||||||
|
|
||||||
public function viewAssignmentDetailAction(): Action
|
|
||||||
{
|
|
||||||
return ViewAssignmentDetailAction::make();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -9,15 +9,15 @@
|
|||||||
</x-filament::section>
|
</x-filament::section>
|
||||||
|
|
||||||
<!-- Today's Sessions Section -->
|
<!-- Today's Sessions Section -->
|
||||||
@if ($this->todaySessions->isNotEmpty())
|
<x-filament::section icon="heroicon-o-bolt" icon-color="primary">
|
||||||
<x-filament::section icon="heroicon-o-bolt" icon-color="primary">
|
<x-slot name="heading">
|
||||||
<x-slot name="heading">
|
Sesi Hari Ini
|
||||||
Sesi Hari Ini
|
</x-slot>
|
||||||
</x-slot>
|
<x-slot name="description">
|
||||||
<x-slot name="description">
|
Sesi yang dijadwalkan pada {{ $this->today_date }}
|
||||||
Sesi yang dijadwalkan pada {{ $this->today_date }}
|
</x-slot>
|
||||||
</x-slot>
|
|
||||||
|
|
||||||
|
@if ($this->todaySessions->isNotEmpty())
|
||||||
<div class="space-y-4">
|
<div class="space-y-4">
|
||||||
@foreach ($this->todaySessions as $session)
|
@foreach ($this->todaySessions as $session)
|
||||||
<a href="{{ $session->url }}" class="{{ $session->card_classes }}">
|
<a href="{{ $session->url }}" class="{{ $session->card_classes }}">
|
||||||
@ -43,19 +43,21 @@
|
|||||||
</div>
|
</div>
|
||||||
<div class="flex gap-4">
|
<div class="flex gap-4">
|
||||||
<div class="flex items-center gap-1.5 px-2 py-0.5 rounded-lg hover:bg-amber-50 dark:hover:bg-amber-900/10 cursor-pointer transition-colors"
|
<div class="flex items-center gap-1.5 px-2 py-0.5 rounded-lg hover:bg-amber-50 dark:hover:bg-amber-900/10 cursor-pointer transition-colors"
|
||||||
wire:click="mountAction('viewMaterials', { session: {{ $session->id }} })"
|
wire:click="mountAction('viewMaterials', { session: {{ $session->id }} })"
|
||||||
onclick="event.stopPropagation()">
|
onclick="event.stopPropagation()">
|
||||||
<x-heroicon-o-document-text class="w-4 h-4 text-amber-500" />
|
<x-heroicon-o-document-text class="w-4 h-4 text-amber-500" />
|
||||||
<span class="text-xs font-bold text-gray-600 dark:text-gray-400">
|
<span class="text-xs font-bold text-gray-600 dark:text-gray-400">
|
||||||
{{ $session->materials_count }}<span class="ml-1 font-medium text-gray-400">Materi</span>
|
{{ $session->materials_count }}<span
|
||||||
|
class="ml-1 font-medium text-gray-400">Materi</span>
|
||||||
</span>
|
</span>
|
||||||
</div>
|
</div>
|
||||||
<div class="flex items-center gap-1.5 px-2 py-0.5 rounded-lg hover:bg-primary-50 dark:hover:bg-primary-900/10 cursor-pointer transition-colors"
|
<div class="flex items-center gap-1.5 px-2 py-0.5 rounded-lg hover:bg-primary-50 dark:hover:bg-primary-900/10 cursor-pointer transition-colors"
|
||||||
wire:click="mountAction('viewAssignments', { session: {{ $session->id }} })"
|
wire:click="mountAction('viewAssignments', { session: {{ $session->id }} })"
|
||||||
onclick="event.stopPropagation()">
|
onclick="event.stopPropagation()">
|
||||||
<x-heroicon-o-pencil-square class="w-4 h-4 text-primary-500" />
|
<x-heroicon-o-pencil-square class="w-4 h-4 text-primary-500" />
|
||||||
<span class="text-xs font-bold text-gray-600 dark:text-gray-400">
|
<span class="text-xs font-bold text-gray-600 dark:text-gray-400">
|
||||||
{{ $session->assignments_count }}<span class="ml-1 font-medium text-gray-400">Tugas</span>
|
{{ $session->assignments_count }}<span
|
||||||
|
class="ml-1 font-medium text-gray-400">Tugas</span>
|
||||||
</span>
|
</span>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@ -71,25 +73,31 @@ class="mt-2 flex items-center gap-1.5 text-[10px] text-gray-400 dark:text-gray-5
|
|||||||
|
|
||||||
<div class="{{ $session->attendance_section_classes }}">
|
<div class="{{ $session->attendance_section_classes }}">
|
||||||
@if ($session->is_pending)
|
@if ($session->is_pending)
|
||||||
<div class="flex items-center gap-2 text-gray-400 dark:text-gray-500 p-2 opacity-50">
|
<div
|
||||||
|
class="flex items-center gap-2 text-gray-400 dark:text-gray-500 p-2 opacity-50">
|
||||||
<x-heroicon-m-clock class="w-5 h-5" />
|
<x-heroicon-m-clock class="w-5 h-5" />
|
||||||
</div>
|
</div>
|
||||||
@else
|
@else
|
||||||
<div class="flex flex-col items-center justify-center min-w-[80px] p-2 hover:bg-white/50 dark:hover:bg-white/5 rounded-lg transition-colors cursor-pointer"
|
<div class="flex flex-col items-center justify-center min-w-[80px] p-2 hover:bg-white/50 dark:hover:bg-white/5 rounded-lg transition-colors cursor-pointer"
|
||||||
onclick="event.preventDefault(); event.stopPropagation();"
|
onclick="event.preventDefault(); event.stopPropagation();"
|
||||||
wire:click="mountAction('viewAttendance', { session: {{ $session->id }} })">
|
wire:click="mountAction('viewAttendance', { session: {{ $session->id }} })">
|
||||||
<div class="flex flex-col items-center">
|
<div class="flex flex-col items-center">
|
||||||
<span class="text-lg font-bold text-primary-600 dark:text-primary-400 leading-none">
|
<span
|
||||||
{{ $session->attendances_count }}<span class="text-[10px] text-gray-400 font-normal ml-0.5">/{{ $session->total_students }}</span>
|
class="text-lg font-bold text-primary-600 dark:text-primary-400 leading-none">
|
||||||
</span>
|
{{ $session->attendances_count }}<span
|
||||||
<div class="mt-1.5 w-12 h-1 bg-gray-200 dark:bg-gray-700 rounded-full overflow-hidden">
|
class="text-[10px] text-gray-400 font-normal ml-0.5">/{{ $session->total_students }}</span>
|
||||||
<div class="h-full bg-primary-500 rounded-full transition-all duration-500" style="width: {{ $session->attendance_percentage }}%"></div>
|
</span>
|
||||||
|
<div
|
||||||
|
class="mt-1.5 w-12 h-1 bg-gray-200 dark:bg-gray-700 rounded-full overflow-hidden">
|
||||||
|
<div class="h-full bg-primary-500 rounded-full transition-all duration-500"
|
||||||
|
style="width: {{ $session->attendance_percentage }}%"></div>
|
||||||
|
</div>
|
||||||
|
<span
|
||||||
|
class="text-[9px] uppercase font-bold text-gray-500 mt-1 leading-none tracking-wider">
|
||||||
|
{{ $session->attendance_percentage }}% Hadir
|
||||||
|
</span>
|
||||||
</div>
|
</div>
|
||||||
<span class="text-[9px] uppercase font-bold text-gray-500 mt-1 leading-none tracking-wider">
|
|
||||||
{{ $session->attendance_percentage }}% Hadir
|
|
||||||
</span>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
|
||||||
@endif
|
@endif
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@ -97,8 +105,12 @@ class="mt-2 flex items-center gap-1.5 text-[10px] text-gray-400 dark:text-gray-5
|
|||||||
</a>
|
</a>
|
||||||
@endforeach
|
@endforeach
|
||||||
</div>
|
</div>
|
||||||
</x-filament::section>
|
@else
|
||||||
@endif
|
<x-filament::empty-state icon="heroicon-o-calendar-days" heading="Tidak ada data yang ditemukan"
|
||||||
|
description="Tidak ada jadwal hari ini." iconColor="gray">
|
||||||
|
</x-filament::empty-state>
|
||||||
|
@endif
|
||||||
|
</x-filament::section>
|
||||||
|
|
||||||
<!-- All Courses Section -->
|
<!-- All Courses Section -->
|
||||||
<x-filament::section icon="heroicon-o-academic-cap" icon-color="gray">
|
<x-filament::section icon="heroicon-o-academic-cap" icon-color="gray">
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user