修复币本位实时盈亏闪烁:禁止ETH盈亏与U混加后被两位小数抹成0
Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -1157,32 +1157,38 @@ function paintRealtimePnlFromSnapshot(data){
|
||||
const coinMode = String(data.options_margin_mode || "").toLowerCase() === "coin";
|
||||
const underly = String(data.options_underly || "ETH").toUpperCase() || "ETH";
|
||||
const spotPx = data.options_index_px != null ? Number(data.options_index_px) : null;
|
||||
if (coinMode && opt != null && !Number.isNaN(Number(opt))) {
|
||||
if (perp != null && Math.abs(Number(perp)) >= 0.005) {
|
||||
const optAbs = Math.abs(Number(opt)).toFixed(8).replace(/\.?0+$/, "") || "0";
|
||||
const optSign = Number(opt) > 0 ? "+" : (Number(opt) < 0 ? "-" : "");
|
||||
const perpSign = Number(perp) > 0 ? "+" : "";
|
||||
let optPart = `${optSign}${optAbs} ${underly}`;
|
||||
if (Number.isFinite(spotPx) && spotPx > 0) {
|
||||
const uu = Number(opt) * spotPx;
|
||||
const uAbs = Math.abs(uu).toFixed(2);
|
||||
const uSign = uu < 0 ? "-" : uu > 0 ? "+" : "";
|
||||
optPart += ` / ${uSign}${uAbs}U`;
|
||||
if (coinMode) {
|
||||
if (opt != null && !Number.isNaN(Number(opt))) {
|
||||
if (perp != null && Math.abs(Number(perp)) >= 0.005) {
|
||||
const optAbs = Math.abs(Number(opt)).toFixed(8).replace(/\.?0+$/, "") || "0";
|
||||
const optSign = Number(opt) > 0 ? "+" : (Number(opt) < 0 ? "-" : "");
|
||||
const perpSign = Number(perp) > 0 ? "+" : "";
|
||||
let optPart = `${optSign}${optAbs} ${underly}`;
|
||||
if (Number.isFinite(spotPx) && spotPx > 0) {
|
||||
const uu = Number(opt) * spotPx;
|
||||
const uAbs = Math.abs(uu).toFixed(2);
|
||||
const uSign = uu < 0 ? "-" : uu > 0 ? "+" : "";
|
||||
optPart += ` / ${uSign}${uAbs}U`;
|
||||
}
|
||||
const text = `${perpSign}${Number(perp).toFixed(2)}U / ${optPart}`;
|
||||
lastRealtimePnl = Number(opt);
|
||||
lastRealtimePnlUnit = underly;
|
||||
lastRealtimePnlSpotPx = spotPx;
|
||||
document.querySelectorAll('[data-funds-field="realtime-pnl"]').forEach((pnlEl) => {
|
||||
pnlEl.innerText = text;
|
||||
const n = Number(opt) + Number(perp);
|
||||
pnlEl.classList.toggle("pnl-pos", n > 0);
|
||||
pnlEl.classList.toggle("pnl-neg", n < 0);
|
||||
});
|
||||
return;
|
||||
}
|
||||
const text = `${perpSign}${Number(perp).toFixed(2)}U / ${optPart}`;
|
||||
lastRealtimePnl = Number(opt);
|
||||
lastRealtimePnlUnit = underly;
|
||||
lastRealtimePnlSpotPx = spotPx;
|
||||
document.querySelectorAll('[data-funds-field="realtime-pnl"]').forEach((pnlEl) => {
|
||||
pnlEl.innerText = text;
|
||||
const n = Number(opt) + Number(perp);
|
||||
pnlEl.classList.toggle("pnl-pos", n > 0);
|
||||
pnlEl.classList.toggle("pnl-neg", n < 0);
|
||||
});
|
||||
paintRealtimePnl(opt, underly, spotPx);
|
||||
return;
|
||||
}
|
||||
// 期权盈亏拉取失败时保留上次有效值,避免顶栏闪成 0/—
|
||||
if (lastRealtimePnl != null && (lastRealtimePnlUnit === "ETH" || lastRealtimePnlUnit === "BTC")) {
|
||||
return;
|
||||
}
|
||||
paintRealtimePnl(opt, underly, spotPx);
|
||||
return;
|
||||
}
|
||||
const combined = combineRealtimeFloatPnl(perp, opt);
|
||||
if(combined !== null || perp !== null || opt != null){
|
||||
@@ -1302,8 +1308,17 @@ function applyAccountSnapshot(data){
|
||||
);
|
||||
setFundsFieldText("options-trading-usdc", optTrading);
|
||||
}
|
||||
if(typeof data.unrealized_pnl !== "undefined"){
|
||||
updateRealtimePnl(data.unrealized_pnl);
|
||||
if(typeof data.unrealized_pnl !== "undefined" || typeof data.options_unrealized_pnl !== "undefined"){
|
||||
const coinMode = String(data.options_margin_mode || "").toLowerCase() === "coin";
|
||||
if (coinMode && data.options_unrealized_pnl != null && !Number.isNaN(Number(data.options_unrealized_pnl))) {
|
||||
paintRealtimePnl(
|
||||
data.options_unrealized_pnl,
|
||||
String(data.options_underly || "ETH").toUpperCase() || "ETH",
|
||||
data.options_index_px
|
||||
);
|
||||
} else if (typeof data.unrealized_pnl !== "undefined") {
|
||||
updateRealtimePnl(data.unrealized_pnl, "U");
|
||||
}
|
||||
}
|
||||
if(typeof data.total !== "undefined" && data.total !== null){
|
||||
setFundsFieldText("stat-total", String(data.total));
|
||||
|
||||
Reference in New Issue
Block a user