From a517f9d859cae70f52461fa4eb7da1948e4081b0 Mon Sep 17 00:00:00 2001 From: leefer Date: Thu, 23 Jul 2026 09:09:53 +0800 Subject: [PATCH] feat: move trade journal editor into dialog --- static/app.js | 26 +++++++++++++---- static/index.html | 52 ++++++++++++++++++++------------- static/styles.css | 6 ++++ tests/e2e/app-shell.spec.js | 21 +++++++++++++ tests/test_frontend_contract.py | 6 ++++ 5 files changed, 85 insertions(+), 26 deletions(-) diff --git a/static/app.js b/static/app.js index 348d4cb..17476a0 100644 --- a/static/app.js +++ b/static/app.js @@ -95,6 +95,7 @@ const elements = { loading: document.querySelector("#loadingOverlay"), toast: document.querySelector("#toast"), stockDialog: document.querySelector("#stockDialog"), + tradeLogDialog: document.querySelector("#tradeLogDialog"), alertsDialog: document.querySelector("#alertsDialog"), assistantDialog: document.querySelector("#assistantDialog"), globalSearchDialog: document.querySelector("#globalSearchDialog"), @@ -511,8 +512,11 @@ function bindEvents() { }); }); document.querySelector("#journalForm").addEventListener("submit", saveJournal); + document.querySelector("#openTradeLogDialog").addEventListener("click", openTradeLogDialog); + document.querySelector("#closeTradeLogDialog").addEventListener("click", closeTradeLogDialog); document.querySelector("#tradeLogForm").addEventListener("submit", saveTradeLog); - document.querySelector("#cancelTradeEdit").addEventListener("click", resetTradeLogForm); + document.querySelector("#cancelTradeEdit").addEventListener("click", closeTradeLogDialog); + elements.tradeLogDialog.addEventListener("close", resetTradeLogForm); document.querySelector("#tradeLogTableBody").addEventListener("click", handleTradeLogAction); document.querySelector("#stockNoteForm").addEventListener("submit", saveStockNote); document.querySelector("#watchStockButton").addEventListener("click", toggleActiveWatchlist); @@ -1513,6 +1517,17 @@ async function saveJournal(event) { } } +function openTradeLogDialog() { + resetTradeLogForm(); + if (!elements.tradeLogDialog.open) elements.tradeLogDialog.showModal(); + requestAnimationFrame(() => document.querySelector("#tradeLogCode").focus()); +} + +function closeTradeLogDialog() { + if (elements.tradeLogDialog.open) elements.tradeLogDialog.close(); + else resetTradeLogForm(); +} + async function saveTradeLog(event) { event.preventDefault(); const button = document.querySelector("#saveTradeLog"); @@ -1536,8 +1551,8 @@ async function saveTradeLog(event) { }); state.tradeEntries = payload.items || []; state.tradeSummary = payload.summary || {}; - resetTradeLogForm(); renderTradeLog(); + closeTradeLogDialog(); showToast("交易记录已保存"); } catch (error) { showToast(error.message || "交易记录保存失败"); @@ -1552,7 +1567,7 @@ function resetTradeLogForm() { document.querySelector("#tradeLogDate").value = elements.tradeDate.value || todayString(); document.querySelector("#tradeLogQuantity").value = "0"; document.querySelector("#tradeLogPosition").value = "0"; - document.querySelector("#cancelTradeEdit").hidden = true; + setText("tradeLogDialogTitle", "交易日志"); setText("saveTradeLog", "保存交易"); } @@ -1573,9 +1588,10 @@ function editTradeLog(id) { document.querySelector("#tradeLogTags").value = (item.tags || []).join(", "); document.querySelector("#tradeLogThesis").value = item.thesis || ""; document.querySelector("#tradeLogExecution").value = item.execution || ""; - document.querySelector("#cancelTradeEdit").hidden = false; + setText("tradeLogDialogTitle", "编辑交易日志"); setText("saveTradeLog", "保存修改"); - document.querySelector("#tradeLogForm").scrollIntoView({ behavior: motionEnabled() ? "smooth" : "auto", block: "start" }); + if (!elements.tradeLogDialog.open) elements.tradeLogDialog.showModal(); + requestAnimationFrame(() => document.querySelector("#tradeLogCode").focus()); } async function handleTradeLogAction(event) { diff --git a/static/index.html b/static/index.html index 6845a2a..2866792 100644 --- a/static/index.html +++ b/static/index.html @@ -928,28 +928,11 @@
-

交易日志

0 条
+
+

交易日志记录

0 条
+ +
-
-
- - - - - - - - - - - -
-
- - -
-
-
@@ -972,6 +955,33 @@ -- + +
+
我的复盘

交易日志

+ +
+
+
+ + + + + + + + + + + +
+
+ + +
+
+ +
+
日期股票动作价格数量仓位盈亏情绪 / 标签交易逻辑执行复核操作