Merge pull request #15389 from BerriAI/litellm_usage_spend_per_day_chart_fix

fix: usage page >> Model Activity >> spend per day graph: y-axis clipping on large spend values
This commit is contained in:
Krish Dholakia 2025-10-10 13:08:26 -07:00 committed by GitHub
commit c8b93c3940
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 30 additions and 5 deletions

View file

@ -113,7 +113,8 @@ const ModelSection = ({ modelName, metrics }: { modelName: string; metrics: Mode
index="date"
categories={["metrics.spend"]}
colors={["green"]}
valueFormatter={(value: number) => `$${formatNumberWithCommas(value, 2)}`}
valueFormatter={(value: number) => `$${formatNumberWithCommas(value, 2, true)}`}
yAxisWidth={72}
/>
</Card>

View file

@ -12,14 +12,38 @@ export function updateExistingKeys<Source extends object>(target: Source, source
return clonedTarget;
}
export const formatNumberWithCommas = (value: number | null | undefined, decimals: number = 0): string => {
if (value === null || value === undefined) {
export const formatNumberWithCommas = (
value: number | null | undefined,
decimals: number = 0,
abbreviate: boolean = false,
): string => {
if (value === null || value === undefined || !Number.isFinite(value)) {
return "-";
}
return value.toLocaleString("en-US", {
const opts: Intl.NumberFormatOptions = {
minimumFractionDigits: decimals,
maximumFractionDigits: decimals,
});
};
if (!abbreviate) {
return value.toLocaleString("en-US", opts);
}
const sign = value < 0 ? "-" : "";
const abs = Math.abs(value);
let scaled = abs;
let suffix = "";
if (abs >= 1_000_000) {
scaled = abs / 1_000_000;
suffix = "M";
} else if (abs >= 1_000) {
scaled = abs / 1_000;
suffix = "K";
}
return `${sign}${scaled.toLocaleString("en-US", opts)}${suffix}`;
};
export const copyToClipboard = async (