Update Icon Demografi Dashboard

This commit is contained in:
2026-08-07 11:33:08 +07:00
parent d4c6b64ba6
commit 16a0a3c56c
@@ -17,359 +17,356 @@
@section('content')
<div class="container-xxl flex-grow-1 container-p-y">
<div class="row g-6">
<!-- Card Border Shadow -->
<div class="col-lg-3 col-sm-6">
<div class="card card-border-shadow-primary h-100">
<div class="card-body">
<div class="d-flex align-items-center mb-2">
<div class="avatar me-4">
<span class="avatar-initial rounded bg-label-primary"
><i class="icon-base ti tabler-truck icon-28px"></i
></span>
<div class="col-lg-3 col-sm-6">
<div class="card card-border-shadow-primary h-100">
<div class="card-body">
<div class="d-flex align-items-center mb-2">
<div class="avatar me-4">
<span class="avatar-initial rounded bg-label-primary"><i class="icon-base ti tabler-shovel-pitchforks icon-28px"></i></span>
</div>
<h4 class="mb-0">{{ $data['total_petani'] }}</h4>
</div>
<p class="mb-1">Total Petani</p>
<p class="mb-0">
<!-- <span class="text-heading fw-medium me-2">+18.2%</span> -->
<small class="text-body-secondary">Terdata</small>
</p>
</div>
</div>
<h4 class="mb-0">{{ $data['total_petani'] }}</h4>
</div>
<div class="col-lg-2 col-sm-6">
<div class="card card-border-shadow-secondary h-100">
<div class="card-body">
<div class="d-flex align-items-center mb-2">
<div class="avatar me-4">
<span class="avatar-initial rounded bg-label-secondary"
><i class="icon-base ti tabler-gender-male icon-28px"></i
></span>
</div>
<h4 class="mb-0">{{ $data['petani_lakilaki'] }}</h4>
</div>
<p class="mb-1">Petani Laki-laki</p>
<p class="mb-0">
<span class="text-heading fw-medium me-2">{{ $data['total_petani'] > 0 ? round(($data['petani_lakilaki'] / $data['total_petani']) * 100) : 0 }}%</span>
<small class="text-body-secondary">Dari Total Petani</small>
</p>
</div>
<p class="mb-1">Total Petani</p>
<p class="mb-0">
<!-- <span class="text-heading fw-medium me-2">+18.2%</span> -->
<small class="text-body-secondary">Terdata</small>
</p>
</div>
</div>
</div>
<div class="col-lg-2 col-sm-6">
<div class="card card-border-shadow-secondary h-100">
<div class="card-body">
<div class="d-flex align-items-center mb-2">
<div class="avatar me-4">
<span class="avatar-initial rounded bg-label-secondary"
><i class="icon-base ti tabler-alert-triangle icon-28px"></i
></span>
</div>
<h4 class="mb-0">{{ $data['petani_lakilaki'] }}</h4>
</div>
<div class="col-lg-2 col-sm-6">
<div class="card card-border-shadow-danger h-100">
<div class="card-body">
<div class="d-flex align-items-center mb-2">
<div class="avatar me-4">
<span class="avatar-initial rounded bg-label-danger"
><i class="icon-base ti tabler-gender-female icon-28px"></i
></span>
</div>
<h4 class="mb-0">{{ $data['petani_perempuan'] }}</h4>
</div>
<p class="mb-1">Petani Perempuan</p>
<p class="mb-0">
<span class="text-heading fw-medium me-2">{{ $data['total_petani'] > 0 ? round(($data['petani_perempuan'] / $data['total_petani']) * 100) : 0 }}%</span>
<small class="text-body-secondary">Dari Total Petani</small>
</p>
</div>
<p class="mb-1">Petani Laki-laki</p>
<p class="mb-0">
<span class="text-heading fw-medium me-2">{{ $data['total_petani'] > 0 ? round(($data['petani_lakilaki'] / $data['total_petani']) * 100) : 0 }}%</span>
<small class="text-body-secondary">Dari Total Petani</small>
</p>
</div>
</div>
</div>
<div class="col-lg-2 col-sm-6">
<div class="card card-border-shadow-danger h-100">
<div class="card-body">
<div class="d-flex align-items-center mb-2">
<div class="avatar me-4">
<span class="avatar-initial rounded bg-label-danger"
><i class="icon-base ti tabler-git-fork icon-28px"></i
></span>
</div>
<h4 class="mb-0">{{ $data['petani_perempuan'] }}</h4>
</div>
<div class="col-lg-2 col-sm-6">
<div class="card card-border-shadow-info h-100">
<div class="card-body">
<div class="d-flex align-items-center mb-2">
<div class="avatar me-4">
<span class="avatar-initial rounded bg-label-info"
><i class="icon-base ti tabler-plant icon-28px"></i
></span>
</div>
<h4 class="mb-0">{{ $data['total_komoditas'] }}</h4>
</div>
<p class="mb-1">Total Komoditas</p>
<p class="mb-0">
<!-- <span class="text-heading fw-medium me-2">-2.5%</span> -->
<small class="text-body-secondary">Dari Seluruh Petani</small>
</p>
</div>
<p class="mb-1">Petani Perempuan</p>
<p class="mb-0">
<span class="text-heading fw-medium me-2">{{ $data['total_petani'] > 0 ? round(($data['petani_perempuan'] / $data['total_petani']) * 100) : 0 }}%</span>
<small class="text-body-secondary">Dari Total Petani</small>
</p>
</div>
</div>
</div>
<div class="col-lg-2 col-sm-6">
<div class="card card-border-shadow-info h-100">
<div class="card-body">
<div class="d-flex align-items-center mb-2">
<div class="avatar me-4">
<span class="avatar-initial rounded bg-label-info"
><i class="icon-base ti tabler-clock icon-28px"></i
></span>
</div>
<h4 class="mb-0">{{ $data['total_komoditas'] }}</h4>
</div>
<div class="col-lg-3 col-sm-6">
<div class="card card-border-shadow-success h-100">
<div class="card-body">
<div class="d-flex align-items-center mb-2">
<div class="avatar me-4">
<span class="avatar-initial rounded bg-label-success"
><i class="icon-base ti tabler-chart-area-line icon-28px"></i
></span>
</div>
<h4 class="mb-0">{{ $data['total_luas_lahan'] }}</h4>
</div>
<p class="mb-1">Total Luas Lahan</p>
<p class="mb-0">
<span class="text-heading fw-medium me-2">{{ $data['ratarata_luas_lahan'] ? number_format($data['ratarata_luas_lahan'], 2) : 0 }}</span>
<small class="text-body-secondary">Rata-rata per Lahan</small>
</p>
</div>
<p class="mb-1">Total Komoditas</p>
<p class="mb-0">
<!-- <span class="text-heading fw-medium me-2">-2.5%</span> -->
<small class="text-body-secondary">Dari Seluruh Petani</small>
</p>
</div>
</div>
</div>
<div class="col-lg-3 col-sm-6">
<div class="card card-border-shadow-success h-100">
<div class="card-body">
<div class="d-flex align-items-center mb-2">
<div class="avatar me-4">
<span class="avatar-initial rounded bg-label-success"
><i class="icon-base ti tabler-clock icon-28px"></i
></span>
</div>
<h4 class="mb-0">{{ $data['total_luas_lahan'] }}</h4>
</div>
<p class="mb-1">Total Luas Lahan</p>
<p class="mb-0">
<span class="text-heading fw-medium me-2">{{ $data['ratarata_luas_lahan'] ? number_format($data['ratarata_luas_lahan'], 2) : 0 }}</span>
<small class="text-body-secondary">Rata-rata per Lahan</small>
</p>
</div>
</div>
</div>
<!--/ Card Border Shadow -->
<!-- Vehicles overview -->
<div class="col-xxl-4 col-lg-6">
<div class="card h-100">
<div class="card-header d-flex align-items-center justify-content-between">
<div class="card-title mb-0">
<h5 class="m-0 me-2">Gender</h5>
<small class="text-body-secondary">Distribusi petani berdasarkan gender</small>
<div class="col-xxl-4 col-lg-6">
<div class="card h-100">
<div class="card-header d-flex align-items-center justify-content-between">
<div class="card-title mb-0">
<h5 class="m-0 me-2">Gender</h5>
<small class="text-body-secondary">Distribusi petani berdasarkan gender</small>
</div>
</div>
<div class="card-body">
<div id="genderChart"></div>
</div>
</div>
<div class="card-body">
<div id="genderChart"></div>
</div>
</div>
</div>
<div class="col-xxl-4 col-lg-6">
<div class="card h-100">
<div class="card-header">
<div class="card-title mb-0">
<h5 class="m-0 me-2">Kelompok Umur</h5>
<small class="text-body-secondary">
Distribusi petani berdasarkan kelompok umur
</small>
<div class="col-xxl-4 col-lg-6">
<div class="card h-100">
<div class="card-header">
<div class="card-title mb-0">
<h5 class="m-0 me-2">Kelompok Umur</h5>
<small class="text-body-secondary">
Distribusi petani berdasarkan kelompok umur
</small>
</div>
</div>
<div class="card-body">
<div id="ageGroupChart"></div>
</div>
</div>
<div class="card-body">
<div id="ageGroupChart"></div>
</div>
</div>
</div>
<div class="col-xxl-4 col-lg-6">
<div class="card h-100">
<div class="card-header">
<div class="card-title mb-0">
<h5 class="m-0 me-2">Tingkat Pendidikan</h5>
<div class="col-xxl-4 col-lg-6">
<div class="card h-100">
<div class="card-header">
<div class="card-title mb-0">
<h5 class="m-0 me-2">Tingkat Pendidikan</h5>
<small class="text-body-secondary">
Distribusi petani berdasarkan pendidikan terakhir
</small>
<small class="text-body-secondary">
Distribusi petani berdasarkan pendidikan terakhir
</small>
</div>
</div>
<div class="card-body">
<div id="educationChart"></div>
</div>
</div>
<div class="card-body">
<div id="educationChart"></div>
</div>
</div>
</div>
<div class="col-xxl-4 col-lg-6">
<div class="card h-100">
<div class="card-header d-flex align-items-center justify-content-between">
<div class="card-title mb-0">
<h5 class="m-0 me-2">
Komoditas Utama yang Dikelola
</h5>
<div class="col-xxl-4 col-lg-6">
<div class="card h-100">
<div class="card-header d-flex align-items-center justify-content-between">
<div class="card-title mb-0">
<h5 class="m-0 me-2">
Komoditas Utama yang Dikelola
</h5>
<small class="text-body-secondary">
Jumlah petani berdasarkan komoditas utama
</small>
<small class="text-body-secondary">
Jumlah petani berdasarkan komoditas utama
</small>
</div>
</div>
<div class="card-body">
<div id="commodityChart"></div>
</div>
</div>
<div class="card-body">
<div id="commodityChart"></div>
</div>
</div>
</div>
<div class="col-xxl-4 col-lg-6">
<div class="card h-100">
<div class="card-header">
<div class="card-title mb-0">
<h5 class="m-0 me-2">
Luas Lahan yang Dimiliki
</h5>
<div class="col-xxl-4 col-lg-6">
<div class="card h-100">
<div class="card-header">
<div class="card-title mb-0">
<h5 class="m-0 me-2">
Luas Lahan yang Dimiliki
</h5>
<small class="text-body-secondary">
Distribusi petani berdasarkan luas lahan garapan
</small>
<small class="text-body-secondary">
Distribusi petani berdasarkan luas lahan garapan
</small>
</div>
</div>
<div class="card-body">
<div id="landAreaChart"></div>
</div>
</div>
<div class="card-body">
<div id="landAreaChart"></div>
</div>
</div>
</div>
<div class="col-xxl-4 col-lg-6">
<div class="card h-100">
<div class="card-header">
<div class="card-title mb-0">
<h5 class="m-0 me-2">
Rentang Penghasilan per Bulan
</h5>
<div class="col-xxl-4 col-lg-6">
<div class="card h-100">
<div class="card-header">
<div class="card-title mb-0">
<h5 class="m-0 me-2">
Rentang Penghasilan per Bulan
</h5>
<small class="text-body-secondary">
Distribusi petani berdasarkan penghasilan dari usaha tani per musim
</small>
<small class="text-body-secondary">
Distribusi petani berdasarkan penghasilan dari usaha tani per musim
</small>
</div>
</div>
<div class="card-body">
<div id="incomeChart"></div>
</div>
</div>
<div class="card-body">
<div id="incomeChart"></div>
</div>
</div>
</div>
<div class="col-xxl-12 col-lg-6">
<div class="card">
<div class="card-header d-flex flex-wrap justify-content-between align-items-center gap-3">
<div>
<div class="col-xxl-12 col-lg-6">
<div class="card">
<div class="card-header d-flex flex-wrap justify-content-between align-items-center gap-3">
<div>
<div class="d-flex align-items-center gap-2">
<h5 class="card-title mb-0">Daftar Petani</h5>
<span class="badge bg-label-primary">{{ $daftarPetani->total() }} petani</span>
</div>
<small class="text-body-secondary">Menampilkan data petani sesuai data yang tersedia</small>
</div>
<div class="d-flex align-items-center gap-2">
<h5 class="card-title mb-0">Daftar Petani</h5>
<span class="badge bg-label-primary">{{ $daftarPetani->total() }} petani</span>
<div class="input-group input-group-merge" style="width: 220px;">
<span class="input-group-text"><i class="icon-base ti tabler-search"></i></span>
<input type="text" class="form-control" placeholder="Cari petani...">
</div>
<button
type="button"
class="btn btn-outline-secondary"
>
<i class="icon-base ti tabler-download me-1"></i>
Export
</button>
</div>
<small class="text-body-secondary">Menampilkan data petani sesuai data yang tersedia</small>
</div>
<div class="d-flex align-items-center gap-2">
<div class="input-group input-group-merge" style="width: 220px;">
<span class="input-group-text"><i class="icon-base ti tabler-search"></i></span>
<input type="text" class="form-control" placeholder="Cari petani...">
</div>
<div class="table-responsive">
<table class="table table-hover">
<button
type="button"
class="btn btn-outline-secondary"
>
<i class="icon-base ti tabler-download me-1"></i>
Export
</button>
<thead>
<tr>
<th>ID Petani</th>
<th>Nama Petani</th>
<th>Gender</th>
<th>Umur</th>
<th>Komoditas</th>
<th>Luas Lahan</th>
<th>Pendidikan</th>
</tr>
</thead>
<tbody>
@forelse ($daftarPetani as $petani)
@php
$umur = $petani->tanggal_lahir
? \Carbon\Carbon::parse($petani->tanggal_lahir)->age
: null;
$totalLuas = $petani->lahan
? $petani->lahan->sum('luas_lahan')
: 0;
@endphp
<tr>
<td>
<span class="text-heading fw-medium">
{{ $petani->kode ?? $petani->id }}
</span>
</td>
<td>
<span class="text-heading fw-medium">
{{ $petani->nama ?? '-' }}
</span>
</td>
<td>
@if ($petani->jenis_kelamin == 1)
<span class="badge bg-label-primary">
Laki-laki
</span>
@else
<span class="badge bg-label-danger">
Perempuan
</span>
@endif
</td>
<td>
{{ $umur ? $umur . ' tahun' : '-' }}
</td>
<td>
{{ $petani->komoditas?->nama ?? '-' }}
</td>
<td>
{{ $petani->total_luas_lahan
? number_format($petani->total_luas_lahan, 2, ',', '.') . ' ha'
: '-'
}}
</td>
<td>
@php
$pendidikanRaw = $petani->getRawOriginal('pendidikan_terakhir');
$pendidikan = match ($pendidikanRaw) {
'01_tidak_sekolah' => 'Tidak Sekolah',
'02_sd' => 'SD',
'03_smp' => 'SMP',
'04_sma' => 'SMA',
'05_diploma' => 'Diploma',
'06_sarjana' => 'Sarjana',
'07_magister' => 'Magister',
default => '-',
};
@endphp
{{ $pendidikan }}
</td>
</tr>
@empty
<tr>
<td
colspan="7"
class="text-center py-5 text-body-secondary"
>
Belum ada data petani.
</td>
</tr>
@endforelse
</tbody>
</table>
</div>
<div class="card-footer d-flex flex-wrap justify-content-between align-items-center gap-3">
<small class="text-body-secondary">
Menampilkan
{{ $daftarPetani->firstItem() ?? 0 }}
-
{{ $daftarPetani->lastItem() ?? 0 }}
dari
{{ $daftarPetani->total() }}
petani
</small>
<div>
{{ $daftarPetani->onEachSide(1)->links('pagination::bootstrap-5') }}
</div>
</div>
<div class="table-responsive">
<table class="table table-hover">
<thead>
<tr>
<th>ID Petani</th>
<th>Nama Petani</th>
<th>Gender</th>
<th>Umur</th>
<th>Komoditas</th>
<th>Luas Lahan</th>
<th>Pendidikan</th>
</tr>
</thead>
<tbody>
@forelse ($daftarPetani as $petani)
@php
$umur = $petani->tanggal_lahir
? \Carbon\Carbon::parse($petani->tanggal_lahir)->age
: null;
$totalLuas = $petani->lahan
? $petani->lahan->sum('luas_lahan')
: 0;
@endphp
<tr>
<td>
<span class="text-heading fw-medium">
{{ $petani->kode ?? $petani->id }}
</span>
</td>
<td>
<span class="text-heading fw-medium">
{{ $petani->nama ?? '-' }}
</span>
</td>
<td>
@if ($petani->jenis_kelamin == 1)
<span class="badge bg-label-primary">
Laki-laki
</span>
@else
<span class="badge bg-label-danger">
Perempuan
</span>
@endif
</td>
<td>
{{ $umur ? $umur . ' tahun' : '-' }}
</td>
<td>
{{ $petani->komoditas?->nama ?? '-' }}
</td>
<td>
{{ $petani->total_luas_lahan
? number_format($petani->total_luas_lahan, 2, ',', '.') . ' ha'
: '-'
}}
</td>
<td>
@php
$pendidikanRaw = $petani->getRawOriginal('pendidikan_terakhir');
$pendidikan = match ($pendidikanRaw) {
'01_tidak_sekolah' => 'Tidak Sekolah',
'02_sd' => 'SD',
'03_smp' => 'SMP',
'04_sma' => 'SMA',
'05_diploma' => 'Diploma',
'06_sarjana' => 'Sarjana',
'07_magister' => 'Magister',
default => '-',
};
@endphp
{{ $pendidikan }}
</td>
</tr>
@empty
<tr>
<td
colspan="7"
class="text-center py-5 text-body-secondary"
>
Belum ada data petani.
</td>
</tr>
@endforelse
</tbody>
</table>
</div>
<div class="card-footer d-flex flex-wrap justify-content-between align-items-center gap-3">
<small class="text-body-secondary">
Menampilkan
{{ $daftarPetani->firstItem() ?? 0 }}
-
{{ $daftarPetani->lastItem() ?? 0 }}
dari
{{ $daftarPetani->total() }}
petani
</small>
<div>
{{ $daftarPetani->onEachSide(1)->links('pagination::bootstrap-5') }}
</div>
</div>
</div>
</div>
</div>