fix: calculate pnl_pct in frontend when backend doesn't return it

Frontend now calculates total_pnl_pct from equity values if the backend
doesn't return this field. This ensures the performance chart displays
correctly regardless of backend version.
This commit is contained in:
tinkle-community
2025-12-08 18:08:01 +08:00
parent 9d6b631cd9
commit 30f7113a81

View File

@@ -38,7 +38,19 @@ export function ComparisonChart({ traders }: ComparisonChartProps) {
const traderIds = traders.map((trader) => trader.trader_id)
const batchData = await api.getEquityHistoryBatch(traderIds)
return traders.map((trader) => {
return batchData.histories[trader.trader_id] || []
const history = batchData.histories?.[trader.trader_id] || []
// If backend doesn't return total_pnl_pct, calculate it from equity
if (history.length > 0 && history[0].total_pnl_pct === undefined) {
const initialEquity = history[0].total_equity
history.forEach((point: any) => {
point.total_pnl_pct = initialEquity > 0
? ((point.total_equity - initialEquity) / initialEquity) * 100
: 0
})
}
return history
})
},
{