fix(analysis): pad comparison chart Y domain to 20% around the range
This commit is contained in:
@@ -130,6 +130,24 @@ export function AnalysisPage({ currency }: { currency: string }) {
|
|||||||
.map(({ date, ...rest }) => ({ date: formatShortDate(date), ...rest }));
|
.map(({ date, ...rest }) => ({ date: formatShortDate(date), ...rest }));
|
||||||
}, [beloDaily, blueDaily, bnaDaily]);
|
}, [beloDaily, blueDaily, bnaDaily]);
|
||||||
|
|
||||||
|
const comparisonDomain = useMemo(() => {
|
||||||
|
if (comparisonData.length === 0) return [0, 0] as [number, number];
|
||||||
|
let min = Infinity;
|
||||||
|
let max = -Infinity;
|
||||||
|
for (const d of comparisonData) {
|
||||||
|
for (const key of ["BELO", "BLUE", "BNA"] as const) {
|
||||||
|
const value = d[key];
|
||||||
|
if (value === undefined) continue;
|
||||||
|
if (value < min) min = value;
|
||||||
|
if (value > max) max = value;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (!Number.isFinite(min) || !Number.isFinite(max))
|
||||||
|
return [0, 0] as [number, number];
|
||||||
|
const range = max - min;
|
||||||
|
return [min - range * 0.2, max + range * 0.2] as [number, number];
|
||||||
|
}, [comparisonData]);
|
||||||
|
|
||||||
const { yDomain, minBuyValue, maxBuyValue, avgBuyValue } = useMemo(() => {
|
const { yDomain, minBuyValue, maxBuyValue, avgBuyValue } = useMemo(() => {
|
||||||
if (chartData.length === 0)
|
if (chartData.length === 0)
|
||||||
return {
|
return {
|
||||||
@@ -480,6 +498,7 @@ export function AnalysisPage({ currency }: { currency: string }) {
|
|||||||
`$${priceFormatter.format(v)}`
|
`$${priceFormatter.format(v)}`
|
||||||
}
|
}
|
||||||
width={80}
|
width={80}
|
||||||
|
domain={comparisonDomain}
|
||||||
/>
|
/>
|
||||||
<Tooltip
|
<Tooltip
|
||||||
formatter={(value: unknown, name: unknown) => [
|
formatter={(value: unknown, name: unknown) => [
|
||||||
|
|||||||
Reference in New Issue
Block a user