From a846c22479621228d0c1bbefe0566ca7ad1b3205 Mon Sep 17 00:00:00 2001 From: majid Date: Fri, 14 Feb 2025 17:33:02 +0700 Subject: [PATCH] perbaikan validasi input nilai likuidasi percent resume --- .../views/penilai/components/resume.blade.php | 56 ++++++------------- 1 file changed, 17 insertions(+), 39 deletions(-) diff --git a/resources/views/penilai/components/resume.blade.php b/resources/views/penilai/components/resume.blade.php index 15f91a1..9dac8a5 100644 --- a/resources/views/penilai/components/resume.blade.php +++ b/resources/views/penilai/components/resume.blade.php @@ -194,7 +194,7 @@ Luas Tanah Luas Bangunan Nilai Pasar Wajar - Nilai Likuidasi + Nilai Likuidasi(%) Total Nilai Likuidasi @@ -306,7 +306,7 @@ Luas Tanah Luas Bangunan Nilai Pasar Wajar - Likuidasi + Nilai Likuidasi (%) Total Nilai Likuidasi @@ -398,7 +398,7 @@ Luas Tanah Luas Bangunan Nilai Pasar Wajar - Likuidasi + Nilai Likuidasi (%) Total Nilai Likuidasi @@ -541,7 +541,7 @@ Luas Tanah Luas Bangunan Nilai Pasar Wajar - Likuidasi + Nilai Likuidasi (%) Total Nilai Likuidasi Aksi @@ -801,49 +801,27 @@ const totalLikuidasiInput = row.querySelector('.total-likuidasi'); - // Bersihkan nilai dari karakter non-digit const cleanNilaiPasar = cleanCurrencyValue(nilaiPasarInput.value); - const cleanLikuidasi = cleanCurrencyValue(likuidasiInput.value); - likuidasiInput.value = formatPercentages(likuidasiInput.value); - // Konversi ke angka + let cleanLikuidasi = cleanCurrencyValue(likuidasiInput.value); + + // Batasi likuidasi maksimal hingga 100 + cleanLikuidasi = Math.min(parseFloat(cleanLikuidasi) || 0, 100); + + // Format nilai likuidasi dengan simbol % + likuidasiInput.value = cleanLikuidasi; + + // Konversi ke angka untuk perhitungan const nilaiPasar = parseFloat(cleanNilaiPasar) || 0; - let likuidasi = parseFloat(cleanLikuidasi) || 0; - - // Jika nilai likuidasi lebih dari 100, reset ke nilai awal yang diinputkan - if (likuidasi > 100) { - likuidasi = parseFloat(cleanLikuidasi) || 0; // Reset ke nilai awal - likuidasiInput.value = likuidasi - } - - // Pastikan nilai likuidasi tidak melebihi 100 - likuidasi = Math.min(likuidasi, 100); + const likuidasi = cleanLikuidasi / 100; // Konversi persentase ke desimal // Hitung total likuidasi - const totalLikuidasi = nilaiPasar - (nilaiPasar * (likuidasi / 100)); + const totalLikuidasi = nilaiPasar * likuidasi; // Tampilkan hasil dengan format yang benar totalLikuidasiInput.value = formatCurrency(totalLikuidasi.toString()); + + } - function formatPercentages(value) { - // Hapus semua karakter kecuali angka dan koma - let numericValue = value.replace(/[^0-9,]/g, ''); - - // Pastikan hanya satu koma yang ada - let parts = numericValue.split(','); - if (parts.length > 2) { - numericValue = parts[0] + ',' + parts[1]; // Pertahankan hanya bagian pertama dan kedua - } - - // Jika nilai melebihi 100, batasi menjadi 100 - let numericFloat = parseFloat(numericValue.replace(',', '.')) || 0; - if (numericFloat > 100) { - numericFloat = 100; - numericValue = '100'; - } - - // Kembalikan nilai dengan simbol % - return numericValue; - }