feat(ui): show total correlation duration (oldest start to latest end)
Some checks failed
CI / cleanup-branch (push) Has been skipped
CI / docker (push) Has been cancelled
CI / deploy (push) Has been cancelled
CI / deploy-feature (push) Has been cancelled
CI / build (push) Has been cancelled

This commit is contained in:
hsiegeln
2026-03-28 15:28:51 +01:00
parent d32bde58e2
commit 24d760af8a
2 changed files with 15 additions and 0 deletions

View File

@@ -115,6 +115,15 @@
flex-shrink: 0;
}
.chainTotal {
font-family: var(--font-mono);
font-size: 10px;
font-weight: 600;
color: var(--text-secondary);
margin-right: 0.5rem;
flex-shrink: 0;
}
.chainEntry {
display: inline-flex;
align-items: center;

View File

@@ -93,6 +93,12 @@ export function ExchangeHeader({ detail, onCorrelatedSelect }: ExchangeHeaderPro
{/* Correlation chain */}
<div className={styles.chain}>
<span className={styles.chainLabel}>Correlated</span>
{showChain && (() => {
const starts = chain.map((ce: any) => new Date(ce.startTime).getTime()).filter((t: number) => !isNaN(t));
const ends = chain.map((ce: any) => new Date(ce.endTime ?? ce.startTime).getTime() + (ce.durationMs ?? 0)).filter((t: number) => !isNaN(t));
const totalMs = starts.length > 0 && ends.length > 0 ? Math.max(...ends) - Math.min(...starts) : 0;
return totalMs > 0 ? <span className={styles.chainTotal}>Duration: {formatDuration(totalMs)}</span> : null;
})()}
{showChain ? chain.map((ce: any, i: number) => {
const isCurrent = ce.executionId === detail.executionId;
const variant = statusVariant(ce.status);