382 lines
16 KiB
PHP
382 lines
16 KiB
PHP
<!DOCTYPE html>
|
|
<html lang="en">
|
|
|
|
<head>
|
|
<meta charset="utf-8" />
|
|
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
|
|
<link rel="apple-touch-icon" sizes="76x76" href="../assets/img/apple-icon.png">
|
|
<link rel="icon" type="image/png" href="../img/favicon.png">
|
|
<title>
|
|
Sistem Pendukung Keputusan Penerima Bantuan
|
|
</title>
|
|
<!-- Fonts and icons -->
|
|
<link href="https://fonts.googleapis.com/css?family=Open+Sans:300,400,600,700" rel="stylesheet" />
|
|
<!-- Nucleo Icons -->
|
|
<link href="../css/nucleo-icons.css" rel="stylesheet" />
|
|
<link href="../css/nucleo-svg.css" rel="stylesheet" />
|
|
<!-- Font Awesome Icons -->
|
|
<script src="https://kit.fontawesome.com/42d5adcbca.js" crossorigin="anonymous"></script>
|
|
<link href="../css/nucleo-svg.css" rel="stylesheet" />
|
|
<!-- CSS Files -->
|
|
<link id="pagestyle" href="../css/argon-dashboard.css?v=2.0.4" rel="stylesheet" />
|
|
|
|
</head>
|
|
|
|
<body class="g-sidenav-show bg-gray-100">
|
|
<div class="min-height-300 bg-primary position-absolute w-100"></div>
|
|
<aside class="sidenav bg-white navbar navbar-vertical navbar-expand-xs border-0 border-radius-xl my-3 fixed-start ms-4 " id="sidenav-main">
|
|
<div class="sidenav-header">
|
|
<i class="fas fa-times p-3 cursor-pointer text-secondary opacity-5 position-absolute end-0 top-0 d-none d-xl-none" aria-hidden="true" id="iconSidenav"></i>
|
|
<a class="navbar-brand m-0" href=" https://demos.creative-tim.com/argon-dashboard/pages/dashboard.html " target="_blank">
|
|
<img src="../img/logo-ct-dark.png" class="navbar-brand-img h-100" alt="main_logo">
|
|
<span class="ms-1 font-weight-bold">Dashboard</span>
|
|
</a>
|
|
</div>
|
|
<hr class="horizontal dark mt-0">
|
|
|
|
<ul class="navbar-nav">
|
|
<li class="nav-item">
|
|
<a class="nav-link active" href="/dashboard">
|
|
<div class="icon icon-shape icon-sm border-radius-md text-center me-2 d-flex align-items-center justify-content-center">
|
|
<i class="ni ni-tv-2 text-primary text-sm opacity-10"></i>
|
|
</div>
|
|
<span class="nav-link-text ms-1">Dashboard</span>
|
|
</a>
|
|
</li>
|
|
<li class="nav-item">
|
|
<a class="nav-link " href="/daftarnama">
|
|
<div class="icon icon-shape icon-sm border-radius-md text-center me-2 d-flex align-items-center justify-content-center">
|
|
<i class="ni ni-calendar-grid-58 text-warning text-sm opacity-10"></i>
|
|
</div>
|
|
<span class="nav-link-text ms-1">Data Penduduk</span>
|
|
</a>
|
|
</li>
|
|
<li class="nav-item">
|
|
<a class="nav-link " href="/datakriteria">
|
|
<div class="icon icon-shape icon-sm border-radius-md text-center me-2 d-flex align-items-center justify-content-center">
|
|
<i class="ni ni-building text-primary text-sm opacity-10"></i>
|
|
</div>
|
|
<span class="nav-link-text ms-1">Data Kriteria</span>
|
|
</a>
|
|
</li>
|
|
<li class="nav-item">
|
|
<a class="nav-link " href="/datasubkriteria">
|
|
<div class="icon icon-shape icon-sm border-radius-md text-center me-2 d-flex align-items-center justify-content-center">
|
|
<i class="ni ni-credit-card text-success text-sm opacity-10"></i>
|
|
</div>
|
|
<span class="nav-link-text ms-1">Data Sub Kriteria</span>
|
|
</a>
|
|
</li>
|
|
|
|
<li class="nav-item">
|
|
<a class="nav-link " href="/dataalternatif">
|
|
<div class="icon icon-shape icon-sm border-radius-md text-center me-2 d-flex align-items-center justify-content-center">
|
|
<i class="ni ni-bullet-list-67 text-warning text-sm opacity-10"></i>
|
|
</div>
|
|
<span class="nav-link-text ms-1">Data Alterinatif</span>
|
|
</a>
|
|
</li>
|
|
<li class="nav-item">
|
|
<a class="nav-link" href="/rangking">
|
|
<div class="icon icon-shape icon-sm border-radius-md text-center me-2 d-flex align-items-center justify-content-center">
|
|
<i class="ni ni-sound-wave text-success text-sm opacity-10"></i>
|
|
</div>
|
|
<span class="nav-link-text ms-1">Perangkingan</span>
|
|
</a>
|
|
</li>
|
|
|
|
<script>
|
|
function toggleSubMenu(event) {
|
|
event.preventDefault();
|
|
var submenu = document.getElementById("perhitunganSubMenu");
|
|
submenu.classList.toggle("show");
|
|
}
|
|
</script>
|
|
|
|
|
|
</ul>
|
|
|
|
</aside>
|
|
<main class="main-content position-relative border-radius-lg ">
|
|
<!-- Navbar -->
|
|
<nav class="navbar navbar-main navbar-expand-lg px-0 mx-4 shadow-none border-radius-xl " id="navbarBlur" data-scroll="false">
|
|
<div class="container-fluid py-1 px-3">
|
|
<nav aria-label="breadcrumb">
|
|
<ol class="breadcrumb bg-transparent mb-0 pb-0 pt-1 px-0 me-sm-6 me-5">
|
|
</ol>
|
|
<h6 class="font-weight-bolder text-white mb-0">Dashboard</h6>
|
|
</nav>
|
|
<div class="collapse navbar-collapse mt-sm-0 mt-2 me-md-0 me-sm-4" id="navbar">
|
|
<div class="ms-md-auto pe-md-3 d-flex align-items-center">
|
|
|
|
<ul class="navbar-nav justify-content-end">
|
|
<li class="nav-item d-flex align-items-center">
|
|
<div class="dropdown">
|
|
<a class="nav-link text-white font-weight-bold px-0 dropdown-toggle" href="#" role="button" id="userDropdown" data-bs-toggle="dropdown" aria-expanded="false">
|
|
<i class="fa fa-user me-sm-1"></i>
|
|
<span class="d-sm-inline d-none">{{ Auth::user()->username }}</span>
|
|
</a>
|
|
|
|
<ul class="dropdown-menu dropdown-menu-end" aria-labelledby="userDropdown">
|
|
|
|
<li>
|
|
<a class="dropdown-item" href="#" data-bs-toggle="modal" data-bs-target="#logoutModal">
|
|
<i class="fa fa-sign-out me-2"></i> Logout
|
|
</a>
|
|
</li>
|
|
</ul>
|
|
</div>
|
|
</li>
|
|
</ul>
|
|
</div>
|
|
</div>
|
|
|
|
<!-- Modal -->
|
|
<div class="modal fade" id="logoutModal" tabindex="-1" aria-labelledby="logoutModalLabel" aria-hidden="true">
|
|
<div class="modal-dialog">
|
|
<div class="modal-content">
|
|
<div class="modal-header">
|
|
<h5 class="modal-title" id="logoutModalLabel">Konfirmasi Logout</h5>
|
|
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
|
|
</div>
|
|
<div class="modal-body">
|
|
Apakah Anda yakin ingin logout?
|
|
</div>
|
|
<div class="modal-footer">
|
|
<button type="button" class="btn btn-secondary" data-bs-dismiss="modal">Batal</button>
|
|
<form id="logout-form" action='logout' method="POST" class="d-inline">
|
|
@csrf
|
|
<button type="submit" class="btn btn-primary">Logout</button>
|
|
</form>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
</div>
|
|
</div>
|
|
</nav>
|
|
@php
|
|
use App\Models\Rangking;
|
|
use Carbon\Carbon;
|
|
|
|
// Dapatkan tahun unik dari data rangking
|
|
$years = Rangking::selectRaw('YEAR(created_at) as year')
|
|
->distinct()
|
|
->orderBy('year', 'desc')
|
|
->get();
|
|
|
|
// Buat array untuk menyimpan jumlah rangking per tahun
|
|
$rankingsByYear = [];
|
|
|
|
foreach ($years as $year) {
|
|
$count = Rangking::whereYear('created_at', $year->year)
|
|
->where('keterangan', 'Layak')
|
|
->count();
|
|
$rankingsByYear[$year->year] = $count;
|
|
}
|
|
@endphp
|
|
|
|
<!-- End Navbar -->
|
|
<div class="container-fluid py-4">
|
|
<div class="row">
|
|
<!-- Kartu Data Kriteria -->
|
|
<div class="col-xl-3 col-sm-6 mb-xl-0 mb-4">
|
|
<div class="card">
|
|
<div class="card-body p-3">
|
|
<div class="row">
|
|
<div class="col-8">
|
|
<div class="numbers">
|
|
<p class="text-sm mb-0 text-uppercase font-weight-bold">Data Kriteria</p>
|
|
@php
|
|
use App\Models\datakriteria;
|
|
$cek = datakriteria::count();
|
|
@endphp
|
|
<h5 class="font-weight-bolder">
|
|
{{ $cek }}
|
|
</h5>
|
|
</div>
|
|
</div>
|
|
<div class="col-4 text-end">
|
|
<div class="icon icon-shape bg-gradient-primary shadow-primary text-center rounded-circle">
|
|
<i class="ni ni-building text-lg opacity-10" aria-hidden="true"></i>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<!-- Kartu Data Penduduk -->
|
|
<div class="col-xl-3 col-sm-6 mb-xl-0 mb-4">
|
|
<div class="card">
|
|
<div class="card-body p-3">
|
|
<div class="row">
|
|
<div class="col-8">
|
|
<div class="numbers">
|
|
<p class="text-sm mb-0 text-uppercase font-weight-bold">Data Penduduk</p>
|
|
@php
|
|
use App\Models\penduduk;
|
|
$cek = penduduk::count();
|
|
@endphp
|
|
<h5 class="font-weight-bolder">
|
|
{{ $cek }}
|
|
</h5>
|
|
</div>
|
|
</div>
|
|
<div class="col-4 text-end">
|
|
<div class="icon icon-shape bg-gradient-danger shadow-danger text-center rounded-circle">
|
|
<i class="ni ni-circle-08 text-lg opacity-10" aria-hidden="true"></i>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<!-- Card for displaying data with dropdown filter icon -->
|
|
<div class="col-xl-3 col-sm-6 mb-xl-0 mb-4">
|
|
<div class="card">
|
|
<div class="card-body p-3">
|
|
<div class="row">
|
|
<div class="col-8">
|
|
<div class="numbers">
|
|
<div class="d-flex align-items-center">
|
|
<p class="text-sm mb-0 text-uppercase font-weight-bold">
|
|
Data Penerima Tahun
|
|
<span id="selectedYear">{{ array_key_first($rankingsByYear) }}</span>
|
|
</p>
|
|
</div>
|
|
<h5 class="font-weight-bolder" id="yearCount">
|
|
{{ reset($rankingsByYear) }}
|
|
</h5>
|
|
</div>
|
|
</div>
|
|
<div class="col-4 text-end">
|
|
<div class="dropdown">
|
|
<button class="icon icon-shape bg-gradient-success shadow-success text-center rounded-circle btn text-light position-relative" type="button" id="dropdownMenuButtonChart" data-bs-toggle="dropdown" aria-expanded="false">
|
|
<i class="ni ni-chart-bar-32 text-lg opacity-10" aria-hidden="true"></i>
|
|
</button>
|
|
<ul class="dropdown-menu dropdown-menu-end" aria-labelledby="dropdownMenuButtonChart">
|
|
@foreach ($rankingsByYear as $year => $count)
|
|
<li><a class="dropdown-item year-option" href="#" data-year="{{ $year }}">{{ $year }}</a></li>
|
|
@endforeach
|
|
</ul>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<script>
|
|
document.querySelectorAll('.year-option').forEach(function(element) {
|
|
element.addEventListener('click', function(event) {
|
|
event.preventDefault();
|
|
const selectedYear = this.getAttribute('data-year');
|
|
const data = @json($rankingsByYear);
|
|
|
|
document.getElementById('selectedYear').textContent = selectedYear;
|
|
document.getElementById('yearCount').textContent = data[selectedYear];
|
|
});
|
|
});
|
|
</script>
|
|
|
|
|
|
|
|
|
|
<div class="row mt-4">
|
|
<div class="col-lg-7 mb-lg-0 mb-4">
|
|
<div class="card z-index-2 h-100">
|
|
<div class="card-header pb-0 pt-3 bg-transparent">
|
|
<h6 class="text-capitalize">Tabel Tingkat Kepentingan Kriteria</h6>
|
|
|
|
</div>
|
|
<div class="card-body p-3">
|
|
<div class="table-responsive">
|
|
<table class="table table-bordered table-hover table-striped">
|
|
<thead>
|
|
<tr>
|
|
<th>Nilai Bobot</th>
|
|
<th>Tingkat Kepentingan Kriteria</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
<tr>
|
|
<td>1</td>
|
|
<td>Sama penting</td>
|
|
</tr>
|
|
<tr>
|
|
<td>3</td>
|
|
<td>Sedikit lebih penting</td>
|
|
</tr>
|
|
<tr>
|
|
<td>5</td>
|
|
<td>Jelas lebih penting</td>
|
|
</tr>
|
|
<tr>
|
|
<td>7</td>
|
|
<td>Sangat jelas lebih penting</td>
|
|
</tr>
|
|
<tr>
|
|
<td>9</td>
|
|
<td>Mutlak lebih penting</td>
|
|
</tr>
|
|
<tr>
|
|
<td>2,4,6,8</td>
|
|
<td style="white-space: normal; overflow: hidden;
|
|
text-overflow: ellipsis; max-width: 10px;">Jika ragu-ragu antara dua nilai bobot yang berdekatan</td>
|
|
</tr>
|
|
<tr>
|
|
<td>Kebalikan</td>
|
|
<td style="white-space: normal; overflow: hidden;
|
|
text-overflow: ellipsis;max-width: 10px;">jika elemen i mendapat satu angka bila dibandingkan dengan elemen j, maka nilai j mempunyai nilai kebalikan dari elemen i </td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="col-lg-5">
|
|
<div class="card card-carousel overflow-hidden h-100 p-0">
|
|
<div class="card-body p-3">
|
|
<h6 class="card-title">Langkah-langkah Penggunaan</h6>
|
|
<ol>
|
|
<li>Tambahkan data penduduk.</li>
|
|
<li>Masukkan data kriteria.</li>
|
|
<li>Masukkan parameter di tabel kriteria untuk mengisi data subkriteria.</li>
|
|
<li>Data subkriteria akan otomatis tampil di halaman data subkriteria.</li>
|
|
<li>Lakukan normalisasi dan simpan prioritas pada data kriteria.</li>
|
|
<li>Lakukan normalisasi dan simpan prioritas pada data subkriteria.</li>
|
|
<li>Masukkan kode penduduk kemudian isi data yang ada di form.</li>
|
|
<li>Data rangking dapat dilihat setelah dilakukan perhitungan di tabel dibawahnya.</li>
|
|
</ol>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
|
|
<!-- Core JS Files -->
|
|
<script src="../js/core/popper.min.js"></script>
|
|
<script src="../js/core/bootstrap.min.js"></script>
|
|
<script src="../js/plugins/perfect-scrollbar.min.js"></script>
|
|
<script src="../js/plugins/smooth-scrollbar.min.js"></script>
|
|
<script src="../js/plugins/chartjs.min.js"></script>
|
|
|
|
<script>
|
|
var win = navigator.platform.indexOf('Win') > -1;
|
|
if (win && document.querySelector('#sidenav-scrollbar')) {
|
|
var options = {
|
|
damping: '0.5'
|
|
}
|
|
Scrollbar.init(document.querySelector('#sidenav-scrollbar'), options);
|
|
}
|
|
</script>
|
|
<!-- Github buttons -->
|
|
<script async defer src="https://buttons.github.io/buttons.js"></script>
|
|
<!-- Control Center for Soft Dashboard: parallax effects, scripts for the example pages etc -->
|
|
<script src="../assets/js/argon-dashboard.min.js?v=2.0.4"></script>
|
|
</body>
|
|
|
|
</html> |