refactor: establish standalone application boundary
This commit is contained in:
@@ -1,8 +1,12 @@
|
||||
let watchlistSearchTimer = null;
|
||||
let assistantRenderFrame = 0;
|
||||
|
||||
|
||||
window.XiaobaiPageModules.register("review", ["reviewWorkspaceView"], {
|
||||
bind: bindReviewEvents,
|
||||
enter: ["loadReview"],
|
||||
});
|
||||
|
||||
/* PRESERVATION-SOURCE-BEGIN app.js:3029-3470 */
|
||||
async function loadReviewWorkspace() {
|
||||
try {
|
||||
const [watchlistPayload, notesPayload, tradesPayload] = await Promise.all([
|
||||
@@ -445,8 +449,6 @@ async function deleteNote(noteId, compact) {
|
||||
}
|
||||
}
|
||||
|
||||
/* PRESERVATION-SOURCE-END app.js:3029-3470 */
|
||||
/* PRESERVATION-SOURCE-BEGIN app.js:7720-7968 */
|
||||
async function loadAlerts(openDialog = false) {
|
||||
try {
|
||||
const query = new URLSearchParams({ status: state.alertFilter, as_of: todayString() });
|
||||
@@ -696,4 +698,49 @@ function updateAssistantControls() {
|
||||
});
|
||||
}
|
||||
|
||||
/* PRESERVATION-SOURCE-END app.js:7720-7968 */
|
||||
|
||||
function bindReviewEvents() {
|
||||
document.querySelector("#alertButton").addEventListener("click", openAlerts);
|
||||
document.querySelector("#assistantButton").addEventListener("click", openReviewAssistant);
|
||||
document.querySelector("#closeAssistantDialog").addEventListener("click", () => elements.assistantDialog.close());
|
||||
document.querySelector("#assistantForm").addEventListener("submit", sendAssistantQuestion);
|
||||
document.querySelector("#stopAssistant").addEventListener("click", stopAssistantResponse);
|
||||
document.querySelector("#clearAssistantMessages").addEventListener("click", clearAssistantConversation);
|
||||
document.querySelectorAll("[data-assistant-prompt]").forEach((button) => {
|
||||
button.addEventListener("click", () => useAssistantPrompt(button.dataset.assistantPrompt));
|
||||
});
|
||||
document.querySelector("#closeAlertsDialog").addEventListener("click", () => elements.alertsDialog.close());
|
||||
document.querySelector("#alertForm").addEventListener("submit", saveAlert);
|
||||
document.querySelector("#markAllAlertsRead").addEventListener("click", markAllAlertsRead);
|
||||
document.querySelector("#alertList").addEventListener("click", handleAlertAction);
|
||||
document.querySelectorAll("[data-alert-filter]").forEach((button) => {
|
||||
button.addEventListener("click", () => selectAlertFilter(button.dataset.alertFilter));
|
||||
});
|
||||
document.querySelector("#journalForm").addEventListener("submit", saveJournal);
|
||||
document.querySelector("#journalDate").addEventListener("change", populateJournalForm);
|
||||
document.querySelector("#openWatchlistDialog").addEventListener("click", () => openWatchlistDialog());
|
||||
document.querySelector("#closeWatchlistDialog").addEventListener("click", closeWatchlistDialog);
|
||||
document.querySelector("#cancelWatchlistEdit").addEventListener("click", closeWatchlistDialog);
|
||||
document.querySelector("#changeWatchlistSelection").addEventListener("click", clearWatchlistSelection);
|
||||
document.querySelector("#watchlistSearchInput").addEventListener("input", scheduleWatchlistSearch);
|
||||
document.querySelector("#watchlistForm").addEventListener("submit", saveWatchlistFromDialog);
|
||||
document.querySelector("#watchlistSearchResults").addEventListener("click", handleWatchlistSearchResult);
|
||||
document.querySelector("#reviewHistoryToggle").addEventListener("click", (event) => {
|
||||
const panel = document.querySelector("#reviewHistoryPanel");
|
||||
const expanded = event.currentTarget.getAttribute("aria-expanded") === "true";
|
||||
event.currentTarget.setAttribute("aria-expanded", String(!expanded));
|
||||
event.currentTarget.querySelector("span").textContent = expanded ? "历史复盘" : "收起历史";
|
||||
panel.hidden = expanded;
|
||||
if (!expanded) panel.scrollIntoView({ behavior: "smooth", block: "nearest" });
|
||||
});
|
||||
document.querySelector("#openTradeLogDialog").addEventListener("click", openTradeLogDialog);
|
||||
document.querySelector("#closeTradeLogDialog").addEventListener("click", closeTradeLogDialog);
|
||||
document.querySelector("#tradeLogForm").addEventListener("submit", saveTradeLog);
|
||||
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);
|
||||
document.querySelector("#stockHeavenButton").addEventListener("click", openActiveStockInHeaven);
|
||||
document.querySelector("#stockReminderButton").addEventListener("click", openStockReminder);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user