@php $namaSiswa = $siswa->user->nama ?? '-'; $tinggiBadan = (float) $tesTerakhir->tinggi_badan; $beratBadan = (float) $tesTerakhir->berat_badan; $tinggiMeter = $tinggiBadan / 100; $bmi = $tinggiMeter > 0 ? round($beratBadan / ($tinggiMeter * $tinggiMeter), 1) : 0; if ($bmi < 18.5) $bmiKategori = 'Kurang'; elseif ($bmi < 25) $bmiKategori = 'Normal'; elseif ($bmi < 30) $bmiKategori = 'Lebih'; else $bmiKategori = 'Obesitas'; $rataRataAkademik = round(( (float) $tesTerakhir->nilai_matematika + (float) $tesTerakhir->nilai_bahasa_indonesia + (float) $tesTerakhir->nilai_bahasa_inggris + (float) $tesTerakhir->nilai_ipa ) / 4, 2); $rekomendasi = $hasilList->first(); $maxNilai = $hasilList->max('nilai_preferensi') ?? 0; @endphp
{{-- ── HEADER ── --}}
@php $logoPath = public_path('Assets/Logo_SMKN2Jember.png'); $logoBase64 = 'data:image/png;base64,' . base64_encode(file_get_contents($logoPath)); @endphp
SMK Negeri 2 Jember
Sistem Pendukung Keputusan Pemilihan Jurusan

Hasil Tes Rekomendasi Jurusan

Metode Simple Additive Weighting (SAW)

{{ now()->format('d F Y') }}

{{-- ── DATA SISWA ── --}}
Data Siswa
Nama Siswa
{{ $namaSiswa }}
Tanggal Tes
{{ optional($tesTerakhir->created_at)->format('d M Y') ?? '-' }}
Skor Minat Bakat
{{ $tesTerakhir->skor_minat_bakat }}%
{{-- ── NILAI AKADEMIK ── --}}
Nilai Akademik
Matematika
{{ $tesTerakhir->nilai_matematika }}
Bhs. Indonesia
{{ $tesTerakhir->nilai_bahasa_indonesia }}
Bhs. Inggris
{{ $tesTerakhir->nilai_bahasa_inggris }}
IPA
{{ $tesTerakhir->nilai_ipa }}
Rata-rata Akademik
{{ number_format($rataRataAkademik, 2) }}
Rata-rata dari 4 mata pelajaran
Jumlah Mapel Dinilai
4 Mata Pelajaran
Matematika, B. Indonesia, B. Inggris, IPA
{{-- ── DATA FISIK ── --}}
Data Fisik & Kesehatan
Tinggi Badan
{{ $tesTerakhir->tinggi_badan }} cm
Berat Badan
{{ $tesTerakhir->berat_badan }} kg
BMI
{{ $bmi }}
{{ $bmiKategori }}
Buta Warna
{{ $tesTerakhir->buta_warna ? 'Ya' : 'Tidak' }}
Penyakit
{{ $tesTerakhir->penyakit?->nama_penyakit ?? 'Tidak ada' }}
{{-- ── REKOMENDASI ── --}}
Rekomendasi Jurusan
@if($rekomendasi) @php $skorRek = max(0, min(100, ($rekomendasi->nilai_preferensi ?? 0) * 100)); @endphp
Jurusan Terbaik Untukmu
{{ $rekomendasi->jurusan->nama_jurusan ?? '-' }}
Nilai Preferensi SAW Tertinggi
Skor: {{ number_format($skorRek, 2) }}%
@else
Data Belum Tersedia
Hasil SAW belum tersimpan
@endif {{-- ── RANKING TABLE ── --}}
Ranking Semua Jurusan (SAW)
@forelse($hasilList as $i => $hasil) @php $isFirst = $i === 0; $rowClass = $isFirst ? 'row-best' : ($i % 2 === 0 ? '' : 'row-even'); $numClass = $isFirst ? 'rank-1' : ($i === 1 ? 'rank-2' : ($i === 2 ? 'rank-3' : 'rank-n')); $nilai = $hasil->nilai_preferensi ?? 0; $barPct = $maxNilai > 0 ? max(0, min(100, round(($nilai / $maxNilai) * 100))) : 0; $skorPct = max(0, min(100, $nilai * 100)); @endphp @empty @endforelse
Rank Nama Jurusan Visualisasi Skor Nilai Preferensi Skor (%)
{{ $hasil->peringkat ?? ($i + 1) }} {{ $hasil->jurusan->nama_jurusan ?? '-' }}
{{ number_format($skorPct, 2) }}%
{{ number_format($nilai, 6) }} {{ number_format($skorPct, 2) }}%
Data hasil SAW belum tersedia.
{{-- ── FOOTER ── --}}