Update Kelompok Tani

This commit is contained in:
2026-11-05 21:30:38 +07:00
parent c55ff109a0
commit 291ebf919c
16 changed files with 823 additions and 413 deletions
@@ -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>