perbaikan petani dan lahan

This commit is contained in:
2026-07-12 23:37:36 +07:00
parent d33bc8a42b
commit 2bf2a68a3a
10 changed files with 332 additions and 142 deletions
@@ -22,16 +22,19 @@
<!-- INFORMASI PETANI -->
<form id="addPetaniForm" action="{{ route('petani.store') }}" method="POST" enctype="multipart/form-data">
@csrf
<input type="file" id="foto" name="foto" accept="image/png,image/jpeg,image/jpg" hidden>
<div class="row">
<div class="col-md-3">
<div class="user-avatar-section">
<div class=" d-flex align-items-center flex-column">
<img
<img id="fotoPreview"
class="img-fluid rounded mb-4"
src="../../assets/img/avatars/1.png"
height="120"
width="120"
alt="User avatar" />
src="{{ $petani->foto ? asset('storage/' . $petani->foto) : '../../assets/img/avatars/1.png' }}"
height="120" width="120"
alt="Foto profil petani"
data-bs-toggle="tooltip" data-bs-placement="top"
data-bs-original-title="Klik untuk menambahkan foto profil petani"
style="cursor:pointer; object-fit:cover;" />
<div class="user-info text-center">
<h5><i>Nama Petani</i></h5>
<span class="badge bg-label-secondary">Petani</span>
@@ -56,7 +59,7 @@
@error('ktp')<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-petani-kk">No. KK<span class="text-danger">*</span></label>
<label class="form-label" for="add-petani-kk">No. KK</label>
<input type="text" class="form-control @error('kk') is-invalid @enderror" id="add-petani-kk" name="kk"
placeholder="Cth: 1234567890" value="{{ old('kk') }}" />
@error('kk')<div class="error invalid-feedback">{{ $message }}</div>@enderror
@@ -79,15 +82,15 @@
@error('tempat_lahir')<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-petani-tanggal-lahir">Tanggal Lahir</label>
<input type="date" class="form-control @error('tanggal_lahir') is-invalid @enderror" id="add-petani-tanggal-lahir" name="tanggal_lahir"
<label class="form-label" for="add-petani-tanggal-lahir">Tanggal Lahir<span class="text-danger">*</span></label>
<input type="text" class="form-control @error('tanggal_lahir') is-invalid @enderror" id="add-petani-tanggal-lahir" name="tanggal_lahir"
value="{{ old('tanggal_lahir') }}" />
@error('tanggal_lahir')<div class="error invalid-feedback">{{ $message }}</div>@enderror
</div>
</div>
<div class="row">
<div class="col-md-3 mb-4 form-control-validation">
<label class="form-label" for="add-petani-pendidikan-terakhir">Pendidikan Terakhir</label>
<label class="form-label" for="add-petani-pendidikan-terakhir">Pendidikan Terakhir<span class="text-danger">*</span></label>
<select class="form-control @error('pendidikan_terakhir') is-invalid @enderror" id="add-petani-pendidikan-terakhir" name="pendidikan_terakhir">
<option value="">Pilih Pendidikan Terakhir</option>
@foreach($pendidikan as $value)
@@ -108,11 +111,24 @@
</div>
</div>
<h5 class="pb-4 border-bottom mb-4 mt-4">Komoditas</h5>
<div class="row">
<div class="col-md-3 mb-4 form-control-validation">
<label class="form-label">Komoditas Utama <span class="text-danger">*</span></label>
<select id="add-petani-komoditas" name="komoditas_id" class="form-select @error('komoditas_id') is-invalid @enderror">
<option value="">Pilih Komoditas</option>
@foreach($komoditas as $k)
<option value="{{ $k->id }}">{{ $k->nama }}</option>
@endforeach
</select>
@error('komoditas_id')<div class="error invalid-feedback">{{ $message }}</div>@enderror
</div>
</div>
<h5 class="pb-4 border-bottom mb-4 mt-4">Domisili dan Kontak</h5>
<div class="row">
<div class="col-md-12 mb-4 form-control-validation">
<label class="form-label" for="add-petani-alamat">Alamat</label>
<label class="form-label" for="add-petani-alamat">Alamat<span class="text-danger">*</span></label>
<textarea class="form-control @error('alamat') is-invalid @enderror" id="add-petani-alamat" name="alamat"
rows="2" placeholder="Cth: Jl. Nama Jalan, Nama Dusun">{{ old('alamat') }}</textarea>
@error('alamat')<div class="error invalid-feedback">{{ $message }}</div>@enderror
@@ -120,7 +136,7 @@
</div>
<div class="row">
<div class="col-md-3 mb-4 form-control-validation">
<label class="form-label" for="add-petani-provinsi">Provinsi</label>
<label class="form-label" for="add-petani-provinsi">Provinsi<span class="text-danger">*</span></label>
<select class="form-control @error('provinsi_id') is-invalid @enderror" id="add-petani-provinsi" name="provinsi_id">
<option value="">Pilih Provinsi</option>
@foreach($provinsi as $p)
@@ -130,21 +146,21 @@
@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-petani-kabupaten">Kabupaten/Kota</label>
<label class="form-label" for="add-petani-kabupaten">Kabupaten/Kota<span class="text-danger">*</span></label>
<select class="form-control @error('kabupaten_id') is-invalid @enderror" id="add-petani-kabupaten" name="kabupaten_id" >
<option value="">Pilih Kabupaten/Kota</option>
</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-petani-kecamatan">Kecamatan</label>
<label class="form-label" for="add-petani-kecamatan">Kecamatan<span class="text-danger">*</span></label>
<select class="form-control @error('kecamatan_id') is-invalid @enderror" id="add-petani-kecamatan" name="kecamatan_id" >
<option value="">Pilih Kecamatan</option>
</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-petani-desa">Desa/Kelurahan</label>
<label class="form-label" for="add-petani-desa">Desa/Kelurahan<span class="text-danger">*</span></label>
<select class="form-control @error('desa_kelurahan_id') is-invalid @enderror" id="add-petani-desa" name="desa_kelurahan_id" >
<option value="">Pilih Desa/Kelurahan</option>
</select>
@@ -205,7 +221,7 @@
<div class="mt-4 text-end">
<a href="{{ route('petani.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">Simpan Profil</button>
<button type="submit" class="btn btn-success data-submit wave-effect wave-light"><i class="ti tabler-device-floppy me-2"> Simpan Profil</button>
</div>
</form>
@@ -222,7 +238,10 @@
$(document).ready(function () {
$('#add-petani-jenis-kelamin, #add-petani-pendidikan-terakhir, #add-petani-pekerjaan-utama, #add-petani-komoditas, #add-petani-pekerjaan-sampingan, #add-petani-komoditas-sampingan, #add-petani-status-pernikahan, #add-petani-status-keluarga, #add-petani-petani-pengumpul').select2();
$('#add-petani-tanggal-lahir').flatpickr({
dateFormat: 'd-m-Y'
});
$('#add-petani-provinsi').select2().change(function(e) {
e.preventDefault();
var provinsiId = $(this).val();
@@ -282,8 +301,29 @@
});
$('#add-petani-desa').select2();
$('#editPetaniForm').validate({
$('#fotoPreview').on('click', function () {
$('#foto').click();
});
$('#foto').on('change', function (e) {
const file = e.target.files[0];
if (!file) return;
const reader = new FileReader();
reader.onload = function (event) {
$('#fotoPreview').attr('src', event.target.result);
};
reader.readAsDataURL(file);
});
// 1 MB = 1048576 bytes
$.validator.addMethod('maxfilesize', function (value, element, param) {
return this.optional(element) || (element.files[0] && element.files[0].size <= param);
}, 'File size must be less than {0} bytes.');
$('#addPetaniForm').validate({
rules: {
nama: { required: true },
ktp: { required: true, digits: true, minlength: 16, maxlength: 16 },
@@ -292,32 +332,36 @@
tanggal_lahir: { required: true, date: true },
jenis_kelamin: { required: true },
pendidikan_terakhir: { required: true },
komoditas_id: { required: true },
alamat: { required: true },
provinsi_id: { required: true },
kabupaten_id: { required: true },
kecamatan_id: { required: true },
desa_kelurahan_id: { required: true },
status_perkawinan: { required: true },
file_ktp: { accept: "image/png, image/jpeg, image/jpg" },
file_kk: { accept: "image/png, image/jpeg, image/jpg" },
foto: { accept: "image/png, image/jpeg, image/jpg", maxfilesize: 2097152 },
file_ktp: { accept: "image/png, image/jpeg, image/jpg", maxfilesize: 2097152 },
file_kk: { accept: "image/png, image/jpeg, image/jpg", maxfilesize: 2097152 },
nomor_telepon: { required: false, digits: true, minlength: 11, maxlength: 13 }
},
messages: {
nama: { required: "Nama petani wajib diisi" },
ktp: { required: "NIK wajib diisi", digits: "NIK harus berupa angka", minlength: "NIK harus 16 digit", maxlength: "NIK harus 16 digit" },
kk: { required: "No. KK wajib diisi", digits: "No. KK harus berupa angka", minlength: "No. KK harus 16 digit", maxlength: "No. KK harus 16 digit" },
kk: { digits: "No. KK harus berupa angka", minlength: "No. KK harus 16 digit", maxlength: "No. KK harus 16 digit" },
tempat_lahir: { required: "Tempat lahir wajib diisi" },
tanggal_lahir: { required: "Tanggal lahir wajib diisi", date: "Format tanggal salah" },
jenis_kelamin: { required: "Jenis kelamin wajib diisi" },
pendidikan_terakhir: { required: "Pendidikan terakhir wajib diisi" },
komoditas_id: { required: "Komoditas wajib diisi" },
alamat: { required: "Alamat 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" },
status_perkawinan: { required: "Status perkawinan wajib diisi" },
file_ktp: { accept: "Format file tidak valid. Harap unggah file berupa gambar (PNG, JPEG, JPG)" },
file_kk: { accept: "Format file tidak valid. Harap unggah file berupa gambar (PNG, JPEG, JPG)" },
foto: { accept: "Format file tidak valid. Harap unggah file berupa gambar (PNG, JPEG, JPG)", maxfilesize: "Ukuran file tidak boleh melebihi 2 MB" },
file_ktp: { accept: "Format file tidak valid. Harap unggah file berupa gambar (PNG, JPEG, JPG)", maxfilesize: "Ukuran file tidak boleh melebihi 2 MB" },
file_kk: { accept: "Format file tidak valid. Harap unggah file berupa gambar (PNG, JPEG, JPG)", maxfilesize: "Ukuran file tidak boleh melebihi 2 MB" },
nomor_telepon: {
digits: "Nomor telepon harus berupa angka",
minlength: "Nomor telepon minimal 11 digit",
@@ -335,6 +379,9 @@
},
unhighlight: function (element) {
$(element).removeClass('is-invalid');
},
submitHandler: function (form) {
form.submit();
}
});
});
@@ -23,19 +23,22 @@
<form id="editPetaniForm" action="{{ route('petani.update', $petani->id) }}" method="POST" enctype="multipart/form-data">
@csrf
@method('PUT')
<input type="file" id="foto" name="foto" accept="image/png,image/jpeg,image/jpg" hidden>
<div class="row">
<div class="col-md-3">
<div class="user-avatar-section">
<div class=" d-flex align-items-center flex-column">
<img
<img id="fotoPreview"
class="img-fluid rounded mb-4"
src="../../assets/img/avatars/1.png"
height="120"
width="120"
alt="User avatar" />
src="{{ $petani->foto ? route('petani.show-image', ['id' => $petani->id, 'field' => 'foto']) : '../../assets/img/avatars/1.png' }}"
height="120" width="120"
alt="Foto profil petani"
data-bs-toggle="tooltip" data-bs-placement="top"
data-bs-original-title="Klik untuk mengganti foto profil petani"
style="cursor:pointer; object-fit:cover;" />
<div class="user-info text-center">
<h5><i>Nama Petani</i></h5>
<span class="badge bg-label-secondary">Petani</span>
<h5><i>{{ $petani->nama }}</i></h5>
<span class="badge bg-label-secondary">Petani {{ $petani->komoditas?->nama }}</span>
</div>
</div>
</div>
@@ -57,7 +60,7 @@
@error('ktp')<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-petani-kk">No. KK<span class="text-danger">*</span></label>
<label class="form-label" for="edit-petani-kk">No. KK</label>
<input type="text" class="form-control @error('kk') is-invalid @enderror" id="edit-petani-kk" name="kk"
placeholder="Cth: 1234567890" value="{{ old('kk', $petani->kk) }}" />
@error('kk')<div class="error invalid-feedback">{{ $message }}</div>@enderror
@@ -80,7 +83,7 @@
@error('tempat_lahir')<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-petani-tanggal-lahir">Tanggal Lahir</label>
<label class="form-label" for="edit-petani-tanggal-lahir">Tanggal Lahir {{ $petani->tanggal_lahir?->format('Y-m-d') }}</label>
<input type="date" class="form-control @error('tanggal_lahir') is-invalid @enderror" id="edit-petani-tanggal-lahir" name="tanggal_lahir"
value="{{ old('tanggal_lahir', $petani->tanggal_lahir?->format('Y-m-d')) }}" />
@error('tanggal_lahir')<div class="error invalid-feedback">{{ $message }}</div>@enderror
@@ -88,7 +91,7 @@
</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>
<label class="form-label" for="edit-petani-pendidikan-terakhir">Pendidikan Terakhir<span class="text-danger">*</span></label>
<select class="form-control @error('pendidikan_terakhir') is-invalid @enderror" id="edit-petani-pendidikan-terakhir" name="pendidikan_terakhir">
<option value="">Pilih Pendidikan Terakhir</option>
@foreach($pendidikan as $value)
@@ -109,11 +112,24 @@
</div>
</div>
<h5 class="pb-4 border-bottom mb-4 mt-4">Komoditas</h5>
<div class="row">
<div class="col-md-3 mb-4 form-control-validation">
<label class="form-label">Komoditas Utama <span class="text-danger">*</span></label>
<select id="edit-petani-komoditas" name="komoditas_id" class="form-select @error('komoditas_id') is-invalid @enderror">
<option value="">Pilih Komoditas</option>
@foreach($komoditas as $k)
<option value="{{ $k->id }}" {{ old('komoditas_id', $petani->komoditas_id) == $k->id ? 'selected' : '' }}>{{ $k->nama }}</option>
@endforeach
</select>
@error('komoditas_id')<div class="error invalid-feedback">{{ $message }}</div>@enderror
</div>
</div>
<h5 class="pb-4 border-bottom mb-4 mt-4">Domisili dan Kontak</h5>
<div class="row">
<div class="col-md-12 mb-4 form-control-validation">
<label class="form-label" for="edit-petani-alamat">Alamat</label>
<label class="form-label" for="edit-petani-alamat">Alamat<span class="text-danger">*</span></label>
<textarea class="form-control @error('alamat') is-invalid @enderror" id="edit-petani-alamat" name="alamat"
rows="2" placeholder="Cth: Jl. Nama Jalan, Nama Dusun">{{ old('alamat', $petani->alamat) }}</textarea>
@error('alamat')<div class="error invalid-feedback">{{ $message }}</div>@enderror
@@ -121,7 +137,7 @@
</div>
<div class="row">
<div class="col-md-3 mb-4 form-control-validation">
<label class="form-label" for="edit-petani-provinsi">Provinsi</label>
<label class="form-label" for="edit-petani-provinsi">Provinsi<span class="text-danger">*</span></label>
<select class="form-control @error('provinsi_id') is-invalid @enderror" id="edit-petani-provinsi" name="provinsi_id">
<option value="">Pilih Provinsi</option>
@foreach($provinsi as $p)
@@ -131,7 +147,7 @@
@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-petani-kabupaten">Kabupaten/Kota</label>
<label class="form-label" for="edit-petani-kabupaten">Kabupaten/Kota<span class="text-danger">*</span></label>
<select class="form-control @error('kabupaten_id') is-invalid @enderror" id="edit-petani-kabupaten" name="kabupaten_id" >
<option value="">Pilih Kabupaten/Kota</option>
<option value="{{ $petani->desaKelurahan->kecamatan->kabupatenKota->id }}" selected>{{ $petani->desaKelurahan->kecamatan->kabupatenKota->nama }}</option>
@@ -139,7 +155,7 @@
@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-petani-kecamatan">Kecamatan</label>
<label class="form-label" for="edit-petani-kecamatan">Kecamatan<span class="text-danger">*</span></label>
<select class="form-control @error('kecamatan_id') is-invalid @enderror" id="edit-petani-kecamatan" name="kecamatan_id" >
<option value="">Pilih Kecamatan</option>
<option value="{{ $petani->desaKelurahan->kecamatan->id }}" selected>{{ $petani->desaKelurahan->kecamatan->nama }}</option>
@@ -147,7 +163,7 @@
@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-petani-desa">Desa/Kelurahan</label>
<label class="form-label" for="edit-petani-desa">Desa/Kelurahan<span class="text-danger">*</span></label>
<select class="form-control @error('desa_kelurahan_id') is-invalid @enderror" id="edit-petani-desa" name="desa_kelurahan_id" >
<option value="">Pilih Desa/Kelurahan</option>
<option value="{{ $petani->desaKelurahan->id }}" selected>{{ $petani->desaKelurahan->nama }}</option>
@@ -208,7 +224,8 @@
</div>
<div class="mt-4 text-end">
<button type="submit" class="btn btn-success data-submit wave-effect wave-light">Simpan Profil</button>
<a href="{{ route('petani.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 Profil</button>
</div>
</form>
@@ -225,7 +242,11 @@
$(document).ready(function () {
$('#edit-petani-jenis-kelamin, #edit-petani-pendidikan-terakhir, #edit-petani-pekerjaan-utama, #edit-petani-komoditas, #edit-petani-pekerjaan-sampingan, #edit-petani-komoditas-sampingan, #edit-petani-status-pernikahan, #edit-petani-status-keluarga, #edit-petani-petani-pengumpul').select2();
$('#edit-petani-tanggal-lahir').flatpickr({
dateFormat: 'd-m-Y'
});
$('#edit-petani-provinsi').select2().change(function(e) {
e.preventDefault();
var provinsiId = $(this).val();
@@ -285,6 +306,27 @@
});
$('#edit-petani-desa').select2();
$('#fotoPreview').on('click', function () {
$('#foto').click();
});
$('#foto').on('change', function (e) {
const file = e.target.files[0];
if (!file) return;
const reader = new FileReader();
reader.onload = function (event) {
$('#fotoPreview').attr('src', event.target.result);
};
reader.readAsDataURL(file);
});
// 1 MB = 1048576 bytes
$.validator.addMethod('maxfilesize', function (value, element, param) {
return this.optional(element) || (element.files[0] && element.files[0].size <= param);
}, 'File size must be less than {0} bytes.');
$('#editPetaniForm').validate({
rules: {
@@ -295,6 +337,7 @@
tanggal_lahir: { required: true, date: true },
jenis_kelamin: { required: true },
pendidikan_terakhir: { required: true },
komoditas_id: { required: true },
alamat: { required: true },
provinsi_id: { required: true },
kabupaten_id: { required: true },
@@ -303,6 +346,7 @@
status_perkawinan: { required: true },
file_ktp: { accept: "image/png, image/jpeg, image/jpg" },
file_kk: { accept: "image/png, image/jpeg, image/jpg" },
foto: { accept: "image/png, image/jpeg, image/jpg" },
nomor_telepon: { required: false, digits: true, minlength: 11, maxlength: 13 }
},
messages: {
@@ -319,8 +363,9 @@
kecamatan_id: { required: "Kecamatan wajib diisi" },
desa_kelurahan_id: { required: "Desa/Kelurahan wajib diisi" },
status_perkawinan: { required: "Status perkawinan wajib diisi" },
file_ktp: { accept: "Format file tidak valid. Harap unggah file berupa gambar (PNG, JPEG, JPG)" },
file_kk: { accept: "Format file tidak valid. Harap unggah file berupa gambar (PNG, JPEG, JPG)" },
foto: { accept: "Format file tidak valid. Harap unggah file berupa gambar (PNG, JPEG, JPG)", maxfilesize: "Ukuran file tidak boleh melebihi 2 MB" },
file_ktp: { accept: "Format file tidak valid. Harap unggah file berupa gambar (PNG, JPEG, JPG)", maxfilesize: "Ukuran file tidak boleh melebihi 2 MB" },
file_kk: { accept: "Format file tidak valid. Harap unggah file berupa gambar (PNG, JPEG, JPG)", maxfilesize: "Ukuran file tidak boleh melebihi 2 MB" },
nomor_telepon: {
digits: "Nomor telepon harus berupa angka",
minlength: "Nomor telepon minimal 11 digit",
@@ -55,7 +55,7 @@
@error('luas_lahan')<div class="error invalid-feedback">{{ $message }}</div>@enderror
</div>
<div class="col-md-3 mb-3 form-control-validation">
<label class="form-label">Umur Lahan (tahun)</label>
<label class="form-label">Umur Lahan (tahun) <span class="text-danger">*</span></label>
<input type="number" name="umur_lahan" class="form-control @error('umur_lahan') is-invalid @enderror" placeholder="Contoh: 1" />
@error('umur_lahan')<div class="error invalid-feedback">{{ $message }}</div>@enderror
</div>
@@ -65,7 +65,7 @@
@error('jumlah_tanaman')<div class="error invalid-feedback">{{ $message }}</div>@enderror
</div>
<div class="col-md-3 mb-3 form-control-validation">
<label class="form-label">Umur Tanaman (rata-rata)</label>
<label class="form-label">Umur Tanaman (rata-rata dalam tahun) <span class="text-danger">*</span></label>
<input type="number" name="umur_tanaman" class="form-control @error('umur_tanaman') is-invalid @enderror" placeholder="Contoh: 1" />
@error('umur_tanaman')<div class="error invalid-feedback">{{ $message }}</div>@enderror
</div>
@@ -95,7 +95,7 @@
</div>
<div class="row">
<div class="col-md-3 mb-3 form-control-validation">
<label class="form-label">Kondisi Umum Tanaman</label>
<label class="form-label">Kondisi Umum Tanaman <span class="text-danger">*</span></label>
<select id="kondisi_tanaman" name="kondisi_tanaman" class="form-select @error('kondisi_tanaman') is-invalid @enderror">
<option value="">Pilih Kondisi Tanaman</option>
<option value="{{ \App\Enums\KondisiTanaman::BAIK }}" {{ old('kondisi_tanaman') == \App\Enums\KondisiTanaman::BAIK ? 'selected' : '' }}>Baik</option>
@@ -206,7 +206,7 @@
<div class="row">
<div class="col-md-12 mb-3 form-control-validation">
<label class="form-label">Raw Data Koordinat Lahan (Auto-generated JSON) <span class="text-danger">*</span></label>
<label class="form-label">Raw Data Koordinat Lahan (Auto-generated JSON)</label>
<textarea name="path" id="path" class="form-control @error('path') is-invalid @enderror" rows="4" readonly placeholder="Koordinat akan terisi otomatis setelah Anda menggambar polygon di peta..."></textarea>
<small class="text-muted">Pastikan menggambar polygon di peta dengan menyambungkan titik akhir ke titik awal.</small>
@error('path')<div class="error invalid-feedback">{{ $message }}</div>@enderror
@@ -224,8 +224,8 @@
<div class="row mt-3">
<div class="col-12 text-end">
<button type="reset" class="btn btn-label-secondary me-2">Reset</button>
<button type="submit" class="btn btn-success"><i class="ti tabler-device-floppy me-2"></i> Simpan Lahan</button>
<a href="{{ route('petani.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 Lahan</button>
</div>
</div>
</div>
@@ -487,20 +487,32 @@
$('#petani-lahan-tanaman').validate({
rules: {
luas_lahan: { required: true },
luas_lahan: { required: true, number: true, min: 0 },
komoditas_id: { required: true },
jenis_komoditas_id: { required: true },
varietas_id: { required: true },
provinsi_id: { required: true },
kabupatenkota_id: { required: true },
kecamatan_id: { required: true },
desa_kelurahan_id: { required: true },
jumlah_tanaman: { required: true },
umur_lahan: { required: true, number: true, min: 1 },
umur_tanaman: { required: true, number: true, min: 1 },
kondisi_tanaman: { required: true },
},
messages: {
luas_lahan: { required: "Luas lahan wajib diisi" },
luas_lahan: { required: "Luas lahan wajib diisi", number: "Luas lahan harus berupa angka", min: "Luas lahan minimal 0" },
komoditas_id: { required: "Komoditas wajib diisi" },
jenis_komoditas_id: { required: "Jenis komoditas wajib diisi" },
varietas_id: { required: "Varietas wajib diisi" },
provinsi_id: { required: "Provinsi wajib diisi" },
kabupatenkota_id: { required: "Kabupaten/Kota wajib diisi" },
kecamatan_id: { required: "Kecamatan wajib diisi" },
desa_kelurahan_id: { required: "Desa/Kelurahan wajib diisi" },
jumlah_tanaman: { required: "Jumlah tanaman wajib diisi" },
umur_lahan: { required: "Umur lahan wajib diisi", number: "Umur lahan harus berupa angka", min: "Umur lahan minimal 1 tahun" },
umur_tanaman: { required: "Umur tanaman wajib diisi", number: "Umur tanaman harus berupa angka", min: "Umur tanaman minimal 1 tahun" },
kondisi_tanaman: { required: "Kondisi tanaman wajib diisi" },
},
errorElement: 'div',
errorPlacement: function (error, element) {
@@ -107,12 +107,12 @@
<div class="row">
<div class="col-md-3 mb-3 form-control-validation">
<label class="form-label">Kondisi Umum Tanaman {{ $lahanSelected->kondisi_tanaman }}</label>
<label class="form-label">Kondisi Umum Tanaman</label>
<select id="kondisi_tanaman" name="kondisi_tanaman" class="form-select @error('kondisi_tanaman') is-invalid @enderror">
<option value="">Pilih Kondisi Tanaman</option>
<option value="{{ \App\Enums\KondisiTanaman::BAIK }}" {{ old('kondisi_tanaman', $lahanSelected->kondisi_tanaman) == \App\Enums\KondisiTanaman::BAIK->value ? 'selected' : '' }}>Baik</option>
<option value="{{ \App\Enums\KondisiTanaman::SEDANG }}" {{ old('kondisi_tanaman', $lahanSelected->kondisi_tanaman) == \App\Enums\KondisiTanaman::SEDANG->value ? 'selected' : '' }}>Sedang</option>
<option value="{{ \App\Enums\KondisiTanaman::BURUK }}" {{ old('kondisi_tanaman', $lahanSelected->kondisi_tanaman) == \App\Enums\KondisiTanaman::BURUK->value ? 'selected' : '' }}>Buruk</option>
<option value="{{ \App\Enums\KondisiTanaman::BAIK }}" {{ old('kondisi_tanaman', $lahanSelected->kondisi_tanaman) == \App\Enums\KondisiTanaman::BAIK ? 'selected' : '' }}>Baik</option>
<option value="{{ \App\Enums\KondisiTanaman::SEDANG }}" {{ old('kondisi_tanaman', $lahanSelected->kondisi_tanaman) == \App\Enums\KondisiTanaman::SEDANG ? 'selected' : '' }}>Sedang</option>
<option value="{{ \App\Enums\KondisiTanaman::BURUK }}" {{ old('kondisi_tanaman', $lahanSelected->kondisi_tanaman) == \App\Enums\KondisiTanaman::BURUK ? 'selected' : '' }}>Buruk</option>
</select>
@error('kondisi_tanaman')<div class="error invalid-feedback">{{ $message }}</div>@enderror
</div>
@@ -120,9 +120,9 @@
<label class="form-label">Serangan Hama</label>
<select id="serangan_hama" name="serangan_hama" class="form-select @error('serangan_hama') is-invalid @enderror">
<option value="">Pilih Serangan Hama</option>
<option value="{{ \App\Enums\SeranganHama::ULAT }}" {{ old('serangan_hama', $lahanSelected->serangan_hama) == \App\Enums\SeranganHama::ULAT->value ? 'selected' : '' }}>Ulat</option>
<option value="{{ \App\Enums\SeranganHama::BELALANG }}" {{ old('serangan_hama', $lahanSelected->serangan_hama) == \App\Enums\SeranganHama::BELALANG->value ? 'selected' : '' }}>Belalang</option>
<option value="{{ \App\Enums\SeranganHama::KUTU }}" {{ old('serangan_hama', $lahanSelected->serangan_hama) == \App\Enums\SeranganHama::KUTU->value ? 'selected' : '' }}>Kutu</option>
<option value="{{ \App\Enums\SeranganHama::ULAT }}" {{ old('serangan_hama', $lahanSelected->serangan_hama) == \App\Enums\SeranganHama::ULAT ? 'selected' : '' }}>Ulat</option>
<option value="{{ \App\Enums\SeranganHama::BELALANG }}" {{ old('serangan_hama', $lahanSelected->serangan_hama) == \App\Enums\SeranganHama::BELALANG ? 'selected' : '' }}>Belalang</option>
<option value="{{ \App\Enums\SeranganHama::KUTU }}" {{ old('serangan_hama', $lahanSelected->serangan_hama) == \App\Enums\SeranganHama::KUTU ? 'selected' : '' }}>Kutu</option>
</select>
@error('serangan_hama')<div class="error invalid-feedback">{{ $message }}</div>@enderror
</div>
@@ -130,19 +130,19 @@
<label class="form-label">Serangan Penyakit</label>
<select id="penyakit_tanaman" name="penyakit_tanaman" class="form-select @error('penyakit_tanaman') is-invalid @enderror">
<option value="">Pilih Penyakit</option>
<option value="{{ \App\Enums\PenyakitTanaman::BUSUK_BUAH }}" {{ old('penyakit_tanaman', $lahanSelected->penyakit_tanaman) == \App\Enums\PenyakitTanaman::BUSUK_BUAH->value ? 'selected' : '' }}>Busuk Buah</option>
<option value="{{ \App\Enums\PenyakitTanaman::DAUN_MENGUNING }}" {{ old('penyakit_tanaman', $lahanSelected->penyakit_tanaman) == \App\Enums\PenyakitTanaman::DAUN_MENGUNING->value ? 'selected' : '' }}>Daun Menguning</option>
<option value="{{ \App\Enums\PenyakitTanaman::DAUN_BERCAK }}" {{ old('penyakit_tanaman', $lahanSelected->penyakit_tanaman) == \App\Enums\PenyakitTanaman::DAUN_BERCAK->value ? 'selected' : '' }}>Daun Bercak</option>
<option value="{{ \App\Enums\PenyakitTanaman::TANAMAN_LAYU }}" {{ old('penyakit_tanaman', $lahanSelected->penyakit_tanaman) == \App\Enums\PenyakitTanaman::TANAMAN_LAYU->value ? 'selected' : '' }}>Tanaman Layu</option>
<option value="{{ \App\Enums\PenyakitTanaman::BUSUK_BUAH }}" {{ old('penyakit_tanaman', $lahanSelected->penyakit_tanaman) == \App\Enums\PenyakitTanaman::BUSUK_BUAH ? 'selected' : '' }}>Busuk Buah</option>
<option value="{{ \App\Enums\PenyakitTanaman::DAUN_MENGUNING }}" {{ old('penyakit_tanaman', $lahanSelected->penyakit_tanaman) == \App\Enums\PenyakitTanaman::DAUN_MENGUNING ? 'selected' : '' }}>Daun Menguning</option>
<option value="{{ \App\Enums\PenyakitTanaman::DAUN_BERCAK }}" {{ old('penyakit_tanaman', $lahanSelected->penyakit_tanaman) == \App\Enums\PenyakitTanaman::DAUN_BERCAK ? 'selected' : '' }}>Daun Bercak</option>
<option value="{{ \App\Enums\PenyakitTanaman::TANAMAN_LAYU }}" {{ old('penyakit_tanaman', $lahanSelected->penyakit_tanaman) == \App\Enums\PenyakitTanaman::TANAMAN_LAYU ? 'selected' : '' }}>Tanaman Layu</option>
</select>
</div>
<div class="col-md-3 mb-3 form-control-validation">
<label class="form-label">Keparahan Serangan Hama/Penyakit</label>
<select id="keparahan_serangan" name="keparahan_serangan" class="form-select @error('keparahan_serangan') is-invalid @enderror">
<option value="">Pilih Keparahan Serangan</option>
<option value="{{ \App\Enums\KeparahanSerangan::RINGAN }}" {{ old('keparahan_serangan', $lahanSelected->keparahan_serangan) == \App\Enums\KeparahanSerangan::RINGAN->value ? 'selected' : '' }}>Ringan</option>
<option value="{{ \App\Enums\KeparahanSerangan::SEDANG }}" {{ old('keparahan_serangan', $lahanSelected->keparahan_serangan) == \App\Enums\KeparahanSerangan::SEDANG->value ? 'selected' : '' }}>Sedang</option>
<option value="{{ \App\Enums\KeparahanSerangan::BERAT }}" {{ old('keparahan_serangan', $lahanSelected->keparahan_serangan) == \App\Enums\KeparahanSerangan::BERAT->value ? 'selected' : '' }}>Berat</option>
<option value="{{ \App\Enums\KeparahanSerangan::RINGAN }}" {{ old('keparahan_serangan', $lahanSelected->keparahan_serangan) == \App\Enums\KeparahanSerangan::RINGAN ? 'selected' : '' }}>Ringan</option>
<option value="{{ \App\Enums\KeparahanSerangan::SEDANG }}" {{ old('keparahan_serangan', $lahanSelected->keparahan_serangan) == \App\Enums\KeparahanSerangan::SEDANG ? 'selected' : '' }}>Sedang</option>
<option value="{{ \App\Enums\KeparahanSerangan::BERAT }}" {{ old('keparahan_serangan', $lahanSelected->keparahan_serangan) == \App\Enums\KeparahanSerangan::BERAT ? 'selected' : '' }}>Berat</option>
</select>
@error('keparahan_serangan')<div class="error invalid-feedback">{{ $message }}</div>@enderror
</div>
@@ -242,8 +242,8 @@
<div class="row mt-3">
<div class="col-12 text-end">
<button type="reset" class="btn btn-label-secondary me-2">Reset</button>
<button type="submit" class="btn btn-primary"><i class="ti tabler-device-floppy me-2"></i> Simpan Data</button>
<a href="{{ route('petani.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 Lahan</button>
</div>
</div>
</div>