Skip to content

Commit 8bee635

Browse files
ctruedenclaude
andcommitted
Add a mini refresh button to the Smelt column
So that smelt.json data can be reloaded without reloading the badges. Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
1 parent cf510fc commit 8bee635

1 file changed

Lines changed: 30 additions & 19 deletions

File tree

‎src/pombast/status/templates/status.html.j2‎

Lines changed: 30 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,8 @@
1111
td.smelt { text-align: center; min-width: 3em; }
1212
td.smelt.has-log { cursor: pointer; text-decoration: underline dotted; text-underline-offset: 2px; }
1313
td.smelt.has-log:hover { filter: brightness(1.3); }
14+
#smelt-refresh { opacity: 0.8; cursor: pointer; color: #333; font-size: .9em; font-weight: bold; padding: 0 .2em 0 .2em; margin-left: 0.3em; }
15+
#smelt-refresh:hover { opacity: 1; }
1416
#smelt-modal { display: none; position: fixed; inset: 0; z-index: 9999; align-items: center; justify-content: center; }
1517
#smelt-modal.open { display: flex; }
1618
#smelt-backdrop { position: fixed; inset: 0; background: rgba(0,0,0,.5); }
@@ -29,7 +31,7 @@ td.smelt.has-log:hover { filter: brightness(1.3); }
2931
<table class="sortable">
3032
<tr>
3133
{%- for column in columns %}
32-
<th>{{ column }}</th>
34+
<th>{{ column }}{% if column == "Smelt" %}<button id="smelt-refresh" title="Refresh smelt data" onclick="loadSmelt(true);event.stopPropagation();">&#x27F3;</button>{% endif %}</th>
3335
{%- endfor %}
3436
</tr>
3537
{%- for row in rows %}
@@ -109,24 +111,33 @@ td.smelt.has-log:hover { filter: brightness(1.3); }
109111
document.getElementById('smelt-log').innerHTML=au.ansi_to_html(this.dataset.log);
110112
document.getElementById('smelt-modal').classList.add('open');
111113
}
112-
fetch('smelt.json').then(function(r){return r.json();}).then(function(d){
113-
var comps=d.components||{};
114-
document.querySelectorAll('tr[data-ga]').forEach(function(tr){
115-
var c=comps[tr.dataset.ga],td=tr.querySelector('td.smelt');
116-
if(!td||!c)return;
117-
var bin=c.binary_test,src=c.source_build;
118-
var fail=isFail(bin)||isFail(src),pass=isPass(bin)||isPass(src);
119-
td.setAttribute('sorttable_customkey',fail?'1':pass?'2':'3');
120-
td.textContent=fail?'❌':pass?'✅':'❔';
121-
var log=buildLog(c);
122-
if(log){
123-
td.classList.add('has-log');
124-
td.dataset.log=log;
125-
td.dataset.ga=tr.dataset.ga;
126-
td.addEventListener('click',showSmelt);
127-
}
128-
});
129-
}).catch(function(){});
114+
function loadSmelt(bust){
115+
var url='smelt.json'+(bust?'?_='+Date.now():'');
116+
fetch(url).then(function(r){return r.json();}).then(function(d){
117+
var comps=d.components||{};
118+
document.querySelectorAll('tr[data-ga]').forEach(function(tr){
119+
var oldTd=tr.querySelector('td.smelt');
120+
if(!oldTd)return;
121+
var td=oldTd.cloneNode(false);
122+
oldTd.parentNode.replaceChild(td,oldTd);
123+
var c=comps[tr.dataset.ga];
124+
if(!c)return;
125+
var bin=c.binary_test,src=c.source_build;
126+
var fail=isFail(bin)||isFail(src),pass=isPass(bin)||isPass(src);
127+
td.setAttribute('sorttable_customkey',fail?'1':pass?'2':'3');
128+
td.textContent=fail?'❌':pass?'✅':'❔';
129+
var log=buildLog(c);
130+
if(log){
131+
td.classList.add('has-log');
132+
td.dataset.log=log;
133+
td.dataset.ga=tr.dataset.ga;
134+
td.addEventListener('click',showSmelt);
135+
}
136+
});
137+
}).catch(function(){});
138+
}
139+
window.loadSmelt=loadSmelt;
140+
loadSmelt();
130141
var modal=document.getElementById('smelt-modal');
131142
document.getElementById('smelt-close').addEventListener('click',function(){modal.classList.remove('open');});
132143
document.getElementById('smelt-backdrop').addEventListener('click',function(){modal.classList.remove('open');});

0 commit comments

Comments
 (0)