Update Kelompok Tani
This commit is contained in:
@@ -103,12 +103,9 @@
|
||||
<label class="form-label" for="add-kt-jenis-kelompok">Terdaftar/Dikenal Sebagai<span class="text-danger">*</span></label>
|
||||
<select class="form-select @error('jenis_kelompok') is-invalid @enderror" id="add-kt-jenis-kelompok" name="jenis_kelompok" required>
|
||||
<option value="">Pilih Jenis Kelompok</option>
|
||||
<option value="Kelompok Tani (Poktan)" {{ old('jenis_kelompok') == 'Kelompok Tani (Poktan)' ? 'selected' : '' }}>Kelompok Tani (Poktan)</option>
|
||||
<option value="Kelompok Wanita Tani (KWT)" {{ old('jenis_kelompok') == 'Kelompok Wanita Tani (KWT)' ? 'selected' : '' }}>Kelompok Wanita Tani (KWT)</option>
|
||||
<option value="Gabungan Kelompok Tani (Gapoktan)" {{ old('jenis_kelompok') == 'Gabungan Kelompok Tani (Gapoktan)' ? 'selected' : '' }}>Gabungan Kelompok Tani (Gapoktan)</option>
|
||||
<option value="Kelompok Pemuda Tani" {{ old('jenis_kelompok') == 'Kelompok Pemuda Tani' ? 'selected' : '' }}>Kelompok Pemuda Tani</option>
|
||||
<option value="Asosiasi Petani" {{ old('jenis_kelompok') == 'Asosiasi Petani' ? 'selected' : '' }}>Asosiasi Petani</option>
|
||||
<option value="Lainnya" {{ old('jenis_kelompok') == 'Lainnya' ? 'selected' : '' }}>Lainnya</option>
|
||||
@foreach(\App\Enums\JenisKelompokTani::options() as $value => $label)
|
||||
<option value="{{ $value }}" @selected(old('jenis_kelompok') === $value)>{{ $label }}</option>
|
||||
@endforeach
|
||||
</select>
|
||||
@error('jenis_kelompok')<div class="error invalid-feedback">{{ $message }}</div>@enderror
|
||||
</div>
|
||||
|
||||
@@ -103,13 +103,7 @@
|
||||
<div class="col-md-6 mb-4 form-control-validation">
|
||||
<label class="form-label" for="edit-kt-jenis-kelompok">Terdaftar/Dikenal Sebagai<span class="text-danger">*</span></label>
|
||||
@php
|
||||
$jenisKelompokOptions = [
|
||||
'Kelompok Tani (Poktan)',
|
||||
'Kelompok Wanita Tani (KWT)',
|
||||
'Gabungan Kelompok Tani (Gapoktan)',
|
||||
'Kelompok Pemuda Tani',
|
||||
'Asosiasi Petani',
|
||||
];
|
||||
$jenisKelompokOptions = array_diff(\App\Enums\JenisKelompokTani::options(), [\App\Enums\JenisKelompokTani::LAINNYA->value]);
|
||||
$currentJenisKelompok = old('jenis_kelompok', $kelompokTani->jenis_kelompok);
|
||||
$isJenisKelompokLainnya = $currentJenisKelompok && !in_array($currentJenisKelompok, $jenisKelompokOptions);
|
||||
@endphp
|
||||
|
||||
@@ -1,152 +1,113 @@
|
||||
@include('produktivitas.survey-kelompok-tani._alert')
|
||||
|
||||
<style>
|
||||
@media (min-width: 768px) {
|
||||
.nav-pills-custom-spacing {
|
||||
display: flex;
|
||||
width: 100%;
|
||||
gap: 0.5rem;
|
||||
flex-wrap: nowrap !important;
|
||||
overflow-x: auto;
|
||||
}
|
||||
|
||||
.nav-pills-custom-spacing::-webkit-scrollbar {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.nav-pills-custom-spacing .nav-item {
|
||||
margin-right: 0 !important;
|
||||
flex: 1;
|
||||
}
|
||||
|
||||
.nav-pills-custom-spacing .nav-link {
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
padding-left: 0.5rem !important;
|
||||
padding-right: 0.5rem !important;
|
||||
width: 100%;
|
||||
white-space: nowrap;
|
||||
font-size: var(--bs-body-font-size) !important;
|
||||
}
|
||||
|
||||
.nav-pills-custom-spacing .nav-link i {
|
||||
margin-right: 0.4rem !important;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
|
||||
@php
|
||||
$namaKomoditas = isset($kelompokTani) && $kelompokTani->komoditas_id
|
||||
? \App\Models\Pertanian\Komoditas::whereIn('id', $kelompokTani->komoditas_id)->pluck('nama')
|
||||
: collect();
|
||||
$lokasiKelompok = isset($kelompokTani)
|
||||
? collect([$kelompokTani->dusun, $kelompokTani->desaKelurahan?->nama, $kelompokTani->desaKelurahan?->kecamatan?->nama])
|
||||
->filter()
|
||||
->implode(', ')
|
||||
: null;
|
||||
@endphp
|
||||
|
||||
<div class="card mb-6" id="kelompok-tani-summary">
|
||||
<div class="card-body p-3">
|
||||
<div class="row align-items-center gy-3">
|
||||
<div class="{{ isset($kelompokTani) ? 'col-lg-8' : 'col-12' }} d-flex align-items-center">
|
||||
<div class="avatar avatar-lg me-3">
|
||||
<span class="avatar-initial rounded bg-label-primary">
|
||||
<i class="icon-base ti tabler-users-group icon-28px"></i>
|
||||
</span>
|
||||
</div>
|
||||
<div class="d-flex flex-column text-break" style="min-width: 0;">
|
||||
<h6 class="mb-0 kelompok-tani-summary-name">{{ isset($kelompokTani) ? $kelompokTani->nama_kelompok : 'Tambah Kelompok Tani Baru' }}</h6>
|
||||
<span class="text-muted kelompok-tani-summary-note">
|
||||
{{ $lokasiKelompok ?: 'Lengkapi profil untuk memulai' }}
|
||||
</span>
|
||||
@if(isset($kelompokTani) && ($kelompokTani->jenis_kelompok || $namaKomoditas->isNotEmpty() || $kelompokTani->nama_gapoktan))
|
||||
<div class="d-flex flex-wrap gap-1 mt-2">
|
||||
@if($kelompokTani->jenis_kelompok)
|
||||
<span class="badge bg-label-secondary">{{ $kelompokTani->jenis_kelompok }}</span>
|
||||
@endif
|
||||
@if($kelompokTani->nama_gapoktan)
|
||||
<span class="badge bg-label-info">Gapoktan: {{ $kelompokTani->nama_gapoktan }}</span>
|
||||
@endif
|
||||
@foreach($namaKomoditas as $nama)
|
||||
<span class="badge bg-label-success">{{ $nama }}</span>
|
||||
@endforeach
|
||||
</div>
|
||||
@endif
|
||||
</div>
|
||||
</div>
|
||||
@if(isset($kelompokTani))
|
||||
<div class="col-lg-4">
|
||||
<p class="mb-2 fw-medium">Jumlah Pengurus & Anggota</p>
|
||||
<div class="row g-2">
|
||||
@foreach([
|
||||
'jumlah_pengurus' => 'Total Pengurus',
|
||||
'jumlah_anggota_terdaftar' => 'Total Anggota',
|
||||
] as $field => $label)
|
||||
<div class="col-6">
|
||||
<div class="border rounded p-2 h-100">
|
||||
<p class="mb-1 text-muted kelompok-tani-summary-note">{{ $label }}</p>
|
||||
<h5 class="mb-0">{{ $kelompokTani->{$field} !== null ? number_format($kelompokTani->{$field}, 0, ',', '.') : '-' }}</h5>
|
||||
</div>
|
||||
</div>
|
||||
@endforeach
|
||||
</div>
|
||||
</div>
|
||||
@endif
|
||||
<div class="card kelompok-profile-summary mb-4" id="kelompok-tani-summary" role="region" aria-label="Ringkasan profil kelompok tani">
|
||||
<div class="card-body p-3 p-lg-4">
|
||||
<div class="row g-3 align-items-start">
|
||||
<div class="col-12 col-lg-5">
|
||||
<div class="d-flex align-items-start gap-3">
|
||||
<span class="avatar flex-shrink-0" aria-hidden="true">
|
||||
<span class="avatar-initial rounded bg-label-primary">
|
||||
<i class="icon-base ti tabler-users-group icon-22px"></i>
|
||||
</span>
|
||||
</span>
|
||||
<div class="kelompok-summary-content">
|
||||
<h5 class="mb-1 text-break kelompok-tani-summary-name">{{ $ringkasanProfil['judul'] }}</h5>
|
||||
<p class="small text-muted mb-1 text-break">
|
||||
<i class="icon-base ti tabler-map-pin icon-16px me-1" aria-hidden="true"></i>{{ $ringkasanProfil['lokasi'] }}
|
||||
</p>
|
||||
<p class="small mb-0 text-break"><span class="text-muted">Tahun Berdiri:</span> <span data-summary-field="tahun_berdiri">{{ $ringkasanProfil['tahun_berdiri'] }}</span></p>
|
||||
</div>
|
||||
|
||||
@if(isset($kelompokTani))
|
||||
<hr class="my-3">
|
||||
<div class="row gy-3">
|
||||
<div class="col-sm-6 col-lg-3 d-flex align-items-center">
|
||||
<span class="avatar avatar-sm me-2">
|
||||
<span class="avatar-initial rounded-circle bg-label-primary">
|
||||
<i class="icon-base ti tabler-user icon-16px"></i>
|
||||
</span>
|
||||
</span>
|
||||
<div>
|
||||
<p class="mb-0 text-muted kelompok-tani-summary-note">Nama Responden</p>
|
||||
<span class="fw-medium small">{{ $kelompokTani->nama_responden ?: '-' }}</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-sm-6 col-lg-3 d-flex align-items-center">
|
||||
<span class="avatar avatar-sm me-2">
|
||||
<span class="avatar-initial rounded-circle bg-label-primary">
|
||||
<i class="icon-base ti tabler-briefcase icon-16px"></i>
|
||||
</span>
|
||||
</span>
|
||||
<div>
|
||||
<p class="mb-0 text-muted kelompok-tani-summary-note">Jabatan Responden</p>
|
||||
<span class="fw-medium small">{{ $kelompokTani->jabatan_responden ?: '-' }}</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-sm-6 col-lg-3 d-flex align-items-center">
|
||||
<span class="avatar avatar-sm me-2">
|
||||
<span class="avatar-initial rounded-circle bg-label-primary">
|
||||
<i class="icon-base ti tabler-phone icon-16px"></i>
|
||||
</span>
|
||||
</span>
|
||||
<div>
|
||||
<p class="mb-0 text-muted kelompok-tani-summary-note">Kontak Responden</p>
|
||||
<span class="fw-medium small">{{ $kelompokTani->kontak_responden ?: '-' }}</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-sm-6 col-lg-3 d-flex align-items-center">
|
||||
<span class="avatar avatar-sm me-2">
|
||||
<span class="avatar-initial rounded-circle bg-label-primary">
|
||||
<i class="icon-base ti tabler-calendar-event icon-16px"></i>
|
||||
</span>
|
||||
</span>
|
||||
<div>
|
||||
<p class="mb-0 text-muted kelompok-tani-summary-note">Tahun Berdiri</p>
|
||||
<span class="fw-medium small">{{ $kelompokTani->tahun_berdiri ?: '-' }}</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@endif
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-12 col-lg-7">
|
||||
<div class="row g-3">
|
||||
<div class="col-12 col-sm-6">
|
||||
<p class="kelompok-summary-label mb-1">Jenis Kelompok</p>
|
||||
<span class="badge bg-label-primary" data-summary-field="jenis">{{ $ringkasanProfil['jenis'] }}</span>
|
||||
</div>
|
||||
<div class="col-12 col-sm-6">
|
||||
<p class="kelompok-summary-label mb-1">Status SK</p>
|
||||
<span class="badge bg-label-{{ $ringkasanProfil['legalitas']['warna'] }}" title="{{ $ringkasanProfil['legalitas']['detail'] }}" data-summary-field="legalitas">{{ $ringkasanProfil['legalitas']['label'] }}</span>
|
||||
</div>
|
||||
<div class="col-12 col-sm-6" data-summary-field="komoditas">
|
||||
<p class="kelompok-summary-label mb-1">Komoditas Utama</p>
|
||||
@if(count($ringkasanProfil['komoditas']))
|
||||
<div class="d-flex flex-wrap align-items-start gap-2">
|
||||
@foreach(array_slice($ringkasanProfil['komoditas'], 0, 2) as $nama)
|
||||
<span class="badge bg-label-primary">{{ $nama }}</span>
|
||||
@endforeach
|
||||
@if(count($ringkasanProfil['komoditas']) > 2)
|
||||
<button class="btn btn-sm btn-text-primary p-0 kelompok-summary-more" type="button" data-bs-toggle="collapse" data-bs-target="#kelompok-summary-extra-komoditas" aria-expanded="false" aria-controls="kelompok-summary-extra-komoditas">+{{ count($ringkasanProfil['komoditas']) - 2 }} lainnya</button>
|
||||
@endif
|
||||
</div>
|
||||
@if(count($ringkasanProfil['komoditas']) > 2)
|
||||
<div class="collapse" id="kelompok-summary-extra-komoditas">
|
||||
<div class="d-flex flex-wrap gap-2 pt-2">
|
||||
@foreach(array_slice($ringkasanProfil['komoditas'], 2) as $nama)
|
||||
<span class="badge bg-label-primary">{{ $nama }}</span>
|
||||
@endforeach
|
||||
</div>
|
||||
</div>
|
||||
@endif
|
||||
@else
|
||||
<p class="small mb-0 text-muted">Belum terisi</p>
|
||||
@endif
|
||||
</div>
|
||||
<div class="col-12 col-sm-6">
|
||||
<div class="row g-2">
|
||||
<div class="col-6">
|
||||
<p class="kelompok-summary-label mb-1">Total Pengurus</p>
|
||||
<span class="fw-medium text-break" data-summary-field="pengurus">{{ $ringkasanProfil['pengurus'] }}</span>
|
||||
</div>
|
||||
<div class="col-6">
|
||||
<p class="kelompok-summary-label mb-1">Total Anggota</p>
|
||||
<span class="fw-medium text-break" data-summary-field="anggota">{{ $ringkasanProfil['anggota'] }}</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="card-footer border-top p-3 py-lg-2 px-lg-4">
|
||||
<div class="row gy-3">
|
||||
@foreach([
|
||||
'responden' => ['Nama Responden', 'user'],
|
||||
'jabatan' => ['Jabatan Responden', 'briefcase'],
|
||||
'kontak' => ['Kontak Responden', 'phone'],
|
||||
] as $field => [$label, $icon])
|
||||
<div class="col-sm-6 col-lg-3 d-flex align-items-center">
|
||||
<span class="avatar avatar-sm me-2 flex-shrink-0" aria-hidden="true">
|
||||
<span class="avatar-initial rounded-circle bg-label-primary">
|
||||
<i class="icon-base ti tabler-{{ $icon }} icon-16px"></i>
|
||||
</span>
|
||||
</span>
|
||||
<div class="kelompok-summary-content">
|
||||
<p class="kelompok-summary-label mb-0">{{ $label }}</p>
|
||||
<span class="fw-medium small text-break" data-summary-field="{{ $field }}">{{ $ringkasanProfil[$field] }}</span>
|
||||
</div>
|
||||
</div>
|
||||
@endforeach
|
||||
<div class="col-sm-6 col-lg-3 d-flex align-items-center">
|
||||
<span class="avatar avatar-sm me-2 flex-shrink-0" aria-hidden="true">
|
||||
<span class="avatar-initial rounded-circle bg-label-primary">
|
||||
<i class="icon-base ti tabler-calendar-event icon-16px"></i>
|
||||
</span>
|
||||
</span>
|
||||
<div class="kelompok-summary-content">
|
||||
<p class="kelompok-summary-label mb-0">Diperbarui</p>
|
||||
<span class="fw-medium small text-break" data-summary-field="diperbarui">
|
||||
@if($ringkasanProfil['diperbarui'])
|
||||
<time datetime="{{ $ringkasanProfil['diperbarui']->toIso8601String() }}">{{ $ringkasanProfil['diperbarui']->locale('id')->translatedFormat('d M Y, H:i') }}</time>
|
||||
@else
|
||||
{{ isset($kelompokTani) ? 'Belum terisi' : 'Belum tersimpan' }}
|
||||
@endif
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="nav-align-top">
|
||||
<ul class="nav nav-pills flex-column flex-md-row mb-6 row-gap-2 nav-pills-custom-spacing">
|
||||
|
||||
@@ -1,74 +1,45 @@
|
||||
@extends('layout.main')
|
||||
|
||||
|
||||
@push('style')
|
||||
<style>
|
||||
.kelompok-tani-row { cursor: pointer; }
|
||||
.kelompok-filter-row { padding-block: 1.5rem; }
|
||||
.kelompok-filter-line { display: flex; align-items: center; flex-wrap: wrap; gap: .5rem; }
|
||||
.kelompok-filter-label { display: flex; align-items: center; font-weight: 500; margin-right: .5rem; white-space: nowrap; }
|
||||
.kelompok-filter-line .form-select,
|
||||
.kelompok-filter-line .btn { min-height: 31px; }
|
||||
.kelompok-filter-line .form-select {
|
||||
background-color: var(--bs-paper-bg);
|
||||
border-color: var(--bs-border-color);
|
||||
border-radius: var(--bs-border-radius);
|
||||
color: var(--bs-body-color);
|
||||
}
|
||||
.kelompok-filter-line .form-select:focus {
|
||||
border-color: rgba(40, 167, 69, .55);
|
||||
box-shadow: 0 0 0 .2rem rgba(40, 167, 69, .12);
|
||||
}
|
||||
.kelompok-filter-line .btn { white-space: nowrap; }
|
||||
.kelompok-filter-static {
|
||||
display: flex; align-items: center; min-height: 31px;
|
||||
padding: .25rem .75rem; font-size: .8125rem;
|
||||
background-color: var(--bs-paper-bg);
|
||||
border: 1px solid var(--bs-border-color);
|
||||
border-radius: var(--bs-border-radius);
|
||||
color: var(--bs-body-color);
|
||||
}
|
||||
.kelompok-filter-line .input-group-sm { width: 240px; }
|
||||
@media (max-width: 767.98px) {
|
||||
.kelompok-filter-line { display: grid; grid-template-columns: minmax(0, 1fr); width: 100%; }
|
||||
.kelompok-filter-label { margin-right: 0; }
|
||||
.kelompok-filter-line .btn { justify-content: center; width: 100%; }
|
||||
.kelompok-filter-line .input-group-sm { width: 100%; }
|
||||
.kelompok-filter-line .input-group .btn { width: auto; }
|
||||
}
|
||||
</style>
|
||||
@endpush
|
||||
|
||||
@section('content')
|
||||
<div class="container-fluid flex-grow-1 container-p-y kelompok-tani-page">
|
||||
@include('produktivitas.survey-kelompok-tani._alert')
|
||||
|
||||
<div class="row g-3 mb-4">
|
||||
<div class="col-12 col-md-4">
|
||||
<div class="row g-3 mb-4" id="kelompok-overview" aria-label="Ringkasan kelompok tani">
|
||||
<div class="col-12 col-md-6 col-xl-3">
|
||||
<x-summary-card
|
||||
title="Kelompok Tani"
|
||||
title="Total Kelompok Tani"
|
||||
count="{{ number_format($summary->total_kelompok, 0, ',', '.') }}"
|
||||
subtitle="{{ number_format($summary->total_jenis, 0, ',', '.') }} jenis kelompok"
|
||||
subtitle="{{ number_format($summary->total_desa, 0, ',', '.') }} desa/kelurahan terdata"
|
||||
icon="users-group"
|
||||
color="primary"
|
||||
/>
|
||||
</div>
|
||||
<div class="col-12 col-md-4">
|
||||
<div class="col-12 col-md-6 col-xl-3">
|
||||
<x-summary-card
|
||||
title="Memiliki SK"
|
||||
count="{{ number_format($summary->memiliki_sk, 0, ',', '.') }}"
|
||||
subtitle="SK dari desa/kecamatan atau Dinas/Kabupaten"
|
||||
icon="certificate"
|
||||
color="success"
|
||||
/>
|
||||
</div>
|
||||
<div class="col-12 col-md-6 col-xl-3">
|
||||
<x-summary-card
|
||||
title="Total Pengurus"
|
||||
count="{{ number_format($summary->total_pengurus, 0, ',', '.') }}"
|
||||
subtitle="{{ number_format($summary->pengurus_aktif, 0, ',', '.') }} pengurus aktif"
|
||||
icon="user-star"
|
||||
color="success"
|
||||
color="info"
|
||||
/>
|
||||
</div>
|
||||
<div class="col-12 col-md-4">
|
||||
<div class="col-12 col-md-6 col-xl-3">
|
||||
<x-summary-card
|
||||
title="Total Anggota"
|
||||
count="{{ number_format($summary->total_anggota, 0, ',', '.') }}"
|
||||
subtitle="{{ number_format($summary->anggota_aktif, 0, ',', '.') }} anggota aktif"
|
||||
icon="users"
|
||||
color="info"
|
||||
color="warning"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
@@ -77,7 +48,7 @@
|
||||
<div class="col-12">
|
||||
<div class="card card-border-shadow-primary">
|
||||
<div class="card-body py-3">
|
||||
<form method="GET" action="{{ route('kelompok-tani.index') }}" id="kelompok-filter-form" aria-label="Filter data kelompok tani">
|
||||
<form method="GET" action="{{ route('kelompok-tani.index') }}" id="kelompok-filter-form" data-desa-url="{{ route('desakelurahan.bykecamatan', ':id') }}" aria-label="Filter data kelompok tani">
|
||||
<input type="hidden" name="per_page" value="{{ $kelompokTani->perPage() }}">
|
||||
<div class="kelompok-filter-line">
|
||||
<div class="kelompok-filter-label">
|
||||
@@ -109,7 +80,7 @@
|
||||
|
||||
<hr class="my-3">
|
||||
|
||||
<div class="kelompok-filter-line">
|
||||
<div class="kelompok-filter-line kelompok-data-filters">
|
||||
<div class="kelompok-filter-label">
|
||||
<i class="icon-base ti tabler-adjustments-horizontal me-2"></i><span>Data</span>
|
||||
</div>
|
||||
@@ -129,6 +100,14 @@
|
||||
@endforeach
|
||||
</select>
|
||||
</div>
|
||||
<div>
|
||||
<select name="status_legalitas" class="form-select form-select-sm" aria-label="Filter Status SK/Dokumen Pendaftaran">
|
||||
<option value="">Semua Status SK</option>
|
||||
@foreach($statusLegalitasOptions as $status)
|
||||
<option value="{{ $status }}" @selected($filters['status_legalitas'] === $status)>{{ $status }}</option>
|
||||
@endforeach
|
||||
</select>
|
||||
</div>
|
||||
<div>
|
||||
<select name="sort_by" class="form-select form-select-sm" aria-label="Urutkan data kelompok tani">
|
||||
<option value="">Urut Terbaru</option>
|
||||
@@ -138,14 +117,16 @@
|
||||
<option value="anggota_asc" @selected($filters['sort_by'] === 'anggota_asc')>Anggota Tersedikit</option>
|
||||
</select>
|
||||
</div>
|
||||
<div>
|
||||
<div class="input-group input-group-sm">
|
||||
<input type="text" name="search" class="form-control" placeholder="Cari kelompok / responden..." value="{{ $filters['search'] }}" aria-label="Cari nama kelompok atau responden">
|
||||
<button type="submit" class="btn btn-outline-secondary" aria-label="Cari data kelompok tani"><i class="icon-base ti tabler-search"></i></button>
|
||||
</div>
|
||||
</div>
|
||||
<div class="kelompok-filter-search d-flex flex-column flex-md-row gap-2 mt-3">
|
||||
<div class="input-group input-group-sm flex-grow-1">
|
||||
<input type="text" name="search" class="form-control" placeholder="Cari kelompok / lokasi / responden..." value="{{ $filters['search'] }}" aria-label="Cari nama kelompok, desa, kecamatan, atau responden">
|
||||
<button type="submit" class="btn btn-outline-secondary" aria-label="Cari data kelompok tani"><i class="icon-base ti tabler-search"></i></button>
|
||||
</div>
|
||||
<div class="kelompok-filter-actions d-flex gap-2 flex-shrink-0">
|
||||
<button type="submit" class="btn btn-outline-secondary btn-sm flex-fill"><i class="icon-base ti tabler-filter me-1"></i>Filter</button>
|
||||
<a href="{{ route('kelompok-tani.index') }}" class="btn btn-outline-secondary btn-sm flex-fill"><i class="icon-base ti tabler-refresh me-1"></i>Reset</a>
|
||||
</div>
|
||||
<button type="submit" class="btn btn-outline-secondary btn-sm"><i class="icon-base ti tabler-filter me-1"></i>Filter</button>
|
||||
<a href="{{ route('kelompok-tani.index') }}" class="btn btn-outline-secondary btn-sm"><i class="icon-base ti tabler-refresh me-1"></i>Reset</a>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
@@ -165,12 +146,12 @@
|
||||
@endforeach
|
||||
<div class="col-md-auto">
|
||||
<div class="d-flex align-items-center">
|
||||
<label class="me-2 text-nowrap">Show</label>
|
||||
<select name="per_page" class="form-select form-select-sm w-auto" onchange="this.form.submit()">
|
||||
<label class="me-2 text-nowrap" for="kelompok-per-page">Tampilkan</label>
|
||||
<select name="per_page" id="kelompok-per-page" class="form-select form-select-sm w-auto">
|
||||
<option value="10" @selected($kelompokTani->perPage() === 10)>10</option>
|
||||
<option value="25" @selected($kelompokTani->perPage() === 25)>25</option>
|
||||
</select>
|
||||
<label class="ms-2 text-nowrap">entries</label>
|
||||
<span class="ms-2 text-nowrap">data</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-auto ms-md-auto">
|
||||
@@ -182,36 +163,63 @@
|
||||
</div>
|
||||
|
||||
<div class="table-responsive text-nowrap">
|
||||
<table class="table table-hover">
|
||||
<table class="table table-hover align-middle kelompok-list-table">
|
||||
<thead class="border-top">
|
||||
<tr>
|
||||
<th>No</th>
|
||||
<th>Nama Kelompok</th>
|
||||
<th>Desa/Kelurahan</th>
|
||||
<th>Jenis Kelompok</th>
|
||||
<th>Tahun Berdiri</th>
|
||||
<th>Kelompok Tani</th>
|
||||
<th>Komoditas</th>
|
||||
<th>Status SK</th>
|
||||
<th>Pengurus</th>
|
||||
<th>Anggota</th>
|
||||
<th>Nama Responden</th>
|
||||
@if($showEnumerator)
|
||||
<th>Nama Enumerator</th>
|
||||
@endif
|
||||
<th>Aksi</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
@forelse($kelompokTani as $index => $item)
|
||||
@forelse($kelompokTani as $item)
|
||||
@php($ringkasan = $ringkasanKelompok[$item->id])
|
||||
<tr class="kelompok-tani-row">
|
||||
<td>{{ $kelompokTani->firstItem() + $loop->index }}</td>
|
||||
<td><a href="{{ route('kelompok-tani.edit', $item->id) }}" class="text-heading d-block">{{ $item->nama_kelompok }}</a></td>
|
||||
<td><span class="text-muted">{{ $item->desaKelurahan?->nama }}</span></td>
|
||||
<td><span class="text-muted">{{ $item->jenis_kelompok }}</span></td>
|
||||
<td><span class="text-muted">{{ $item->tahun_berdiri }}</span></td>
|
||||
<td><span class="text-muted">{{ $item->nama_responden }}</span></td>
|
||||
<td class="text-wrap kelompok-list-identity">
|
||||
<a href="{{ route('kelompok-tani.edit', $item->id) }}" class="text-heading d-block fw-medium">{{ $item->nama_kelompok }}</a>
|
||||
<div class="small text-muted">{{ $ringkasan['lokasi'] }}</div>
|
||||
<div class="small text-muted">{{ $item->jenis_kelompok ?: 'Jenis kelompok belum terisi' }}</div>
|
||||
</td>
|
||||
<td class="text-wrap kelompok-list-commodities">
|
||||
<span class="text-muted">{{ implode(', ', $ringkasan['komoditas']) ?: 'Belum terisi' }}</span>
|
||||
</td>
|
||||
<td class="text-wrap kelompok-list-status">
|
||||
<span class="text-muted" title="{{ $item->status_legalitas }}">{{ $ringkasan['legalitas']['label'] }}</span>
|
||||
</td>
|
||||
<td>
|
||||
<div class="fw-medium">{{ $item->jumlah_pengurus !== null ? number_format($item->jumlah_pengurus, 0, ',', '.') : 'Belum terisi' }}</div>
|
||||
@if($item->jumlah_pengurus_aktif !== null)
|
||||
<span class="small text-muted">{{ number_format($item->jumlah_pengurus_aktif, 0, ',', '.') }} aktif</span>
|
||||
@endif
|
||||
</td>
|
||||
<td>
|
||||
<div class="fw-medium">{{ $item->jumlah_anggota_terdaftar !== null ? number_format($item->jumlah_anggota_terdaftar, 0, ',', '.') : 'Belum terisi' }}</div>
|
||||
@if($item->jumlah_anggota_aktif !== null)
|
||||
<span class="small text-muted">{{ number_format($item->jumlah_anggota_aktif, 0, ',', '.') }} aktif</span>
|
||||
@endif
|
||||
</td>
|
||||
<td class="text-wrap"><span class="text-muted">{{ $item->nama_responden ?: 'Belum terisi' }}</span></td>
|
||||
@if($showEnumerator)
|
||||
<td class="text-wrap"><span class="text-muted">{{ $item->creator?->name ?? '-' }}</span></td>
|
||||
@endif
|
||||
<td>
|
||||
<div class="d-flex align-items-center">
|
||||
<a href="{{ route('kelompok-tani.edit', $item->id) }}" class="btn btn-icon btn-text-secondary rounded-pill edit-record"><i class="ti tabler-edit ti-md"></i></a>
|
||||
<a href="javascript:;" class="btn btn-icon btn-text-secondary rounded-pill delete-record" data-id="{{ $item->id }}" data-nama="{{ $item->nama_kelompok }}"><i class="ti tabler-trash ti-md"></i></a>
|
||||
<a href="{{ route('kelompok-tani.edit', $item->id) }}" class="btn btn-icon btn-text-secondary rounded-pill edit-record" aria-label="Ubah {{ $item->nama_kelompok }}"><i class="ti tabler-edit ti-md"></i></a>
|
||||
<button type="button" class="btn btn-icon btn-text-secondary rounded-pill delete-record" data-delete-url="{{ route('kelompok-tani.destroy', $item->id) }}" data-nama="{{ $item->nama_kelompok }}" aria-label="Hapus {{ $item->nama_kelompok }}"><i class="ti tabler-trash ti-md"></i></button>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
@empty
|
||||
<tr><td colspan="7" class="text-center py-4">Tidak ada data ditemukan.</td></tr>
|
||||
<tr><td colspan="{{ $showEnumerator ? 9 : 8 }}" class="text-center py-4">Tidak ada data ditemukan.</td></tr>
|
||||
@endforelse
|
||||
</tbody>
|
||||
</table>
|
||||
@@ -224,69 +232,5 @@
|
||||
@endsection
|
||||
|
||||
@push('scripts')
|
||||
<script>
|
||||
'use strict';
|
||||
const csrfToken = "{{ csrf_token() }}";
|
||||
|
||||
$(document).ready(function () {
|
||||
const $kecamatanFilter = $('#filter-kecamatan');
|
||||
const $desaFilter = $('#filter-desa');
|
||||
const desaUrlTemplate = '{{ route("desakelurahan.bykecamatan", ":id") }}';
|
||||
let desaRequest;
|
||||
|
||||
$kecamatanFilter.on('change', function () {
|
||||
if (desaRequest) desaRequest.abort();
|
||||
$desaFilter.empty().append(new Option('Semua Desa', '')).prop('disabled', true);
|
||||
const kecamatanId = $(this).val();
|
||||
if (!kecamatanId) return;
|
||||
|
||||
desaRequest = $.get(desaUrlTemplate.replace(':id', kecamatanId), function (data) {
|
||||
data.forEach(function (desa) {
|
||||
$desaFilter.append(new Option(desa.nama, desa.id));
|
||||
});
|
||||
$desaFilter.prop('disabled', false);
|
||||
}).fail(function (xhr, status) {
|
||||
if (status !== 'abort') {
|
||||
$desaFilter.empty().append(new Option('Gagal memuat desa', ''));
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
$(document).on('click', '.kelompok-tani-row', function (event) {
|
||||
if ($(event.target).closest('a, button, input, select, textarea, label').length) {
|
||||
return;
|
||||
}
|
||||
|
||||
window.location.href = this.querySelector('.edit-record').href;
|
||||
});
|
||||
|
||||
$(document).on('click', '.delete-record', function () {
|
||||
const id = $(this).data('id');
|
||||
const name = $(this).data('nama');
|
||||
|
||||
Swal.fire({
|
||||
title: 'Apakah Anda yakin?',
|
||||
text: `Data kelompok tani "${name}" akan dihapus secara permanen!`,
|
||||
icon: 'warning',
|
||||
showCancelButton: true,
|
||||
confirmButtonText: 'Ya, Hapus!',
|
||||
customClass: { confirmButton: 'btn btn-primary me-3', cancelButton: 'btn btn-label-secondary' },
|
||||
buttonsStyling: false
|
||||
}).then(function (result) {
|
||||
if (result.value) {
|
||||
$.ajax({
|
||||
url: '{{ route('kelompok-tani.destroy', ':id') }}'.replace(':id', id),
|
||||
type: 'DELETE',
|
||||
headers: { 'X-CSRF-TOKEN': csrfToken },
|
||||
success: function (res) {
|
||||
Swal.fire({ icon: 'success', title: 'Terhapus!', text: res.message, showConfirmButton: false, timer: 1500 })
|
||||
.then(() => window.location.reload());
|
||||
},
|
||||
error: () => Swal.fire({ icon: 'error', title: 'Gagal!', text: 'Terjadi kesalahan sistem.' })
|
||||
});
|
||||
}
|
||||
});
|
||||
});
|
||||
});
|
||||
</script>
|
||||
<script src="{{ asset('assets/js/kelompok-tani.js') }}?v={{ filemtime(public_path('assets/js/kelompok-tani.js')) }}"></script>
|
||||
@endpush
|
||||
|
||||
@@ -42,13 +42,7 @@
|
||||
<label class="form-label" for="klb-status-legalitas">Status SK/Dokumen Pendaftaran</label>
|
||||
<select class="form-select @error('status_legalitas') is-invalid @enderror" id="klb-status-legalitas" name="status_legalitas">
|
||||
<option value="">Pilih Status Legalitas</option>
|
||||
@foreach([
|
||||
'Belum ada SK/dokumen apa pun',
|
||||
'Sedang proses pengajuan',
|
||||
'Sudah ada SK dari desa/kecamatan',
|
||||
'Sudah ada SK dan terdaftar di Dinas/Kabupaten',
|
||||
'Tidak tahu',
|
||||
] as $option)
|
||||
@foreach(\App\Enums\StatusLegalitasKelompokTani::options() as $option)
|
||||
<option value="{{ $option }}" {{ old('status_legalitas', $kelompokTani->status_legalitas) == $option ? 'selected' : '' }}>{{ $option }}</option>
|
||||
@endforeach
|
||||
</select>
|
||||
|
||||
Reference in New Issue
Block a user