fix: 补备选区展开持久化(localStorage bk_open_+_bkAttr恢复+箭头)——刷新保留展开状态(此前assert失败未生效)

This commit is contained in:
xxm
2026-08-18 08:37:23 +08:00
parent f53cfcd76b
commit 4d88f3de51
+6 -2
View File
@@ -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 '<tr' + (_bkAttr || '') + ' class="border-b border-slate-800/50 hover:bg-slate-800/30 cursor-pointer ' + rRowBg + '" onclick="showStrategyDetail(\'' + s.version + '\')">' +
'<td class="px-2 py-1.5 font-mono font-bold ' + rStateCls + '">' + s.version + ' ' + rStateBadge + ((s.market && s.market !== 'all') ? ' <span class="text-[10px] bg-cyan-500/20 text-cyan-300 px-1 rounded">' + (s.market === 'hk' ? '港' : 'A') + '</span>' : '') + '</td>' +
'<td class="px-2 py-1.5 whitespace-normal break-words" title="' + (s.hypothesis || s.summary || '').replace(/"/g, '&quot;') + '">' + (s.name || '') + (smallSample ? ' <span class="text-amber-500" title="样本<40笔">⚠️</span>' : '') + ' ' +
@@ -2882,7 +2883,7 @@ const renderRegimeRow = (s, rg, bkKey) => {
if (backup.length) {
html += '<tr class="border-t border-slate-700/50"><td colspan="15" class="px-2 py-1 text-[10px] text-slate-400">' +
'<button onclick="toggleBackup(\'' + marketLabel + rg + '\')" class="hover:text-slate-200">' +
'<span id="bk-arrow-' + marketLabel + rg + '"></span> 备选 (资格达标未激活, ' + backup.length + ') <span class="text-slate-600">点击展开</span></button></td></tr>';
'<span id="bk-arrow-' + marketLabel + rg + '">' + (window._bkOpen(marketLabel + rg) ? '\u25bc' : '\u25b6') + '</span> 备选 (资格达标未激活, ' + backup.length + ') <span class="text-slate-600">点击展开</span></button></td></tr>';
// 2026-08-17 修复:备选行直接进同一 tbodyrenderRegimeRow 传 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');