solve akses pasar
This commit is contained in:
@@ -25,9 +25,25 @@ class AksesPasarController extends Controller
|
|||||||
|
|
||||||
$aksesPasar = AksesPasar::where('petani_id', $petaniId)->first();
|
$aksesPasar = AksesPasar::where('petani_id', $petaniId)->first();
|
||||||
$hargaJualPanen = HargaJualPanen::where('petani_id', $petaniId)->get();
|
$hargaJualPanen = HargaJualPanen::where('petani_id', $petaniId)->get();
|
||||||
|
$hargaJualRows = collect([
|
||||||
|
'Buah segar hasil petik',
|
||||||
|
'Biji basah',
|
||||||
|
'Biji kering/Biji Kupas',
|
||||||
|
'Terfermentasi (Rp/kg)',
|
||||||
|
])->map(function (string $bentuk, int $index) use ($hargaJualPanen) {
|
||||||
|
$existingData = $hargaJualPanen->firstWhere('bentuk_produk', $bentuk);
|
||||||
|
|
||||||
|
return [
|
||||||
|
'index' => $index,
|
||||||
|
'bentuk' => $bentuk,
|
||||||
|
'harga_panen_terakhir' => $this->currencyForDisplay($existingData?->harga_panen_terakhir),
|
||||||
|
'harga_tahun_lalu' => $this->currencyForDisplay($existingData?->harga_tahun_lalu),
|
||||||
|
'harga_dua_tahun_lalu' => $this->currencyForDisplay($existingData?->harga_dua_tahun_lalu),
|
||||||
|
];
|
||||||
|
});
|
||||||
|
|
||||||
return view('produktivitas.petani.akses-pasar.index', array_merge(
|
return view('produktivitas.petani.akses-pasar.index', array_merge(
|
||||||
compact('petani', 'aksesPasar', 'hargaJualPanen'),
|
compact('petani', 'aksesPasar', 'hargaJualPanen', 'hargaJualRows'),
|
||||||
$this->aksesPasarOptions()
|
$this->aksesPasarOptions()
|
||||||
));
|
));
|
||||||
}
|
}
|
||||||
@@ -251,4 +267,11 @@ class AksesPasarController extends Controller
|
|||||||
$digits = preg_replace('/\D/', '', (string) $value);
|
$digits = preg_replace('/\D/', '', (string) $value);
|
||||||
return $digits === '' ? null : $digits;
|
return $digits === '' ? null : $digits;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private function currencyForDisplay(mixed $value): string
|
||||||
|
{
|
||||||
|
$digits = $this->currencyDigits($value);
|
||||||
|
|
||||||
|
return is_null($digits) ? '' : number_format((int) $digits, 0, ',', '.');
|
||||||
|
}
|
||||||
}
|
}
|
||||||
@@ -93,34 +93,30 @@
|
|||||||
</tr>
|
</tr>
|
||||||
</thead>
|
</thead>
|
||||||
<tbody>
|
<tbody>
|
||||||
@php($listBentukProduk = ['Buah segar hasil petik', 'Biji basah', 'Biji kering/Biji Kupas', 'Terfermentasi (Rp/kg)'])
|
@foreach ($hargaJualRows as $row)
|
||||||
@php($hargaJualPanen = $hargaJualPanen ?? collect())
|
|
||||||
|
|
||||||
@foreach ($listBentukProduk as $index => $bentuk)
|
|
||||||
@php($existingData = $hargaJualPanen->firstWhere('bentuk_produk', $bentuk))
|
|
||||||
<tr>
|
<tr>
|
||||||
<td>
|
<td>
|
||||||
<input type="hidden" name="harga_jual[{{ $index }}][bentuk_produk]" value="{{ $bentuk }}">
|
<input type="hidden" name="harga_jual[{{ $row['index'] }}][bentuk_produk]" value="{{ $row['bentuk'] }}">
|
||||||
<strong>{{ $bentuk }}:</strong>
|
<strong>{{ $row['bentuk'] }}:</strong>
|
||||||
</td>
|
</td>
|
||||||
<td>
|
<td>
|
||||||
<div class="input-group">
|
<div class="input-group">
|
||||||
<span class="input-group-text">Rp</span>
|
<span class="input-group-text">Rp</span>
|
||||||
<input type="number" min="0" class="form-control" name="harga_jual[{{ $index }}][harga_panen_terakhir]" value="{{ old('harga_jual.' . $index . '.harga_panen_terakhir', $existingData?->harga_panen_terakhir) }}">
|
<input type="text" inputmode="numeric" class="form-control rupiah-input" name="harga_jual[{{ $row['index'] }}][harga_panen_terakhir]" value="{{ old('harga_jual.' . $row['index'] . '.harga_panen_terakhir', $row['harga_panen_terakhir']) }}" placeholder="Contoh: 12.000">
|
||||||
<span class="input-group-text">/kg</span>
|
<span class="input-group-text">/kg</span>
|
||||||
</div>
|
</div>
|
||||||
</td>
|
</td>
|
||||||
<td>
|
<td>
|
||||||
<div class="input-group">
|
<div class="input-group">
|
||||||
<span class="input-group-text">Rp</span>
|
<span class="input-group-text">Rp</span>
|
||||||
<input type="number" min="0" class="form-control" name="harga_jual[{{ $index }}][harga_tahun_lalu]" value="{{ old('harga_jual.' . $index . '.harga_tahun_lalu', $existingData?->harga_tahun_lalu) }}">
|
<input type="text" inputmode="numeric" class="form-control rupiah-input" name="harga_jual[{{ $row['index'] }}][harga_tahun_lalu]" value="{{ old('harga_jual.' . $row['index'] . '.harga_tahun_lalu', $row['harga_tahun_lalu']) }}" placeholder="Contoh: 10.000">
|
||||||
<span class="input-group-text">/kg</span>
|
<span class="input-group-text">/kg</span>
|
||||||
</div>
|
</div>
|
||||||
</td>
|
</td>
|
||||||
<td>
|
<td>
|
||||||
<div class="input-group">
|
<div class="input-group">
|
||||||
<span class="input-group-text">Rp</span>
|
<span class="input-group-text">Rp</span>
|
||||||
<input type="number" min="0" class="form-control" name="harga_jual[{{ $index }}][harga_dua_tahun_lalu]" value="{{ old('harga_jual.' . $index . '.harga_dua_tahun_lalu', $existingData?->harga_dua_tahun_lalu) }}">
|
<input type="text" inputmode="numeric" class="form-control rupiah-input" name="harga_jual[{{ $row['index'] }}][harga_dua_tahun_lalu]" value="{{ old('harga_jual.' . $row['index'] . '.harga_dua_tahun_lalu', $row['harga_dua_tahun_lalu']) }}" placeholder="Contoh: 8.000">
|
||||||
<span class="input-group-text">/kg</span>
|
<span class="input-group-text">/kg</span>
|
||||||
</div>
|
</div>
|
||||||
</td>
|
</td>
|
||||||
@@ -232,6 +228,16 @@
|
|||||||
const praktikBelumPernahValue = String(@json($praktikBelumPernahValue));
|
const praktikBelumPernahValue = String(@json($praktikBelumPernahValue));
|
||||||
const skorPengalamanBerhentiValues = @json($skorPengalamanBerhentiValues ?? [2,3]).map(Number);
|
const skorPengalamanBerhentiValues = @json($skorPengalamanBerhentiValues ?? [2,3]).map(Number);
|
||||||
|
|
||||||
|
function onlyDigits(value) {
|
||||||
|
return String(value || '').replace(/\D/g, '');
|
||||||
|
}
|
||||||
|
|
||||||
|
function formatRupiah(value) {
|
||||||
|
const digits = onlyDigits(value);
|
||||||
|
|
||||||
|
return digits.replace(/\B(?=(\d{3})+(?!\d))/g, '.');
|
||||||
|
}
|
||||||
|
|
||||||
function syncAlasanBerhenti() {
|
function syncAlasanBerhenti() {
|
||||||
const val = Number($('input[name="skor_pengalaman"]:checked').val());
|
const val = Number($('input[name="skor_pengalaman"]:checked').val());
|
||||||
const isBerhenti = skorPengalamanBerhentiValues.includes(val);
|
const isBerhenti = skorPengalamanBerhentiValues.includes(val);
|
||||||
@@ -256,6 +262,17 @@
|
|||||||
$('input[name="skor_pengalaman"]').on('change', syncAlasanBerhenti);
|
$('input[name="skor_pengalaman"]').on('change', syncAlasanBerhenti);
|
||||||
$('input[name="saluran_terdahulu[]"]').on('change', syncSaluranLainnya);
|
$('input[name="saluran_terdahulu[]"]').on('change', syncSaluranLainnya);
|
||||||
$('input[name="praktik_fermentasi"]').on('change', syncPraktikFermentasi);
|
$('input[name="praktik_fermentasi"]').on('change', syncPraktikFermentasi);
|
||||||
|
$(document).on('input', '.rupiah-input', function () {
|
||||||
|
const cursorAtEnd = this.selectionStart === this.value.length;
|
||||||
|
this.value = formatRupiah(this.value);
|
||||||
|
|
||||||
|
if (cursorAtEnd) {
|
||||||
|
this.setSelectionRange(this.value.length, this.value.length);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
$('.rupiah-input').each(function () {
|
||||||
|
this.value = formatRupiah(this.value);
|
||||||
|
});
|
||||||
|
|
||||||
syncAlasanBerhenti();
|
syncAlasanBerhenti();
|
||||||
syncSaluranLainnya();
|
syncSaluranLainnya();
|
||||||
|
|||||||
Reference in New Issue
Block a user