update kelompok tani

This commit is contained in:
2026-11-03 17:53:53 +07:00
parent f455f8b878
commit 53913bebe9
20 changed files with 2319 additions and 1041 deletions
@@ -1,37 +1,51 @@
{{--
Partial notif per-card. Dipakai di dalam tiap <div class="card"> supaya notif sukses/gagal
muncul tepat di atas card yang barusan disubmit, bukan di paling atas halaman.
@php
$notificationTypes = [
'success' => 'success',
'error' => 'danger',
'warning' => 'warning',
'info' => 'info',
'status' => 'info',
'message' => 'info',
];
$hasNotifications = $errors->any() || collect(array_keys($notificationTypes))->contains(fn ($key) => session()->has($key));
@endphp
Params:
- $section (string) kunci section, harus sama dengan yang dipakai controller di redirectToSection().
- $errorFields (array, optional) daftar nama field/wildcard (mis. 'aset.*') milik card ini,
dipakai buat nentuin apakah error validasi yang ada punya card ini.
--}}
@if(session('success') && session('success_section') === $section)
<div class="alert alert-success alert-dismissible" role="alert">
{{ session('success') }}
<button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="Close"></button>
</div>
@endif
@if($hasNotifications)
<div id="kelompok-tani-notifications">
@foreach($notificationTypes as $key => $type)
@if(session()->has($key))
<div class="alert alert-{{ $type }} alert-dismissible" role="alert">
{{ session($key) }}
<button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="Tutup"></button>
</div>
@endif
@endforeach
@if(session('error') && session('error_section') === $section)
<div class="alert alert-danger alert-dismissible" role="alert">
{{ session('error') }}
<button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="Close"></button>
</div>
@endif
@if(!empty($errorFields) && $errors->has($errorFields))
<div class="alert alert-danger alert-dismissible" role="alert">
<ul class="mb-0">
@foreach($errorFields as $field)
@foreach($errors->get($field) as $messages)
@foreach((array) $messages as $message)
<li>{{ $message }}</li>
@if($errors->any())
<div class="alert alert-danger alert-dismissible" role="alert">
<ul class="mb-0">
@foreach($errors->all() as $error)
<li>{{ $error }}</li>
@endforeach
@endforeach
@endforeach
</ul>
<button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="Close"></button>
</ul>
<button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="Tutup"></button>
</div>
@endif
</div>
@push('scripts')
<script>
window.addEventListener('load', function () {
const hasErrors = @json($errors->any() || session()->has('error'));
if (!hasErrors && window.location.hash.startsWith('#section-')) {
const target = document.getElementById(window.location.hash.substring(1));
if (target && target.closest('.kelompok-tani-page') && target.getClientRects().length) {
target.scrollIntoView({ block: 'start' });
return;
}
}
document.getElementById('kelompok-tani-notifications')?.scrollIntoView({ block: 'start' });
});
</script>
@endpush
@endif
@@ -1,31 +1,21 @@
@extends('layout.main')
@section('content')
<div class="container-xxl flex-grow-1 container-p-y">
@if ($errors->any())
<div class="alert alert-danger">
<ul class="mb-0">
@foreach ($errors->all() as $error)
<li>{{ $error }}</li>
@endforeach
</ul>
</div>
@endif
<div class="container-xxl flex-grow-1 container-p-y kelompok-tani-page">
@include('produktivitas.survey-kelompok-tani.header', ['kelompokTani' => null])
<div class="row">
<div class="col-md-12">
<div class="card mb-6">
<div class="card-body pt-6">
<form id="addKelompokTaniForm" action="{{ route('kelompok-tani.store') }}" method="POST">
<form novalidate id="addKelompokTaniForm" action="{{ route('kelompok-tani.store') }}" method="POST">
@csrf
<h5 class="pb-4 border-bottom mb-4">Data Responden</h5>
<div class="row">
<div class="col-md-4 mb-4 form-control-validation">
<label class="form-label" for="add-kt-nama-responden">Nama Responden<span class="text-danger">*</span></label>
<input type="text" class="form-control @error('nama_responden') is-invalid @enderror" id="add-kt-nama-responden" name="nama_responden"
<input type="text" class="form-control @error('nama_responden') is-invalid @enderror" id="add-kt-nama-responden" name="nama_responden" required
placeholder="Cth: John Doe" value="{{ old('nama_responden') }}" />
@error('nama_responden')<div class="error invalid-feedback">{{ $message }}</div>@enderror
</div>
@@ -47,7 +37,7 @@
<div class="row">
<div class="col-md-6 mb-4 form-control-validation">
<label class="form-label" for="add-kt-nama-kelompok">Nama Kelompok Tani<span class="text-danger">*</span></label>
<input type="text" class="form-control @error('nama_kelompok') is-invalid @enderror" id="add-kt-nama-kelompok" name="nama_kelompok"
<input type="text" class="form-control @error('nama_kelompok') is-invalid @enderror" id="add-kt-nama-kelompok" name="nama_kelompok" required
placeholder="Cth: Kelompok Tani Maju Bersama" value="{{ old('nama_kelompok') }}" />
@error('nama_kelompok')<div class="error invalid-feedback">{{ $message }}</div>@enderror
</div>
@@ -68,38 +58,50 @@
<div class="row">
<div class="col-md-3 mb-4 form-control-validation">
<label class="form-label" for="add-kt-provinsi">Provinsi<span class="text-danger">*</span></label>
<select class="form-control @error('provinsi_id') is-invalid @enderror" id="add-kt-provinsi" name="provinsi_id">
<select class="form-select @error('provinsi_id') is-invalid @enderror" id="add-kt-provinsi" name="provinsi_id" required>
<option value="">Pilih Provinsi</option>
@foreach($provinsi as $p)
<option value="{{ $p->id }}" {{ old('provinsi_id') == $p->id ? 'selected' : '' }}>{{ $p->nama }}</option>
@endforeach
</select>
@error('provinsi_id')<div class="error invalid-feedback">{{ $message }}</div>@enderror
</div>
<div class="col-md-3 mb-4 form-control-validation">
<label class="form-label" for="add-kt-kabupaten">Kabupaten/Kota<span class="text-danger">*</span></label>
<select class="form-control @error('kabupaten_id') is-invalid @enderror" id="add-kt-kabupaten" name="kabupaten_id" disabled>
<select class="form-select @error('kabupaten_id') is-invalid @enderror" id="add-kt-kabupaten" name="kabupaten_id" required @disabled(!old('provinsi_id'))>
<option value="">Pilih Kabupaten/Kota</option>
@foreach($kabupatenOptions ?? [] as $option)
<option value="{{ $option->id }}" @selected(old('kabupaten_id') == $option->id)>{{ $option->nama }}</option>
@endforeach
</select>
@error('kabupaten_id')<div class="error invalid-feedback">{{ $message }}</div>@enderror
</div>
<div class="col-md-3 mb-4 form-control-validation">
<label class="form-label" for="add-kt-kecamatan">Kecamatan<span class="text-danger">*</span></label>
<select class="form-control @error('kecamatan_id') is-invalid @enderror" id="add-kt-kecamatan" name="kecamatan_id" disabled>
<select class="form-select @error('kecamatan_id') is-invalid @enderror" id="add-kt-kecamatan" name="kecamatan_id" required @disabled(!old('kabupaten_id'))>
<option value="">Pilih Kecamatan</option>
@foreach($kecamatanOptions ?? [] as $option)
<option value="{{ $option->id }}" @selected(old('kecamatan_id') == $option->id)>{{ $option->nama }}</option>
@endforeach
</select>
@error('kecamatan_id')<div class="error invalid-feedback">{{ $message }}</div>@enderror
</div>
<div class="col-md-3 mb-4 form-control-validation">
<label class="form-label" for="add-kt-desa">Desa/Kelurahan<span class="text-danger">*</span></label>
<select class="form-control @error('desa_kelurahan_id') is-invalid @enderror" id="add-kt-desa" name="desa_kelurahan_id" disabled>
<select class="form-select @error('desa_kelurahan_id') is-invalid @enderror" id="add-kt-desa" name="desa_kelurahan_id" required @disabled(!old('kecamatan_id'))>
<option value="">Pilih Desa/Kelurahan</option>
@foreach($desaOptions ?? [] as $option)
<option value="{{ $option->id }}" @selected(old('desa_kelurahan_id') == $option->id)>{{ $option->nama }}</option>
@endforeach
</select>
@error('desa_kelurahan_id')<div class="error invalid-feedback">{{ $message }}</div>@enderror
</div>
</div>
<div class="row">
<div class="col-md-4 mb-4 form-control-validation">
<div class="col-md-6 mb-4 form-control-validation">
<label class="form-label" for="add-kt-jenis-kelompok">Terdaftar/Dikenal Sebagai<span class="text-danger">*</span></label>
<select class="form-control @error('jenis_kelompok') is-invalid @enderror" id="add-kt-jenis-kelompok" name="jenis_kelompok">
<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>
@@ -111,7 +113,7 @@
@error('jenis_kelompok')<div class="error invalid-feedback">{{ $message }}</div>@enderror
</div>
<div class="col-md-4 mb-4 form-control-validation" id="add-kt-jenis-kelompok-lainnya-wrapper" style="display: none;">
<label class="form-label" for="add-kt-jenis-kelompok-lainnya">Sebutkan Jenis Kelompok</label>
<label class="form-label" for="add-kt-jenis-kelompok-lainnya">Sebutkan Jenis Kelompok<span class="text-danger">*</span></label>
<input type="text" class="form-control @error('jenis_kelompok_lainnya') is-invalid @enderror" id="add-kt-jenis-kelompok-lainnya" name="jenis_kelompok_lainnya"
value="{{ old('jenis_kelompok_lainnya') }}" />
@error('jenis_kelompok_lainnya')<div class="error invalid-feedback">{{ $message }}</div>@enderror
@@ -136,9 +138,17 @@
</div>
</div>
@include('produktivitas.survey-kelompok-tani.pengurus-anggota', ['bagianKeanggotaan' => 'ringkasan', 'kelompokTani' => null])
<div class="mt-4 text-end">
<a href="{{ route('kelompok-tani.index') }}" class="btn btn-secondary me-2 wave-effect wave-light">Kembali</a>
<button type="submit" class="btn btn-success data-submit wave-effect wave-light"><i class="ti tabler-device-floppy me-2"></i> Simpan & Lanjutkan</button>
<div class="d-inline-flex flex-wrap justify-content-end gap-2">
<a href="{{ route('kelompok-tani.index') }}" class="btn btn-secondary wave-effect wave-light">
Kembali
</a>
<button type="submit" class="btn btn-success data-submit wave-effect wave-light">
<i class="icon-base ti tabler-check me-1_5 icon-sm" aria-hidden="true"></i> Simpan
</button>
</div>
</div>
</form>
</div>
@@ -157,6 +167,7 @@
function toggleJenisKelompokFields() {
var jenisKelompok = $('#add-kt-jenis-kelompok').val();
$('#add-kt-jenis-kelompok-lainnya').prop('required', jenisKelompok === 'Lainnya').prop('disabled', jenisKelompok !== 'Lainnya');
if (jenisKelompok === 'Lainnya') {
$('#add-kt-jenis-kelompok-lainnya-wrapper').show();
@@ -236,52 +247,6 @@
});
$('#add-kt-desa').select2();
$('#addKelompokTaniForm').validate({
rules: {
nama_responden: { required: true },
nama_kelompok: { required: true },
provinsi_id: { required: true },
kabupaten_id: { required: true },
kecamatan_id: { required: true },
desa_kelurahan_id: { required: true },
jenis_kelompok: { required: true },
jenis_kelompok_lainnya: {
required: function () {
return $('#add-kt-jenis-kelompok').val() === 'Lainnya';
}
},
tahun_berdiri: { min: 1900, max: new Date().getFullYear() }
},
messages: {
nama_responden: { required: 'Nama responden wajib diisi' },
nama_kelompok: { required: 'Nama kelompok wajib diisi' },
provinsi_id: { required: 'Provinsi wajib diisi' },
kabupaten_id: { required: 'Kabupaten/Kota wajib diisi' },
kecamatan_id: { required: 'Kecamatan wajib diisi' },
desa_kelurahan_id: { required: 'Desa/Kelurahan wajib diisi' },
jenis_kelompok: { required: 'Jenis kelompok wajib dipilih' },
jenis_kelompok_lainnya: { required: 'Sebutkan jenis kelompoknya' }
},
errorElement: 'div',
errorPlacement: function (error, element) {
error.addClass('invalid-feedback');
if (element.hasClass('select2-hidden-accessible')) {
element.closest('.form-control-validation').append(error);
} else {
element.closest('.mb-4, .form-control-validation').append(error);
}
},
highlight: function (element) {
$(element).addClass('is-invalid');
},
unhighlight: function (element) {
$(element).removeClass('is-invalid');
},
submitHandler: function (form) {
form.submit();
}
});
});
</script>
@endpush
@@ -1,7 +1,7 @@
@extends('layout.main')
@section('content')
<div class="container-xxl flex-grow-1 container-p-y">
<div class="container-xxl flex-grow-1 container-p-y kelompok-tani-page">
@include('produktivitas.survey-kelompok-tani.header', ['kelompokTani' => $kelompokTani])
@php
@@ -41,18 +41,39 @@
<div class="card mb-6" id="section-aktivitas-fungsi">
<div class="card-body pt-6">
@include('produktivitas.survey-kelompok-tani._alert', [
'section' => 'aktivitas-fungsi',
'errorFields' => ['kegiatan_terlaksana.*', 'kegiatan_terlaksana_lainnya', 'estimasi_panen_minimal', 'estimasi_panen_maksimal', 'satuan_hasil_panen', 'tindakan_hasil_panen.*', 'fungsi_kelompok_bagi_anggota.*', 'fungsi_kelompok_lainnya'],
])
<form method="POST" action="{{ route('kelompok-tani.update', $kelompokTani->id) }}">
<form novalidate method="POST" action="{{ route('kelompok-tani.update', $kelompokTani->id) }}">
@csrf
@method('PUT')
<input type="hidden" name="section" value="aktivitas-fungsi">
<h5 class="pb-4 border-bottom mb-4">Kegiatan Konkret yang Sudah Berjalan</h5>
<p class="text-muted" style="font-size: 0.8rem; margin-top: -0.75rem;">
<h5 class="pb-4 border-bottom mb-4">Frekuensi Pertemuan Rutin</h5>
<div class="row">
<div class="col-md-6 mb-4 form-control-validation">
<label class="form-label" for="af-frekuensi-pertemuan">Frekuensi Pertemuan</label>
<select class="form-select @error('frekuensi_pertemuan') is-invalid @enderror" id="af-frekuensi-pertemuan" name="frekuensi_pertemuan">
<option value="">Pilih Frekuensi Pertemuan</option>
@foreach([
'Tidak pernah/sudah tidak aktif',
'Tidak rutin/tidak terjadwal',
'1x per 2-3 bulan',
'1x per bulan',
'Lebih dari 1x per bulan',
] as $option)
<option value="{{ $option }}" {{ old('frekuensi_pertemuan', $kelompokTani->frekuensi_pertemuan) == $option ? 'selected' : '' }}>{{ $option }}</option>
@endforeach
</select>
@error('frekuensi_pertemuan')<div class="error invalid-feedback">{{ $message }}</div>@enderror
</div>
<div class="col-md-6 mb-4 form-control-validation">
<label class="form-label" for="af-tanggal-pertemuan-terakhir">Tanggal Pertemuan Terakhir</label>
<input type="text" class="form-control @error('tanggal_pertemuan_terakhir') is-invalid @enderror" id="af-tanggal-pertemuan-terakhir" name="tanggal_pertemuan_terakhir"
value="{{ old('tanggal_pertemuan_terakhir', $kelompokTani->tanggal_pertemuan_terakhir?->format('d-m-Y')) }}" />
@error('tanggal_pertemuan_terakhir')<div class="error invalid-feedback">{{ $message }}</div>@enderror
</div>
</div>
<h5 class="pb-4 border-bottom mb-4 mt-4">Kegiatan Konkret yang Sudah Berjalan</h5>
<p class="text-muted small kelompok-tani-help">
Kegiatan yang sudah benar-benar dilaksanakan, bukan rencana. Boleh pilih lebih dari satu.
</p>
<div class="row mb-2">
@@ -99,7 +120,7 @@
</div>
<div class="col-md-3 mb-4 form-control-validation">
<label class="form-label" for="af-satuan-panen">Satuan</label>
<select class="form-control @error('satuan_hasil_panen') is-invalid @enderror" id="af-satuan-panen" name="satuan_hasil_panen">
<select class="form-select @error('satuan_hasil_panen') is-invalid @enderror" id="af-satuan-panen" name="satuan_hasil_panen">
<option value="">Pilih Satuan</option>
<option value="kg" {{ old('satuan_hasil_panen', $kelompokTani->satuan_hasil_panen) == 'kg' ? 'selected' : '' }}>Kg</option>
<option value="ton" {{ old('satuan_hasil_panen', $kelompokTani->satuan_hasil_panen) == 'ton' ? 'selected' : '' }}>Ton</option>
@@ -123,7 +144,7 @@
</div>
<h5 class="pb-4 border-bottom mb-4 mt-4">Peran dan Fungsi Kelompok</h5>
<p class="text-muted" style="font-size: 0.8rem; margin-top: -0.75rem;">
<p class="text-muted small kelompok-tani-help">
Fungsi yang melekat secara struktural pada kelompok ini, terlepas dari seberapa sering kegiatannya berjalan.
</p>
<div class="row mb-2">
@@ -153,13 +174,20 @@
</div>
<div class="mt-4 text-end">
<button type="submit" class="btn btn-success wave-effect wave-light">
<i class="ti tabler-device-floppy me-2"></i> Simpan Aktivitas & Fungsi
</button>
<div class="d-inline-flex flex-wrap justify-content-end gap-2">
<a href="{{ route('kelompok-tani.index') }}" class="btn btn-secondary wave-effect wave-light">
Kembali
</a>
<button type="submit" class="btn btn-success wave-effect wave-light">
<i class="icon-base ti tabler-check me-1_5 icon-sm" aria-hidden="true"></i> Simpan
</button>
</div>
</div>
</form>
</div>
</div>
@include('produktivitas.survey-kelompok-tani.aset-keuangan')
@include('produktivitas.survey-kelompok-tani.bantuan-penilaian')
</div>
@endsection
@@ -167,6 +195,10 @@
<script>
'use strict';
$(document).ready(function () {
$('#af-frekuensi-pertemuan').select2();
$('#af-tanggal-pertemuan-terakhir').flatpickr({
dateFormat: 'd-m-Y'
});
function toggleLainnya(checkboxSelector, wrapperSelector, textInputSelector) {
var $checkbox = $(checkboxSelector);
@@ -1,9 +1,3 @@
@extends('layout.main')
@section('content')
<div class="container-xxl flex-grow-1 container-p-y">
@include('produktivitas.survey-kelompok-tani.header', ['kelompokTani' => $kelompokTani])
@php
$jenisAsetBaku = \App\Http\Controllers\Web\Produktivitas\AsetKelompokTaniController::JENIS_ASET_BAKU;
$asetTersimpan = $kelompokTani->aset->keyBy('jenis_aset');
@@ -11,19 +5,18 @@
$statusPengelolaanOptions = ['Swadaya', 'Hibah', 'Pinjaman', 'Sewa'];
$kondisiOptions = ['Berfungsi', 'Perlu perbaikan/evaluasi', 'Rusak/tidak bisa dipakai', 'Mangkrak'];
$asetLainnyaBaru = old('aset_lainnya') ?: [[]];
$indexKas = array_search('Kas/simpanan kelompok', $jenisAsetBaku, true);
$memilikiKas = (bool) old("aset.$indexKas.status_aset", $asetTersimpan->get('Kas/simpanan kelompok')?->status_aset ?? false);
@endphp
{{-- ASET PRODUKTIF --}}
<div class="card mb-6" id="section-aset-baku">
<div class="card-body pt-6">
@include('produktivitas.survey-kelompok-tani._alert', [
'section' => 'aset-baku',
'errorFields' => ['aset.*'],
])
<h5 class="pb-4 border-bottom mb-4">Aset Produktif Milik Kelompok</h5>
<p class="text-muted small"><span class="text-danger">*</span> Wajib diisi untuk aset yang dipilih Ada.</p>
<form method="POST" action="{{ route('kelompok-tani.aset-keuangan.update', $kelompokTani->id) }}">
<form novalidate id="aset-produktif-form" method="POST" action="{{ route('kelompok-tani.aset-keuangan.update', $kelompokTani->id) }}">
@csrf
@method('PUT')
@@ -33,43 +26,56 @@
<tr>
<th style="min-width: 180px;">Jenis Aset</th>
<th style="width: 140px;">Ada/Tidak</th>
<th style="min-width: 180px;">Status Pengelolaan</th>
<th style="min-width: 200px;">Kondisi</th>
<th style="min-width: 180px;">Status Pengelolaan <span class="text-danger" aria-hidden="true">*</span></th>
<th style="min-width: 200px;">Kondisi <span class="text-danger" aria-hidden="true">*</span></th>
</tr>
</thead>
<tbody>
@foreach($jenisAsetBaku as $index => $jenis)
@php $row = $asetTersimpan->get($jenis); @endphp
<tr>
@php
$row = $asetTersimpan->get($jenis);
$ada = (bool) old("aset.$index.status_aset", $row?->status_aset ?? false);
$statusPengelolaan = old("aset.$index.status_pengelolaan_aset", $row?->status_pengelolaan_aset);
$kondisi = old("aset.$index.kondisi_aset", $row?->kondisi_aset);
@endphp
<tr @if($index === $indexKas) data-aset-kas @endif>
<td>
<input type="hidden" name="aset[{{ $index }}][jenis_aset]" value="{{ $jenis }}">
{{ $jenis }}
</td>
<td>
<div class="form-check">
<input class="form-check-input aset-status-radio" type="radio" name="aset[{{ $index }}][status_aset]" value="1" id="aset-{{ $index }}-ada" data-row="{{ $index }}" {{ $row?->status_aset ? 'checked' : '' }}>
<input class="form-check-input aset-status-radio" type="radio" name="aset[{{ $index }}][status_aset]" value="1" id="aset-{{ $index }}-ada" data-row="{{ $index }}" @checked($ada)>
<label class="form-check-label" for="aset-{{ $index }}-ada">Ada</label>
</div>
<div class="form-check">
<input class="form-check-input aset-status-radio" type="radio" name="aset[{{ $index }}][status_aset]" value="0" id="aset-{{ $index }}-tidak" data-row="{{ $index }}" {{ !$row || !$row->status_aset ? 'checked' : '' }}>
<input class="form-check-input aset-status-radio" type="radio" name="aset[{{ $index }}][status_aset]" value="0" id="aset-{{ $index }}-tidak" data-row="{{ $index }}" @checked(!$ada)>
<label class="form-check-label" for="aset-{{ $index }}-tidak">Tidak</label>
</div>
</td>
<td>
<select class="form-select form-select-sm aset-detail-select" name="aset[{{ $index }}][status_pengelolaan_aset]" {{ !$row?->status_aset ? 'disabled' : '' }}>
<option value="">-</option>
<select class="form-select aset-detail-select @error("aset.$index.status_pengelolaan_aset") is-invalid @enderror" id="aset-{{ $index }}-status-pengelolaan" name="aset[{{ $index }}][status_pengelolaan_aset]" aria-label="Status Pengelolaan {{ $jenis }}" @disabled(!$ada) @required($ada)
@error("aset.$index.status_pengelolaan_aset") aria-invalid="true" aria-describedby="aset-{{ $index }}-status-pengelolaan-error" @enderror>
<option value="">Pilih status pengelola</option>
@foreach($statusPengelolaanOptions as $option)
<option value="{{ $option }}" {{ $row?->status_pengelolaan_aset == $option ? 'selected' : '' }}>{{ $option }}</option>
<option value="{{ $option }}" @selected($statusPengelolaan == $option)>{{ $option }}</option>
@endforeach
</select>
<div class="invalid-feedback" id="aset-{{ $index }}-status-pengelolaan-error" role="alert">
@error("aset.$index.status_pengelolaan_aset") {{ $message }} @else Status Pengelolaan wajib diisi jika aset dipilih Ada. @enderror
</div>
</td>
<td>
<select class="form-select form-select-sm aset-detail-select" name="aset[{{ $index }}][kondisi_aset]" {{ !$row?->status_aset ? 'disabled' : '' }}>
<option value="">-</option>
<select class="form-select aset-detail-select @error("aset.$index.kondisi_aset") is-invalid @enderror" id="aset-{{ $index }}-kondisi" name="aset[{{ $index }}][kondisi_aset]" aria-label="Kondisi {{ $jenis }}" @disabled(!$ada) @required($ada)
@error("aset.$index.kondisi_aset") aria-invalid="true" aria-describedby="aset-{{ $index }}-kondisi-error" @enderror>
<option value="">Pilih kondisi</option>
@foreach($kondisiOptions as $option)
<option value="{{ $option }}" {{ $row?->kondisi_aset == $option ? 'selected' : '' }}>{{ $option }}</option>
<option value="{{ $option }}" @selected($kondisi == $option)>{{ $option }}</option>
@endforeach
</select>
<div class="invalid-feedback" id="aset-{{ $index }}-kondisi-error" role="alert">
@error("aset.$index.kondisi_aset") {{ $message }} @else Kondisi wajib diisi jika aset dipilih Ada. @enderror
</div>
</td>
</tr>
@endforeach
@@ -77,129 +83,121 @@
</table>
</div>
<div class="text-end">
<button type="submit" class="btn btn-success wave-effect wave-light">
<i class="ti tabler-device-floppy me-2"></i> Simpan Aset Produktif
</button>
</div>
</form>
</div>
</div>
<div id="section-aset-lainnya" class="mt-4">
<h6 class="pb-3 border-bottom mb-4">Aset Lainnya</h6>
{{-- ASET LAINNYA (di luar 8 jenis baku, bisa lebih dari satu) --}}
<div class="card mb-6" id="section-aset-lainnya">
<div class="card-body pt-6">
@include('produktivitas.survey-kelompok-tani._alert', [
'section' => 'aset-lainnya',
'errorFields' => ['aset_lainnya.*'],
])
<h5 class="pb-4 border-bottom mb-4">Aset Lainnya</h5>
{{-- DATA LAMA --}}
@if($asetLainnyaList->isNotEmpty())
@foreach($asetLainnyaList as $row)
<div class="row align-items-end border-bottom pb-3 mb-3">
<div class="col-md-4">
<label class="form-label">Jenis Aset</label>
<input type="text" class="form-control" value="{{ $row->jenis_aset }}" disabled>
</div>
<div class="col-md-3">
<label class="form-label">Status Pengelolaan</label>
<input type="text" class="form-control" value="{{ $row->status_pengelolaan_aset }}" disabled>
</div>
<div class="col-md-4">
<label class="form-label">Kondisi</label>
<input type="text" class="form-control" value="{{ $row->kondisi_aset }}" disabled>
</div>
<div class="col-md-1">
<form method="POST" action="{{ route('kelompok-tani.aset-keuangan.destroy', [$kelompokTani->id, $row->id]) }}" class="delete-db-form">
@csrf
@method('DELETE')
<button type="submit" class="btn btn-outline-danger">
<i class="icon-base ti tabler-trash icon-sm"></i>
</button>
</form>
</div>
</div>
@endforeach
@else
<p class="text-muted mb-4">Belum ada aset lainnya di luar daftar baku.</p>
@endif
{{-- TOMBOL PEMBUKA — form tambah disembunyikan dulu karena aset lainnya sifatnya opsional --}}
@php $bukaFormAsetLainnya = old('aset_lainnya') || $errors->has('aset_lainnya.*'); @endphp
<button type="button" class="btn btn-outline-success" id="btn-toggle-aset-lainnya" style="display: {{ $bukaFormAsetLainnya ? 'none' : 'inline-block' }};">
<i class="icon-base ti tabler-plus me-1_5 icon-sm"></i> Tambahkan Aset Lainnya
</button>
{{-- FORM TAMBAH DATA BARU — tetap kebuka kalau baru gagal validasi, biar isian & errornya kelihatan --}}
<div id="aset-lainnya-form-wrapper" style="display: {{ $bukaFormAsetLainnya ? 'block' : 'none' }};" class="mt-4">
<form method="POST" action="{{ route('kelompok-tani.aset-keuangan.store', $kelompokTani->id) }}" class="form-repeater-aset-lainnya">
@csrf
<div data-repeater-list="aset_lainnya">
<div data-repeater-item>
<div class="row align-items-end">
<div class="col-md-4 mb-3">
{{-- DATA LAMA --}}
@if($asetLainnyaList->isNotEmpty())
@foreach($asetLainnyaList as $row)
<div class="row align-items-end border-bottom pb-3 mb-3">
<div class="col-md-4">
<label class="form-label">Jenis Aset</label>
<input type="text" class="form-control aset-lainnya-input" name="jenis_aset" placeholder="Cth: Mesin pengering">
<input type="text" class="form-control" value="{{ $row->jenis_aset }}" disabled>
</div>
<div class="col-md-3 mb-3">
<div class="col-md-3">
<label class="form-label">Status Pengelolaan</label>
<select class="form-select aset-lainnya-select" name="status_pengelolaan_aset">
<option value="">-</option>
@foreach($statusPengelolaanOptions as $option)
<option value="{{ $option }}">{{ $option }}</option>
@endforeach
</select>
<input type="text" class="form-control" value="{{ $row->status_pengelolaan_aset }}" disabled>
</div>
<div class="col-md-4 mb-3">
<div class="col-md-4">
<label class="form-label">Kondisi</label>
<select class="form-select aset-lainnya-select" name="kondisi_aset">
<option value="">-</option>
@foreach($kondisiOptions as $option)
<option value="{{ $option }}">{{ $option }}</option>
@endforeach
</select>
<input type="text" class="form-control" value="{{ $row->kondisi_aset }}" disabled>
</div>
<div class="col-md-1 mb-3">
<button type="button" class="btn btn-outline-danger btn-delete-aset-lainnya" data-repeater-delete disabled>
<div class="col-md-1">
<button type="submit" form="delete-aset-{{ $row->id }}" class="btn btn-outline-danger" aria-label="Hapus aset {{ $row->jenis_aset }}">
<i class="icon-base ti tabler-trash icon-sm"></i>
</button>
</div>
</div>
<hr>
@endforeach
@else
<p class="text-muted mb-4">Belum ada aset lainnya di luar daftar baku.</p>
@endif
{{-- TOMBOL PEMBUKA — form tambah disembunyikan dulu karena aset lainnya sifatnya opsional --}}
@php $bukaFormAsetLainnya = old('aset_lainnya') || $errors->has('aset_lainnya.*'); @endphp
<button type="button" class="btn btn-outline-success" id="btn-toggle-aset-lainnya" style="display: {{ $bukaFormAsetLainnya ? 'none' : 'inline-block' }};">
<i class="icon-base ti tabler-plus me-1_5 icon-sm"></i> Tambahkan Aset Lainnya
</button>
{{-- FORM TAMBAH DATA BARU — tetap kebuka kalau baru gagal validasi, biar isian & errornya kelihatan --}}
<div id="aset-lainnya-form-wrapper" style="display: {{ $bukaFormAsetLainnya ? 'block' : 'none' }};" class="mt-4">
<div class="form-repeater-aset-lainnya">
<div data-repeater-list="aset_lainnya">
@foreach($asetLainnyaBaru as $index => $item)
<div data-repeater-item>
<div class="row align-items-end">
<div class="col-md-4 mb-3">
<label class="form-label">Jenis Aset</label>
<input type="text" class="form-control aset-lainnya-input" name="jenis_aset" placeholder="Contoh: Mesin pengering" value="{{ $item['jenis_aset'] ?? '' }}">
</div>
<div class="col-md-3 mb-3">
<label class="form-label">Status Pengelolaan</label>
<select class="form-select aset-lainnya-select" name="status_pengelolaan_aset">
<option value="">Pilih status pengelola</option>
@foreach($statusPengelolaanOptions as $option)
<option value="{{ $option }}" @selected(($item['status_pengelolaan_aset'] ?? '') == $option)>{{ $option }}</option>
@endforeach
</select>
</div>
<div class="col-md-4 mb-3">
<label class="form-label">Kondisi</label>
<select class="form-select aset-lainnya-select" name="kondisi_aset">
<option value="">Pilih kondisi</option>
@foreach($kondisiOptions as $option)
<option value="{{ $option }}" @selected(($item['kondisi_aset'] ?? '') == $option)>{{ $option }}</option>
@endforeach
</select>
</div>
<div class="col-md-1 mb-3">
<button type="button" class="btn btn-outline-danger btn-delete-aset-lainnya" data-repeater-delete disabled>
<i class="icon-base ti tabler-trash icon-sm"></i>
</button>
</div>
</div>
<hr>
</div>
@endforeach
</div>
<div class="mt-4 d-flex flex-wrap justify-content-between gap-2">
<button type="button" class="btn btn-outline-success" id="btn-tambah-baris-aset-lainnya" data-repeater-create disabled>
<i class="icon-base ti tabler-plus me-1_5 icon-sm"></i> Tambah Baris
</button>
</div>
</div>
</div>
</div>
<div class="mt-4 d-flex justify-content-between">
<button type="button" class="btn btn-outline-success" id="btn-tambah-baris-aset-lainnya" data-repeater-create disabled>
<i class="icon-base ti tabler-plus me-1_5 icon-sm"></i> Tambah Baris
</button>
<button type="submit" class="btn btn-success">
<i class="icon-base ti tabler-check me-1_5 icon-sm"></i> Simpan Aset Lainnya
<div class="mt-4 text-end">
<div class="d-inline-flex flex-wrap justify-content-end gap-2">
<a href="{{ route('kelompok-tani.index') }}" class="btn btn-secondary wave-effect wave-light">
Kembali
</a>
<button type="submit" class="btn btn-success wave-effect wave-light">
<i class="icon-base ti tabler-check me-1_5 icon-sm" aria-hidden="true"></i> Simpan
</button>
</div>
</div>
</form>
@foreach($asetLainnyaList as $row)
<form id="delete-aset-{{ $row->id }}" method="POST" action="{{ route('kelompok-tani.aset-keuangan.destroy', [$kelompokTani->id, $row->id]) }}" class="delete-db-form" hidden>
@csrf
@method('DELETE')
</form>
</div>
@endforeach
</div>
</div>
{{-- KAS / SIMPAN-PINJAM --}}
<div class="card mb-6" id="section-kas">
<div class="card mb-6" id="section-kas" @if(!$memilikiKas) hidden @endif>
<div class="card-body pt-6">
@include('produktivitas.survey-kelompok-tani._alert', [
'section' => 'kas',
'errorFields' => ['pembukuan_kas', 'pengelola_kas', 'masalah_pengelolaan_kas_simpan_pinjam', 'deskripsi_masalah_pengelolaan_kas_simpan_pinjam'],
])
<h5 class="pb-4 border-bottom mb-4">Kapasitas Pengelolaan Kas/Simpan-Pinjam Kelompok</h5>
<p class="text-muted" style="font-size: 0.8rem; margin-top: -0.75rem;">
<p class="text-muted small kelompok-tani-help">
Hanya isi bagian ini jika kelompok memiliki kas/simpan-pinjam (lihat baris "Kas/simpanan kelompok" di tabel aset).
</p>
<form method="POST" action="{{ route('kelompok-tani.update', $kelompokTani->id) }}">
<form novalidate method="POST" action="{{ route('kelompok-tani.update', $kelompokTani->id) }}">
@csrf
@method('PUT')
<input type="hidden" name="section" value="kas">
@@ -207,7 +205,7 @@
<div class="row">
<div class="col-md-4 mb-4 form-control-validation">
<label class="form-label" for="ak-pembukuan-kas">Pembukuan/Pencatatan Keuangan Kas</label>
<select class="form-control @error('pembukuan_kas') is-invalid @enderror" id="ak-pembukuan-kas" name="pembukuan_kas">
<select class="form-select @error('pembukuan_kas') is-invalid @enderror" id="ak-pembukuan-kas" name="pembukuan_kas">
<option value="">Pilih Status Pembukuan</option>
@foreach([
'Tidak ada pencatatan sama sekali',
@@ -227,7 +225,7 @@
</div>
<div class="col-md-4 mb-4 form-control-validation">
<label class="form-label" for="ak-masalah-kas">Pernah Ada Masalah Pengelolaan Kas?</label>
<select class="form-control @error('masalah_pengelolaan_kas_simpan_pinjam') is-invalid @enderror" id="ak-masalah-kas" name="masalah_pengelolaan_kas_simpan_pinjam">
<select class="form-select @error('masalah_pengelolaan_kas_simpan_pinjam') is-invalid @enderror" id="ak-masalah-kas" name="masalah_pengelolaan_kas_simpan_pinjam">
<option value="">Pilih Status</option>
@foreach([
'Tidak pernah ada masalah',
@@ -250,20 +248,51 @@
</div>
<div class="text-end">
<button type="submit" class="btn btn-success wave-effect wave-light">
<i class="ti tabler-device-floppy me-2"></i> Simpan Kas/Simpan-Pinjam
</button>
<div class="d-inline-flex flex-wrap justify-content-end gap-2">
<a href="{{ route('kelompok-tani.index') }}" class="btn btn-secondary wave-effect wave-light">
Kembali
</a>
<button type="submit" class="btn btn-success wave-effect wave-light">
<i class="icon-base ti tabler-check me-1_5 icon-sm" aria-hidden="true"></i> Simpan
</button>
</div>
</div>
</form>
</div>
</div>
</div>
@endsection
@push('scripts')
<script>
'use strict';
$(document).ready(function () {
var assetForm = document.getElementById('aset-produktif-form');
assetForm.addEventListener('invalid', function (event) {
if (!event.target.matches('.aset-detail-select')) return;
event.preventDefault();
var field = event.target;
$(field).addClass('is-invalid').attr({
'aria-invalid': 'true',
'aria-describedby': field.id + '-error'
});
if (field === assetForm.querySelector('.aset-detail-select:invalid')) {
field.focus();
}
}, true);
$('.aset-detail-select').on('change', function () {
if (this.validity.valid) {
$(this).removeClass('is-invalid').removeAttr('aria-invalid aria-describedby');
}
});
function toggleKasSection() {
var memilikiKas = $('[data-aset-kas] .aset-status-radio[value="1"]').is(':checked');
$('#section-kas').prop('hidden', !memilikiKas);
}
toggleKasSection();
$('[data-aset-kas] .aset-status-radio').on('change', toggleKasSection);
function toggleDeskripsiMasalah() {
var val = $('#ak-masalah-kas').val();
$('#ak-deskripsi-masalah-wrapper').toggle(val === 'Pernah, sudah selesai' || val === 'Pernah, masih berlanjut/belum selesai');
@@ -277,9 +306,9 @@
var $row = $(this).closest('tr');
var ada = $(this).val() === '1';
$row.find('.aset-detail-select').prop('disabled', !ada);
$row.find('.aset-detail-select').prop({ disabled: !ada, required: ada });
if (!ada) {
$row.find('.aset-detail-select').val('');
$row.find('.aset-detail-select').val('').removeClass('is-invalid').removeAttr('aria-invalid aria-describedby');
}
});
@@ -298,7 +327,7 @@
}
function rowAdaIsi($row) {
return String($row.find('input[name="jenis_aset"]').val() || '').trim() !== '';
return String($row.find('.aset-lainnya-input').val() || '').trim() !== '';
}
function updateButtons() {
@@ -346,10 +375,10 @@
}
});
$(document).on('input keyup change', '.form-repeater-aset-lainnya input[name="jenis_aset"]', updateButtons);
$(document).on('input keyup change', '.form-repeater-aset-lainnya .aset-lainnya-input', updateButtons);
updateButtons();
$(document).on('submit', '.delete-db-form', function (e) {
$(document).on('submit', '#section-aset-baku .delete-db-form', function (e) {
e.preventDefault();
var form = this;
@@ -1,253 +1,190 @@
@extends('layout.main')
@php
$pernahBantuan = old('pernah_mendapatkan_bantuan', $kelompokTani->pernah_mendapatkan_bantuan);
$tampilkanBantuan = (bool) $pernahBantuan;
$hasSavedAid = $kelompokTani->bantuan->contains(fn ($bantuan) => filled($bantuan->nama_program));
$requireFirstRow = $tampilkanBantuan && !$hasSavedAid;
$bantuanBaru = old('bantuan') ?: [[]];
$bantuanBaru = is_array($bantuanBaru) ? $bantuanBaru : [[]];
@endphp
@section('content')
<div class="container-xxl flex-grow-1 container-p-y">
@include('produktivitas.survey-kelompok-tani.header', ['kelompokTani' => $kelompokTani])
<div class="card mb-6" id="section-status-bantuan">
<div class="card-body pt-6">
<h5 class="pb-4 border-bottom mb-4">Pengalaman Akses Bantuan/Program</h5>
{{-- STATUS AKSES BANTUAN --}}
<div class="card mb-6" id="section-status-bantuan">
<div class="card-body pt-6">
@include('produktivitas.survey-kelompok-tani._alert', [
'section' => 'status-bantuan',
'errorFields' => ['pernah_mendapatkan_bantuan'],
])
<form novalidate id="pengalaman-bantuan-form" method="POST" action="{{ route('kelompok-tani.update', $kelompokTani->id) }}">
@csrf
@method('PUT')
<input type="hidden" name="section" value="status-bantuan">
<h5 class="pb-4 border-bottom mb-4">Pengalaman Akses Bantuan/Program</h5>
<form method="POST" action="{{ route('kelompok-tani.update', $kelompokTani->id) }}">
@csrf
@method('PUT')
<input type="hidden" name="section" value="status-bantuan">
<div class="row">
<div class="col-md-6 mb-4 form-control-validation">
<label class="form-label d-block">Apakah kelompok ini pernah mendapatkan bantuan atau akses program dari pemerintah/lembaga lain?</label>
@php $pernahBantuan = old('pernah_mendapatkan_bantuan', $kelompokTani->pernah_mendapatkan_bantuan); @endphp
<div class="form-check form-check-inline">
<input class="form-check-input" type="radio" name="pernah_mendapatkan_bantuan" value="1" id="sb-pernah" {{ $pernahBantuan ? 'checked' : '' }}>
<label class="form-check-label" for="sb-pernah">Pernah</label>
</div>
<div class="form-check form-check-inline">
<input class="form-check-input" type="radio" name="pernah_mendapatkan_bantuan" value="0" id="sb-belum" {{ !is_null($pernahBantuan) && !$pernahBantuan ? 'checked' : '' }}>
<label class="form-check-label" for="sb-belum">Belum Pernah</label>
</div>
@error('pernah_mendapatkan_bantuan')<div class="error invalid-feedback d-block">{{ $message }}</div>@enderror
<div class="row">
<div class="col-md-6 mb-4 form-control-validation">
<label class="form-label d-block">Apakah kelompok ini pernah mendapatkan bantuan atau akses program dari pemerintah/lembaga lain?<span class="text-danger">*</span></label>
<div class="form-check form-check-inline">
<input class="form-check-input @error('pernah_mendapatkan_bantuan') is-invalid @enderror" type="radio" name="pernah_mendapatkan_bantuan" value="1" id="sb-pernah" @checked($tampilkanBantuan) required>
<label class="form-check-label" for="sb-pernah">Pernah</label>
</div>
<div class="form-check form-check-inline">
<input class="form-check-input @error('pernah_mendapatkan_bantuan') is-invalid @enderror" type="radio" name="pernah_mendapatkan_bantuan" value="0" id="sb-belum" @checked(!is_null($pernahBantuan) && !$tampilkanBantuan) required>
<label class="form-check-label" for="sb-belum">Belum Pernah</label>
</div>
@error('pernah_mendapatkan_bantuan')<div class="error invalid-feedback d-block">{{ $message }}</div>@enderror
</div>
</div>
<div class="text-end">
<button type="submit" class="btn btn-success wave-effect wave-light">
<i class="ti tabler-device-floppy me-2"></i> Simpan Status
</button>
</div>
</form>
</div>
</div>
<div id="section-bantuan" @if(!$tampilkanBantuan) hidden @endif>
<h6 class="pb-3 border-bottom mb-4">Daftar Program/Bantuan yang Pernah Diterima</h6>
<p class="text-muted small mb-4">Minimal satu data bantuan wajib diisi.</p>
{{-- DAFTAR PROGRAM / BANTUAN --}}
<div class="card mb-6" id="section-bantuan">
<div class="card-body pt-6">
@include('produktivitas.survey-kelompok-tani._alert', [
'section' => 'bantuan',
'errorFields' => ['bantuan.*'],
])
<h5 class="pb-4 border-bottom mb-4">Daftar Program/Bantuan yang Pernah Diterima</h5>
<p class="text-muted mb-0" id="bantuan-list-placeholder" style="display: none;">
Set status di atas jadi <strong>"Pernah"</strong> dulu untuk mengisi daftar program/bantuan.
</p>
<div id="bantuan-list-content">
{{-- DATA LAMA --}}
@if($kelompokTani->bantuan->count() > 0)
@foreach($kelompokTani->bantuan as $row)
@forelse($kelompokTani->bantuan as $row)
<div class="row align-items-end border-bottom pb-3 mb-3">
<div class="col-md-3">
<label class="form-label">Nama Program/Bantuan</label>
<label class="form-label">Nama Program/Bantuan @if($loop->first)<span class="text-danger bantuan-saved-required-mark" aria-hidden="true">*</span>@endif</label>
<input type="text" class="form-control" value="{{ $row->nama_program }}" disabled>
</div>
<div class="col-md-3">
<label class="form-label">Penyelenggara</label>
<label class="form-label">Penyelenggara @if($loop->first)<span class="text-danger bantuan-saved-required-mark" aria-hidden="true">*</span>@endif</label>
<input type="text" class="form-control" value="{{ $row->penyelenggara }}" disabled>
</div>
<div class="col-md-3">
<label class="form-label">Bentuk Bantuan</label>
<label class="form-label">Bentuk Bantuan @if($loop->first)<span class="text-danger bantuan-saved-required-mark" aria-hidden="true">*</span>@endif</label>
<input type="text" class="form-control" value="{{ $row->bentuk_bantuan }}" disabled>
</div>
<div class="col-md-2">
<label class="form-label">Tahun</label>
<label class="form-label">Tahun @if($loop->first)<span class="text-danger bantuan-saved-required-mark" aria-hidden="true">*</span>@endif</label>
<input type="text" class="form-control" value="{{ $row->tahun }}" disabled>
</div>
<div class="col-md-1">
<form method="POST" action="{{ route('kelompok-tani.bantuan-penilaian.destroy', [$kelompokTani->id, $row->id]) }}" class="delete-db-form">
@csrf
@method('DELETE')
<button type="submit" class="btn btn-outline-danger">
<i class="icon-base ti tabler-trash icon-sm"></i>
</button>
</form>
<button type="submit" form="delete-bantuan-{{ $row->id }}" class="btn btn-outline-danger" aria-label="Hapus bantuan {{ $row->nama_program }}">
<i class="icon-base ti tabler-trash icon-sm"></i>
</button>
</div>
</div>
@endforeach
@else
<p class="text-muted mb-4">Belum ada data program/bantuan.</p>
@endif
@empty
<p class="text-muted mb-4">Belum ada data program/bantuan.</p>
@endforelse
{{-- FORM TAMBAH DATA BARU --}}
<form method="POST" action="{{ route('kelompok-tani.bantuan-penilaian.store', $kelompokTani->id) }}" class="form-repeater-bantuan">
@csrf
<div data-repeater-list="bantuan">
<div data-repeater-item>
<div class="row align-items-end">
<div class="col-md-3 mb-3">
<label class="form-label">Nama Program/Bantuan</label>
<input type="text" class="form-control bantuan-input" name="nama_program" placeholder="Cth: Bantuan Bibit Kakao">
</div>
<div class="col-md-3 mb-3">
<label class="form-label">Penyelenggara</label>
<input type="text" class="form-control bantuan-input" name="penyelenggara" placeholder="Cth: Dinas Pertanian">
</div>
<div class="col-md-3 mb-3">
<label class="form-label">Bentuk Bantuan</label>
<input type="text" class="form-control bantuan-input" name="bentuk_bantuan" placeholder="Cth: Bibit, pupuk, pelatihan">
</div>
<div class="col-md-2 mb-3">
<label class="form-label">Tahun</label>
<input type="number" class="form-control" name="tahun" placeholder="Cth: 2023" min="1900" max="{{ date('Y') }}">
</div>
<div class="col-md-1 mb-3">
<button type="button" class="btn btn-outline-danger btn-delete-bantuan" data-repeater-delete disabled>
<i class="icon-base ti tabler-trash icon-sm"></i>
</button>
</div>
<fieldset id="bantuan-fields" @disabled(!$tampilkanBantuan)>
<div class="form-repeater-bantuan" data-has-saved-bantuan="{{ $hasSavedAid ? '1' : '0' }}">
<div data-repeater-list="bantuan">
@foreach($bantuanBaru as $index => $item)
@php
$item = is_array($item) ? $item : [];
$required = $loop->first && $requireFirstRow;
@endphp
<div data-repeater-item>
<div class="row align-items-end">
<div class="col-md-3 mb-3">
<label class="form-label">Nama Program/Bantuan <span class="text-danger bantuan-required-mark" @if(!$required) hidden @endif>*</span></label>
<input type="text" class="form-control bantuan-input @error("bantuan.$index.nama_program") is-invalid @enderror" name="nama_program" placeholder="Contoh: Bantuan Bibit Kakao" value="{{ $item['nama_program'] ?? '' }}" @required($required)>
@error("bantuan.$index.nama_program")<div class="invalid-feedback">{{ $message }}</div>@enderror
</div>
<div class="col-md-3 mb-3">
<label class="form-label">Penyelenggara <span class="text-danger bantuan-required-mark" @if(!$required) hidden @endif>*</span></label>
<input type="text" class="form-control bantuan-input @error("bantuan.$index.penyelenggara") is-invalid @enderror" name="penyelenggara" placeholder="Contoh: Dinas Pertanian" value="{{ $item['penyelenggara'] ?? '' }}" @required($required)>
@error("bantuan.$index.penyelenggara")<div class="invalid-feedback">{{ $message }}</div>@enderror
</div>
<div class="col-md-3 mb-3">
<label class="form-label">Bentuk Bantuan <span class="text-danger bantuan-required-mark" @if(!$required) hidden @endif>*</span></label>
<input type="text" class="form-control bantuan-input @error("bantuan.$index.bentuk_bantuan") is-invalid @enderror" name="bentuk_bantuan" placeholder="Contoh: Bibit, pupuk, pelatihan" value="{{ $item['bentuk_bantuan'] ?? '' }}" @required($required)>
@error("bantuan.$index.bentuk_bantuan")<div class="invalid-feedback">{{ $message }}</div>@enderror
</div>
<div class="col-md-2 mb-3">
<label class="form-label">Tahun <span class="text-danger bantuan-required-mark" @if(!$required) hidden @endif>*</span></label>
<input type="number" class="form-control bantuan-year-input @error("bantuan.$index.tahun") is-invalid @enderror" name="tahun" placeholder="Contoh: 2023" min="1900" max="{{ date('Y') }}" value="{{ $item['tahun'] ?? '' }}" @required($required)>
@error("bantuan.$index.tahun")<div class="invalid-feedback">{{ $message }}</div>@enderror
</div>
<div class="col-md-1 mb-3">
<button type="button" class="btn btn-outline-danger btn-delete-bantuan" data-repeater-delete disabled>
<i class="icon-base ti tabler-trash icon-sm"></i>
</button>
</div>
</div>
<hr>
</div>
@endforeach
</div>
<hr>
</div>
</div>
<div class="mt-4 d-flex justify-content-between">
<button type="button" class="btn btn-outline-success" id="btn-tambah-bantuan" data-repeater-create disabled>
<i class="icon-base ti tabler-plus me-1_5 icon-sm"></i> Tambah Baris
</button>
<button type="submit" class="btn btn-success">
<i class="icon-base ti tabler-check me-1_5 icon-sm"></i> Simpan Daftar Bantuan
</button>
</div>
</form>
<button type="button" class="btn btn-outline-success" id="btn-tambah-bantuan" data-repeater-create disabled>
<i class="icon-base ti tabler-plus me-1_5 icon-sm"></i> Tambah Baris
</button>
</div>
</fieldset>
</div>
</div>
</div>
{{-- POTENSI MITRA AGREGASI --}}
<div class="card mb-6" id="section-penilaian">
<div class="card-body pt-6">
@include('produktivitas.survey-kelompok-tani._alert', [
'section' => 'penilaian',
'errorFields' => ['potensi_kelompok', 'alasan_penilaian_potensi'],
])
<h5 class="pb-4 border-bottom mb-4">Potensi sebagai Mitra Agregasi/Pengolahan Kolektif</h5>
<p class="text-muted" style="font-size: 0.8rem; margin-top: -0.75rem;">
Ini penilaian enumerator, bukan pernyataan langsung dari responden — dasarkan pada kombinasi kegiatan, fungsi, dan aset yang sudah tergali di tab-tab sebelumnya.
</p>
<form method="POST" action="{{ route('kelompok-tani.update', $kelompokTani->id) }}">
@csrf
@method('PUT')
<input type="hidden" name="section" value="penilaian">
<div class="row">
<div class="col-md-4 mb-4 form-control-validation">
<label class="form-label" for="pn-potensi-kelompok">Tingkat Potensi</label>
<select class="form-control @error('potensi_kelompok') is-invalid @enderror" id="pn-potensi-kelompok" name="potensi_kelompok">
<option value="">Pilih Tingkat Potensi</option>
<option value="Rendah" {{ old('potensi_kelompok', $kelompokTani->potensi_kelompok) == 'Rendah' ? 'selected' : '' }}>Rendah — belum ada kapasitas/aktivitas yang mendukung</option>
<option value="Sedang" {{ old('potensi_kelompok', $kelompokTani->potensi_kelompok) == 'Sedang' ? 'selected' : '' }}>Sedang — ada sebagian kapasitas, perlu penguatan lebih jauh</option>
<option value="Tinggi" {{ old('potensi_kelompok', $kelompokTani->potensi_kelompok) == 'Tinggi' ? 'selected' : '' }}>Tinggi — kapasitas dan aktivitas sudah mendukung peran ini</option>
</select>
@error('potensi_kelompok')<div class="error invalid-feedback">{{ $message }}</div>@enderror
</div>
<div class="col-md-8 mb-4 form-control-validation">
<label class="form-label" for="pn-alasan-penilaian">Alasan Penilaian</label>
<textarea class="form-control @error('alasan_penilaian_potensi') is-invalid @enderror" id="pn-alasan-penilaian" name="alasan_penilaian_potensi" rows="2">{{ old('alasan_penilaian_potensi', $kelompokTani->alasan_penilaian_potensi) }}</textarea>
@error('alasan_penilaian_potensi')<div class="error invalid-feedback">{{ $message }}</div>@enderror
</div>
</div>
<div class="text-end">
<button type="submit" class="btn btn-success wave-effect wave-light">
<i class="ti tabler-device-floppy me-2"></i> Simpan Penilaian
<div class="mt-4 text-end">
<div class="d-inline-flex flex-wrap justify-content-end gap-2">
<a href="{{ route('kelompok-tani.index') }}" class="btn btn-secondary wave-effect wave-light">
Kembali
</a>
<button type="submit" class="btn btn-success wave-effect wave-light">
<i class="icon-base ti tabler-check me-1_5 icon-sm" aria-hidden="true"></i> Simpan
</button>
</div>
</div>
</form>
@foreach($kelompokTani->bantuan as $row)
<form id="delete-bantuan-{{ $row->id }}" method="POST" action="{{ route('kelompok-tani.bantuan-penilaian.destroy', [$kelompokTani->id, $row->id]) }}" class="delete-db-form" hidden>
@csrf
@method('DELETE')
</form>
</div>
@endforeach
</div>
</div>
@endsection
@push('scripts')
<script>
'use strict';
$(function () {
$('#pn-potensi-kelompok').select2();
// Daftar bantuan cuma relevan kalau status-nya "Pernah" — biar nggak kontradiktif
// (jawab "Belum Pernah" tapi daftar bantuannya keisi).
function toggleDaftarBantuan() {
var pernah = $('#sb-pernah').is(':checked');
$('#bantuan-list-content').toggle(pernah);
$('#bantuan-list-placeholder').toggle(!pernah);
$('#section-bantuan').prop('hidden', !pernah);
$('#bantuan-fields').prop('disabled', !pernah);
updateButtons();
}
toggleDaftarBantuan();
$('#sb-pernah, #sb-belum').on('change', toggleDaftarBantuan);
var $form = $('.form-repeater-bantuan');
var $repeater = $('.form-repeater-bantuan');
var $btnTambah = $('#btn-tambah-bantuan');
function getRows() {
return $form.find('[data-repeater-item]');
}
function rowAdaIsi($row) {
return $row.find('.bantuan-input').toArray().some(function (input) {
return $row.find('.bantuan-input, .bantuan-year-input').toArray().some(function (input) {
return String($(input).val() || '').trim() !== '';
});
}
function rowLengkap($row) {
var $inputs = $row.find('.bantuan-input');
return $inputs.toArray().every(function (input) {
return $row.find('.bantuan-input, .bantuan-year-input[required]').toArray().every(function (input) {
return String($(input).val() || '').trim() !== '';
});
}
function updateButtons() {
var $rows = getRows();
var $lastRow = $rows.last();
$rows.each(function () {
var $row = $(this);
$row.find('.btn-delete-bantuan').prop('disabled', !rowAdaIsi($row));
var $rows = $repeater.find('[data-repeater-item]');
var needsFirst = $('#sb-pernah').is(':checked') && $repeater.attr('data-has-saved-bantuan') !== '1';
$rows.each(function (index) {
var required = needsFirst && index === 0;
$(this).find('.bantuan-input, .bantuan-year-input').prop('required', required);
$(this).find('.bantuan-required-mark').prop('hidden', !required);
$(this).find('.btn-delete-bantuan').prop('disabled', $rows.length === 1 && (required || !rowAdaIsi($(this))));
});
$btnTambah.prop('disabled', !rowLengkap($lastRow));
$btnTambah.prop('disabled', !rowLengkap($rows.last()));
}
$form.repeater({
$repeater.repeater({
initEmpty: false,
show: function () {
var $row = $(this);
$row.find('.bantuan-input, input[name="tahun"]').val('');
$row.find('.btn-delete-bantuan').prop('disabled', true);
$row.slideDown();
setTimeout(updateButtons, 50);
$(this).find('.bantuan-input, .bantuan-year-input').val('');
$(this).find('.is-invalid').removeClass('is-invalid');
$(this).find('.invalid-feedback').remove();
$(this).slideDown();
updateButtons();
},
hide: function (deleteElement) {
var $row = $(this);
if (!rowAdaIsi($row)) {
deleteElement();
updateButtons();
return;
}
Swal.fire({
@@ -261,22 +198,20 @@ $(function () {
buttonsStyling: false
}).then(function (result) {
if (result.isConfirmed) {
$row.slideUp(deleteElement);
setTimeout(updateButtons, 300);
$row.slideUp(function () { deleteElement(); updateButtons(); });
}
});
}
});
$(document).on('input change', '.form-repeater-bantuan .bantuan-input, .form-repeater-bantuan .bantuan-year-input', updateButtons);
toggleDaftarBantuan();
$('#sb-pernah, #sb-belum').on('change', toggleDaftarBantuan);
$(document).on('input keyup change', '.form-repeater-bantuan .bantuan-input', updateButtons);
updateButtons();
$(document).on('submit', '.delete-db-form', function (e) {
e.preventDefault();
$(document).on('submit', '#section-status-bantuan .delete-db-form', function (event) {
event.preventDefault();
var form = this;
Swal.fire({
title: 'Hapus data ini?',
title: 'Hapus data bantuan ini?',
text: 'Data yang sudah dihapus tidak bisa dikembalikan.',
icon: 'warning',
showCancelButton: true,
@@ -285,9 +220,7 @@ $(function () {
customClass: { confirmButton: 'btn btn-danger me-3', cancelButton: 'btn btn-label-secondary' },
buttonsStyling: false
}).then(function (result) {
if (result.isConfirmed) {
form.submit();
}
if (result.isConfirmed) form.submit();
});
});
});
@@ -1,19 +1,14 @@
@extends('layout.main')
@section('content')
<div class="container-xxl flex-grow-1 container-p-y">
<div class="container-xxl flex-grow-1 container-p-y kelompok-tani-page">
@include('produktivitas.survey-kelompok-tani.header', ['kelompokTani' => $kelompokTani])
<div class="row">
<div class="col-md-12">
<div class="card mb-6" id="section-identitas">
<div class="card-body pt-6">
@include('produktivitas.survey-kelompok-tani._alert', [
'section' => 'identitas',
'errorFields' => ['nama_responden', 'jabatan_responden', 'kontak_responden', 'nama_kelompok', 'desa_kelurahan_id', 'dusun', 'tahun_berdiri', 'jenis_kelompok', 'jenis_kelompok_lainnya', 'nama_gapoktan', 'komoditas_id.*'],
])
<form id="editKelompokTaniForm" action="{{ route('kelompok-tani.update', $kelompokTani->id) }}" method="POST">
<form novalidate id="editKelompokTaniForm" action="{{ route('kelompok-tani.update', $kelompokTani->id) }}" method="POST">
@csrf
@method('PUT')
@@ -21,7 +16,7 @@
<div class="row">
<div class="col-md-4 mb-4 form-control-validation">
<label class="form-label" for="edit-kt-nama-responden">Nama Responden<span class="text-danger">*</span></label>
<input type="text" class="form-control @error('nama_responden') is-invalid @enderror" id="edit-kt-nama-responden" name="nama_responden"
<input type="text" class="form-control @error('nama_responden') is-invalid @enderror" id="edit-kt-nama-responden" name="nama_responden" required
placeholder="Cth: John Doe" value="{{ old('nama_responden', $kelompokTani->nama_responden) }}" />
@error('nama_responden')<div class="error invalid-feedback">{{ $message }}</div>@enderror
</div>
@@ -43,7 +38,7 @@
<div class="row">
<div class="col-md-6 mb-4 form-control-validation">
<label class="form-label" for="edit-kt-nama-kelompok">Nama Kelompok Tani<span class="text-danger">*</span></label>
<input type="text" class="form-control @error('nama_kelompok') is-invalid @enderror" id="edit-kt-nama-kelompok" name="nama_kelompok"
<input type="text" class="form-control @error('nama_kelompok') is-invalid @enderror" id="edit-kt-nama-kelompok" name="nama_kelompok" required
placeholder="Cth: Kelompok Tani Maju Bersama" value="{{ old('nama_kelompok', $kelompokTani->nama_kelompok) }}" />
@error('nama_kelompok')<div class="error invalid-feedback">{{ $message }}</div>@enderror
</div>
@@ -64,45 +59,48 @@
<div class="row">
<div class="col-md-3 mb-4 form-control-validation">
<label class="form-label" for="edit-kt-provinsi">Provinsi<span class="text-danger">*</span></label>
<select class="form-control @error('provinsi_id') is-invalid @enderror" id="edit-kt-provinsi" name="provinsi_id">
<select class="form-select @error('provinsi_id') is-invalid @enderror" id="edit-kt-provinsi" name="provinsi_id" required>
<option value="">Pilih Provinsi</option>
@foreach($provinsi as $p)
<option value="{{ $p->id }}" {{ old('provinsi_id', $kelompokTani->desaKelurahan?->kecamatan?->kabupatenKota?->provinsi_id) == $p->id ? 'selected' : '' }}>{{ $p->nama }}</option>
@endforeach
</select>
@error('provinsi_id')<div class="error invalid-feedback">{{ $message }}</div>@enderror
</div>
<div class="col-md-3 mb-4 form-control-validation">
<label class="form-label" for="edit-kt-kabupaten">Kabupaten/Kota<span class="text-danger">*</span></label>
<select class="form-control @error('kabupaten_id') is-invalid @enderror" id="edit-kt-kabupaten" name="kabupaten_id">
<select class="form-select @error('kabupaten_id') is-invalid @enderror" id="edit-kt-kabupaten" name="kabupaten_id" required>
<option value="">Pilih Kabupaten/Kota</option>
@if($kelompokTani->desaKelurahan?->kecamatan?->kabupatenKota)
<option value="{{ $kelompokTani->desaKelurahan->kecamatan->kabupatenKota->id }}" selected>{{ $kelompokTani->desaKelurahan->kecamatan->kabupatenKota->nama }}</option>
@endif
@foreach($kabupatenOptions ?? [] as $option)
<option value="{{ $option->id }}" @selected(old('kabupaten_id', $kelompokTani->desaKelurahan?->kecamatan?->kabupaten_kota_id) == $option->id)>{{ $option->nama }}</option>
@endforeach
</select>
@error('kabupaten_id')<div class="error invalid-feedback">{{ $message }}</div>@enderror
</div>
<div class="col-md-3 mb-4 form-control-validation">
<label class="form-label" for="edit-kt-kecamatan">Kecamatan<span class="text-danger">*</span></label>
<select class="form-control @error('kecamatan_id') is-invalid @enderror" id="edit-kt-kecamatan" name="kecamatan_id">
<select class="form-select @error('kecamatan_id') is-invalid @enderror" id="edit-kt-kecamatan" name="kecamatan_id" required>
<option value="">Pilih Kecamatan</option>
@if($kelompokTani->desaKelurahan?->kecamatan)
<option value="{{ $kelompokTani->desaKelurahan->kecamatan->id }}" selected>{{ $kelompokTani->desaKelurahan->kecamatan->nama }}</option>
@endif
@foreach($kecamatanOptions ?? [] as $option)
<option value="{{ $option->id }}" @selected(old('kecamatan_id', $kelompokTani->desaKelurahan?->kecamatan_id) == $option->id)>{{ $option->nama }}</option>
@endforeach
</select>
@error('kecamatan_id')<div class="error invalid-feedback">{{ $message }}</div>@enderror
</div>
<div class="col-md-3 mb-4 form-control-validation">
<label class="form-label" for="edit-kt-desa">Desa/Kelurahan<span class="text-danger">*</span></label>
<select class="form-control @error('desa_kelurahan_id') is-invalid @enderror" id="edit-kt-desa" name="desa_kelurahan_id">
<select class="form-select @error('desa_kelurahan_id') is-invalid @enderror" id="edit-kt-desa" name="desa_kelurahan_id" required>
<option value="">Pilih Desa/Kelurahan</option>
@if($kelompokTani->desaKelurahan)
<option value="{{ $kelompokTani->desaKelurahan->id }}" selected>{{ $kelompokTani->desaKelurahan->nama }}</option>
@endif
@foreach($desaOptions ?? [] as $option)
<option value="{{ $option->id }}" @selected(old('desa_kelurahan_id', $kelompokTani->desa_kelurahan_id) == $option->id)>{{ $option->nama }}</option>
@endforeach
</select>
@error('desa_kelurahan_id')<div class="error invalid-feedback">{{ $message }}</div>@enderror
</div>
</div>
<div class="row">
<div class="col-md-4 mb-4 form-control-validation">
<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 = [
@@ -115,7 +113,7 @@
$currentJenisKelompok = old('jenis_kelompok', $kelompokTani->jenis_kelompok);
$isJenisKelompokLainnya = $currentJenisKelompok && !in_array($currentJenisKelompok, $jenisKelompokOptions);
@endphp
<select class="form-control @error('jenis_kelompok') is-invalid @enderror" id="edit-kt-jenis-kelompok" name="jenis_kelompok">
<select class="form-select @error('jenis_kelompok') is-invalid @enderror" id="edit-kt-jenis-kelompok" name="jenis_kelompok" required>
<option value="">Pilih Jenis Kelompok</option>
@foreach($jenisKelompokOptions as $option)
<option value="{{ $option }}" {{ $currentJenisKelompok == $option ? 'selected' : '' }}>{{ $option }}</option>
@@ -125,7 +123,7 @@
@error('jenis_kelompok')<div class="error invalid-feedback">{{ $message }}</div>@enderror
</div>
<div class="col-md-4 mb-4 form-control-validation" id="edit-kt-jenis-kelompok-lainnya-wrapper" style="display: none;">
<label class="form-label" for="edit-kt-jenis-kelompok-lainnya">Sebutkan Jenis Kelompok</label>
<label class="form-label" for="edit-kt-jenis-kelompok-lainnya">Sebutkan Jenis Kelompok<span class="text-danger">*</span></label>
<input type="text" class="form-control @error('jenis_kelompok_lainnya') is-invalid @enderror" id="edit-kt-jenis-kelompok-lainnya" name="jenis_kelompok_lainnya"
value="{{ old('jenis_kelompok_lainnya', $isJenisKelompokLainnya ? $currentJenisKelompok : null) }}" />
@error('jenis_kelompok_lainnya')<div class="error invalid-feedback">{{ $message }}</div>@enderror
@@ -150,15 +148,24 @@
</div>
</div>
@include('produktivitas.survey-kelompok-tani.pengurus-anggota', ['bagianKeanggotaan' => 'ringkasan'])
<div class="mt-4 text-end">
<a href="{{ route('kelompok-tani.index') }}" class="btn btn-secondary me-2 wave-effect wave-light">Kembali</a>
<button type="submit" class="btn btn-success data-submit wave-effect wave-light"><i class="ti tabler-device-floppy me-2"></i> Simpan</button>
<div class="d-inline-flex flex-wrap justify-content-end gap-2">
<a href="{{ route('kelompok-tani.index') }}" class="btn btn-secondary wave-effect wave-light">
Kembali
</a>
<button type="submit" class="btn btn-success data-submit wave-effect wave-light">
<i class="icon-base ti tabler-check me-1_5 icon-sm" aria-hidden="true"></i> Simpan
</button>
</div>
</div>
</form>
</div>
</div>
</div>
</div>
@include('produktivitas.survey-kelompok-tani.pengurus-anggota')
</div>
@endsection
@@ -171,6 +178,7 @@
function toggleJenisKelompokFields() {
var jenisKelompok = $('#edit-kt-jenis-kelompok').val();
$('#edit-kt-jenis-kelompok-lainnya').prop('required', jenisKelompok === 'Lainnya').prop('disabled', jenisKelompok !== 'Lainnya');
if (jenisKelompok === 'Lainnya') {
$('#edit-kt-jenis-kelompok-lainnya-wrapper').show();
@@ -247,52 +255,6 @@
});
$('#edit-kt-desa').select2();
$('#editKelompokTaniForm').validate({
rules: {
nama_responden: { required: true },
nama_kelompok: { required: true },
provinsi_id: { required: true },
kabupaten_id: { required: true },
kecamatan_id: { required: true },
desa_kelurahan_id: { required: true },
jenis_kelompok: { required: true },
jenis_kelompok_lainnya: {
required: function () {
return $('#edit-kt-jenis-kelompok').val() === 'Lainnya';
}
},
tahun_berdiri: { min: 1900, max: new Date().getFullYear() }
},
messages: {
nama_responden: { required: 'Nama responden wajib diisi' },
nama_kelompok: { required: 'Nama kelompok wajib diisi' },
provinsi_id: { required: 'Provinsi wajib diisi' },
kabupaten_id: { required: 'Kabupaten/Kota wajib diisi' },
kecamatan_id: { required: 'Kecamatan wajib diisi' },
desa_kelurahan_id: { required: 'Desa/Kelurahan wajib diisi' },
jenis_kelompok: { required: 'Jenis kelompok wajib dipilih' },
jenis_kelompok_lainnya: { required: 'Sebutkan jenis kelompoknya' }
},
errorElement: 'div',
errorPlacement: function (error, element) {
error.addClass('invalid-feedback');
if (element.hasClass('select2-hidden-accessible')) {
element.closest('.form-control-validation').append(error);
} else {
element.closest('.mb-4, .form-control-validation').append(error);
}
},
highlight: function (element) {
$(element).addClass('is-invalid');
},
unhighlight: function (element) {
$(element).removeClass('is-invalid');
},
submitHandler: function (form) {
form.submit();
}
});
});
</script>
@endpush
@@ -1,3 +1,5 @@
@include('produktivitas.survey-kelompok-tani._alert')
<style>
@media (min-width: 768px) {
.nav-pills-custom-spacing {
@@ -25,7 +27,7 @@
padding-right: 0.5rem !important;
width: 100%;
white-space: nowrap;
font-size: 0.9375rem !important;
font-size: var(--bs-body-font-size) !important;
}
.nav-pills-custom-spacing .nav-link i {
@@ -45,33 +47,53 @@
: null;
@endphp
<div class="card mb-6">
<div class="card mb-6" id="kelompok-tani-summary">
<div class="card-body p-3">
<div class="d-flex justify-content-start align-items-center flex-wrap row-gap-2">
<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 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>
<div class="d-flex flex-column">
<h5 class="mb-0">{{ isset($kelompokTani) ? $kelompokTani->nama_kelompok : 'Tambah Kelompok Tani Baru' }}</h5>
<span class="text-muted" style="font-size: 0.8rem;">
{{ $lokasiKelompok ?: 'Lengkapi identitas & data responden 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>
@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>
@endif
</div>
</div>
@endif
</div>
@if(isset($kelompokTani))
@@ -84,8 +106,8 @@
</span>
</span>
<div>
<p class="mb-0 text-muted" style="font-size: 0.75rem;">Nama Responden</p>
<span class="fw-medium" style="font-size: 0.85rem;">{{ $kelompokTani->nama_responden ?: '-' }}</span>
<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">
@@ -95,8 +117,8 @@
</span>
</span>
<div>
<p class="mb-0 text-muted" style="font-size: 0.75rem;">Jabatan Responden</p>
<span class="fw-medium" style="font-size: 0.85rem;">{{ $kelompokTani->jabatan_responden ?: '-' }}</span>
<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">
@@ -106,8 +128,8 @@
</span>
</span>
<div>
<p class="mb-0 text-muted" style="font-size: 0.75rem;">Kontak Responden</p>
<span class="fw-medium" style="font-size: 0.85rem;">{{ $kelompokTani->kontak_responden ?: '-' }}</span>
<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">
@@ -117,8 +139,8 @@
</span>
</span>
<div>
<p class="mb-0 text-muted" style="font-size: 0.75rem;">Tahun Berdiri</p>
<span class="fw-medium" style="font-size: 0.85rem;">{{ $kelompokTani->tahun_berdiri ?: '-' }}</span>
<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>
@@ -131,22 +153,9 @@
<li class="nav-item">
<a class="nav-link {{ request()->routeIs('kelompok-tani.create') || (request()->routeIs('kelompok-tani.edit') && !request()->query('section')) ? 'active' : '' }}"
href="{{ isset($kelompokTani) ? route('kelompok-tani.edit', $kelompokTani->id) : route('kelompok-tani.create') }}">
<i class="icon-base ti tabler-id-badge-2 me-1_5 icon-sm"></i>Identitas & Responden
<i class="icon-base ti tabler-user-check me-1_5 icon-sm"></i>Profil
</a>
</li>
<li class="nav-item">
@if(isset($kelompokTani))
<a class="nav-link {{ request()->routeIs('kelompok-tani.pengurus-anggota.*') ? 'active' : '' }}"
href="{{ route('kelompok-tani.pengurus-anggota.index', $kelompokTani->id) }}">
<i class="icon-base ti tabler-users-group me-1_5 icon-sm"></i>Pengurus & Anggota
</a>
@else
<a class="nav-link" href="#" data-bs-toggle="tooltip" data-bs-placement="top"
data-bs-original-title="Simpan Identitas & Responden terlebih dahulu">
<i class="icon-base ti tabler-users-group me-1_5 icon-sm"></i>Pengurus & Anggota
</a>
@endif
</li>
<li class="nav-item">
@if(isset($kelompokTani))
<a class="nav-link {{ request()->routeIs('kelompok-tani.edit') && request()->query('section') === 'kelembagaan' ? 'active' : '' }}"
@@ -155,7 +164,7 @@
</a>
@else
<a class="nav-link" href="#" data-bs-toggle="tooltip" data-bs-placement="top"
data-bs-original-title="Simpan Identitas & Responden terlebih dahulu">
data-bs-original-title="Simpan Profil terlebih dahulu">
<i class="icon-base ti tabler-building-community me-1_5 icon-sm"></i>Kelembagaan
</a>
@endif
@@ -164,25 +173,12 @@
@if(isset($kelompokTani))
<a class="nav-link {{ request()->routeIs('kelompok-tani.edit') && request()->query('section') === 'aktivitas-fungsi' ? 'active' : '' }}"
href="{{ route('kelompok-tani.edit', $kelompokTani->id) }}?section=aktivitas-fungsi">
<i class="icon-base ti tabler-clipboard-list me-1_5 icon-sm"></i>Aktivitas & Fungsi
<i class="icon-base ti tabler-clipboard-list me-1_5 icon-sm"></i>Operasional
</a>
@else
<a class="nav-link" href="#" data-bs-toggle="tooltip" data-bs-placement="top"
data-bs-original-title="Simpan Identitas & Responden terlebih dahulu">
<i class="icon-base ti tabler-clipboard-list me-1_5 icon-sm"></i>Aktivitas & Fungsi
</a>
@endif
</li>
<li class="nav-item">
@if(isset($kelompokTani))
<a class="nav-link {{ request()->routeIs('kelompok-tani.aset-keuangan.*') ? 'active' : '' }}"
href="{{ route('kelompok-tani.aset-keuangan.index', $kelompokTani->id) }}">
<i class="icon-base ti tabler-wallet me-1_5 icon-sm"></i>Aset & Keuangan
</a>
@else
<a class="nav-link" href="#" data-bs-toggle="tooltip" data-bs-placement="top"
data-bs-original-title="Simpan Identitas & Responden terlebih dahulu">
<i class="icon-base ti tabler-wallet me-1_5 icon-sm"></i>Aset & Keuangan
data-bs-original-title="Simpan Profil terlebih dahulu">
<i class="icon-base ti tabler-clipboard-list me-1_5 icon-sm"></i>Operasional
</a>
@endif
</li>
@@ -190,25 +186,12 @@
@if(isset($kelompokTani))
<a class="nav-link {{ request()->routeIs('kelompok-tani.edit') && request()->query('section') === 'sosial-konflik' ? 'active' : '' }}"
href="{{ route('kelompok-tani.edit', $kelompokTani->id) }}?section=sosial-konflik">
<i class="icon-base ti tabler-heart-handshake me-1_5 icon-sm"></i>Sosial & Konflik
<i class="icon-base ti tabler-heart-handshake me-1_5 icon-sm"></i>Sosial
</a>
@else
<a class="nav-link" href="#" data-bs-toggle="tooltip" data-bs-placement="top"
data-bs-original-title="Simpan Identitas & Responden terlebih dahulu">
<i class="icon-base ti tabler-heart-handshake me-1_5 icon-sm"></i>Sosial & Konflik
</a>
@endif
</li>
<li class="nav-item">
@if(isset($kelompokTani))
<a class="nav-link {{ request()->routeIs('kelompok-tani.bantuan-penilaian.*') ? 'active' : '' }}"
href="{{ route('kelompok-tani.bantuan-penilaian.index', $kelompokTani->id) }}">
<i class="icon-base ti tabler-report me-1_5 icon-sm"></i>Bantuan & Penilaian
</a>
@else
<a class="nav-link" href="#" data-bs-toggle="tooltip" data-bs-placement="top"
data-bs-original-title="Simpan Identitas & Responden terlebih dahulu">
<i class="icon-base ti tabler-report me-1_5 icon-sm"></i>Bantuan & Penilaian
data-bs-original-title="Simpan Profil terlebih dahulu">
<i class="icon-base ti tabler-heart-handshake me-1_5 icon-sm"></i>Sosial
</a>
@endif
</li>
@@ -1,29 +1,179 @@
@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-xxl flex-grow-1 container-p-y">
<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">
<x-summary-card
title="Kelompok Tani"
count="{{ number_format($summary->total_kelompok, 0, ',', '.') }}"
subtitle="{{ number_format($summary->total_jenis, 0, ',', '.') }} jenis kelompok"
icon="users-group"
color="primary"
/>
</div>
<div class="col-12 col-md-4">
<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"
/>
</div>
<div class="col-12 col-md-4">
<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"
/>
</div>
</div>
<div class="row g-6 kelompok-filter-row">
<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">
<input type="hidden" name="per_page" value="{{ $kelompokTani->perPage() }}">
<div class="kelompok-filter-line">
<div class="kelompok-filter-label">
<i class="icon-base ti tabler-map-2 me-2"></i><span>Wilayah</span>
</div>
<div>
<input type="hidden" name="kabupaten_kota_id" value="{{ $filters['kabupaten_kota_id'] }}">
<div class="kelompok-filter-static" aria-label="Kabupaten/Kota" role="text">
{{ preg_replace('/^(kabupaten|kota)\s+/i', '', $selectedKabupaten?->nama ?? 'Semua Kabupaten/Kota') }}
</div>
</div>
<div>
<select name="kecamatan_id" id="filter-kecamatan" class="form-select form-select-sm" aria-label="Filter Kecamatan" @disabled(empty($filters['kabupaten_kota_id']))>
<option value="">Semua Kecamatan</option>
@foreach($kecamatanOptions as $option)
<option value="{{ $option->id }}" @selected((string) $filters['kecamatan_id'] === (string) $option->id)>{{ $option->nama }}</option>
@endforeach
</select>
</div>
<div>
<select name="desa_kelurahan_id" id="filter-desa" class="form-select form-select-sm" aria-label="Filter Desa" @disabled(empty($filters['kecamatan_id']))>
<option value="">Semua Desa</option>
@foreach($desaOptions as $option)
<option value="{{ $option->id }}" @selected((string) $filters['desa_kelurahan_id'] === (string) $option->id)>{{ $option->nama }}</option>
@endforeach
</select>
</div>
</div>
<hr class="my-3">
<div class="kelompok-filter-line">
<div class="kelompok-filter-label">
<i class="icon-base ti tabler-adjustments-horizontal me-2"></i><span>Data</span>
</div>
<div>
<select name="komoditas_id" class="form-select form-select-sm" aria-label="Filter Komoditas">
<option value="">Semua Komoditas</option>
@foreach($komoditasOptions as $option)
<option value="{{ $option->id }}" @selected((string) $filters['komoditas_id'] === (string) $option->id)>{{ $option->nama }}</option>
@endforeach
</select>
</div>
<div>
<select name="jenis_kelompok" class="form-select form-select-sm" aria-label="Filter Jenis Kelompok">
<option value="">Semua Jenis Kelompok</option>
@foreach($jenisKelompokOptions as $jenis)
<option value="{{ $jenis }}" @selected($filters['jenis_kelompok'] === $jenis)>{{ $jenis }}</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>
<option value="nama_asc" @selected($filters['sort_by'] === 'nama_asc')>Nama A-Z</option>
<option value="nama_desc" @selected($filters['sort_by'] === 'nama_desc')>Nama Z-A</option>
<option value="anggota_desc" @selected($filters['sort_by'] === 'anggota_desc')>Anggota Terbanyak</option>
<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>
<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>
</div>
</div>
</div>
<div class="card">
<div class="card-header border-bottom">
<h5 class="card-title mb-0">Data Kelompok Tani</h5>
</div>
<div class="card-body border-bottom pt-4">
<form method="GET" action="{{ route('kelompok-tani.index') }}" class="d-flex justify-content-between align-items-center row gap-3 gap-md-0">
<form method="GET" action="{{ route('kelompok-tani.index') }}" class="row g-3 align-items-end">
@foreach($filters as $field => $value)
<input type="hidden" name="{{ $field }}" value="{{ $value }}">
@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()">
<option value="10" {{ request('per_page') == 10 ? 'selected' : '' }}>10</option>
<option value="25" {{ request('per_page') == 25 ? 'selected' : '' }}>25</option>
<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>
</div>
</div>
<div class="col-md-auto d-flex gap-2">
<div class="input-group input-group-sm w-auto">
<input type="text" name="search" class="form-control" placeholder="Cari Nama..." value="{{ request('search') }}">
<button type="submit" class="btn btn-outline-primary"><i class="ti tabler-search"></i></button>
</div>
<div class="col-md-auto ms-md-auto">
<a href="{{ route('kelompok-tani.create') }}" class="btn btn-sm btn-primary">
<i class="ti tabler-plus me-1"></i> Tambah
</a>
@@ -46,9 +196,9 @@
</thead>
<tbody>
@forelse($kelompokTani as $index => $item)
<tr>
<td>{{ $loop->iteration }}</td>
<td><span class="text-heading">{{ $item->nama_kelompok }}</span></td>
<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>
@@ -67,7 +217,7 @@
</table>
</div>
<div class="card-footer d-flex justify-content-center justify-content-md-end border-top">
{{ $kelompokTani->appends(request()->query())->links('pagination::bootstrap-5') }}
{{ $kelompokTani->links('pagination::bootstrap-5') }}
</div>
</div>
</div>
@@ -79,6 +229,37 @@
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');
@@ -1,17 +1,12 @@
@extends('layout.main')
@section('content')
<div class="container-xxl flex-grow-1 container-p-y">
<div class="container-xxl flex-grow-1 container-p-y kelompok-tani-page">
@include('produktivitas.survey-kelompok-tani.header', ['kelompokTani' => $kelompokTani])
<div class="card mb-6" id="section-kelembagaan">
<div class="card-body pt-6">
@include('produktivitas.survey-kelompok-tani._alert', [
'section' => 'kelembagaan',
'errorFields' => ['cakupan_wilayah', 'nama_wilayah_cakupan', 'status_legalitas', 'nomor_sk', 'tanggal_tahun_penerbitan_sk', 'tingkat_keaktifan_ketua', 'status_pembagian_peran', 'status_dokumentasi_rapat', 'frekuensi_pertemuan', 'tanggal_pertemuan_terakhir'],
])
<form method="POST" action="{{ route('kelompok-tani.update', $kelompokTani->id) }}">
<form novalidate method="POST" action="{{ route('kelompok-tani.update', $kelompokTani->id) }}">
@csrf
@method('PUT')
<input type="hidden" name="section" value="kelembagaan">
@@ -20,7 +15,7 @@
<div class="row">
<div class="col-md-4 mb-4 form-control-validation">
<label class="form-label" for="klb-cakupan-wilayah">Cakupan Wilayah Keanggotaan</label>
<select class="form-control @error('cakupan_wilayah') is-invalid @enderror" id="klb-cakupan-wilayah" name="cakupan_wilayah">
<select class="form-select @error('cakupan_wilayah') is-invalid @enderror" id="klb-cakupan-wilayah" name="cakupan_wilayah">
<option value="">Pilih Cakupan Wilayah</option>
@foreach(['RT', 'RW', 'Desa', 'Kecamatan', 'Kabupaten'] as $option)
<option value="{{ $option }}" {{ old('cakupan_wilayah', $kelompokTani->cakupan_wilayah) == $option ? 'selected' : '' }}>{{ $option }}</option>
@@ -37,11 +32,15 @@
</div>
</div>
@php
$statusDenganSk = \App\Models\Pertanian\KelompokTani::STATUS_LEGALITAS_DENGAN_SK;
$skAktif = in_array(old('status_legalitas', $kelompokTani->status_legalitas), $statusDenganSk, true);
@endphp
<h5 class="pb-4 border-bottom mb-4 mt-4">Status Legalitas Kelompok</h5>
<div class="row">
<div class="col-md-6 mb-4 form-control-validation">
<label class="form-label" for="klb-status-legalitas">Status SK/Dokumen Pendaftaran</label>
<select class="form-control @error('status_legalitas') is-invalid @enderror" id="klb-status-legalitas" name="status_legalitas">
<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',
@@ -56,95 +55,28 @@
@error('status_legalitas')<div class="error invalid-feedback">{{ $message }}</div>@enderror
</div>
<div class="col-md-3 mb-4 form-control-validation">
<label class="form-label" for="klb-nomor-sk">Nomor SK (jika ada)</label>
<label class="form-label" for="klb-nomor-sk">Nomor SK</label>
<input type="text" class="form-control @error('nomor_sk') is-invalid @enderror" id="klb-nomor-sk" name="nomor_sk"
value="{{ old('nomor_sk', $kelompokTani->nomor_sk) }}" />
value="{{ old('nomor_sk', $kelompokTani->nomor_sk) }}" @disabled(!$skAktif) />
@error('nomor_sk')<div class="error invalid-feedback">{{ $message }}</div>@enderror
</div>
<div class="col-md-3 mb-4 form-control-validation">
<label class="form-label" for="klb-tanggal-penerbitan-sk">Tanggal/Tahun Penerbitan</label>
<input type="text" class="form-control @error('tanggal_tahun_penerbitan_sk') is-invalid @enderror" id="klb-tanggal-penerbitan-sk" name="tanggal_tahun_penerbitan_sk"
placeholder="Cth: 12-01-2020 atau 2020" value="{{ old('tanggal_tahun_penerbitan_sk', $kelompokTani->tanggal_tahun_penerbitan_sk) }}" />
placeholder="Cth: 12-01-2020 atau 2020" value="{{ old('tanggal_tahun_penerbitan_sk', $kelompokTani->tanggal_tahun_penerbitan_sk) }}" @disabled(!$skAktif) />
@error('tanggal_tahun_penerbitan_sk')<div class="error invalid-feedback">{{ $message }}</div>@enderror
</div>
</div>
<h5 class="pb-4 border-bottom mb-4 mt-4">Kualitas Kepemimpinan</h5>
<div class="row">
<div class="col-md-4 mb-4 form-control-validation">
<label class="form-label" for="klb-keaktifan-ketua">Keaktifan Ketua Kelompok</label>
<select class="form-control @error('tingkat_keaktifan_ketua') is-invalid @enderror" id="klb-keaktifan-ketua" name="tingkat_keaktifan_ketua">
<option value="">Pilih Tingkat Keaktifan</option>
@foreach([
'Tidak aktif/jarang hadir',
'Cukup aktif',
'Sangat aktif dan menjalankan tanggung jawab dengan baik',
] as $option)
<option value="{{ $option }}" {{ old('tingkat_keaktifan_ketua', $kelompokTani->tingkat_keaktifan_ketua) == $option ? 'selected' : '' }}>{{ $option }}</option>
@endforeach
</select>
@error('tingkat_keaktifan_ketua')<div class="error invalid-feedback">{{ $message }}</div>@enderror
</div>
<div class="col-md-4 mb-4 form-control-validation">
<label class="form-label" for="klb-pembagian-peran">Pembagian Peran Pengurus</label>
<select class="form-control @error('status_pembagian_peran') is-invalid @enderror" id="klb-pembagian-peran" name="status_pembagian_peran">
<option value="">Pilih Status Pembagian Peran</option>
@foreach([
'Tidak ada pembagian peran',
'Ada tapi tidak berjalan',
'Ada dan berjalan dengan baik',
] as $option)
<option value="{{ $option }}" {{ old('status_pembagian_peran', $kelompokTani->status_pembagian_peran) == $option ? 'selected' : '' }}>{{ $option }}</option>
@endforeach
</select>
@error('status_pembagian_peran')<div class="error invalid-feedback">{{ $message }}</div>@enderror
</div>
<div class="col-md-4 mb-4 form-control-validation">
<label class="form-label" for="klb-dokumentasi-rapat">Dokumentasi Rapat (Notulen/Daftar Hadir)</label>
<select class="form-control @error('status_dokumentasi_rapat') is-invalid @enderror" id="klb-dokumentasi-rapat" name="status_dokumentasi_rapat">
<option value="">Pilih Status Dokumentasi</option>
@foreach([
'Tidak ada',
'Ada, tidak rutin',
'Ada, rutin setiap pertemuan',
] as $option)
<option value="{{ $option }}" {{ old('status_dokumentasi_rapat', $kelompokTani->status_dokumentasi_rapat) == $option ? 'selected' : '' }}>{{ $option }}</option>
@endforeach
</select>
@error('status_dokumentasi_rapat')<div class="error invalid-feedback">{{ $message }}</div>@enderror
</div>
</div>
<h5 class="pb-4 border-bottom mb-4 mt-4">Frekuensi Pertemuan Rutin</h5>
<div class="row">
<div class="col-md-6 mb-4 form-control-validation">
<label class="form-label" for="klb-frekuensi-pertemuan">Frekuensi Pertemuan</label>
<select class="form-control @error('frekuensi_pertemuan') is-invalid @enderror" id="klb-frekuensi-pertemuan" name="frekuensi_pertemuan">
<option value="">Pilih Frekuensi Pertemuan</option>
@foreach([
'Tidak pernah/sudah tidak aktif',
'Tidak rutin/tidak terjadwal',
'1x per 2-3 bulan',
'1x per bulan',
'Lebih dari 1x per bulan',
] as $option)
<option value="{{ $option }}" {{ old('frekuensi_pertemuan', $kelompokTani->frekuensi_pertemuan) == $option ? 'selected' : '' }}>{{ $option }}</option>
@endforeach
</select>
@error('frekuensi_pertemuan')<div class="error invalid-feedback">{{ $message }}</div>@enderror
</div>
<div class="col-md-6 mb-4 form-control-validation">
<label class="form-label" for="klb-tanggal-pertemuan-terakhir">Tanggal Pertemuan Terakhir</label>
<input type="text" class="form-control @error('tanggal_pertemuan_terakhir') is-invalid @enderror" id="klb-tanggal-pertemuan-terakhir" name="tanggal_pertemuan_terakhir"
value="{{ old('tanggal_pertemuan_terakhir', $kelompokTani->tanggal_pertemuan_terakhir?->format('Y-m-d')) }}" />
@error('tanggal_pertemuan_terakhir')<div class="error invalid-feedback">{{ $message }}</div>@enderror
</div>
</div>
<div class="mt-4 text-end">
<button type="submit" class="btn btn-success wave-effect wave-light">
<i class="ti tabler-device-floppy me-2"></i> Simpan Kelembagaan
</button>
<div class="d-inline-flex flex-wrap justify-content-end gap-2">
<a href="{{ route('kelompok-tani.index') }}" class="btn btn-secondary wave-effect wave-light">
Kembali
</a>
<button type="submit" class="btn btn-success wave-effect wave-light">
<i class="icon-base ti tabler-check me-1_5 icon-sm" aria-hidden="true"></i> Simpan
</button>
</div>
</div>
</form>
</div>
@@ -156,12 +88,15 @@
<script>
'use strict';
$(document).ready(function () {
$('#klb-cakupan-wilayah, #klb-status-legalitas, #klb-keaktifan-ketua, #klb-pembagian-peran, #klb-dokumentasi-rapat, #klb-frekuensi-pertemuan').select2();
$('#klb-tanggal-pertemuan-terakhir').flatpickr({
dateFormat: 'Y-m-d',
altInput: true,
altFormat: 'd-m-Y'
});
$('#klb-cakupan-wilayah, #klb-status-legalitas').select2();
const statusDenganSk = @json($statusDenganSk);
function toggleSkFields() {
const skAktif = statusDenganSk.includes($('#klb-status-legalitas').val());
$('#klb-nomor-sk, #klb-tanggal-penerbitan-sk').prop('disabled', !skAktif);
}
$('#klb-status-legalitas').on('change', toggleSkFields);
toggleSkFields();
});
</script>
@endpush
@@ -1,5 +1,65 @@
@extends('layout.main')
@if(($bagianKeanggotaan ?? 'pengurus') === 'ringkasan')
<div id="section-ringkasan" class="mt-4">
<h5 class="pb-4 border-bottom mb-4">Jumlah Pengurus & Anggota</h5>
<div class="row">
<div class="col-md-3 mb-4 form-control-validation">
<label class="form-label" for="pa-jumlah-pengurus">Jumlah Pengurus (total)</label>
<input type="number" min="0" class="form-control @error('jumlah_pengurus') is-invalid @enderror" id="pa-jumlah-pengurus" name="jumlah_pengurus"
value="{{ old('jumlah_pengurus', $kelompokTani?->jumlah_pengurus) }}" />
@error('jumlah_pengurus')<div class="error invalid-feedback">{{ $message }}</div>@enderror
</div>
<div class="col-md-3 mb-4 form-control-validation">
<label class="form-label" for="pa-jumlah-pengurus-aktif">Jumlah Pengurus Aktif</label>
<input type="number" min="0" class="form-control @error('jumlah_pengurus_aktif') is-invalid @enderror" id="pa-jumlah-pengurus-aktif" name="jumlah_pengurus_aktif"
value="{{ old('jumlah_pengurus_aktif', $kelompokTani?->jumlah_pengurus_aktif) }}" />
@error('jumlah_pengurus_aktif')<div class="error invalid-feedback">{{ $message }}</div>@enderror
</div>
<div class="col-md-3 mb-4 form-control-validation">
<label class="form-label" for="pa-jumlah-anggota-terdaftar">Jumlah Anggota Terdaftar</label>
<input type="number" min="0" class="form-control @error('jumlah_anggota_terdaftar') is-invalid @enderror" id="pa-jumlah-anggota-terdaftar" name="jumlah_anggota_terdaftar"
value="{{ old('jumlah_anggota_terdaftar', $kelompokTani?->jumlah_anggota_terdaftar) }}" />
@error('jumlah_anggota_terdaftar')<div class="error invalid-feedback">{{ $message }}</div>@enderror
</div>
<div class="col-md-3 mb-4 form-control-validation">
<label class="form-label" for="pa-jumlah-anggota-aktif">Jumlah Anggota Aktif <small class="text-muted">(hadir pertemuan rutin)</small></label>
<input type="number" min="0" class="form-control @error('jumlah_anggota_aktif') is-invalid @enderror" id="pa-jumlah-anggota-aktif" name="jumlah_anggota_aktif"
value="{{ old('jumlah_anggota_aktif', $kelompokTani?->jumlah_anggota_aktif) }}" />
@error('jumlah_anggota_aktif')<div class="error invalid-feedback">{{ $message }}</div>@enderror
</div>
</div>
<h5 class="pb-4 border-bottom mb-4 mt-4">Komposisi Gender</h5>
<div class="row">
<div class="col-md-4 mb-4">
<label class="form-label d-block">Jumlah Pengurus (Laki-laki / Perempuan)</label>
<div class="d-flex gap-2">
<input type="number" min="0" class="form-control @error('jumlah_pengurus_laki_laki') is-invalid @enderror" name="jumlah_pengurus_laki_laki"
placeholder="Laki-laki" value="{{ old('jumlah_pengurus_laki_laki', $kelompokTani?->jumlah_pengurus_laki_laki) }}" />
<input type="number" min="0" class="form-control @error('jumlah_pengurus_perempuan') is-invalid @enderror" name="jumlah_pengurus_perempuan"
placeholder="Perempuan" value="{{ old('jumlah_pengurus_perempuan', $kelompokTani?->jumlah_pengurus_perempuan) }}" />
</div>
</div>
<div class="col-md-4 mb-4">
<label class="form-label d-block">Jumlah Anggota (Laki-laki / Perempuan)</label>
<div class="d-flex gap-2">
<input type="number" min="0" class="form-control @error('jumlah_anggota_laki_laki') is-invalid @enderror" name="jumlah_anggota_laki_laki"
placeholder="Laki-laki" value="{{ old('jumlah_anggota_laki_laki', $kelompokTani?->jumlah_anggota_laki_laki) }}" />
<input type="number" min="0" class="form-control @error('jumlah_anggota_perempuan') is-invalid @enderror" name="jumlah_anggota_perempuan"
placeholder="Perempuan" value="{{ old('jumlah_anggota_perempuan', $kelompokTani?->jumlah_anggota_perempuan) }}" />
</div>
</div>
<div class="col-md-4 mb-4">
<label class="form-label d-block">Jumlah Anggota Pemuda (16-30 th) (Laki-laki / Perempuan)</label>
<div class="d-flex gap-2">
<input type="number" min="0" class="form-control @error('jumlah_anggota_pemuda_laki_laki') is-invalid @enderror" name="jumlah_anggota_pemuda_laki_laki"
placeholder="Laki-laki" value="{{ old('jumlah_anggota_pemuda_laki_laki', $kelompokTani?->jumlah_anggota_pemuda_laki_laki) }}" />
<input type="number" min="0" class="form-control @error('jumlah_anggota_pemuda_perempuan') is-invalid @enderror" name="jumlah_anggota_pemuda_perempuan"
placeholder="Perempuan" value="{{ old('jumlah_anggota_pemuda_perempuan', $kelompokTani?->jumlah_anggota_pemuda_perempuan) }}" />
</div>
</div>
</div>
</div>
@else
@push('style')
<style>
.status-switch-row {
@@ -26,99 +86,9 @@
</style>
@endpush
@section('content')
<div class="container-xxl flex-grow-1 container-p-y">
@include('produktivitas.survey-kelompok-tani.header', ['kelompokTani' => $kelompokTani])
{{-- RINGKASAN JUMLAH & KOMPOSISI GENDER --}}
<div class="card mb-6" id="section-ringkasan">
<div class="card-body pt-6">
@include('produktivitas.survey-kelompok-tani._alert', [
'section' => 'ringkasan',
'errorFields' => ['jumlah_pengurus', 'jumlah_pengurus_aktif', 'jumlah_anggota_terdaftar', 'jumlah_anggota_aktif', 'jumlah_pengurus_laki_laki', 'jumlah_pengurus_perempuan', 'jumlah_anggota_laki_laki', 'jumlah_anggota_perempuan', 'jumlah_anggota_pemuda_laki_laki', 'jumlah_anggota_pemuda_perempuan'],
])
<form method="POST" action="{{ route('kelompok-tani.update', $kelompokTani->id) }}">
@csrf
@method('PUT')
<input type="hidden" name="section" value="ringkasan-pengurus">
<h5 class="pb-4 border-bottom mb-4">Jumlah Pengurus & Anggota</h5>
<div class="row">
<div class="col-md-3 mb-4 form-control-validation">
<label class="form-label" for="pa-jumlah-pengurus">Jumlah Pengurus (total)</label>
<input type="number" min="0" class="form-control @error('jumlah_pengurus') is-invalid @enderror" id="pa-jumlah-pengurus" name="jumlah_pengurus"
value="{{ old('jumlah_pengurus', $kelompokTani->jumlah_pengurus) }}" />
@error('jumlah_pengurus')<div class="error invalid-feedback">{{ $message }}</div>@enderror
</div>
<div class="col-md-3 mb-4 form-control-validation">
<label class="form-label" for="pa-jumlah-pengurus-aktif">Jumlah Pengurus Aktif</label>
<input type="number" min="0" class="form-control @error('jumlah_pengurus_aktif') is-invalid @enderror" id="pa-jumlah-pengurus-aktif" name="jumlah_pengurus_aktif"
value="{{ old('jumlah_pengurus_aktif', $kelompokTani->jumlah_pengurus_aktif) }}" />
@error('jumlah_pengurus_aktif')<div class="error invalid-feedback">{{ $message }}</div>@enderror
</div>
<div class="col-md-3 mb-4 form-control-validation">
<label class="form-label" for="pa-jumlah-anggota-terdaftar">Jumlah Anggota Terdaftar</label>
<input type="number" min="0" class="form-control @error('jumlah_anggota_terdaftar') is-invalid @enderror" id="pa-jumlah-anggota-terdaftar" name="jumlah_anggota_terdaftar"
value="{{ old('jumlah_anggota_terdaftar', $kelompokTani->jumlah_anggota_terdaftar) }}" />
@error('jumlah_anggota_terdaftar')<div class="error invalid-feedback">{{ $message }}</div>@enderror
</div>
<div class="col-md-3 mb-4 form-control-validation">
<label class="form-label" for="pa-jumlah-anggota-aktif">Jumlah Anggota Aktif <small class="text-muted">(hadir pertemuan rutin)</small></label>
<input type="number" min="0" class="form-control @error('jumlah_anggota_aktif') is-invalid @enderror" id="pa-jumlah-anggota-aktif" name="jumlah_anggota_aktif"
value="{{ old('jumlah_anggota_aktif', $kelompokTani->jumlah_anggota_aktif) }}" />
@error('jumlah_anggota_aktif')<div class="error invalid-feedback">{{ $message }}</div>@enderror
</div>
</div>
<h5 class="pb-4 border-bottom mb-4 mt-4">Komposisi Gender</h5>
<div class="row">
<div class="col-md-4 mb-4">
<label class="form-label d-block">Jumlah Pengurus (Laki-laki / Perempuan)</label>
<div class="d-flex gap-2">
<input type="number" min="0" class="form-control @error('jumlah_pengurus_laki_laki') is-invalid @enderror" name="jumlah_pengurus_laki_laki"
placeholder="Laki-laki" value="{{ old('jumlah_pengurus_laki_laki', $kelompokTani->jumlah_pengurus_laki_laki) }}" />
<input type="number" min="0" class="form-control @error('jumlah_pengurus_perempuan') is-invalid @enderror" name="jumlah_pengurus_perempuan"
placeholder="Perempuan" value="{{ old('jumlah_pengurus_perempuan', $kelompokTani->jumlah_pengurus_perempuan) }}" />
</div>
</div>
<div class="col-md-4 mb-4">
<label class="form-label d-block">Jumlah Anggota (Laki-laki / Perempuan)</label>
<div class="d-flex gap-2">
<input type="number" min="0" class="form-control @error('jumlah_anggota_laki_laki') is-invalid @enderror" name="jumlah_anggota_laki_laki"
placeholder="Laki-laki" value="{{ old('jumlah_anggota_laki_laki', $kelompokTani->jumlah_anggota_laki_laki) }}" />
<input type="number" min="0" class="form-control @error('jumlah_anggota_perempuan') is-invalid @enderror" name="jumlah_anggota_perempuan"
placeholder="Perempuan" value="{{ old('jumlah_anggota_perempuan', $kelompokTani->jumlah_anggota_perempuan) }}" />
</div>
</div>
<div class="col-md-4 mb-4">
<label class="form-label d-block">Jumlah Anggota Pemuda (16-30 th) <small class="text-muted">L / P</small></label>
<div class="d-flex gap-2">
<input type="number" min="0" class="form-control @error('jumlah_anggota_pemuda_laki_laki') is-invalid @enderror" name="jumlah_anggota_pemuda_laki_laki"
placeholder="Laki-laki" value="{{ old('jumlah_anggota_pemuda_laki_laki', $kelompokTani->jumlah_anggota_pemuda_laki_laki) }}" />
<input type="number" min="0" class="form-control @error('jumlah_anggota_pemuda_perempuan') is-invalid @enderror" name="jumlah_anggota_pemuda_perempuan"
placeholder="Perempuan" value="{{ old('jumlah_anggota_pemuda_perempuan', $kelompokTani->jumlah_anggota_pemuda_perempuan) }}" />
</div>
</div>
</div>
<div class="mt-4 text-end">
<button type="submit" class="btn btn-success wave-effect wave-light">
<i class="ti tabler-device-floppy me-2"></i> Simpan Ringkasan
</button>
</div>
</form>
</div>
</div>
{{-- DAFTAR PENGURUS --}}
<div class="card mb-6" id="section-pengurus">
<div class="card-body pt-6">
@include('produktivitas.survey-kelompok-tani._alert', [
'section' => 'pengurus',
'errorFields' => ['pengurus.*'],
])
<h5 class="pb-4 border-bottom mb-4">Daftar Pengurus</h5>
{{-- DATA LAMA --}}
@@ -159,7 +129,7 @@
@endif
{{-- FORM TAMBAH DATA BARU --}}
<form method="POST" action="{{ route('kelompok-tani.pengurus-anggota.store', $kelompokTani->id) }}" class="form-repeater-pengurus">
<form novalidate method="POST" action="{{ route('kelompok-tani.pengurus-anggota.store', $kelompokTani->id) }}" class="form-repeater-pengurus">
@csrf
<div data-repeater-list="pengurus">
@@ -200,19 +170,22 @@
</div>
</div>
<div class="mt-4 d-flex justify-content-between">
<div class="mt-4 d-flex flex-wrap justify-content-between gap-2">
<button type="button" class="btn btn-outline-success" id="btn-tambah-pengurus" data-repeater-create disabled>
<i class="icon-base ti tabler-plus me-1_5 icon-sm"></i> Tambah Pengurus
</button>
<button type="submit" class="btn btn-success">
<i class="icon-base ti tabler-check me-1_5 icon-sm"></i> Simpan Daftar Pengurus
</button>
<div class="d-inline-flex flex-wrap justify-content-end gap-2">
<a href="{{ route('kelompok-tani.index') }}" class="btn btn-secondary wave-effect wave-light">
Kembali
</a>
<button type="submit" class="btn btn-success wave-effect wave-light">
<i class="icon-base ti tabler-check me-1_5 icon-sm" aria-hidden="true"></i> Simpan
</button>
</div>
</div>
</form>
</div>
</div>
</div>
@endsection
@push('scripts')
<script>
@@ -316,3 +289,4 @@ $(function () {
});
</script>
@endpush
@endif
@@ -1,17 +1,18 @@
@extends('layout.main')
@section('content')
<div class="container-xxl flex-grow-1 container-p-y">
<div class="container-xxl flex-grow-1 container-p-y kelompok-tani-page">
@include('produktivitas.survey-kelompok-tani.header', ['kelompokTani' => $kelompokTani])
@php
$pernahKonflik = in_array(old('konflik_kelompok', $kelompokTani->konflik_kelompok), [
'Pernah, sudah selesai', 'Pernah, masih berlanjut/belum selesai',
], true);
@endphp
<div class="card mb-6" id="section-sosial-konflik">
<div class="card-body pt-6">
@include('produktivitas.survey-kelompok-tani._alert', [
'section' => 'sosial-konflik',
'errorFields' => ['partisipasi_perempuan', 'konflik_kelompok', 'topik_konflik', 'penyelesaian_konflik'],
])
<form method="POST" action="{{ route('kelompok-tani.update', $kelompokTani->id) }}">
<form novalidate method="POST" action="{{ route('kelompok-tani.update', $kelompokTani->id) }}">
@csrf
@method('PUT')
<input type="hidden" name="section" value="sosial-konflik">
@@ -20,7 +21,7 @@
<div class="row">
<div class="col-md-6 mb-4 form-control-validation">
<label class="form-label" for="sk-partisipasi-perempuan">Apakah Perempuan Terlibat Aktif dalam Kegiatan & Pengambilan Keputusan?</label>
<select class="form-control @error('partisipasi_perempuan') is-invalid @enderror" id="sk-partisipasi-perempuan" name="partisipasi_perempuan">
<select class="form-select @error('partisipasi_perempuan') is-invalid @enderror" id="sk-partisipasi-perempuan" name="partisipasi_perempuan">
<option value="">Pilih Status</option>
@foreach([
'Tidak terlibat',
@@ -35,13 +36,10 @@
</div>
<h5 class="pb-4 border-bottom mb-4 mt-4">Riwayat Konflik Internal Kelompok</h5>
<p class="text-muted" style="font-size: 0.8rem; margin-top: -0.75rem;">
Topik ini cukup sensitif. Kalau responden tidak nyaman menjawab, pilih "Tidak bersedia menjawab".
</p>
<div class="row">
<div class="col-md-6 mb-4 form-control-validation">
<label class="form-label" for="sk-konflik-kelompok">Pernah Terjadi Konflik Internal?</label>
<select class="form-control @error('konflik_kelompok') is-invalid @enderror" id="sk-konflik-kelompok" name="konflik_kelompok">
<select class="form-select @error('konflik_kelompok') is-invalid @enderror" id="sk-konflik-kelompok" name="konflik_kelompok">
<option value="">Pilih Status</option>
@foreach([
'Tidak pernah',
@@ -56,11 +54,11 @@
</div>
</div>
<div class="row" id="sk-detail-konflik-wrapper" style="display: none;">
<div class="row" id="sk-detail-konflik-wrapper" @if(!$pernahKonflik) style="display: none;" @endif>
<div class="col-md-6 mb-4 form-control-validation">
<label class="form-label" for="sk-topik-konflik">Jika Pernah, Soal Apa?</label>
<label class="form-label" for="sk-topik-konflik">Jika Pernah, Soal Apa? <span class="text-danger" id="sk-topik-konflik-required" @if(!$pernahKonflik) hidden @endif>*</span></label>
<input type="text" class="form-control @error('topik_konflik') is-invalid @enderror" id="sk-topik-konflik" name="topik_konflik"
placeholder="Cth: Kepemimpinan, pembagian hasil" value="{{ old('topik_konflik', $kelompokTani->topik_konflik) }}" />
placeholder="Contoh: Kepemimpinan, pembagian hasil" value="{{ old('topik_konflik', $kelompokTani->topik_konflik) }}" @required($pernahKonflik) @disabled(!$pernahKonflik) />
@error('topik_konflik')<div class="error invalid-feedback">{{ $message }}</div>@enderror
</div>
<div class="col-md-6 mb-4 form-control-validation">
@@ -71,9 +69,14 @@
</div>
<div class="mt-4 text-end">
<button type="submit" class="btn btn-success wave-effect wave-light">
<i class="ti tabler-device-floppy me-2"></i> Simpan Sosial & Konflik
</button>
<div class="d-inline-flex flex-wrap justify-content-end gap-2">
<a href="{{ route('kelompok-tani.index') }}" class="btn btn-secondary wave-effect wave-light">
Kembali
</a>
<button type="submit" class="btn btn-success wave-effect wave-light">
<i class="icon-base ti tabler-check me-1_5 icon-sm" aria-hidden="true"></i> Simpan
</button>
</div>
</div>
</form>
</div>
@@ -89,7 +92,10 @@
function toggleDetailKonflik() {
var val = $('#sk-konflik-kelompok').val();
$('#sk-detail-konflik-wrapper').toggle(val === 'Pernah, sudah selesai' || val === 'Pernah, masih berlanjut/belum selesai');
var pernah = val === 'Pernah, sudah selesai' || val === 'Pernah, masih berlanjut/belum selesai';
$('#sk-detail-konflik-wrapper').toggle(pernah);
$('#sk-topik-konflik').prop('required', pernah).prop('disabled', !pernah);
$('#sk-topik-konflik-required').prop('hidden', !pernah);
}
toggleDetailKonflik();
$('#sk-konflik-kelompok').on('change', toggleDetailKonflik);
@@ -1,103 +0,0 @@
@extends('layout.main')
@section('content')
<div class="container-xxl flex-grow-1 container-p-y">
<div class="card">
<div class="card-header border-bottom mb-4">
<h5 class="card-title mb-0">Edit Petani</h5>
</div>
<div class="card-body">
<form id="viewPetaniForm">
@if ($errors->any())
<div class="alert alert-danger">
<ul class="mb-0">
@foreach ($errors->all() as $error)
<li>{{ $error }}</li>
@endforeach
</ul>
</div>
@endif
<h6 class="mb-3">Informasi Petani</h6>
<div class="row">
<div class="col-md-3 mb-4 form-control-validation">
<label class="form-label" for="edit-petani-nama">Nama Petani</label>
<input type="text" class="form-control" id="edit-petani-nama" name="nama"
placeholder="Cth: John Doe" value="{{ old('nama', $petani->nama) }}" readonly/>
</div>
<div class="col-md-3 mb-4 form-control-validation">
<label class="form-label" for="edit-petani-jenis-kelamin">Jenis Kelamin</label>
<input type="text" class="form-control" id="edit-petani-jenis-kelamin" name="jenis_kelamin"
value="{{ old('jenis_kelamin', $petani->jenis_kelamin) == '1' ? 'Laki-laki' : 'Perempuan' }}" readonly/>
</div>
<div class="col-md-3 mb-4 form-control-validation">
<label class="form-label" for="edit-petani-tempat-lahir">Tempat Lahir</label>
<input type="text" class="form-control" id="edit-petani-tempat-lahir" name="tempat_lahir" placeholder="Cth: Ngada"
value="{{ old('tempat_lahir', $petani->tempat_lahir) }}" />
</div>
<div class="col-md-3 mb-4 form-control-validation">
<label class="form-label" for="edit-petani-tanggal-lahir">Tanggal Lahir</label>
<input type="date" class="form-control" id="edit-petani-tanggal-lahir" name="tanggal_lahir"
value="{{ old('tanggal_lahir', $petani->tanggal_lahir?->format('d-m-Y')) }}" />
</div>
</div>
<div class="row">
<div class="col-md-3 mb-4 form-control-validation">
<label class="form-label" for="edit-petani-pendidikan-terakhir">Pendidikan Terakhir</label>
<input type="text" class="form-control" id="edit-petani-pendidikan-terakhir" name="pendidikan_terakhir"
value="{{ old('pendidikan_terakhir', $petani->pendidikan_terakhir?->label()) }}" readonly/>
</div>
<div class="col-md-3 mb-4 form-control-validation">
<label class="form-label" for="edit-petani-status-pernikahan">Status Pernikahan<span class="text-danger">*</span></label>
<input type="text" class="form-control" id="edit-petani-status-pernikahan" name="status_perkawinan"
value="{{ old('status_perkawinan', $petani->status_perkawinan?->label()) }}" readonly/>
</div>
</div>
<div class="row">
<div class="col-md-12 mb-4 form-control-validation">
<label class="form-label" for="edit-petani-alamat">Alamat</label>
<input type="text" class="form-control" id="edit-petani-alamat" name="alamat"
placeholder="Cth: Alamat lengkap petani" value="{{ old('alamat', $petani->alamat) }}" />
</div>
</div>
<div class="row">
<div class="col-md-3 mb-4 form-control-validation">
<label class="form-label" for="edit-petani-provinsi">Provinsi</label>
<input type="text" class="form-control" id="edit-petani-provinsi" name="provinsi"
value="{{ old('provinsi', $petani->desaKelurahan?->kecamatan->kabupatenKota->provinsi->nama) }}" readonly/>
</div>
<div class="col-md-3 mb-4 form-control-validation">
<label class="form-label" for="edit-petani-kabupaten">Kabupaten/Kota</label>
<input type="text" class="form-control" id="edit-petani-kabupaten" name="kabupaten"
value="{{ old('kabupaten', $petani->desaKelurahan?->kecamatan->kabupatenKota->nama) }}" readonly/>
</div>
<div class="col-md-3 mb-4 form-control-validation">
<label class="form-label" for="edit-petani-kecamatan">Kecamatan</label>
<input type="text" class="form-control" id="edit-petani-kecamatan" name="kecamatan"
value="{{ old('kecamatan', $petani->desaKelurahan?->kecamatan->nama) }}" readonly/>
</div>
<div class="col-md-3 mb-4 form-control-validation">
<label class="form-label" for="edit-petani-desa">Desa/Kelurahan</label>
<input type="text" class="form-control" id="edit-petani-desa" name="desa"
value="{{ old('desa', $petani->desaKelurahan->nama) }}" readonly/>
</div>
</div>
<div class="mt-4 text-end">
<a href="{{ route('petani.index') }}" class="btn btn-label-secondary me-2">Kembali</a>
</div>
</form>
</div>
</div>
</div>
@endsection
@push('scripts')
<script>
'use strict';
$(document).ready(function () {
});
</script>
@endpush