增加反代
This commit is contained in:
@@ -17,6 +17,22 @@
|
||||
return r;
|
||||
}
|
||||
|
||||
async function openInstanceInBrowser(exchangeId, nextPath) {
|
||||
const next = nextPath || "/";
|
||||
try {
|
||||
const q = new URLSearchParams({ exchange_id: String(exchangeId), next });
|
||||
const r = await apiFetch("/api/instance/open-url?" + q.toString());
|
||||
const j = await r.json();
|
||||
if (j.ok && j.url) {
|
||||
window.open(j.url, "_blank", "noopener");
|
||||
return;
|
||||
}
|
||||
showToast(j.detail || "无法生成打开链接", true);
|
||||
} catch (e) {
|
||||
showToast(String(e), true);
|
||||
}
|
||||
}
|
||||
|
||||
async function initAuth() {
|
||||
try {
|
||||
const r = await fetch("/api/auth/status");
|
||||
@@ -312,6 +328,13 @@
|
||||
}
|
||||
|
||||
function bindMonitorInteractions(box) {
|
||||
box.querySelectorAll(".btn-open-instance").forEach((btn) => {
|
||||
btn.onclick = (ev) => {
|
||||
ev.preventDefault();
|
||||
ev.stopPropagation();
|
||||
openInstanceInBrowser(btn.dataset.exId, btn.dataset.next || "/");
|
||||
};
|
||||
});
|
||||
box.querySelectorAll(".btn-close-ex").forEach((btn) => {
|
||||
btn.onclick = () => closeOne(btn.dataset.id);
|
||||
});
|
||||
@@ -703,7 +726,6 @@
|
||||
kmap[k.id] = k;
|
||||
});
|
||||
const flaskOpen = row.flask_url_browser || row.flask_url;
|
||||
const strategyUrl = flaskOpen ? esc(flaskOpen.replace(/\/$/, "") + "/strategy") : "";
|
||||
let html = `<div class="fs-head">
|
||||
<div>
|
||||
<h2 class="fs-title">${esc(row.name)}</h2>
|
||||
@@ -711,8 +733,8 @@
|
||||
</div>
|
||||
<div class="fs-head-actions">
|
||||
<button type="button" class="ghost btn-expand-back">返回监控</button>
|
||||
${flaskOpen ? `<a class="btn-link" href="${esc(flaskOpen)}" target="_blank" rel="noopener">打开实例</a>` : ""}
|
||||
${strategyUrl ? `<a class="btn-link" href="${strategyUrl}" target="_blank" rel="noopener">策略交易</a>` : ""}
|
||||
${flaskOpen ? `<a class="btn-link btn-open-instance" href="#" data-ex-id="${esc(row.id)}" data-next="/">打开实例</a>` : ""}
|
||||
${flaskOpen ? `<a class="btn-link btn-open-instance" href="#" data-ex-id="${esc(row.id)}" data-next="/strategy">策略交易</a>` : ""}
|
||||
<button type="button" class="danger btn-close-ex" data-id="${esc(row.id)}">全平</button>
|
||||
</div>
|
||||
</div>`;
|
||||
@@ -937,12 +959,12 @@
|
||||
const online = row.http_ok && agOk;
|
||||
const cardCls = online ? "card-online" : "card-offline";
|
||||
const dotCls = online ? "ok" : "bad";
|
||||
const review = row.review_url
|
||||
? `<a class="btn-link" href="${esc(row.review_url)}" target="_blank" rel="noopener">复盘</a>`
|
||||
: "";
|
||||
const flaskOpen = row.flask_url_browser || row.flask_url;
|
||||
const openFlask = flaskOpen
|
||||
? `<a class="btn-link" href="${esc(flaskOpen)}" target="_blank" rel="noopener">实例</a>`
|
||||
? `<a class="btn-link btn-open-instance" href="#" data-ex-id="${esc(row.id)}" data-next="/">实例</a>`
|
||||
: "";
|
||||
const openReview = flaskOpen
|
||||
? `<a class="btn-link btn-open-instance" href="#" data-ex-id="${esc(row.id)}" data-next="/records">复盘</a>`
|
||||
: "";
|
||||
return `<div class="card ${cardCls}" data-ex-id="${esc(row.id)}">
|
||||
<div class="card-head card-expand-zone" title="点击放大全屏">
|
||||
@@ -955,7 +977,7 @@
|
||||
</div>
|
||||
<div class="card-actions">
|
||||
${openFlask}
|
||||
${review}
|
||||
${openReview}
|
||||
<button type="button" class="danger btn-close-ex" data-id="${esc(row.id)}">全平</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
Reference in New Issue
Block a user