MIF_E31221225/resources/views/siswa/dashboard.blade.php

199 lines
7.8 KiB
PHP

@extends('siswa.layouts.app')
@section('title', 'Dashboard Siswa')
@section('content')
<section class="section">
<div class="section-header">
<h1>Dashboard Siswa</h1>
</div>
<div class="section-body">
{{-- Kartu Mata Pelajaran --}}
<div class="row">
<div class="col-lg-4 col-md-6 col-sm-6 col-12">
<div class="card card-statistic-1">
<div class="card-icon bg-primary">
<i class="fas fa-book"></i>
</div>
<div class="card-wrap">
<div class="card-header">
<h4>Mata Pelajaran</h4>
</div>
<div class="card-body">
{{ $jumlahMapel ?? 0 }}
</div>
</div>
</div>
</div>
</div>
{{-- Ujian Hari Ini --}}
<div class="card mb-4">
<div class="card-header">
<h4>Ujian Hari Ini <small class="text-muted">({{ \Carbon\Carbon::now()->translatedFormat('d F Y') }})</small></h4>
</div>
<div class="card-body p-0 overflow-auto" style="max-height: 220px;">
@if ($ujianHariIni->isEmpty())
<div class="p-3 text-center text-muted">Tidak ada ujian untuk hari ini.</div>
@else
<div class="table-responsive">
<table class="table table-hover mb-0">
<thead class="thead-light">
<tr>
<th>Judul</th>
<th>Mata Pelajaran</th>
<th>Waktu Mulai</th>
<th>Waktu Selesai</th>
</tr>
</thead>
<tbody>
@foreach ($ujianHariIni as $ujian)
<tr>
<td>{{ $ujian->judul ?? '-' }}</td>
<td>{{ optional($ujian->mapel)->nama_mapel ?? '-' }}</td>
<td>{{ \Carbon\Carbon::parse($ujian->waktu_mulai ?? $ujian->tanggal_ujian)->translatedFormat('H:i') }}</td>
<td>{{ \Carbon\Carbon::parse($ujian->waktu_selesai ?? $ujian->tanggal_ujian)->translatedFormat('H:i') }}</td>
</tr>
@endforeach
</tbody>
</table>
</div>
@endif
</div>
</div>
{{-- Tugas Hari Ini --}}
<div class="card mb-4">
<div class="card-header">
<h4>Tugas Hari Ini <small class="text-muted">({{ \Carbon\Carbon::now()->translatedFormat('d F Y') }})</small></h4>
</div>
<div class="card-body p-0 overflow-auto" style="max-height: 220px;">
@if ($tugasHariIni->isEmpty())
<div class="p-3 text-center text-muted">Tidak ada tugas untuk hari ini.</div>
@else
<div class="table-responsive">
<table class="table table-hover mb-0">
<thead class="thead-light">
<tr>
<th>Judul</th>
<th>Materi</th>
<th>Deadline</th>
</tr>
</thead>
<tbody>
@foreach ($tugasHariIni as $tugas)
<tr>
<td>{{ $tugas->judul ?? '-' }}</td>
<td>{{ optional($tugas->materi)->judul ?? '-' }}</td>
<td>{{ \Carbon\Carbon::parse($tugas->deadline ?? $tugas->tanggal)->translatedFormat('H:i') }}</td>
</tr>
@endforeach
</tbody>
</table>
</div>
@endif
</div>
</div>
{{-- Mata Pelajaran Hari Ini --}}
<div class="card mb-4">
<div class="card-header">
<h4>Mata Pelajaran Hari Ini <small class="text-muted">({{ \Carbon\Carbon::now()->translatedFormat('d F Y') }})</small></h4>
</div>
<div class="card-body p-0 overflow-auto" style="max-height: 220px;">
@if ($jadwalHariIni->isEmpty())
<div class="p-3 text-center text-muted">Tidak ada mata pelajaran hari ini.</div>
@else
<div class="table-responsive">
<table class="table table-hover mb-0">
<thead class="thead-light">
<tr>
<th>Mata Pelajaran</th>
<th>Jam Mulai</th>
<th>Jam Selesai</th>
</tr>
</thead>
<tbody>
@foreach ($jadwalHariIni as $jadwal)
<tr>
<td>{{ optional($jadwal->mapel)->nama_mapel ?? '-' }}</td>
<td>{{ \Carbon\Carbon::parse($jadwal->jam_mulai)->format('H:i') }}</td>
<td>{{ \Carbon\Carbon::parse($jadwal->jam_selesai)->format('H:i') }}</td>
</tr>
@endforeach
</tbody>
</table>
</div>
@endif
</div>
</div>
{{-- Kalender Jadwal Pelajaran + Tugas + Ujian --}}
<div class="card">
<div class="card-header">
<h4>Kalender Jadwal, Tugas, dan Ujian</h4>
</div>
<div class="card-body">
<div id="calendar"></div>
</div>
</div>
</div>
</section>
@endsection
@push('styles')
<link href="https://cdn.jsdelivr.net/npm/fullcalendar@6.1.8/index.global.min.css" rel="stylesheet" />
<style>
#calendar {
max-width: 100%;
margin: 0 auto;
}
.fc .fc-toolbar-title {
font-size: 0.9rem;
}
.fc .fc-button {
font-size: 0.75rem !important;
padding: 0.3rem 0.6rem !important;
}
.fc .fc-button-primary {
background-color: #6f42c1;
border: none;
}
.card-body.overflow-auto {
overflow-y: auto;
}
table.table-hover tbody tr:hover {
background-color: #f3f4f7;
}
thead.thead-light th {
background-color: #f8f9fa;
font-weight: 600;
}
</style>
@endpush
@push('scripts')
<script src="https://cdn.jsdelivr.net/npm/fullcalendar@6.1.8/index.global.min.js"></script>
<script>
document.addEventListener('DOMContentLoaded', function () {
var calendarEl = document.getElementById('calendar');
var calendar = new FullCalendar.Calendar(calendarEl, {
initialView: 'timeGridWeek',
headerToolbar: {
left: 'prev,next today',
center: 'title',
right: 'timeGridWeek,timeGridDay,listWeek'
},
slotMinTime: "06:00:00",
slotMaxTime: "18:00:00",
allDaySlot: false,
events: @json($events),
eventColor: '#6f42c1',
});
calendar.render();
});
</script>
@endpush