diff --git a/manual_trading_hub/static/app.css b/manual_trading_hub/static/app.css index 271dc17..df048e5 100644 --- a/manual_trading_hub/static/app.css +++ b/manual_trading_hub/static/app.css @@ -2800,6 +2800,10 @@ body.login-page { display: none; } +.market-fs-field.market-field-symbol .market-symbol-wrap { + min-width: 180px; +} + .market-fs-field span { font-size: 0.68rem; color: var(--muted); @@ -2966,8 +2970,16 @@ body.login-page { color: var(--accent); } -.market-vol-rank-sheet { +.market-vol-rank-anchor { margin: -6px 0 12px; +} + +.market-vol-rank-anchor:empty, +.market-vol-rank-anchor-fs:empty { + display: none; +} + +.market-vol-rank-sheet { padding: 10px 12px 8px; border: 1px solid var(--border-soft); border-radius: var(--radius); @@ -2975,6 +2987,18 @@ body.login-page { box-shadow: var(--glow); } +.market-chart-wrap .market-vol-rank-sheet { + margin: 0; + border-radius: 0; + border-left: none; + border-right: none; + box-shadow: none; +} + +.market-chart-wrap.is-fullscreen .market-vol-rank-sheet { + background: var(--chart-bar-bg); +} + .market-vol-rank-sheet.hidden { display: none; } diff --git a/manual_trading_hub/static/chart.js b/manual_trading_hub/static/chart.js index 39c235f..3638306 100644 --- a/manual_trading_hub/static/chart.js +++ b/manual_trading_hub/static/chart.js @@ -92,7 +92,10 @@ const elVolRankMeta = document.getElementById("market-vol-rank-meta"); const elVolRankList = document.getElementById("market-vol-rank-list"); const elVolRankBtn = document.getElementById("market-vol-rank-btn"); + const elFsVolRankBtn = document.getElementById("market-fs-vol-rank-btn"); const elVolRankSheet = document.getElementById("market-vol-rank-sheet"); + const elVolRankAnchor = document.getElementById("market-vol-rank-anchor"); + const elVolRankAnchorFs = document.getElementById("market-vol-rank-anchor-fs"); const elTf = document.getElementById("market-timeframe"); const elRefresh = document.getElementById("market-refresh"); const elStatus = document.getElementById("market-status"); @@ -952,6 +955,7 @@ if (chartFullscreen) elFsExit.classList.remove("hidden"); else elFsExit.classList.add("hidden"); } + mountVolRankSheet(chartFullscreen); if (chartFullscreen) { populateFsExchangeOptions(); syncFsToolbarFromMain(); @@ -2617,29 +2621,43 @@ void postChartUnwatch(); } + function mountVolRankSheet(forFullscreen) { + if (!elVolRankSheet) return; + const anchor = forFullscreen ? elVolRankAnchorFs : elVolRankAnchor; + if (!anchor || elVolRankSheet.parentElement === anchor) return; + anchor.appendChild(elVolRankSheet); + } + + function setVolRankBtnActive(btn, on) { + if (!btn) return; + btn.classList.toggle("is-active", on); + btn.setAttribute("aria-expanded", on ? "true" : "false"); + } + function setVolRankSheetOpen(open) { const on = !!open; if (elVolRankSheet) { elVolRankSheet.classList.toggle("hidden", !on); elVolRankSheet.setAttribute("aria-hidden", on ? "false" : "true"); } - if (elVolRankBtn) { - elVolRankBtn.classList.toggle("is-active", on); - elVolRankBtn.setAttribute("aria-expanded", on ? "true" : "false"); - } + setVolRankBtnActive(elVolRankBtn, on); + setVolRankBtnActive(elFsVolRankBtn, on); if (on) void loadVolumeRank(); } function bindVolRankPanel() { - if (!elVolRankBtn) return; - elVolRankBtn.addEventListener("click", function () { + function toggleVolRankSheet() { const open = elVolRankSheet && elVolRankSheet.classList.contains("hidden"); setVolRankSheetOpen(open); - }); + } + if (elVolRankBtn) elVolRankBtn.addEventListener("click", toggleVolRankSheet); + if (elFsVolRankBtn) elFsVolRankBtn.addEventListener("click", toggleVolRankSheet); document.addEventListener("pointerdown", function (ev) { if (!elVolRankSheet || elVolRankSheet.classList.contains("hidden")) return; const t = ev.target; - if (elVolRankSheet.contains(t) || (elVolRankBtn && elVolRankBtn.contains(t))) return; + if (elVolRankSheet.contains(t)) return; + if (elVolRankBtn && elVolRankBtn.contains(t)) return; + if (elFsVolRankBtn && elFsVolRankBtn.contains(t)) return; setVolRankSheetOpen(false); }); } @@ -2694,8 +2712,9 @@ (row.volume_label || "") + ""; btn.addEventListener("click", function () { - if (!elSymbol || !row.symbol) return; - elSymbol.value = row.symbol; + if (!row.symbol) return; + if (elSymbol) elSymbol.value = row.symbol; + if (elFsSymbol) elFsSymbol.value = row.symbol; setVolRankSheetOpen(false); loadChart(false); }); diff --git a/manual_trading_hub/static/index.html b/manual_trading_hub/static/index.html index 1472194..86c8f0d 100644 --- a/manual_trading_hub/static/index.html +++ b/manual_trading_hub/static/index.html @@ -15,7 +15,7 @@ - + @@ -115,9 +115,11 @@ - +