diff --git a/packages/stats/app/src/routes/index.tsx b/packages/stats/app/src/routes/index.tsx
index 89188d97ce..f60dd51724 100644
--- a/packages/stats/app/src/routes/index.tsx
+++ b/packages/stats/app/src/routes/index.tsx
@@ -648,7 +648,7 @@ function TopModelsChart(props: { data: UsagePoint[]; range: UsageRange }) {
}}
>
-
+
{(item) => (
`${(item.segment.value / total) * 100}%`)
.join(" ")
}
@@ -738,6 +738,12 @@ function visibleTopModelsSegments(point: UsagePoint) {
return point.segments.map((segment, index) => ({ segment, index })).filter((item) => item.segment.value > 0)
}
+function stackedTopModelsSegments(point: UsagePoint) {
+ return visibleTopModelsSegments(point)
+ .slice()
+ .sort((a, b) => a.segment.value - b.segment.value || a.index - b.index)
+}
+
function getTopModelsSegmentColor(index: number, muted: boolean, activeSegment: number | undefined) {
if (activeSegment !== undefined)
return activeSegment === index ? (usageColors[index] ?? "var(--stats-text)") : "var(--stats-layer-2)"
@@ -982,35 +988,35 @@ function MarketShare(props: {
onClick={() => props.onActiveIndexChange(index())}
onPointerEnter={() => props.onActiveIndexChange(index())}
>
-
- {(author, authorIndex) => (
+
+ {(item) => (
{
event.stopPropagation()
props.onActiveIndexChange(index())
- props.onActiveAuthorChange(author.author)
+ props.onActiveAuthorChange(item.author.author)
}}
onPointerDown={(event) => {
event.stopPropagation()
props.onActiveIndexChange(index())
- props.onActiveAuthorChange(author.author)
+ props.onActiveAuthorChange(item.author.author)
}}
onClick={(event) => {
event.stopPropagation()
props.onActiveIndexChange(index())
- props.onActiveAuthorChange(author.author)
+ props.onActiveAuthorChange(item.author.author)
}}
/>
)}
@@ -1063,6 +1069,13 @@ function getMarketSegmentColor(author: string, color: string, activeAuthor: stri
return "var(--stats-bar-idle)"
}
+function stackedMarketAuthors(day: MarketDay) {
+ return day.authors
+ .map((author, index) => ({ author, index }))
+ .slice()
+ .sort((a, b) => a.author.share - b.author.share || a.index - b.index)
+}
+
function isMarketMobileLabelHidden(index: number, count: number) {
return count > 7 && index % 2 === 1
}