Table of Content
Introduction
Ada case misal dimana header nya tidak terisi atau kosong. Kita bisa isi secara manual lohhh di datatable nya.
Kode
function getData(){
$("#table").DataTable({
ordering: false,
dom: "<'row'<'col-sm-6 text-left'f><'col-sm-6 text-right'B>>\\\\
<'row'<'col-sm-12'tr>>\\\\
<'row'<'col-sm-12 col-md-5'i><'col-sm-12 col-md-7 dataTables_pager'lp>>",
buttons: [
{
extend: 'excel',
filename: 'Laporan Serah Terima Sampel Noodle Harian',
exportOptions: {
columns: ':not(:last-child)',
format: {
header: function (data, columnIdx) {
switch (columnIdx) {
case 0:
return 'MID';
case 1:
return 'Varian';
case 2:
return 'Tgl Produksi';
case 3:
return 'Tokiwa';
case 4:
return 'Jumlah Sampel';
default:
return data;
}
}
}
}
},
],
ajax: {
type: "GET",
url: "/shelf-life-qa/report/getDataSerahTerimaHarian"
},
columns: [
{ data: "master_variant.mid" },
{ data: "master_variant.kode" },
{ data: "tgl_produksi" },
{ data: "tokiwa" },
{
data: "jumlah_sample",
width: "10%",
render: function(data, type, row){
return `<center>${data}</center>`
}
},
{
data: "status",
render: function(data, type, row){
let status = ''
if(data == null){
status = `<span class="badge bg-secondary">waiting check</span>`;
}else if(data == 'diterima'){
status = `<span class="badge bg-success text-white">diterima</span>`;
}else if(data == 'check in'){
status = `<span class="badge bg-info text-white">check in</span>`;
}else if(data == 'approve'){
status = `<span class="badge text-white" style="background-color: blue">approve</span>`;
}else{
status = `<span class="badge bg-danger text-white">reject</span>`;
}
return status;
}
},
],
lengthMenu: [
[10, 25, 50, -1],
[10, 25, 50, "Semua"]
],
pageLength: 10,
initComplete: function() {
var api = this.api();
$('.dataTables_filter').hide();
api.columns([0, 1, 2, 3, 4, 5]).eq(0).each(function(colIdx) {
var cell = api.column(colIdx).header();
var title = $(cell).text();
$(cell).html('<input type="text" class="form-control" placeholder="' + title + '" />');
$($(cell).find('input')).on('keyup change', function() {
api.column(colIdx).search(this.value).draw();
});
});
}
});
} getData();Penjelasan:
dom: Opsi ini mengatur struktur HTML yang digunakan oleh DataTables untuk menampilkan elemen-elemen seperti filter, pagination, dan tabel itu sendiri.<row>: Menandakan bahwa kita menggunakan baris untuk mengatur elemen.<col-sm-6 text-left>: Mengatur kolom untuk filter (f) di sebelah kiri.<col-sm-6 text-right>: Mengatur kolom untuk tombol (B) di sebelah kanan.<tr>: Menandakan tempat di mana tabel data akan ditampilkan.<col-sm-12 col-md-5>: Mengatur kolom untuk informasi tabel (i).<col-sm-12 col-md-7 dataTables_pager: Mengatur kolom untuk pagination (p).buttons: Opsi ini mendefinisikan tombol-tombol yang akan ditampilkan di DataTable, dalam hal ini, tombol untuk mengekspor data ke Excel.extend: 'excel': Menentukan bahwa tombol ini akan digunakan untuk mengekspor data ke format Excel.filename: 'Laporan Serah Terima Sampel Noodle Harian': Menentukan nama file yang akan digunakan saat mengunduh file Excel.exportOptions: Opsi ini mengatur bagaimana data akan diekspor.columns: ':not(:last-child)': Menentukan kolom mana yang akan diekspor. Dalam hal ini, semua kolom kecuali kolom terakhir akan diekspor.format: Opsi ini mengatur format data yang akan diekspor.header: Fungsi ini digunakan untuk menentukan header kustom untuk setiap kolom saat diekspor.data: Parameter ini berisi data header asli dari kolom.columnIdx: Parameter ini berisi indeks kolom yang sedang diproses.switch (columnIdx): Menggunakan pernyataanswitchuntuk menentukan header kustom berdasarkan indeks kolom.case 0: Jika kolom pertama (indeks 0), header yang akan digunakan adalah ‘MID’.case 1: Jika kolom kedua (indeks 1), header yang akan digunakan adalah ‘Varian’.case 2: Jika kolom ketiga (indeks 2), header yang akan digunakan adalah ‘Tgl Produksi’.case 3: Jika kolom keempat (indeks 3), header yang akan digunakan adalah ‘Tokiwa’.case 4: Jika kolom kelima (indeks 4), header yang akan digunakan adalah ‘Jumlah Sampel’.default: Jika tidak ada kecocokan, mengembalikan data asli dari header.
Date: 10-12-2024