168 lines
6.3 KiB
PHP
168 lines
6.3 KiB
PHP
@extends('layout.app')
|
|
|
|
@section('title', 'Normalisasi Matriks')
|
|
|
|
@include('admin.shared.admin-styles')
|
|
|
|
@section('content')
|
|
<div class="admin-container container-fluid">
|
|
<!-- Page Header -->
|
|
<div class="page-header animate-fade-in">
|
|
<div class="row align-items-center">
|
|
<div class="col-12">
|
|
<h3 class="mb-2 text-white">
|
|
<i class="fas fa-calculator me-2"></i>Normalisasi Matriks
|
|
</h3>
|
|
<nav aria-label="breadcrumb">
|
|
<ol class="breadcrumb mb-0">
|
|
<li class="breadcrumb-item"><a href="{{ route('admindash') }}" class="text-white-50">Dashboard</a></li>
|
|
<li class="breadcrumb-item"><a href="{{ route('perbandingan') }}" class="text-white-50">Perbandingan Kriteria</a></li>
|
|
<li class="breadcrumb-item active text-white" aria-current="page">Normalisasi Kriteria</li>
|
|
</ol>
|
|
</nav>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="row">
|
|
<div class="card shadow-lg border-start border-4 border-primary mb-4">
|
|
<div class="card-body">
|
|
<h5 class="card-title text-primary fw-bold mb-0">
|
|
<i class="fas fa-clock me-2"></i>Waktu Makan: {{ $waktu_makan->nama }}
|
|
</h5>
|
|
</div>
|
|
</div>
|
|
<!-- Matriks Normalisasi -->
|
|
<div class="col-12">
|
|
<div class="admin-card animate-fade-in">
|
|
<div class="card-body">
|
|
<h5 class="card-title mb-4">
|
|
<i class="fas fa-table me-2"></i>Normalisasi Matriks
|
|
</h5>
|
|
<div class="table-responsive">
|
|
<table class="admin-table">
|
|
<thead>
|
|
<tr>
|
|
<th>Kriteria</th>
|
|
@foreach ($kriterias as $k)
|
|
<th>{{ $k->nama }}</th>
|
|
@endforeach
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
@foreach ($kriterias as $baris)
|
|
<tr>
|
|
<th>{{ $baris->nama }}</th>
|
|
@foreach ($kriterias as $kolom)
|
|
<td>
|
|
{{ isset($normalisasi[$baris->id][$kolom->id]) ? number_format($normalisasi[$baris->id][$kolom->id], 4) : '-' }}
|
|
</td>
|
|
@endforeach
|
|
</tr>
|
|
@endforeach
|
|
|
|
</tbody>
|
|
</table>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<!-- Bobot Kriteria -->
|
|
<div class="col-12 mt-4">
|
|
<div class="admin-card animate-fade-in">
|
|
<div class="card-body">
|
|
<h5 class="card-title mb-4">
|
|
<i class="fas fa-weight me-2"></i>Bobot Kriteria
|
|
</h5>
|
|
<div class="table-responsive">
|
|
<table class="admin-table">
|
|
<thead>
|
|
<tr>
|
|
<th>Kriteria</th>
|
|
<th>Bobot</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
@foreach ($kriterias as $kriteria)
|
|
<tr>
|
|
<td>{{ $kriteria->nama }}</td>
|
|
<td>{{ number_format($bobot[$kriteria->id], 4) }}</td>
|
|
</tr>
|
|
@endforeach
|
|
</tbody>
|
|
</table>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<!-- Consistency Ratio -->
|
|
<div class="col-12 mt-4">
|
|
<div class="admin-card animate-fade-in">
|
|
<div class="card-body">
|
|
<h5 class="card-title mb-4">
|
|
<i class="fas fa-check-circle me-2"></i>Rasio Konsistensi
|
|
</h5>
|
|
<div class="table-responsive">
|
|
<table class="admin-table">
|
|
<tbody>
|
|
<tr>
|
|
<th>Consistency Index (CI)</th>
|
|
<td>{{ number_format($ci, 2) }}</td>
|
|
</tr>
|
|
<tr>
|
|
<th>Consistency Ratio (CR)</th>
|
|
<td>{{ number_format($cr, 2) }}</td>
|
|
</tr>
|
|
<tr>
|
|
<th>Status</th>
|
|
<td>
|
|
@if($is_consistent)
|
|
<span class="badge bg-success">Konsisten (CR < 0.1)</span>
|
|
@else
|
|
<span class="badge bg-danger">Tidak Konsisten (CR > 0.1)</span>
|
|
@endif
|
|
</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<!-- Tombol Lanjut -->
|
|
<div class="col-12 mt-4">
|
|
<div class="text-end">
|
|
<a href="{{ route('alternatif.pilih') }}" class="admin-btn btn-primary">
|
|
<i class="fas fa-arrow-right me-2"></i>Lanjut ke Pemilihan Alternatif
|
|
</a>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
@endsection
|
|
|
|
@push('scripts')
|
|
<script>
|
|
document.addEventListener('DOMContentLoaded', function() {
|
|
const animateElements = document.querySelectorAll('.animate-fade-in');
|
|
const observer = new IntersectionObserver((entries) => {
|
|
entries.forEach(entry => {
|
|
if (entry.isIntersecting) {
|
|
entry.target.style.opacity = 1;
|
|
entry.target.style.transform = 'translateY(0)';
|
|
}
|
|
});
|
|
});
|
|
|
|
animateElements.forEach(element => {
|
|
element.style.opacity = 0;
|
|
element.style.transform = 'translateY(20px)';
|
|
observer.observe(element);
|
|
});
|
|
});
|
|
</script>
|
|
@endpush
|