Add active hedge plan tab
Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -109,7 +109,7 @@
|
||||
b.classList.toggle("active", on);
|
||||
b.setAttribute("aria-selected", on ? "true" : "false");
|
||||
});
|
||||
["perp_options", "options_options", "history", "stats"].forEach(function (id) {
|
||||
["perp_options", "options_options", "active", "history", "stats"].forEach(function (id) {
|
||||
const panel = $("hp-tab-" + id);
|
||||
if (!panel) return;
|
||||
const on = id === tab;
|
||||
@@ -720,6 +720,8 @@
|
||||
syncTabUI();
|
||||
if (state.tab === "perp_options" || state.tab === "options_options") {
|
||||
void loadGates();
|
||||
} else if (state.tab === "active") {
|
||||
void loadActivePlans();
|
||||
} else if (state.tab === "history") {
|
||||
void loadHistory();
|
||||
} else if (state.tab === "stats") {
|
||||
@@ -868,6 +870,60 @@
|
||||
}
|
||||
}
|
||||
|
||||
function activeTargetLabel(p) {
|
||||
if (p.plan_type === "perp_options") {
|
||||
return "止盈 " + fmt(p.tp) + " · 止损 " + fmt(p.sl);
|
||||
}
|
||||
return "上破 " + fmt(p.target_price_up || p.target_price) + " · 下破 " + fmt(p.target_price_down || p.target_price);
|
||||
}
|
||||
|
||||
async function loadActivePlans() {
|
||||
const tbody = $("hp-active-tbody");
|
||||
if (!tbody) return;
|
||||
try {
|
||||
const d = await apiJson("/api/hedge-plan/active");
|
||||
const rows = d.plans || [];
|
||||
if (!rows.length) {
|
||||
tbody.innerHTML = '<tr><td colspan="8" class="muted">暂无进行中的计划</td></tr>';
|
||||
return;
|
||||
}
|
||||
tbody.innerHTML = "";
|
||||
rows.forEach(function (p) {
|
||||
const tr = document.createElement("tr");
|
||||
const typeLabel = p.plan_type === "perp_options" ? "永期" : "期期";
|
||||
const contracts = p.contracts_summary || "—";
|
||||
tr.innerHTML =
|
||||
"<td>#" +
|
||||
p.id +
|
||||
"</td><td>" +
|
||||
typeLabel +
|
||||
"</td><td>" +
|
||||
(p.underlying || "") +
|
||||
"</td><td class=\"hp-contracts-cell\" title=\"" +
|
||||
String(contracts).replace(/"/g, """) +
|
||||
"\"><code>" +
|
||||
contracts +
|
||||
"</code></td><td>" +
|
||||
(p.status || "") +
|
||||
"</td><td>" +
|
||||
activeTargetLabel(p) +
|
||||
"</td><td>" +
|
||||
(p.opened_at || "—") +
|
||||
'</td><td class="hp-hist-actions"><button type="button" class="btn-secondary hp-btn-detail" data-id="' +
|
||||
p.id +
|
||||
'">成交细节</button></td>';
|
||||
tbody.appendChild(tr);
|
||||
});
|
||||
tbody.querySelectorAll(".hp-btn-detail").forEach(function (btn) {
|
||||
btn.addEventListener("click", function () {
|
||||
void showPlanDetail(Number(btn.getAttribute("data-id")));
|
||||
});
|
||||
});
|
||||
} catch (e) {
|
||||
tbody.innerHTML = '<tr><td colspan="8" class="err">' + (e.message || e) + "</td></tr>";
|
||||
}
|
||||
}
|
||||
|
||||
function reasonLabel(r) {
|
||||
const map = {
|
||||
perp_tp: "永续止盈",
|
||||
|
||||
Reference in New Issue
Block a user