1
1
mirror of https://github.com/Fabio286/antares.git synced 2025-02-12 01:30:46 +01:00

fix: incorrect behavior in sorting tables with null/empty values, fixes #883

This commit is contained in:
Fabio Di Stasio 2024-10-17 18:12:34 +02:00
parent d2da8c2446
commit b6c5dff15c

View File

@ -366,12 +366,21 @@ const sortedResults = computed(() => {
const sortObj = currentSort.value[resultsetIndex.value];
return [...localResults.value].sort((a: any, b: any) => {
let modifier = 1;
let valA = typeof a[sortObj.field] === 'string' ? a[sortObj.field].toLowerCase() : a[sortObj.field];
if (!isNaN(valA)) valA = Number(valA);
let valB = typeof b[sortObj.field] === 'string' ? b[sortObj.field].toLowerCase() : b[sortObj.field];
if (!isNaN(valB)) valB = Number(valB);
if (sortObj.dir === 'desc') modifier = -1;
const modifier = sortObj.dir === 'desc' ? -1 : 1;
let valA = a[sortObj.field];
let valB = b[sortObj.field];
// Handle null values
if (valA === null && valB !== null) return sortObj.dir === 'asc' ? -1 : 1;
if (valA !== null && valB === null) return sortObj.dir === 'asc' ? 1 : -1;
if (valA === null && valB === null) return 0;
valA = typeof valA === 'string' ? valA.toLowerCase() : valA;
valB = typeof valB === 'string' ? valB.toLowerCase() : valB;
if (!isNaN(valA)) valA = String(Number(valA));
if (!isNaN(valB)) valB = String(Number(valB));
if (valA < valB) return -1 * modifier;
if (valA > valB) return 1 * modifier;
return 0;