660 lines
36 KiB
PHP
660 lines
36 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="../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" />
|
|
<!-- Timer Notifikasi-->
|
|
<script src="https://cdn.jsdelivr.net/npm/sweetalert2@11"></script>
|
|
|
|
|
|
</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=" /dashboard " 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 " 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 active" 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>
|
|
<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>
|
|
</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>
|
|
|
|
<!-- End Navbar -->
|
|
<div class="container-fluid py-4">
|
|
<div class="row">
|
|
<div class="col-12">
|
|
<div class="card mb-4">
|
|
<div class="card-header pb-0">
|
|
<div class="d-flex justify-content-between align-items-center">
|
|
<h6>Data Kriteria</h6>
|
|
<div class="d-flex justify-content-end mb-3">
|
|
<a href="cetak" class="btn btn-primary btn-sm" style="margin-right: 10px;">
|
|
<i class="fa fa-print"></i> Cetak
|
|
</a>
|
|
<a href="parameter" class="btn btn-primary btn-sm" style="margin-right: 10px;">
|
|
<i class="fa fa-list mr-1"></i> Tambah Parameter
|
|
</a>
|
|
<a href="tkriteria" class="btn btn-primary btn-sm">
|
|
<i class="fa fa-plus mr-1"></i> Tambah
|
|
</a>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="card-body px-4 pt-0 pb-2">
|
|
<div class="table-responsive p-0">
|
|
<table class="table table-bordered table-hover table-striped">
|
|
<thead>
|
|
<tr>
|
|
<th class="text-center text-uppercase text-secondary text-xxs font-weight-bolder opacity-7">No</th>
|
|
<th class="text-center text-uppercase text-secondary text-xxs font-weight-bolder opacity-7"> Kode Kriteria</th>
|
|
<th class="text-center text-uppercase text-secondary text-xxs font-weight-bolder opacity-7">Nama Kriteria</th>
|
|
<th class="text-center text-uppercase text-secondary text-xxs font-weight-bolder opacity-7">Aksi</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody id="tabelkriteria">
|
|
@forelse ($datakriterias as $datakriteria)
|
|
<tr>
|
|
<td class="text-center">{{ $loop->iteration }}</td>
|
|
<td class="text-center">{{ $datakriteria->kode_kriteria }}</td>
|
|
<td class="text-center">{{ $datakriteria->nama_kriteria }}</td>
|
|
<td class="text-center">
|
|
<a href="#" data-toggle="modal" data-target="#editModal{{ $datakriteria->id_kriteria }}">
|
|
<i class="fas fa-edit"></i>
|
|
</a>
|
|
<!-- The Modal edit-->
|
|
<div class="modal fade" id="editModal{{ $datakriteria ? $datakriteria->id_kriteria : 'empty' }}" tabindex="-1" aria-labelledby="editModalLabel{{ $datakriteria ? $datakriteria->id_kriteria : 'empty' }}" aria-hidden="true">
|
|
<div class="modal-dialog">
|
|
<div class="modal-content">
|
|
<!-- Modal Header -->
|
|
<div class="modal-header">
|
|
<h5 class="modal-title" id="editModalLabel{{ $datakriteria ? $datakriteria->id_kriteria : 'empty' }}">Edit Kriteria {{ $datakriteria ? $datakriteria->kode_kriteria : '' }}</h5>
|
|
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
|
|
<span aria-hidden="true">×</span>
|
|
</button>
|
|
</div>
|
|
|
|
<!-- Modal Body -->
|
|
<div class="modal-body">
|
|
<form method="POST" action="{{ $datakriteria ? route('datakriteria.update', ['id' => $datakriteria->id_kriteria]) : '#' }}" id="editForm{{ $datakriteria ? $datakriteria->id_kriteria : 'empty' }}">
|
|
@csrf
|
|
@method('PUT')
|
|
<div class="form-group row">
|
|
<label for="kodekriteria{{ $datakriteria ? $datakriteria->id_kriteria : 'empty' }}" class="col-sm-2 col-form-label">Kode Kriteria</label>
|
|
<div class="col-sm-10">
|
|
<input type="text" class="form-control" id="kodekriteria{{ $datakriteria ? $datakriteria->id_kriteria : 'empty' }}" name="kodekriteria" placeholder="Masukkan Kode Kriteria" value="{{ $datakriteria ? $datakriteria->kode_kriteria : '' }}">
|
|
</div>
|
|
</div>
|
|
<div class="form-group row">
|
|
<label for="namakriteria{{ $datakriteria ? $datakriteria->id_kriteria : 'empty' }}" class="col-sm-2 col-form-label">Nama Kriteria</label>
|
|
<div class="col-sm-10">
|
|
<input type="text" class="form-control" id="namakriteria{{ $datakriteria ? $datakriteria->id_kriteria : 'empty' }}" name="namakriteria" placeholder="Masukkan Nama Kriteria" value="{{ $datakriteria ? $datakriteria->nama_kriteria : '' }}">
|
|
</div>
|
|
</div>
|
|
</form>
|
|
</div>
|
|
|
|
<!-- Modal Footer -->
|
|
<div class="modal-footer">
|
|
<button type="button" class="btn btn-secondary" data-dismiss="modal">Batal</button>
|
|
<button type="submit" class="btn btn-primary" form="editForm{{ $datakriteria ? $datakriteria->id_kriteria : 'empty' }}">Simpan</button>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<a href="{{ route('datakriteria.hapus', ['id' => $datakriteria->id_kriteria]) }}"
|
|
onclick="confirmModal('{{ route('datakriteria.hapus', ['id' => $datakriteria->id_kriteria]) }}')">
|
|
<i class="fas fa-trash"></i>
|
|
</a>
|
|
</td>
|
|
</tr>
|
|
@empty
|
|
<tr>
|
|
<td colspan="4" class="text-center">Tidak ada data</td>
|
|
</tr>
|
|
@endforelse
|
|
</tbody>
|
|
</table>
|
|
<div class="d-flex justify-content-end mb-3">
|
|
|
|
<a href="#" class="btn btn-primary btn-sm kriteria-toggle">
|
|
<i class="fa fa-chevron-down mr-1 kriteria-icon"></i>
|
|
</a>
|
|
</div>
|
|
<div class="kriteria-table" style="display: none;">
|
|
<div class="col-12">
|
|
<div class="card mb-4">
|
|
<div class="card-header pb-0">
|
|
<form action="{{ route('pkriteria.storen') }}" method="POST">
|
|
@csrf
|
|
<div class="row">
|
|
<div class="col">
|
|
<select name="kriteria1" class="form-control" required>
|
|
<option value="">Pilih Kode Kriteria</option>
|
|
@foreach($datakriterias as $datakriteria)
|
|
<option
|
|
value="{{$datakriteria->kode_kriteria}}">{{$datakriteria->kode_kriteria}}</option>
|
|
@endforeach
|
|
</select>
|
|
</div>
|
|
<div class="col">
|
|
<select name="nilai_bobot" class="form-control" id="nilai_bobot">
|
|
<option value="1">Sama Pentingnya(1)</option>
|
|
<option value="2">Sama Hingga Sedikit Lebih Penting(2)</option>
|
|
<option value="3">Sedikit Lebih Penting(3)</option>
|
|
<option value="4">Sedikit Lebih Hingga Jelas Lebih Penting(4)</option>
|
|
<option value="5">Jelas Lebih Penting(5)</option>
|
|
<option value="6">Jelas Hingga Sangat Jelas Lebih Penting(6)</option>
|
|
<option value="7">Sangat Jelas Lebih Penting(7)</option>
|
|
<option value="8">Sangat Jelas Hingga Mutlak Lebih Penting(8)</option>
|
|
<option value="9">Mutlak Lebih Penting(9)</option>
|
|
</select>
|
|
</div>
|
|
<div class="col">
|
|
<select name="kriteria2" class="form-control" required>
|
|
<option value="">Pilih Kode Kriteria</option>
|
|
@foreach($datakriterias as $datakriteria)
|
|
<option
|
|
value="{{$datakriteria->kode_kriteria}}">{{$datakriteria->kode_kriteria}}</option>
|
|
@endforeach
|
|
</select>
|
|
</div>
|
|
<div class="col-md-1 d-flex justify-content-end">
|
|
<button class="btn btn-primary" id="save-button">
|
|
<i class="fas fa-check"></i>
|
|
</button>
|
|
</form>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
|
|
<div class="table-responsive p-0">
|
|
<table class="table table-bordered table-hover table-striped">
|
|
<thead>
|
|
<tr>
|
|
<th class="text-center text-uppercase text-secondary text-xxs font-weight-bolder opacity-7">Kode Kriteria</th>
|
|
@foreach ($datakriterias as $datakriteria)
|
|
<th class="text-center text-uppercase text-secondary text-xxs font-weight-bolder opacity-7">{{ $datakriteria->kode_kriteria}}</th>
|
|
@endforeach
|
|
|
|
</tr>
|
|
</thead>
|
|
<tbody id="tabelkriteria2">
|
|
@php
|
|
$columnTotals = []; // Array untuk menyimpan total per kolom
|
|
@endphp
|
|
@foreach ($datakriterias as $row)
|
|
<tr>
|
|
<td class="text-center text-uppercase text-secondary text-xxs font-weight-bolder opacity-7">
|
|
{{ $row->kode_kriteria }}
|
|
</td>
|
|
@php
|
|
$rowTotal = 0; // Total per baris
|
|
@endphp
|
|
@foreach ($datakriterias as $column)
|
|
<td>
|
|
@php
|
|
if ($row->kode_kriteria === $column->kode_kriteria) {
|
|
$nilai_bobot = 1; // Isi otomatis dengan nilai 1 jika xkriteria dan ykriteria sama
|
|
} else {
|
|
$nilai_bobot = App\Models\PerbandinganK::where('kriteria1', $row->kode_kriteria)
|
|
->where('kriteria2', $column->kode_kriteria)
|
|
->value('nilai_bobot');
|
|
|
|
if (!$nilai_bobot) {
|
|
$nilai_bobot = App\Models\PerbandinganK::where('kriteria1', $column->kode_kriteria)
|
|
->where('kriteria2', $row->kode_kriteria)
|
|
->value('nilai_bobot');
|
|
|
|
if (!$nilai_bobot) {
|
|
$nilai_bobot = 0; // Set nilai_bobot menjadi 0 jika tidak ada data yang ditemukan
|
|
} else {
|
|
$nilai_bobot = 1 / floatval($nilai_bobot); // Menghitung nilai kebalikan setelah mengubah ke tipe float
|
|
}
|
|
}
|
|
}
|
|
$rowTotal += floatval($nilai_bobot); // Menambahkan nilai ke total per baris setelah mengubah ke tipe float
|
|
$columnTotals[$loop->index] = isset($columnTotals[$loop->index]) ? $columnTotals[$loop->index] + floatval($nilai_bobot) : floatval($nilai_bobot); // Menambahkan nilai ke total per kolom setelah mengubah ke tipe float
|
|
@endphp
|
|
<input type="text" name="tabel[{{ $loop->index+1 }}]" class="form-control" style="width: 100px;" value="{{ $nilai_bobot }}" readonly>
|
|
</td>
|
|
@endforeach
|
|
</tr>
|
|
@endforeach
|
|
<tr>
|
|
<td class="text-center text-uppercase text-secondary text-xxs font-weight-bolder opacity-7">Total</td>
|
|
@foreach ($columnTotals as $total)
|
|
<td>
|
|
<input type="text" class="form-control" style="width: 100px;" value="{{ $total }}" readonly>
|
|
</td>
|
|
@endforeach
|
|
</tr>
|
|
|
|
</tbody>
|
|
</table>
|
|
<div class="d-flex ">
|
|
<a class="btn btn-primary" onclick="showController()">Normalisasi</a>
|
|
</div>
|
|
<div class="table-responsive p-0">
|
|
<div id="controller" style="display: none;">
|
|
<table class="table table-bordered table-hover table-striped">
|
|
@php
|
|
$lambdaMax = 0; // Inisialisasi nilai Lambda Max
|
|
$CI = 0; // Inisialisasi nilai Consistency Index
|
|
$CR = 0; // Inisialisasi nilai Consistency Ratio
|
|
$jumlahKriteria = count($datakriterias); // Dapatkan jumlah kriteria dari database
|
|
|
|
// Hitung nilai Random Index (RI) berdasarkan jumlah kriteria
|
|
if ($jumlahKriteria <= 2) {
|
|
$RI = 0;
|
|
} elseif ($jumlahKriteria == 3) {
|
|
$RI = 0.58;
|
|
} elseif ($jumlahKriteria == 4) {
|
|
$RI = 0.90;
|
|
} elseif ($jumlahKriteria == 5) {
|
|
$RI = 1.12;
|
|
} elseif ($jumlahKriteria == 6) {
|
|
$RI = 1.24;
|
|
} elseif ($jumlahKriteria == 7) {
|
|
$RI = 1.32;
|
|
} elseif ($jumlahKriteria == 8) {
|
|
$RI = 1.41;
|
|
} elseif ($jumlahKriteria == 9) {
|
|
$RI = 1.45;
|
|
} elseif ($jumlahKriteria == 10) {
|
|
$RI = 1.49;
|
|
} else {
|
|
// Tambahkan logika tambahan untuk nilai RI jika jumlah kriteria lebih dari 10
|
|
}
|
|
$RI = ($RI != 0) ? $RI : 0.01;
|
|
$totalPrioritas = 0; // Inisialisasi total prioritas
|
|
$priorities = []; // Array untuk menyimpan prioritas masing-masing kriteria
|
|
|
|
// Hitung nilai prioritas untuk masing-masing kriteria
|
|
foreach ($datakriterias as $rowIndex => $row) {
|
|
$rowSum = 0; // Untuk menyimpan jumlah per baris
|
|
foreach ($datakriterias as $columnIndex => $column) {
|
|
$nilai_bobot = 0;
|
|
if ($row->kode_kriteria === $column->kode_kriteria) {
|
|
$nilai_bobot = 1; // Isi otomatis dengan nilai 1 jika xkriteria dan ykriteria sama
|
|
} else {
|
|
$nilai_bobot = App\Models\PerbandinganK::where('kriteria1', $row->kode_kriteria)
|
|
->where('kriteria2', $column->kode_kriteria)
|
|
->value('nilai_bobot');
|
|
|
|
if (!$nilai_bobot) {
|
|
$nilai_bobot = App\Models\PerbandinganK::where('kriteria1', $column->kode_kriteria)
|
|
->where('kriteria2', $row->kode_kriteria)
|
|
->value('nilai_bobot');
|
|
|
|
if (!$nilai_bobot) {
|
|
$nilai_bobot = 0; // Set nilai_bobot menjadi 0 jika tidak ada data yang ditemukan
|
|
} else {
|
|
$nilai_bobot = 1 / floatval($nilai_bobot); // Menghitung nilai kebalikan setelah mengubah ke tipe float
|
|
}
|
|
}
|
|
}
|
|
$normalizedValue = 0;
|
|
if (isset($columnTotals[$columnIndex]) && $columnTotals[$columnIndex] != 0) {
|
|
$normalizedValue = floatval($nilai_bobot) / $columnTotals[$columnIndex];
|
|
}
|
|
$rowSum += $normalizedValue; // Menambahkan nilai ke jumlah per baris
|
|
}
|
|
$priority = $rowSum / $jumlahKriteria; // Menghitung prioritas sebagai rata-rata
|
|
$priorities[$rowIndex] = $priority;
|
|
$totalPrioritas += $priority;
|
|
}
|
|
|
|
// Hitung Lambda Max
|
|
$lambdaMax = array_sum(array_map(function ($priority, $index) use ($columnTotals) {
|
|
return $priority * $columnTotals[$index];
|
|
}, $priorities, array_keys($priorities)));
|
|
|
|
// Hitung Consistency Index (CI)
|
|
$CI = ($lambdaMax - $jumlahKriteria) / ($jumlahKriteria - 1);
|
|
|
|
// Hitung Consistency Ratio (CR)
|
|
$CR = $CI / $RI;
|
|
@endphp
|
|
<form action="{{ route('simpanPrioritask') }}" method="POST">
|
|
@csrf
|
|
<table class="table table-bordered table-hover table-striped">
|
|
<thead>
|
|
<tr>
|
|
<th class="text-center text-uppercase text-secondary text-xxs font-weight-bolder opacity-7">Variabel</th>
|
|
@foreach ($datakriterias as $item)
|
|
<th class="text-center text-uppercase text-secondary text-xxs font-weight-bolder opacity-7">
|
|
{{ $item->kode_kriteria }}
|
|
</th>
|
|
@endforeach
|
|
<th class="text-center text-uppercase text-secondary text-xxs font-weight-bolder opacity-7">Jumlah</th>
|
|
<th class="text-center text-uppercase text-secondary text-xxs font-weight-bolder opacity-7">Priority</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody id="tabelprioritas">
|
|
@foreach ($datakriterias as $rowIndex => $row)
|
|
<tr>
|
|
<td class="text-center text-uppercase text-secondary text-xxs font-weight-bolder opacity-7">
|
|
{{ $row->kode_kriteria }}
|
|
</td>
|
|
@php
|
|
$rowSum = 0; // Untuk menyimpan jumlah per baris
|
|
@endphp
|
|
@foreach ($datakriterias as $columnIndex => $column)
|
|
<td>
|
|
@php
|
|
$nilai_bobot = 0;
|
|
if ($row->kode_kriteria === $column->kode_kriteria) {
|
|
$nilai_bobot = 1; // Isi otomatis dengan nilai 1 jika xkriteria dan ykriteria sama
|
|
} else {
|
|
$nilai_bobot = App\Models\PerbandinganK::where('kriteria1', $row->kode_kriteria)
|
|
->where('kriteria2', $column->kode_kriteria)
|
|
->value('nilai_bobot');
|
|
|
|
if (!$nilai_bobot) {
|
|
$nilai_bobot = App\Models\PerbandinganK::where('kriteria1', $column->kode_kriteria)
|
|
->where('kriteria2', $row->kode_kriteria)
|
|
->value('nilai_bobot');
|
|
|
|
if (!$nilai_bobot) {
|
|
$nilai_bobot = 0; // Set nilai_bobot menjadi 0 jika tidak ada data yang ditemukan
|
|
} else {
|
|
$nilai_bobot = 1 / floatval($nilai_bobot); // Menghitung nilai kebalikan setelah mengubah ke tipe float
|
|
}
|
|
}
|
|
}
|
|
$normalizedValue = 0;
|
|
if (isset($columnTotals[$columnIndex]) && $columnTotals[$columnIndex] != 0) {
|
|
$normalizedValue = floatval($nilai_bobot) / $columnTotals[$columnIndex];
|
|
}
|
|
$rowSum += $normalizedValue; // Menambahkan nilai ke jumlah per baris
|
|
@endphp
|
|
<input type="text" name="tabeln[]" class="form-control" style="width: 100px;" value="{{ $normalizedValue }}" readonly>
|
|
</td>
|
|
@endforeach
|
|
<td>
|
|
<input type="text" name="jumlah[]" class="form-control" style="width: 100px;" value="{{ $rowSum }}" readonly>
|
|
</td>
|
|
@php
|
|
$priority = $rowSum / $jumlahKriteria;
|
|
@endphp
|
|
<td>
|
|
<input type="hidden" name="kode_kriteria[]" value="{{ $row->kode_kriteria }}">
|
|
<input type="text" name="priority[]" class="form-control" style="width: 100px;" value="{{ $priority }}" readonly>
|
|
</td>
|
|
</tr>
|
|
@endforeach
|
|
</tbody>
|
|
</table>
|
|
<div class="d-flex">
|
|
<button type="submit" class="btn btn-primary" id="saveButton">Simpan Priority</button>
|
|
</div>
|
|
</form>
|
|
|
|
<!-- Menampilkan nilai Lambda Max, CI, dan CR di bawah tabel -->
|
|
<div class="mt-4" style="background-color: #f2f2f2;">
|
|
<p style="padding: 10px;">Lambda Max: {{ $lambdaMax }}</p>
|
|
<p style="padding: 10px;">Consistency Index (CI): {{ $CI }}</p>
|
|
<p style="padding: 10px;">Consistency Ratio (CR): {{ $CR }}</p>
|
|
</div>
|
|
|
|
</table>
|
|
@if ($CR <= 0.1)
|
|
<div class="alert alert-success">Data konsisten</div>
|
|
@else
|
|
<div class="alert alert-danger">Data tidak konsisten</div>
|
|
@endif
|
|
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<script>
|
|
function showController() {
|
|
var controller = document.getElementById("controller");
|
|
if (controller.style.display === "none") {
|
|
controller.style.display = "block";
|
|
} else {
|
|
controller.style.display = "none";
|
|
}}
|
|
</script>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<script>
|
|
const kriteriaToggle = document.querySelector('.kriteria-toggle');
|
|
const kriteriaTable = document.querySelector('.kriteria-table');
|
|
const kriteriaIcon = document.querySelector('.kriteria-icon');
|
|
|
|
kriteriaToggle.addEventListener('click', () => {
|
|
kriteriaTable.style.display = kriteriaTable.style.display === 'none' ? 'block' : 'none';
|
|
kriteriaIcon.classList.toggle('fa-chevron-down');
|
|
kriteriaIcon.classList.toggle('fa-chevron-up');
|
|
});
|
|
|
|
</script>
|
|
<script>
|
|
|
|
</script>
|
|
|
|
|
|
<div class="card-body">
|
|
<script>
|
|
document.addEventListener('DOMContentLoaded', function () {
|
|
@if(session('success'))
|
|
Swal.fire({
|
|
icon: 'success',
|
|
title: 'Berhasil!',
|
|
text: '{{ session('success') }}',
|
|
timer: 2000, // waktu dalam milidetik (2 detik)
|
|
showConfirmButton: false
|
|
});
|
|
@elseif(session('error'))
|
|
Swal.fire({
|
|
icon: 'error',
|
|
title: 'Error!',
|
|
text: '{{ session('error') }}',
|
|
timer: 2000, // waktu dalam milidetik (2 detik)
|
|
showConfirmButton: false
|
|
});
|
|
@endif
|
|
});
|
|
</script>
|
|
<script>
|
|
// JavaScript to handle click on edit link
|
|
$('.edit-link').click(function() {
|
|
// Retrieve data id from the link
|
|
var id = $(this).data('id');
|
|
|
|
// Assuming you have input fields in the modal form, you can update them here if needed
|
|
// Example: $('#editName').val('New Value');
|
|
|
|
// Update the form action with the correct ID
|
|
var editUrl = "{{ route('datakriteria.edit', ['id' => ':id']) }}";
|
|
editUrl = editUrl.replace(':id', id);
|
|
$('#editForm').attr('action', editUrl);
|
|
});
|
|
</script>
|
|
|
|
<!-- Include Bootstrap JS and jQuery -->
|
|
<script src="https://code.jquery.com/jquery-3.5.1.slim.min.js"></script>
|
|
<script src="https://cdn.jsdelivr.net/npm/@popperjs/core@2.5.3/dist/umd/popper.min.js"></script>
|
|
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.5.2/js/bootstrap.min.js"></script>
|
|
<script>
|
|
// Change the background color of the modal backdrop
|
|
|
|
<!-- 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>
|
|
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>
|
|
<!-- Control Center for Soft Dashboard: parallax effects, scripts for the example pages etc -->
|
|
<script src="../js/argon-dashboard.min.js?v=2.0.4"></script>
|
|
</body>
|
|
|
|
</html> |