Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 9 additions & 2 deletions resources/views/presisi/statistik/pangan.blade.php
Original file line number Diff line number Diff line change
Expand Up @@ -325,7 +325,10 @@ function exportToExcel() {
processing: true,
serverSide: true,
autoWidth: false,
ordering: false,
ordering: true,
order: [
[2, 'desc']
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[CRITICAL] 🐛 Bug: Default Sort Order Salah - Mengarah ke Kolom AKSI bukan Jumlah Pangan

Kode:

order: [
    [2, 'desc']
],

Skenario:
Ketika tabel pertama kali di-load atau di-reload, DataTables akan mencoba sort berdasarkan kolom index 2. Namun kolom index 2 adalah kolom "AKSI" yang berisi tombol Edit/Hapus (HTML buttons), bukan kolom "Jumlah Pangan (Kg)" yang seharusnya di-sort.

Struktur kolom DataTables:

  • Index 0: Checkbox
  • Index 1: NO (nomor urut)
  • Index 2: AKSI (action buttons) ← SALAH, ini yang di-sort sekarang
  • Index 3: NIK
  • Index 4: NAMA
  • Index 5: ALAMAT
  • Index 6: JUMLAH PANGAN (KG) ← SEHARUSNYA ini yang di-sort
  • Index 7: TANGGAL INPUT
  • Index 8: STATUS

Kolom AKSI juga sudah di-set orderable: false di line 122, sehingga terjadi konflik konfigurasi.

Dampak:

  1. Default sorting tidak berfungsi sesuai ekspektasi (tidak sort by jumlah pangan)
  2. DataTables mungkin menampilkan warning di console karena mencoba sort kolom yang orderable: false
  3. User melihat data dalam urutan yang tidak sesuai dengan tujuan PR (menampilkan jumlah pangan terbesar di atas)
  4. Sorting behavior menjadi unpredictable dan membingungkan user

Fix:

order: [
    [6, 'desc']  // Index 6 adalah kolom "Jumlah Pangan (Kg)"
],

Atau jika ingin lebih maintainable (tidak bergantung pada hardcoded index):

// Tambahkan className pada kolom Jumlah
{
    data: 'jumlah',
    name: 'jumlah',
    searchable: true,
    orderable: true,
    className: 'jumlah-pangan'  // tambahkan ini
},

// Lalu gunakan columnDefs untuk set default order
columnDefs: [{
    targets: 'jumlah-pangan',
    orderData: [6]
}],
order: [[6, 'desc']]

],
searching: false,
deferLoading: 0,
paging: false,
Expand Down Expand Up @@ -376,7 +379,8 @@ className: 'dt-body-right',
data: null,
render: function (data, type, row, meta) {
return meta.row + 1;
}
},
orderable: false,
}, {
data: function (data) {
const nilai = data.attributes?.nilai || data.id || '';
Expand All @@ -397,6 +401,7 @@ className: 'dt-body-right',

return nilai;
},
orderable: false,
}, {
data: function (data) {
const nilai = data.attributes?.nilai || data.id || '';
Expand All @@ -413,6 +418,8 @@ className: 'dt-body-right',

return jumlah;
},
orderable: true,
name: 'jumlah',
}]
});

Expand Down
Loading