Add per-card save and collapse on settings page

Each settings section and exchange card gets its own save button and fold toggle with state persisted in localStorage.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
dekun
2026-06-23 19:37:16 +08:00
parent 0dedaa2b4d
commit ea5c6cddb4
3 changed files with 337 additions and 33 deletions
+43 -14
View File
@@ -843,8 +843,13 @@
</div>
</details>
<p id="settings-meta-line" class="settings-meta-line"></p>
<div class="settings-display-panel card">
<h3 class="settings-display-title">显示与导航</h3>
<section class="settings-section card settings-display-panel" data-settings-section="display">
<div class="settings-section-head">
<button type="button" class="settings-section-fold" aria-expanded="true" aria-label="折叠"></button>
<h3 class="settings-display-title">显示与导航</h3>
<button type="button" class="primary settings-section-save" data-settings-section="display">保存</button>
</div>
<div class="settings-section-body">
<label class="chk-label settings-display-chk">
<input type="checkbox" id="pref-show-account-pnl" checked />
监控区显示资金账户、交易账户与浮动盈亏
@@ -874,9 +879,15 @@
顶栏显示「计算器」
</label>
<p class="settings-display-hint">保存至 hub_settings.json,换浏览器同样生效。关闭导航后对应页面将不可从顶栏进入,直接访问 URL 会跳回监控区。</p>
</div>
<div class="settings-macro-panel card">
<h3 class="settings-display-title">宏观关键数据(风控前置)</h3>
</div>
</section>
<section class="settings-section card settings-macro-panel" data-settings-section="macro">
<div class="settings-section-head">
<button type="button" class="settings-section-fold" aria-expanded="true" aria-label="折叠"></button>
<h3 class="settings-display-title">宏观关键数据(风控前置)</h3>
<button type="button" class="ghost settings-section-save" data-settings-section="macro">保存表单</button>
</div>
<div class="settings-section-body">
<p class="settings-display-hint">
手动录入 FOMC / CPI / 就业数据发布时间(北京时间)。监控区在发布前后各 1 小时提示风险:有仓注意仓位,无仓建议等待。仅提醒,不拦截下单。
</p>
@@ -903,9 +914,15 @@
</div>
</form>
<div id="macro-event-list" class="macro-event-list"></div>
</div>
<div class="settings-supervisor-panel card">
<h3 class="settings-display-title">交易监管 · 企业微信</h3>
</div>
</section>
<section class="settings-section card settings-supervisor-panel" data-settings-section="supervisor">
<div class="settings-section-head">
<button type="button" class="settings-section-fold" aria-expanded="true" aria-label="折叠"></button>
<h3 class="settings-display-title">交易监管 · 企业微信</h3>
<button type="button" class="primary settings-section-save" data-settings-section="supervisor">保存</button>
</div>
<div class="settings-section-body">
<p class="settings-display-hint">
与四所实例策略通知独立;手动/中控开平仓与新开仓会推送至此 Webhook。链接可在下方单独修改。
</p>
@@ -947,13 +964,25 @@
<input id="supervisor-reopen-min" type="number" min="1" step="1" value="30" />
</div>
</div>
</div>
</section>
<section class="settings-section card" data-settings-section="exchanges">
<div class="settings-section-head">
<button type="button" class="settings-section-fold" aria-expanded="true" aria-label="折叠"></button>
<h3 class="settings-display-title">交易所账户</h3>
<div class="settings-section-head-actions">
<button type="button" id="btn-settings-add" class="ghost">添加交易所</button>
<button type="button" class="primary settings-section-save" data-settings-section="exchanges">全部保存</button>
</div>
</div>
<div class="settings-section-body">
<div id="settings-list" class="settings-grid-wrap"></div>
</div>
</section>
<div class="toolbar settings-page-toolbar">
<button type="button" id="btn-settings-save" class="primary">保存全部</button>
<button type="button" id="btn-settings-reload" class="ghost">重新加载</button>
</div>
<div class="toolbar">
<button type="button" id="btn-settings-save" class="primary">保存设置</button>
<button type="button" id="btn-settings-add">添加交易所</button>
<button type="button" id="btn-settings-reload">重新加载</button>
</div>
<div id="settings-list" class="settings-grid-wrap"></div>
</div>
</div>