Filter periode member + harga otomatis + soft delete arsip + ganti alert ke Swal
This commit is contained in:
@@ -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...');
|
||||
},
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
@@ -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();
|
||||
|
||||
@@ -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();
|
||||
});
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
|
||||
@@ -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({
|
||||
|
||||
Reference in New Issue
Block a user