diff --git a/public/scripts/world-info.js b/public/scripts/world-info.js index 6aad5d92e..a36d405c2 100644 --- a/public/scripts/world-info.js +++ b/public/scripts/world-info.js @@ -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) => {