From b15e0486f24d777d4ee3c6b103b83441977c10ff Mon Sep 17 00:00:00 2001 From: arieeefajar Date: Fri, 9 May 2025 19:57:53 +0700 Subject: [PATCH] fix(master-rule): add validation cf value --- .../customJs/master-data/aturan/index1.js | 94 +++++++++++++++---- .../views/master-data/aturan/index.blade.php | 10 +- 2 files changed, 82 insertions(+), 22 deletions(-) diff --git a/public/assets/js/pages/customJs/master-data/aturan/index1.js b/public/assets/js/pages/customJs/master-data/aturan/index1.js index 568df15..0b7fcb3 100644 --- a/public/assets/js/pages/customJs/master-data/aturan/index1.js +++ b/public/assets/js/pages/customJs/master-data/aturan/index1.js @@ -1,25 +1,85 @@ -var checkAll = document.getElementById("checkAll"); -checkAll && - (checkAll.onclick = function () { - for ( - var e = document.querySelectorAll( - '.form-check-all input[type="checkbox"]' - ), - t = 0; - t < e.length; - t++ - ) - (e[t].checked = this.checked), - e[t].checked - ? e[t].closest("tr").classList.add("table-active") - : e[t].closest("tr").classList.remove("table-active"); - }); +document.addEventListener("DOMContentLoaded", function () { + const indicatorField = document.getElementById("indicator-field"); + const indicatorVal = new Choices(indicatorField); + const indicatorEditField = document.getElementById("indicator-edit-field"); + window.indicatorEditVal = new Choices(indicatorEditField); +}); + +function updateData(rule) { + var form = document.getElementById("edit-form"); + var categoryEditField = form.querySelector("#category-edit-field"); + var description = form.querySelector("#description-edit-field"); + var cf = form.querySelector("#cf-edit-field"); + form.action = "/data-aturan/" + rule.id; + + window.indicatorEditVal.setChoiceByValue(rule.indicator_id.toString()); + window.indicatorEditVal.passedElement.element.value = + rule.indicator_id.toString(); + categoryEditField.value = rule.parameter_type; + description.value = rule.description; + cf.value = rule.cf; +} function deleteData(id) { var form = document.getElementById("delete-form"); form.action = "/data-aturan/" + id; } +function validateCfInput(input) { + input.value = input.value.replace(",", "."); + + input.value = input.value.replace(/[^0-9.\-]/g, ""); + + if (input.value.includes("-") && !input.value.startsWith("-")) { + input.value = input.value.replace("-", ""); + } + + input.value = input.value.replace(/-+/g, "-"); + + if (input.value === "-") { + return; + } + + if (input.value.startsWith(".")) { + input.value = "0" + input.value; + } + + if (input.value.startsWith("-.")) { + input.value = "-0."; + } + + // **PERBAIKAN**: Hilangkan nol berlebih di depan angka, kecuali nol sebelum titik + input.value = input.value.replace(/^(-?)0+(\d)/, "$1$2"); + + // **BATASI INPUT**: Hanya satu titik desimal, dan maksimal 1 angka setelah titik + let match = input.value.match(/^-?\d*(\.\d{0,1})?/); + if (match) { + input.value = match[0]; + } + + let numValue = parseFloat(input.value); + + if (!isNaN(numValue)) { + let decimal = Math.abs(numValue * 10); + let lastDigit = decimal % 10; + + if (lastDigit % 2 === 1) { + input.value = ""; + alert("Nilai CF Tidak Sesuai"); + return; + } + + // **Batasi nilai antara -1.0 dan 1.0** + if (!isNaN(numValue)) { + if (numValue > 1) { + input.value = "1.0"; + } else if (numValue < -1) { + input.value = "-1.0"; + } + } + } +} + var perPage = 10, options = { valueNames: ["id", "customer_name", "email", "date", "phone", "status"], @@ -130,7 +190,7 @@ refreshCallbacks(), (document.getElementById("edit-btn").style.display = "block")) : e.relatedTarget.classList.contains("add-btn") ? ((document.getElementById("exampleModalLabel").innerHTML = - "Add Customer"), + "Tambah Data Aturan"), (document .getElementById("showModal") .querySelector(".modal-footer").style.display = "block"), diff --git a/resources/views/master-data/aturan/index.blade.php b/resources/views/master-data/aturan/index.blade.php index 929ace3..cc80ed1 100644 --- a/resources/views/master-data/aturan/index.blade.php +++ b/resources/views/master-data/aturan/index.blade.php @@ -50,7 +50,7 @@ class="ri-add-line align-bottom me-1"> Tambah Indikator Kategori Deskripsi - CF(e) + Nilai CF Action @@ -174,7 +174,7 @@ class="fw-medium link-primary">#VZ2101
- +
@@ -246,11 +246,11 @@ class="fw-medium link-primary">#VZ2101
- + + placeholder="Masukan Nilai Nilai CF" required oninput="validateCfInput(this)" />
- Masukan CF(e) + Masukan Nilai CF