diff --git a/static/index.html b/static/index.html index 7dfe39a7..01246398 100644 --- a/static/index.html +++ b/static/index.html @@ -2766,7 +2766,8 @@ const renderRegimeRow = (s, rg, bkKey) => { const rGradeBadge = rGrade && rGrade !== 'ok' && rGrade !== 'good' && rGrade !== 'great' ? '' : ''; // 2026-08-18 按温区判定激活(而非全局 s.current)——该策略在当前表温区 rg 是否激活 const isActive = window._isActRegime(s, rg); - const _bkAttr = bkKey ? ' data-bk="' + bkKey + '" class="hidden"' : ''; + // 2026-08-18 展开持久化:读 localStorage 决定备选行是否 hidden(非总是折叠) + const _bkAttr = bkKey ? ' data-bk="' + bkKey + '"' + (window._bkOpen(bkKey) ? '' : ' class="hidden"') : ''; return '' + '' + s.version + ' ' + rStateBadge + ((s.market && s.market !== 'all') ? ' ' + (s.market === 'hk' ? '港' : 'A') + '' : '') + '' + '' + (s.name || '') + (smallSample ? ' ⚠️' : '') + ' ' + @@ -2882,7 +2883,7 @@ const renderRegimeRow = (s, rg, bkKey) => { if (backup.length) { html += '' + ''; + '' + (window._bkOpen(marketLabel + rg) ? '\u25bc' : '\u25b6') + ' 备选 (资格达标未激活, ' + backup.length + ') 点击展开'; // 2026-08-17 修复:备选行直接进同一 tbody(renderRegimeRow 传 bkKey, 行加 data-bk+hidden),列宽与表头对齐 html += backup.map(s => renderRegimeRow(s, rg, marketLabel + rg)).join(''); } @@ -2898,7 +2899,10 @@ const renderRegimeRow = (s, rg, bkKey) => { const hidden = rows[0].classList.contains('hidden'); rows.forEach(r => r.classList.toggle('hidden')); if (arrow) arrow.textContent = hidden ? '\u25bc' : '\u25b6'; + // 2026-08-18 展开状态持久化(刷新保留) + try { localStorage.setItem('bk_open_' + key, hidden ? '1' : '0'); } catch(e) {} }; + window._bkOpen = function(key) { try { return localStorage.getItem('bk_open_' + key) === '1'; } catch(e) { return false; } }; // ── 2026-08-15 按市场×温区展示:6表格 = A股当前市 → 港股当前市 → A股其他2市 → 港股其他2市, // 每表格列出该市场在该温区有数据的所有可用策略(含未激活,按该温区胜率降序),激活策略高亮;温度并入当前市标题尾部 const usableStrats = strategies.filter(s => s.current === true || s.state === 'available');