Upload 8 files
Browse files- web/static/runs.js +5 -3
web/static/runs.js
CHANGED
|
@@ -766,7 +766,9 @@ function renderRunAggregateStats(){
|
|
| 766 |
const builds=runs.filter(r=>!isValidationRunSummary(r));
|
| 767 |
const linkedRows=linkedValidationAccountingRowsForBuilds(builds);
|
| 768 |
const validations=linkedRows;
|
| 769 |
-
|
|
|
|
|
|
|
| 770 |
const buildStatuses=builds.map(r=>({run:r,status:buildExplorerStatus(r)}));
|
| 771 |
const runningBuilds=buildStatuses.filter(x=>x.status.filter_buckets?.has('running')).length;
|
| 772 |
const failedBuilds=buildStatuses.filter(x=>x.status.filter_buckets?.has('failed')).length;
|
|
@@ -788,7 +790,7 @@ function renderRunAggregateStats(){
|
|
| 788 |
const issueTotal=Object.values(issues).reduce((a,b)=>a+b,0);
|
| 789 |
const badge=$('runStatsBadge');
|
| 790 |
if(badge){
|
| 791 |
-
badge.textContent=builds.length?`${builds.length} builds 路 ${validations.length} linked tests${
|
| 792 |
badge.className='badge '+(failedBuilds||issueTotal?'warn':runningBuilds?'running':builds.length?'success':'neutral');
|
| 793 |
}
|
| 794 |
if(!builds.length){
|
|
@@ -804,7 +806,7 @@ function renderRunAggregateStats(){
|
|
| 804 |
].filter(([,count])=>count>0);
|
| 805 |
root.innerHTML=`
|
| 806 |
<div class="run-stats-grid build-first-stats">
|
| 807 |
-
${runStatsCell('Build Runs',String(builds.length),`${validations.length} completed linked Space Test${validations.length===1?'':'s'}
|
| 808 |
${runStatsCell('Build status',`${runningBuilds} running`,`${failedBuilds} failed` ,failedBuilds?'warn':runningBuilds?'running':'success')}
|
| 809 |
${runStatsCell('Automatic success',pct(automaticSuccess,terminalBuilds.length),`${automaticSuccess}/${terminalBuilds.length} finished builds`,'success')}
|
| 810 |
${runStatsCell('Effective success',pct(effectiveSuccess,terminalBuilds.length),`${effectiveSuccess}/${terminalBuilds.length} after linked tests`,'success')}
|
|
|
|
| 766 |
const builds=runs.filter(r=>!isValidationRunSummary(r));
|
| 767 |
const linkedRows=linkedValidationAccountingRowsForBuilds(builds);
|
| 768 |
const validations=linkedRows;
|
| 769 |
+
// v198.26.119: keep stale/non-terminal linked validations out of the compact running summary.
|
| 770 |
+
// Linked validation rows can be cached or incomplete while no build is actually active;
|
| 771 |
+
// the badge should reconcile with the Build Status card and only report running builds.
|
| 772 |
const buildStatuses=builds.map(r=>({run:r,status:buildExplorerStatus(r)}));
|
| 773 |
const runningBuilds=buildStatuses.filter(x=>x.status.filter_buckets?.has('running')).length;
|
| 774 |
const failedBuilds=buildStatuses.filter(x=>x.status.filter_buckets?.has('failed')).length;
|
|
|
|
| 790 |
const issueTotal=Object.values(issues).reduce((a,b)=>a+b,0);
|
| 791 |
const badge=$('runStatsBadge');
|
| 792 |
if(badge){
|
| 793 |
+
badge.textContent=builds.length?`${builds.length} builds 路 ${validations.length} linked tests${runningBuilds?` 路 ${runningBuilds} running`:''}`:'No builds';
|
| 794 |
badge.className='badge '+(failedBuilds||issueTotal?'warn':runningBuilds?'running':builds.length?'success':'neutral');
|
| 795 |
}
|
| 796 |
if(!builds.length){
|
|
|
|
| 806 |
].filter(([,count])=>count>0);
|
| 807 |
root.innerHTML=`
|
| 808 |
<div class="run-stats-grid build-first-stats">
|
| 809 |
+
${runStatsCell('Build Runs',String(builds.length),`${validations.length} completed linked Space Test${validations.length===1?'':'s'}`,'neutral')}
|
| 810 |
${runStatsCell('Build status',`${runningBuilds} running`,`${failedBuilds} failed` ,failedBuilds?'warn':runningBuilds?'running':'success')}
|
| 811 |
${runStatsCell('Automatic success',pct(automaticSuccess,terminalBuilds.length),`${automaticSuccess}/${terminalBuilds.length} finished builds`,'success')}
|
| 812 |
${runStatsCell('Effective success',pct(effectiveSuccess,terminalBuilds.length),`${effectiveSuccess}/${terminalBuilds.length} after linked tests`,'success')}
|