You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
functiontable(rows,columns,sortState){if(!rows.length)return'<div class="empty"><div><strong>No matching records</strong><span>Adjust the filters or wait for the required outcome window.</span></div></div>';consthead=columns.map(([key,label])=>`<th><button class="sort" data-sort="${key}">${label}${sortState?.key===key?(sortState.direction==='asc'?' ↑':' ↓'):''}</button></th>`).join(''),body=rows.map(row=>`<tr>${columns.map(([key])=>{constvalue=row[key],shown=key.includes('return')||key==='weight'||key==='sentiment_coverage'?fmtPct(value):key==='score'?fmtNum(value,5):value??'—';return`<td class="${key.includes('return')&&value!=null?tone(value):''}">${shown}</td>`}).join('')}</tr>`).join('');return`<div class="table-wrap"><table><thead><tr>${head}</tr></thead><tbody>${body}</tbody></table></div>`}
let saved={};try{saved=JSON.parse(localStorage.getItem(STATE_KEY)||'{}')}catch{}let hiddenSeries=new Set(saved.hiddenSeries||[]);
316
-
function save(){try{localStorage.setItem(STATE_KEY,JSON.stringify({decisionDate:decisionSelect.value,family:familyFilter.value,horizon:horizonFilter.value,hiddenSeries:[...hiddenSeries]}))}catch{}}
316
+
function save(){try{localStorage.setItem(STATE_KEY,JSON.stringify({decisionDate:decisionSelect.value,dataLatestDate:dates[0]||null,family:familyFilter.value,horizon:horizonFilter.value,hiddenSeries:[...hiddenSeries]}))}catch{}}
317
317
function option(value,label){const node=document.createElement('option');node.value=value;node.textContent=label;return node}
function decisionArms(){return data.arms.filter(a=>a.decision_date===decisionSelect.value)}
320
320
function visibleArms(){return decisionArms().filter(a=>(familyFilter.value==='all'||a.family===familyFilter.value)&&(horizonFilter.value==='all'||String(a.horizon_sessions)===horizonFilter.value))}
321
321
function table(rows,columns,sortState){if(!rows.length)return'<div class="empty"><div><strong>No matching records</strong><span>Adjust the filters or wait for the required outcome window.</span></div></div>';const head=columns.map(([key,label])=>`<th><button class="sort" data-sort="${key}">${label}${sortState?.key===key?(sortState.direction==='asc'?' ↑':' ↓'):''}</button></th>`).join(''),body=rows.map(row=>`<tr>${columns.map(([key])=>{const value=row[key],shown=key.includes('return')||key==='weight'||key==='sentiment_coverage'?fmtPct(value):key==='score'?fmtNum(value,5):value??'—';return`<td class="${key.includes('return')&&value!=null?tone(value):''}">${shown}</td>`}).join('')}</tr>`).join('');return`<div class="table-wrap"><table><thead><tr>${head}</tr></thead><tbody>${body}</tbody></table></div>`}
0 commit comments