1111td .smelt { text-align : center ; min-width : 3em ; }
1212td .smelt.has-log { cursor : pointer ; text-decoration : underline dotted ; text-underline-offset : 2px ; }
1313td .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