Fix Priority Sort

Corrected and expanded priority sort logic to sort by:

First constant, then normal, then disabled, then by comment.
This commit is contained in:
Khreed 2024-10-09 19:17:42 -04:00
parent 33a126491e
commit 28861660ef
1 changed files with 27 additions and 4 deletions

View File

@ -1678,11 +1678,34 @@ export function sortWorldInfoEntries(data, { customSort = null } = {}) {
return aValue - bValue;
};
} else if (sortRule === 'priority') {
// First constant, then normal, then disabled.
// First constant, then normal, then disabled, then by comment.
primarySort = (a, b) => {
const aValue = a.constant ? 0 : a.disable ? 2 : 1;
const bValue = b.constant ? 0 : b.disable ? 2 : 1;
return aValue - bValue;
// Determine priority based on disable and constant flags
const aPriority = a.disable ? 2 : a.constant ? 0 : 1;
const bPriority = b.disable ? 2 : b.constant ? 0 : 1;
// Compare priorities first
if (aPriority !== bPriority) {
return aPriority - bPriority;
}
// Normalize comments for comparison, handling null/undefined
const commentA = a.comment ? a.comment.toLowerCase() : '';
const commentB = b.comment ? b.comment.toLowerCase() : '';
// Assign constant values for further comparison
const constantA = a.constant ? 0 : 1;
const constantB = b.constant ? 0 : 1;
// If priorities are equal, compare constants
if (aPriority === bPriority) {
if (constantA !== constantB) {
return constantA - constantB;
}
}
// Finally, compare comments alphabetically
return commentA.localeCompare(commentB);
};
} else {
primarySort = (a, b) => {