fix: limit X-axis to 8 ticks with date bold + time at angle
ci/woodpecker/push/test Pipeline was successful
ci/woodpecker/push/build-2 Pipeline was successful
ci/woodpecker/push/build-1 Pipeline was successful
ci/woodpecker/push/build-3 Pipeline failed
ci/woodpecker/push/finalize unknown status
Build and Push / lint-and-test (push) Has been cancelled
Build and Push / build-services (map[cmd:python -m services.adapters.broker_adapter name:broker-adapter]) (push) Has been cancelled
Build and Push / build-services (map[cmd:python -m services.aggregation.worker name:aggregation]) (push) Has been cancelled
Build and Push / build-services (map[cmd:python -m services.extractor.worker name:extractor]) (push) Has been cancelled
Build and Push / build-services (map[cmd:python -m services.ingestion.worker name:ingestion]) (push) Has been cancelled
Build and Push / build-services (map[cmd:python -m services.lake_publisher.worker name:lake-publisher]) (push) Has been cancelled
Build and Push / build-services (map[cmd:python -m services.parser.worker name:parser]) (push) Has been cancelled
Build and Push / build-services (map[cmd:python -m services.recommendation.worker name:recommendation]) (push) Has been cancelled
Build and Push / build-services (map[cmd:python -m services.scheduler.app name:scheduler]) (push) Has been cancelled
Build and Push / build-services (map[cmd:uvicorn services.api.app:app --host 0.0.0.0 --port 8000 name:query-api]) (push) Has been cancelled
Build and Push / build-services (map[cmd:uvicorn services.risk.app:app --host 0.0.0.0 --port 8000 name:risk]) (push) Has been cancelled
Build and Push / build-services (map[cmd:uvicorn services.symbol_registry.app:app --host 0.0.0.0 --port 8000 name:symbol-registry]) (push) Has been cancelled
Build and Push / build-services (map[cmd:uvicorn services.trading.app:app --host 0.0.0.0 --port 8000 name:trading-engine]) (push) Has been cancelled
Build and Push / build-dashboard (push) Has been cancelled
Build and Push / build-superset (push) Has been cancelled
Build and Push / integration-test (push) Has been cancelled
Build and Push / beta-gate (push) Has been cancelled

Was showing every data point timestamp. Now:
- Recharts generates max 8 evenly-spaced ticks
- Each tick shows 'Apr 29' in bold white + '2 PM' in gray
- All labels at -35° angle to avoid overlap
- Simplified tick component (no hour-boundary filtering needed)
This commit is contained in:
Celes Renata
2026-04-29 21:43:44 +00:00
parent e976363259
commit 9975c2098b
+7 -22
View File
@@ -606,29 +606,14 @@ function ChartXTick({ x, y, payload }: { x?: number; y?: number; payload?: { val
if (!payload || !x || !y) return null; if (!payload || !x || !y) return null;
const d = new Date(payload.value); const d = new Date(payload.value);
const hour = d.getHours(); const hour = d.getHours();
const minute = d.getMinutes(); const dateStr = d.toLocaleDateString('en-US', { month: 'short', day: 'numeric' });
const isNewDay = hour === 0 && minute < 30; const timeStr = d.toLocaleTimeString('en-US', { hour: 'numeric', hour12: true });
const isHourMark = minute < 15; // Show only on-the-hour ticks
// For date labels (new day boundary)
if (isNewDay) {
const label = d.toLocaleDateString('en-US', { month: 'short', day: 'numeric' });
return (
<g transform={`translate(${x},${y})`}>
<text x={0} y={12} textAnchor="middle" fill="#e2e8f0" fontSize={11} fontWeight="bold">
{label}
</text>
</g>
);
}
// For time labels — show rounded hours at an angle
if (!isHourMark) return null;
const timeStr = d.toLocaleTimeString('en-US', { hour: 'numeric', minute: '2-digit' });
return ( return (
<g transform={`translate(${x},${y})`}> <g transform={`translate(${x},${y + 4})`}>
<text x={0} y={8} textAnchor="end" fill="#94a3b8" fontSize={10} transform="rotate(-35)"> <text x={0} y={0} textAnchor="end" fontSize={10} transform="rotate(-35)">
{timeStr} <tspan fill="#e2e8f0" fontWeight="bold">{dateStr} </tspan>
<tspan fill="#94a3b8">{timeStr}</tspan>
</text> </text>
</g> </g>
); );
@@ -808,7 +793,7 @@ function TrendHistoryChart({ trends, latestTrends, ticker, marketPrices, selecte
scale="time" scale="time"
tick={<ChartXTick />} tick={<ChartXTick />}
tickLine={{ stroke: '#475569' }} tickLine={{ stroke: '#475569' }}
interval="preserveStartEnd" tickCount={8}
/> />
<YAxis <YAxis
yAxisId="left" yAxisId="left"