diff --git a/frontend/packages/dashboard/src/tabs.js b/frontend/packages/dashboard/src/tabs.js index 1d4d21ea..3f4ad6a3 100644 --- a/frontend/packages/dashboard/src/tabs.js +++ b/frontend/packages/dashboard/src/tabs.js @@ -1863,13 +1863,20 @@ window.marked = marked; b.addEventListener('click', () => setQuestionsFilter(value)); return b; }; + // Count pending questions per filter value so each chip shows its + // own hit count — the operator can see "operator · 2 / peer · 3" + // at a glance without clicking through each tab. + const operatorCount = allPending.filter((q) => !q.target).length; + const peerCount = allPending.filter((q) => !!q.target).length; + const agentCount = (name) => allPending.filter( + (q) => q.asker === name || q.target === name).length; filterRow.append( - mkChip('all', `all · ${allPending.length}`), - mkChip('operator', '@operator'), - mkChip('peer', '@peer'), + mkChip('all', `all · ${allPending.length}`), + mkChip('operator', `@operator · ${operatorCount}`), + mkChip('peer', `@peer · ${peerCount}`), ); for (const name of Array.from(participants).sort()) { - filterRow.append(mkChip('agent:' + name, '@' + name)); + filterRow.append(mkChip('agent:' + name, `@${name} · ${agentCount(name)}`)); } // Evict resolved/cancelled questions from the row cache.