Update Praktik Budidaya
This commit is contained in:
@@ -119,6 +119,7 @@
|
||||
@error('frekuensi_pemangkasan_pohon_penaung')<div class="error invalid-feedback">{{ $message }}</div>@enderror
|
||||
</div>
|
||||
</div>
|
||||
@if ($petani->isKomoditasVanili())
|
||||
<div class="row">
|
||||
<div class="col-md-4 mb-4 form-control-validation">
|
||||
<label class="form-label d-block fw-medium">Penyerbukan Manual<span class="text-danger">*</span></label>
|
||||
@@ -228,6 +229,7 @@
|
||||
@enderror
|
||||
</div>
|
||||
</div>
|
||||
@endif
|
||||
<h5 class="pb-4 border-bottom mb-4">Praktik Pemupukan</h5>
|
||||
<div class="row">
|
||||
<div class="col-md-4 mb-4 form-control-validation">
|
||||
|
||||
@@ -151,6 +151,7 @@
|
||||
@error('frekuensi_pemangkasan_pohon_penaung')<div class="error invalid-feedback">{{ $message }}</div>@enderror
|
||||
</div>
|
||||
</div>
|
||||
@if ($petani->isKomoditasVanili())
|
||||
<div class="row">
|
||||
<div class="col-md-4 mb-4 form-control-validation">
|
||||
<label class="form-label d-block fw-medium">Penyerbukan Manual<span class="text-danger">*</span></label>
|
||||
@@ -260,6 +261,7 @@
|
||||
@enderror
|
||||
</div>
|
||||
</div>
|
||||
@endif
|
||||
<h5 class="pb-4 border-bottom mb-4">Praktik Pemupukan</h5>
|
||||
<div class="row">
|
||||
<div class="col-md-4 mb-4 form-control-validation">
|
||||
@@ -1406,7 +1408,7 @@
|
||||
<option value="">Pilih tingkat hasil panen</option>
|
||||
@foreach (TingkatPanenReject::options() as $option)
|
||||
<option value="{{ $option['value'] }}"
|
||||
{{ old('praktik_sortasi', $surveyPanen?->praktik_sortasi) == $option['value'] ? 'selected' : '' }}>
|
||||
{{ old('tingkat_reject', $surveyPanen?->hasil_panen_reject) == $option['value'] ? 'selected' : '' }}>
|
||||
{{ $option['label'] }}
|
||||
</option>
|
||||
@endforeach
|
||||
@@ -1423,7 +1425,7 @@
|
||||
class="form-control @error('hasil_panen_reject') is-invalid @enderror"
|
||||
id="hasil-panen-reject"
|
||||
name="hasil_panen_reject"
|
||||
value="{{ old('hasil_panen_reject', $surveyPanen?->hasil_panen_reject) }}"
|
||||
value="{{ old('hasil_panen_reject', $surveyPanen?->jumlah_panen_reject) }}"
|
||||
step="0.01"
|
||||
min="0">
|
||||
<span class="input-group-text">Kg/Musim</span>
|
||||
@@ -1560,6 +1562,9 @@
|
||||
Produktivitas Rata-rata 3 Musim Panen Terakhir per Komoditas
|
||||
</h5>
|
||||
{{-- DATA LAMA --}}
|
||||
@php
|
||||
$labelSatuanProduktivitas = ['ha_tahun' => 'Ha/Tahun', 'pohon_tahun' => 'Pohon/Tahun'];
|
||||
@endphp
|
||||
@if ($surveyProduktivitas->count() > 0)
|
||||
@foreach ($surveyProduktivitas as $row)
|
||||
<div class="row align-items-end border-bottom pb-3 mb-3">
|
||||
@@ -1580,11 +1585,13 @@
|
||||
|
||||
<div class="col-md-3">
|
||||
<label class="form-label">Satuan</label>
|
||||
<input type="text" class="form-control" value="{{ $row->satuan }}" disabled>
|
||||
<input type="text" class="form-control" value="{{ $labelSatuanProduktivitas[$row->satuan] ?? $row->satuan }}" disabled>
|
||||
</div>
|
||||
|
||||
<div class="col-md-2">
|
||||
<form method="POST" action="{{ route('petani.survey-produktivitas.destroy', [$petani->id, $row->id]) }}">
|
||||
<form method="POST"
|
||||
action="{{ route('petani.survey-produktivitas.destroy', [$petani->id, $row->id]) }}"
|
||||
class="delete-db-form">
|
||||
@csrf
|
||||
@method('DELETE')
|
||||
<input type="hidden" name="redirect_fragment" value="section-produktivitas">
|
||||
@@ -1595,12 +1602,14 @@
|
||||
</div>
|
||||
</div>
|
||||
@endforeach
|
||||
@else
|
||||
<p class="text-muted mb-4">Belum ada data produktivitas.</p>
|
||||
@endif
|
||||
|
||||
{{-- FORM TAMBAH DATA BARU --}}
|
||||
<form method="POST"
|
||||
action="{{ route('petani.survey-produktivitas.store', $petani->id) }}"
|
||||
class="form-repeater">
|
||||
class="form-repeater-produktivitas">
|
||||
@csrf
|
||||
<input type="hidden" name="redirect_fragment" value="section-produktivitas">
|
||||
|
||||
@@ -1625,7 +1634,7 @@
|
||||
|
||||
<div class="col-md-4 mb-3">
|
||||
<label class="form-label">Komoditas</label>
|
||||
<select name="komoditas_id" class="form-select @error('produktivitas_komoditas.' . $index . '.komoditas_id') is-invalid @enderror">
|
||||
<select name="komoditas_id" class="form-select produktivitas-input @error('produktivitas_komoditas.' . $index . '.komoditas_id') is-invalid @enderror">
|
||||
<option value="">Pilih Komoditas</option>
|
||||
@foreach ($komoditas as $item)
|
||||
<option value="{{ $item->id }}" @selected((string) data_get($produktivitasRow, 'komoditas_id') === (string) $item->id)>{{ $item->nama }}</option>
|
||||
@@ -1639,7 +1648,7 @@
|
||||
<div class="col-md-3 mb-3">
|
||||
<label class="form-label">Hasil</label>
|
||||
<div class="input-group">
|
||||
<input type="number" name="hasil_panen_3_musim" class="form-control @error('produktivitas_komoditas.' . $index . '.hasil_panen_3_musim') is-invalid @enderror" step="0.01" min="0" value="{{ data_get($produktivitasRow, 'hasil_panen_3_musim') }}">
|
||||
<input type="number" name="hasil_panen_3_musim" class="form-control produktivitas-input @error('produktivitas_komoditas.' . $index . '.hasil_panen_3_musim') is-invalid @enderror" step="0.01" min="0" value="{{ data_get($produktivitasRow, 'hasil_panen_3_musim') }}">
|
||||
<span class="input-group-text">Kg</span>
|
||||
</div>
|
||||
@error('produktivitas_komoditas.' . $index . '.hasil_panen_3_musim')
|
||||
@@ -1651,12 +1660,12 @@
|
||||
<label class="form-label d-block">Satuan</label>
|
||||
|
||||
<label class="form-check form-check-inline">
|
||||
<input class="form-check-input @error('produktivitas_komoditas.' . $index . '.satuan') is-invalid @enderror" type="radio" name="satuan" value="ha_tahun" @checked(data_get($produktivitasRow, 'satuan') === 'ha_tahun')>
|
||||
<input class="form-check-input produktivitas-satuan @error('produktivitas_komoditas.' . $index . '.satuan') is-invalid @enderror" type="radio" name="satuan" value="ha_tahun" @checked(data_get($produktivitasRow, 'satuan') === 'ha_tahun')>
|
||||
<span class="form-check-label">Ha/Tahun</span>
|
||||
</label>
|
||||
|
||||
<label class="form-check form-check-inline">
|
||||
<input class="form-check-input @error('produktivitas_komoditas.' . $index . '.satuan') is-invalid @enderror" type="radio" name="satuan" value="pohon_tahun" @checked(data_get($produktivitasRow, 'satuan') === 'pohon_tahun')>
|
||||
<input class="form-check-input produktivitas-satuan @error('produktivitas_komoditas.' . $index . '.satuan') is-invalid @enderror" type="radio" name="satuan" value="pohon_tahun" @checked(data_get($produktivitasRow, 'satuan') === 'pohon_tahun')>
|
||||
<span class="form-check-label">Pohon/Tahun</span>
|
||||
</label>
|
||||
@error('produktivitas_komoditas.' . $index . '.satuan')
|
||||
@@ -1665,7 +1674,7 @@
|
||||
</div>
|
||||
|
||||
<div class="col-md-2 mb-3">
|
||||
<button type="button" class="btn btn-outline-danger" data-repeater-delete>
|
||||
<button type="button" class="btn btn-outline-danger btn-delete-produktivitas" data-repeater-delete>
|
||||
<i class="icon-base ti tabler-trash icon-sm"></i>
|
||||
</button>
|
||||
</div>
|
||||
@@ -1677,7 +1686,7 @@
|
||||
</div>
|
||||
|
||||
<div class="mt-4 d-flex justify-content-between">
|
||||
<button type="button" class="btn btn-outline-success" data-repeater-create>
|
||||
<button type="button" class="btn btn-outline-success" id="btn-tambah-produktivitas" data-repeater-create>
|
||||
<i class="icon-base ti tabler-plus me-1_5 icon-sm"></i>
|
||||
Tambah Komoditas
|
||||
</button>
|
||||
@@ -1685,7 +1694,8 @@
|
||||
<div class="d-flex flex-wrap justify-content-end gap-2">
|
||||
<a href="{{ route('petani.index') }}#data-petani" class="btn btn-secondary">Kembali</a>
|
||||
<button type="submit" class="btn btn-success">
|
||||
Simpan
|
||||
<i class="icon-base ti tabler-check me-1_5 icon-sm"></i>
|
||||
Simpan Produktivitas
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
@@ -2113,15 +2123,113 @@
|
||||
});
|
||||
</script>
|
||||
<script>
|
||||
// Repeater produktivitas: perilakunya disamakan dengan halaman Pendidikan & Pelatihan.
|
||||
$(function () {
|
||||
$('.form-repeater').repeater({
|
||||
const $form = $('.form-repeater-produktivitas');
|
||||
const $btnTambah = $('#btn-tambah-produktivitas');
|
||||
|
||||
if (!$form.length) {
|
||||
return;
|
||||
}
|
||||
|
||||
function rowAdaIsi($row) {
|
||||
const adaInput = $row.find('.produktivitas-input').toArray().some(function (input) {
|
||||
return String($(input).val() || '').trim() !== '';
|
||||
});
|
||||
|
||||
return adaInput || $row.find('.produktivitas-satuan:checked').length > 0;
|
||||
}
|
||||
|
||||
function rowLengkap($row) {
|
||||
const inputLengkap = $row.find('.produktivitas-input').toArray().every(function (input) {
|
||||
return String($(input).val() || '').trim() !== '';
|
||||
});
|
||||
|
||||
return inputLengkap && $row.find('.produktivitas-satuan:checked').length > 0;
|
||||
}
|
||||
|
||||
function updateButtons() {
|
||||
const $rows = $form.find('[data-repeater-item]');
|
||||
|
||||
$rows.each(function () {
|
||||
$(this).find('.btn-delete-produktivitas').prop('disabled', !rowAdaIsi($(this)));
|
||||
});
|
||||
|
||||
$btnTambah.prop('disabled', !rowLengkap($rows.last()));
|
||||
}
|
||||
|
||||
$form.repeater({
|
||||
initEmpty: false,
|
||||
|
||||
show: function () {
|
||||
$(this).slideDown();
|
||||
const $row = $(this);
|
||||
|
||||
$row.find('.produktivitas-input').val('');
|
||||
$row.find('.produktivitas-satuan').prop('checked', false);
|
||||
$row.find('.is-invalid').removeClass('is-invalid');
|
||||
$row.find('.invalid-feedback').remove();
|
||||
$row.slideDown();
|
||||
|
||||
setTimeout(updateButtons, 50);
|
||||
},
|
||||
|
||||
hide: function (deleteElement) {
|
||||
$(this).slideUp(deleteElement);
|
||||
const $row = $(this);
|
||||
|
||||
if (!rowAdaIsi($row)) {
|
||||
return;
|
||||
}
|
||||
|
||||
// Hanya menghapus baris di form, tidak mengirim ke database
|
||||
Swal.fire({
|
||||
title: 'Hapus baris produktivitas ini?',
|
||||
text: 'Baris ini hanya akan dihapus dari form.',
|
||||
icon: 'warning',
|
||||
showCancelButton: true,
|
||||
confirmButtonText: 'Ya, hapus',
|
||||
cancelButtonText: 'Batal',
|
||||
customClass: {
|
||||
confirmButton: 'btn btn-danger me-3',
|
||||
cancelButton: 'btn btn-label-secondary'
|
||||
},
|
||||
buttonsStyling: false
|
||||
}).then(function (result) {
|
||||
if (result.isConfirmed) {
|
||||
$row.slideUp(deleteElement);
|
||||
setTimeout(updateButtons, 300);
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
$form.on('input keyup change', '.produktivitas-input, .produktivitas-satuan', updateButtons);
|
||||
|
||||
updateButtons();
|
||||
|
||||
// Konfirmasi hapus data yang sudah tersimpan di database
|
||||
$(document).on('submit', '.delete-db-form', function (e) {
|
||||
e.preventDefault();
|
||||
|
||||
const form = this;
|
||||
|
||||
Swal.fire({
|
||||
title: 'Hapus data ini?',
|
||||
text: 'Data yang sudah dihapus tidak bisa dikembalikan.',
|
||||
icon: 'warning',
|
||||
showCancelButton: true,
|
||||
confirmButtonText: 'Ya, hapus',
|
||||
cancelButtonText: 'Batal',
|
||||
customClass: {
|
||||
confirmButton: 'btn btn-danger me-3',
|
||||
cancelButton: 'btn btn-label-secondary'
|
||||
},
|
||||
buttonsStyling: false
|
||||
}).then(function (result) {
|
||||
if (result.isConfirmed) {
|
||||
form.submit();
|
||||
}
|
||||
});
|
||||
});
|
||||
});
|
||||
</script>
|
||||
@endpush
|
||||
|
||||
Reference in New Issue
Block a user