refactor: improve sorting logic for server statistics by adding numeric handling for specific columns and normalizing NaN values
This commit is contained in:
@@ -4014,8 +4014,15 @@
|
||||
var aVal = a.row.getAttribute(dataAttr) || '';
|
||||
var bVal = b.row.getAttribute(dataAttr) || '';
|
||||
|
||||
// Check if this is a date column (date-time, start-time, or end-time)
|
||||
// Column helpers
|
||||
var isDateColumn = column === 'date-time' || column === 'start-time' || column === 'end-time';
|
||||
// Treat these columns as numeric even if stored as strings/data-attributes
|
||||
var isNumericColumn = (
|
||||
column === 'traffic' ||
|
||||
column === 'duration' ||
|
||||
column === 'bytes' ||
|
||||
column === 'size'
|
||||
);
|
||||
|
||||
if (isDateColumn) {
|
||||
// Handle date values (format: YYYY-MM-DD HH:mm:ss)
|
||||
@@ -4080,11 +4087,27 @@
|
||||
}
|
||||
}
|
||||
|
||||
// Handle numeric values (for duration, etc.)
|
||||
var aNum = parseFloat(aVal);
|
||||
var bNum = parseFloat(bVal);
|
||||
if (!isNaN(aNum) && !isNaN(bNum) && aVal !== '' && bVal !== '') {
|
||||
return component.sortDirection === 'asc' ? aNum - bNum : bNum - aNum;
|
||||
// Handle numeric values (for traffic, duration, etc.)
|
||||
if (isNumericColumn) {
|
||||
var aNum = parseFloat(aVal);
|
||||
var bNum = parseFloat(bVal);
|
||||
|
||||
// Normalise NaN and empty values to 0 so rows still participate in sort
|
||||
if (isNaN(aNum)) aNum = 0;
|
||||
if (isNaN(bNum)) bNum = 0;
|
||||
|
||||
if (component.sortDirection === 'asc') {
|
||||
return aNum - bNum;
|
||||
} else {
|
||||
return bNum - aNum;
|
||||
}
|
||||
} else {
|
||||
// Generic numeric handling for other cases where both values are valid numbers
|
||||
var aNumGeneric = parseFloat(aVal);
|
||||
var bNumGeneric = parseFloat(bVal);
|
||||
if (!isNaN(aNumGeneric) && !isNaN(bNumGeneric) && aVal !== '' && bVal !== '') {
|
||||
return component.sortDirection === 'asc' ? aNumGeneric - bNumGeneric : bNumGeneric - aNumGeneric;
|
||||
}
|
||||
}
|
||||
|
||||
// Handle string values
|
||||
|
||||
Reference in New Issue
Block a user