Add student achievements module and improve student admin workflows
This commit is contained in:
@@ -59,54 +59,83 @@
|
||||
</form>
|
||||
</x-master-card>
|
||||
|
||||
<x-data-table :headers="['Nama Kelas', 'Tingkat', 'Tahun Angkatan', 'Program Keahlian', 'Dipakai', 'Histori', 'Status', 'Aksi']">
|
||||
@forelse ($classes as $class)
|
||||
<tr>
|
||||
<td class="px-6 py-4">
|
||||
<div class="font-semibold text-slate-800">{{ $class->name }}</div>
|
||||
<div class="text-xs text-slate-400">Wali Kelas: {{ $class->homeroom_teacher ?: '-' }}</div>
|
||||
</td>
|
||||
<td class="px-6 py-4 text-sm text-slate-600">{{ $class->level }}</td>
|
||||
<td class="px-6 py-4 text-sm text-slate-600">{{ $class->academicYear?->name }}</td>
|
||||
<td class="px-6 py-4 text-sm text-slate-600">{{ $class->department?->name }}</td>
|
||||
<td class="px-6 py-4">
|
||||
<span class="rounded-full bg-indigo-100 px-3 py-1 text-xs font-semibold text-indigo-700">Siswa: {{ $class->students_count }}</span>
|
||||
</td>
|
||||
<td class="px-6 py-4">
|
||||
<span class="rounded-full bg-sky-100 px-3 py-1 text-xs font-semibold text-sky-700">Histori: {{ $class->academic_histories_count }}</span>
|
||||
</td>
|
||||
<td class="px-6 py-4">
|
||||
@if ($class->is_active)
|
||||
<span class="rounded-full bg-emerald-100 px-3 py-1 text-xs font-semibold text-emerald-700">Aktif</span>
|
||||
@else
|
||||
<span class="rounded-full bg-slate-100 px-3 py-1 text-xs font-semibold text-slate-600">Nonaktif</span>
|
||||
@endif
|
||||
</td>
|
||||
<td class="px-6 py-4">
|
||||
<div class="flex flex-wrap items-center gap-2">
|
||||
<a href="{{ route('classes.edit', $class) }}" class="rounded-xl border border-slate-200 px-3 py-2 text-xs font-semibold text-slate-700 transition hover:bg-slate-50">Edit</a>
|
||||
@if ($class->students_count === 0 && $class->academic_histories_count === 0)
|
||||
<form action="{{ route('classes.destroy', $class) }}" method="POST" class="delete-form" data-entity="kelas {{ $class->name }}">
|
||||
@csrf
|
||||
@method('DELETE')
|
||||
<button type="submit" class="rounded-xl border border-rose-200 px-3 py-2 text-xs font-semibold text-rose-600 transition hover:bg-rose-50">Hapus</button>
|
||||
</form>
|
||||
@else
|
||||
<button type="button" disabled class="cursor-not-allowed rounded-xl border border-slate-200 bg-slate-100 px-3 py-2 text-xs font-semibold text-slate-400" title="Tidak bisa dihapus karena masih dipakai data siswa atau histori akademik">
|
||||
Dipakai
|
||||
</button>
|
||||
@endif
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
@empty
|
||||
<tr>
|
||||
<td colspan="8" class="px-6 py-10 text-center text-sm text-slate-500">Belum ada data kelas.</td>
|
||||
</tr>
|
||||
@endforelse
|
||||
</x-data-table>
|
||||
<form method="POST" action="{{ route('classes.bulk-destroy') }}" class="space-y-4" id="bulk-delete-classes-form">
|
||||
@csrf
|
||||
@method('DELETE')
|
||||
|
||||
<div>
|
||||
{{ $classes->links() }}
|
||||
</div>
|
||||
<div class="flex flex-col gap-3 rounded-2xl border border-slate-200 bg-white px-5 py-4 shadow-sm lg:flex-row lg:items-center lg:justify-between">
|
||||
<div class="text-sm text-slate-600">
|
||||
<div><span class="font-semibold text-slate-800">Total data:</span> {{ $classes->total() }} kelas</div>
|
||||
<div class="text-xs text-slate-400">Halaman {{ $classes->currentPage() }} dari {{ $classes->lastPage() }}</div>
|
||||
</div>
|
||||
<div class="flex flex-wrap items-center gap-3">
|
||||
<label class="inline-flex items-center gap-2 text-sm text-slate-600">
|
||||
<input type="checkbox" id="select-all-classes" class="rounded border-slate-300 text-indigo-600 focus:ring-indigo-500">
|
||||
<span>Pilih semua di halaman ini</span>
|
||||
</label>
|
||||
<button type="submit" class="inline-flex items-center rounded-2xl border border-rose-200 bg-rose-50 px-5 py-3 text-sm font-semibold text-rose-700 transition hover:bg-rose-100 opacity-50 cursor-not-allowed" id="bulk-delete-classes-button" disabled>
|
||||
Hapus Masal Kelas
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<x-data-table :headers="['Pilih', 'Nama Kelas', 'Tingkat', 'Tahun Angkatan', 'Program Keahlian', 'Dipakai', 'Histori', 'Status', 'Aksi']">
|
||||
@forelse ($classes as $class)
|
||||
<tr>
|
||||
<td class="px-6 py-4 align-top">
|
||||
<input type="checkbox" name="class_ids[]" value="{{ $class->id }}" class="class-row-checkbox rounded border-slate-300 text-indigo-600 focus:ring-indigo-500" {{ ($class->students_count > 0 || $class->academic_histories_count > 0) ? 'disabled' : '' }}>
|
||||
</td>
|
||||
<td class="px-6 py-4">
|
||||
<div class="font-semibold text-slate-800">{{ $class->name }}</div>
|
||||
<div class="text-xs text-slate-400">Wali Kelas: {{ $class->homeroom_teacher ?: '-' }}</div>
|
||||
</td>
|
||||
<td class="px-6 py-4 text-sm text-slate-600">{{ $class->level }}</td>
|
||||
<td class="px-6 py-4 text-sm text-slate-600">{{ $class->academicYear?->name }}</td>
|
||||
<td class="px-6 py-4 text-sm text-slate-600">{{ $class->department?->name }}</td>
|
||||
<td class="px-6 py-4">
|
||||
<span class="rounded-full bg-indigo-100 px-3 py-1 text-xs font-semibold text-indigo-700">Siswa: {{ $class->students_count }}</span>
|
||||
</td>
|
||||
<td class="px-6 py-4">
|
||||
<span class="rounded-full bg-sky-100 px-3 py-1 text-xs font-semibold text-sky-700">Histori: {{ $class->academic_histories_count }}</span>
|
||||
</td>
|
||||
<td class="px-6 py-4">
|
||||
@if ($class->is_active)
|
||||
<span class="rounded-full bg-emerald-100 px-3 py-1 text-xs font-semibold text-emerald-700">Aktif</span>
|
||||
@else
|
||||
<span class="rounded-full bg-slate-100 px-3 py-1 text-xs font-semibold text-slate-600">Nonaktif</span>
|
||||
@endif
|
||||
</td>
|
||||
<td class="px-6 py-4">
|
||||
<div class="flex flex-wrap items-center gap-2">
|
||||
<a href="{{ route('classes.edit', $class) }}" class="rounded-xl border border-slate-200 px-3 py-2 text-xs font-semibold text-slate-700 transition hover:bg-slate-50">Edit</a>
|
||||
@if ($class->students_count === 0 && $class->academic_histories_count === 0)
|
||||
<form action="{{ route('classes.destroy', $class) }}" method="POST" class="delete-form" data-entity="kelas {{ $class->name }}">
|
||||
@csrf
|
||||
@method('DELETE')
|
||||
<button type="submit" class="rounded-xl border border-rose-200 px-3 py-2 text-xs font-semibold text-rose-600 transition hover:bg-rose-50">Hapus</button>
|
||||
</form>
|
||||
@else
|
||||
<button type="button" disabled class="cursor-not-allowed rounded-xl border border-slate-200 bg-slate-100 px-3 py-2 text-xs font-semibold text-slate-400" title="Tidak bisa dihapus karena masih dipakai data siswa atau histori akademik">
|
||||
Dipakai
|
||||
</button>
|
||||
@endif
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
@empty
|
||||
<tr>
|
||||
<td colspan="9" class="px-6 py-10 text-center text-sm text-slate-500">Belum ada data kelas.</td>
|
||||
</tr>
|
||||
@endforelse
|
||||
</x-data-table>
|
||||
|
||||
<div class="flex flex-col gap-3 rounded-2xl border border-slate-200 bg-white px-5 py-4 shadow-sm lg:flex-row lg:items-center lg:justify-between">
|
||||
<div class="text-sm text-slate-600">
|
||||
Menampilkan <span class="font-semibold text-slate-800">{{ $classes->firstItem() ?? 0 }}</span> sampai <span class="font-semibold text-slate-800">{{ $classes->lastItem() ?? 0 }}</span> dari <span class="font-semibold text-slate-800">{{ $classes->total() }}</span> kelas.
|
||||
</div>
|
||||
<div>
|
||||
{{ $classes->links() }}
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</x-master-page>
|
||||
|
||||
Reference in New Issue
Block a user