diff --git a/src/components/usage/UsageChart.tsx b/src/components/usage/UsageChart.tsx index 191fa653ff..cf7ed4ef13 100644 --- a/src/components/usage/UsageChart.tsx +++ b/src/components/usage/UsageChart.tsx @@ -399,13 +399,18 @@ const CustomTooltip = ({ }); } + // Sort payload entries alphabetically by dataKey (user name) + const sortedPayload = [...payload].sort((a, b) => + a.dataKey.localeCompare(b.dataKey), + ); + return (

{formattedDate}

- {payload.map((entry, index) => ( + {sortedPayload.map((entry, index) => (
{ users.add(item.user.name || item.user.email || 'Unknown'); }); + // Sort alphabetically return Array.from(users).sort(); }, [hourlyUsage]); + // Reverse the order for chart rendering so alphabetically first user appears at top + const reversedUsers = useMemo(() => { + return [...uniqueUsers].reverse(); + }, [uniqueUsers]); + const formatValue = (value: number) => { switch (selectedMetric) { case 'cost': @@ -642,19 +653,20 @@ export const UsageChart = ({ opacity: 0.1, }} /> - {uniqueUsers.map((user, index) => ( - setHoveredUser(user)} - onMouseLeave={() => setHoveredUser(null)} - /> - ))} + {reversedUsers.map((user) => { + // Find the original alphabetical position for consistent colors + const originalIndex = uniqueUsers.indexOf(user); + return ( + setHoveredUser(user)} + onMouseLeave={() => setHoveredUser(null)} + /> + ); + })}