feat: move trade journal editor into dialog

This commit is contained in:
leefer
2026-07-23 09:09:53 +08:00
parent 6350dd3b11
commit a517f9d859
5 changed files with 85 additions and 26 deletions
+21 -5
View File
@@ -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) {