Mengubah tombol aksi ketika nomor registrasi ada di tabel penawaran maka munculkan tombol penawaran ulang begitu juga sebaliknya

This commit is contained in:
2024-10-09 11:09:59 +07:00
parent 21a877ddf1
commit b5c206728f
4 changed files with 119 additions and 35 deletions

View File

@@ -111,6 +111,45 @@
return char.toUpperCase();
});
}
// Function to check the existence of penawaran and update button
function checkPenawaranExistence(nomor_registrasi) {
// URL API untuk cek penawaran
const url = `/api/check-penawaran/${nomor_registrasi}`;
// Fetch data dari server
fetch(url)
.then(response => response.json())
.then(data => {
const actionDiv = document.getElementById(`action-${nomor_registrasi}`);
if (data.exists) {
// Jika penawaran ada, ganti tombol menjadi "Penawaran Ulang"
actionDiv.innerHTML = `
<a class="btn btn-sm btn-icon btn-clear btn-warning" title="Detail" href="/tender/penawaran/${nomor_registrasi}/show">
<i class="ki-outline ki-abstract-26"></i>
</a>
<a href="/tender/penawaran/${nomor_registrasi}/edit" class="btn btn-sm btn-icon btn-clear btn-info" title="Penawaran">
<i class="ki-outline ki-arrow-circle-right"></i>
</a>
`;
} else {
// Jika tidak ada, tampilkan tombol "Tambah Penawaran"
actionDiv.innerHTML = `
<a class="btn btn-sm btn-icon btn-clear btn-warning" title="Detail" href="/tender/penawaran/${nomor_registrasi}/show">
<i class="ki-outline ki-abstract-26"></i>
</a>
<a href="/tender/penawaran/${nomor_registrasi}/create" class="btn btn-sm btn-icon btn-clear btn-primary" title="Penawaran">
<i class="ki-outline ki-arrow-circle-right"></i>
</a>
`;
}
})
.catch(error => {
console.error('Error:', error);
const actionDiv = document.getElementById(`action-${nomor_registrasi}`);
actionDiv.innerHTML = `<span class="text-danger">Error loading action</span>`;
});
}
</script>
<script type="module">
const element = document.querySelector('#penawaran-table');
@@ -173,35 +212,23 @@
actions: {
title: 'Action',
render: (item, data) => {
// Display default links first
return `<div class="flex flex-nowrap justify-center" id="action-${data.nomor_registrasi}">
<a class="btn btn-sm btn-icon btn-clear btn-primary" title="Detail" href="tender/penawaran/${data.nomor_registrasi}/show">
<i class="ki-outline ki-abstract-26"></i>
</a>
<a class="btn btn-sm btn-icon btn-clear btn-info" title="Penawaran" href="tender/penawaran/${data.nomor_registrasi}/create" id="penawaran-link-${data.nomor_registrasi}">
<i class="ki-outline ki-arrow-circle-right"></i>
</a>
</div>`;
},
createdRow: function(row, data, dataIndex) {
// Call checkPenawaranExistence after the row is rendered
checkPenawaranExistence(data.nomor_registrasi)
.then(penawaranExists => {
// Update link based on penawaranExists status
let penawaranUrl = penawaranExists ?
`tender/penawaran/${data.nomor_registrasi}/edit` :
`tender/penawaran/${data.nomor_registrasi}/create`;
// Default action button, to be updated later
let actionHtml = `
<div class="flex flex-nowrap justify-center" id="action-${data.nomor_registrasi}">
<a class="btn btn-sm btn-icon btn-clear btn-secondary" title="Loading..." href="#">
<i class="ki-outline ki-loading"></i>
</a>
</div>
`;
// Update href of the Penawaran link
$(`#penawaran-link-${data.nomor_registrasi}`).attr('href', penawaranUrl);
})
.catch(error => {
console.error("Error fetching penawaran existence:", error);
});
// Call the checkPenawaranExistence function to update the action button dynamically
setTimeout(() => { // Using setTimeout to ensure DOM elements are rendered before updating
checkPenawaranExistence(data.nomor_registrasi);
}, 0);
return actionHtml;
}
}
},
};