Filter periode member + harga otomatis + soft delete arsip + ganti alert ke Swal

This commit is contained in:
2026-10-14 12:53:15 +07:00
parent ff8fc51500
commit fae9184c1b
6 changed files with 244 additions and 6 deletions
+31 -2
View File
@@ -39,6 +39,25 @@ $(document).ready(function () {
var url = $("#example").data("url");
// Satu input periode (date-range) -> isi hidden tgl_awal/tgl_akhir (YYYY-MM-DD).
if ($.fn.daterangepicker && $(".input-daterange-filter").length) {
$(".input-daterange-filter").daterangepicker({
autoUpdateInput: false,
locale: { format: "DD-MM-YYYY", cancelLabel: "Hapus" },
parentEl: "#search-form",
});
$(".input-daterange-filter").on("apply.daterangepicker", function (ev, picker) {
$(this).val(picker.startDate.format("DD-MM-YYYY") + " - " + picker.endDate.format("DD-MM-YYYY"));
$("#tgl-awal").val(picker.startDate.format("YYYY-MM-DD"));
$("#tgl-akhir").val(picker.endDate.format("YYYY-MM-DD"));
});
$(".input-daterange-filter").on("cancel.daterangepicker", function () {
$(this).val("");
$("#tgl-awal").val("");
$("#tgl-akhir").val("");
});
}
$("#search-button").on("click", function () {
let searchBy = $("#search-by").val();
let searchValue = $("#search-value").val().trim();
@@ -60,7 +79,7 @@ $(document).ready(function () {
notrans: "No. Transaksi",
};
alert("Harap masukkan " + (label[searchBy] || "kata kunci"));
Swal.fire({icon: "warning", title: "Belum lengkap", text: "Harap masukkan " + (label[searchBy] || "kata kunci")});
$("#search-value").focus();
@@ -146,7 +165,6 @@ $(document).ready(function () {
});
});
} else {
alert("Data tidak ditemukan.");
$("#example tbody").html(
`<tr>
<td colspan="11" style="text-align: center;"><p class="text-danger mt-3">Tidak ditemukan data</p></td>
@@ -154,6 +172,17 @@ $(document).ready(function () {
);
}
},
error: function (xhr) {
let msg = "Gagal memuat data.";
if (xhr.status === 422 && xhr.responseJSON?.message) msg = xhr.responseJSON.message;
$("#example tbody").html(
`<tr><td colspan="11" class="text-center text-danger py-4">${msg}</td></tr>`,
);
Swal.fire({icon: "error", title: "Pencarian gagal", text: msg});
},
complete: function () {
$("#search-button").prop("disabled", false).html('<i class="fa fa-search me-2"></i> Cari Data...');
},
});
});
});
+21 -1
View File
@@ -96,6 +96,16 @@ $(document).ready(function () {
});
});
// Jumlahkan tarif semua kendaraan di list -> isi otomatis ke Harga.
// Harga dikirim angka polos (kolom double), tanpa pemisah ribuan.
function updateHarga() {
let total = 0;
$("#modal-member #list-nopol tr").each(function () {
total += parseFloat($(this).data("tarif")) || 0;
});
$("#modal-member input[name='harga']").val(total);
}
$("#nopol-add").on("click", function () {
var nopol = $(".nopol-add").val().trim();
console.log(nopol);
@@ -103,6 +113,7 @@ $(document).ready(function () {
var vehicle = $("#jenisVehicle").val();
var vehicleName = $("#jenisVehicle option:selected").text();
var member = $("#jenis-member option:selected").text();
var tarif = parseFloat($("#jenis-member").val()) || 0;
var merk = $(".merk").val().trim();
$(".nopol-add").removeClass("is-invalid"); // Hapus kelas jika ada sebelumnya
$(".nopol-add").next(".invalid-feedback").hide();
@@ -120,7 +131,7 @@ $(document).ready(function () {
success: function (r) {
if (r.response === true) {
var rowhtml = `
<tr>
<tr data-tarif="${tarif}">
<td class="text-center">${nopol}</td>
<td class="text-center" data-value="${vehicle}">${vehicleName}</td>
<td class="text-center">${member}</td>
@@ -132,6 +143,7 @@ $(document).ready(function () {
`;
$("#list-nopol").append(rowhtml);
console.log("Berhasil menambahkan " + nopol);
updateHarga();
$(".nopol-add").val("");
$("#jenisVehicle").val("");
@@ -195,6 +207,11 @@ $(document).ready(function () {
$(this).closest("tr").remove(); // Hapus baris yang diklik
});
$("#list-nopol").on("click", ".delete-row", function () {
$(this).closest("tr").remove();
updateHarga();
});
$(".simpan").on("click", function () {
var tombol = $(this);
var formCollect = $("#add-member").serialize();
@@ -245,6 +262,9 @@ $(document).ready(function () {
console.log("FORM ADD:", allData);
updateHarga(); // pastikan harga = jumlah tarif kendaraan sebelum simpan
formDataObj.harga = $("#modal-member input[name='harga']").val();
if ($(".tambah-member").valid()) {
const saveBtn = tombol;
const saveHtml = saveBtn.html();
+85
View File
@@ -39,6 +39,37 @@ $(document).ready(function () {
var url = $("#example").data("url");
function syncPeriode() {
const aktif = $("#isActive").is(":checked");
$("#periode").prop("disabled", false);
$("#periode-hint").text(
aktif
? "Aktif + periode: langganan berlaku saat ini dalam rentang tanggal."
: "Nonaktif: saring berdasarkan tanggal atau tgl diubah.",
);
}
$("#isActive").on("change", syncPeriode);
// Satu input periode (date-range) -> isi hidden tgl_awal/tgl_akhir (YYYY-MM-DD).
$(".input-daterange-filter").daterangepicker(
{
autoUpdateInput: false,
locale: { format: "DD-MM-YYYY", cancelLabel: "Hapus" },
parentEl: "#search-form",
},
);
$(".input-daterange-filter").on("apply.daterangepicker", function (ev, picker) {
$(this).val(picker.startDate.format("DD-MM-YYYY") + " - " + picker.endDate.format("DD-MM-YYYY"));
$("#tgl-awal").val(picker.startDate.format("YYYY-MM-DD"));
$("#tgl-akhir").val(picker.endDate.format("YYYY-MM-DD"));
});
$(".input-daterange-filter").on("cancel.daterangepicker", function () {
$(this).val("");
$("#tgl-awal").val("");
$("#tgl-akhir").val("");
});
syncPeriode();
$("#search-button").on("click", function () {
let searchBy = $("#search-by").val();
let searchValue = $("#search-value").val().trim();
@@ -81,12 +112,21 @@ $(document).ready(function () {
department: department,
vehicle: vehicle,
isActive: isActive,
tgl_awal: $("#tgl-awal").val(),
tgl_akhir: $("#tgl-akhir").val(),
};
// =========================
// AJAX
// =========================
const btn = $("#search-button");
const btnHtml = btn.html();
btn.prop("disabled", true).html('<i class="fa fa-spinner fa-spin me-2"></i>Mencari...');
$("#example tbody").html(
`<tr><td colspan="11" class="text-center text-muted py-4"><span class="spinner-border spinner-border-sm me-2"></span>Memuat data...</td></tr>`,
);
$.ajax({
url: url,
type: "POST",
@@ -154,6 +194,51 @@ $(document).ready(function () {
);
}
},
error: function (xhr) {
let msg = "Gagal memuat data.";
if (xhr.status === 422 && xhr.responseJSON?.message) msg = xhr.responseJSON.message;
$("#example tbody").html(
`<tr><td colspan="11" class="text-center text-danger py-4">${msg}</td></tr>`,
);
Swal.fire({icon: "error", title: "Pencarian gagal", text: msg});
},
complete: function () {
btn.prop("disabled", false).html(btnHtml);
},
});
});
$("#btnDelete").on("click", function () {
const notrans = typeof selectedRowData !== "undefined" ? selectedRowData?.notrans : null;
if (!notrans) {
Swal.fire({icon: "warning", title: "Belum pilih data", text: "Klik salah satu baris transaksi dulu."});
return;
}
const base = $("#btnDelete").data("destroy");
Swal.fire({
title: "Hapus transaksi?",
text: `${notrans} akan diarsipkan ke transaksi_stiker_res.`,
icon: "warning",
showCancelButton: true,
confirmButtonText: "Ya, arsipkan",
cancelButtonText: "Batal",
confirmButtonColor: "#dc3545",
showLoaderOnConfirm: true,
preConfirm: () =>
$.ajax({
url: base + "/" + encodeURIComponent(notrans),
type: "DELETE",
headers: { "X-CSRF-TOKEN": $('meta[name="csrf-token"]').attr("content") },
}).catch((xhr) => {
Swal.showValidationMessage(xhr.responseJSON?.message || "Gagal menghapus data.");
}),
}).then((result) => {
if (result.isConfirmed && result.value) {
Swal.fire({icon: "success", title: "Berhasil", text: "Data diarsipkan.", timer: 1500, showConfirmButton: false}).then(() => {
$("#rowActions").addClass("d-none");
$("#search-button").click();
});
}
});
});
+21 -1
View File
@@ -96,6 +96,16 @@ $(document).ready(function () {
});
});
// Jumlahkan tarif semua kendaraan di list -> isi otomatis ke Harga.
// Harga dikirim angka polos (kolom double), tanpa pemisah ribuan.
function updateHarga() {
let total = 0;
$("#modal-member #list-nopol tr").each(function () {
total += parseFloat($(this).data("tarif")) || 0;
});
$("#modal-member input[name='harga']").val(total);
}
$("#nopol-add").on("click", function () {
var nopol = $(".nopol-add").val().trim();
console.log(nopol);
@@ -103,6 +113,7 @@ $(document).ready(function () {
var vehicle = $("#jenisVehicle").val();
var vehicleName = $("#jenisVehicle option:selected").text();
var member = $("#jenis-member option:selected").text();
var tarif = parseFloat($("#jenis-member").val()) || 0;
var merk = $(".merk").val().trim();
$(".nopol-add").removeClass("is-invalid"); // Hapus kelas jika ada sebelumnya
$(".nopol-add").next(".invalid-feedback").hide();
@@ -120,7 +131,7 @@ $(document).ready(function () {
success: function (r) {
if (r.response === true) {
var rowhtml = `
<tr>
<tr data-tarif="${tarif}">
<td class="text-center">${nopol}</td>
<td class="text-center" data-value="${vehicle}">${vehicleName}</td>
<td class="text-center">${member}</td>
@@ -132,6 +143,7 @@ $(document).ready(function () {
`;
$("#list-nopol").append(rowhtml);
console.log("Berhasil menambahkan " + nopol);
updateHarga();
$(".nopol-add").val("");
$("#jenisVehicle").val("");
@@ -195,6 +207,11 @@ $(document).ready(function () {
$(this).closest("tr").remove(); // Hapus baris yang diklik
});
$("#list-nopol").on("click", ".delete-row", function () {
$(this).closest("tr").remove();
updateHarga();
});
$(".simpan").on("click", function () {
var tombol = $(this);
var formCollect = $("#add-member").serialize();
@@ -243,6 +260,9 @@ $(document).ready(function () {
cardNumber: cardCollect,
};
updateHarga(); // pastikan harga = jumlah tarif kendaraan sebelum simpan
formDataObj.harga = $("#modal-member input[name='harga']").val();
if ($(".tambah-member").valid()) {
const saveHtml = tombol.html();
$.ajax({