diff --git a/src/PlanViewer.Web/Pages/Index.razor b/src/PlanViewer.Web/Pages/Index.razor
index 669efb5..c010b08 100644
--- a/src/PlanViewer.Web/Pages/Index.razor
+++ b/src/PlanViewer.Web/Pages/Index.razor
@@ -280,15 +280,23 @@ else
@if (ActiveStmt!.WaitStats.Count > 0)
{
var maxWait = ActiveStmt!.WaitStats.Max(w => w.WaitTimeMs);
+ var benefitLookup = ActiveStmt!.WaitBenefits.ToDictionary(wb => wb.WaitType, wb => wb.MaxBenefitPercent, StringComparer.OrdinalIgnoreCase);
@foreach (var w in ActiveStmt!.WaitStats.OrderByDescending(w => w.WaitTimeMs))
{
var barPct = maxWait > 0 ? (double)w.WaitTimeMs / maxWait * 100 : 0;
+ benefitLookup.TryGetValue(w.WaitType, out var benefitPct);
@w.WaitType
-
@w.WaitTimeMs.ToString("N0") ms
+
+ @w.WaitTimeMs.ToString("N0") ms
+ @if (benefitPct > 0)
+ {
+ up to @benefitPct.ToString("N0")%
+ }
+
}
}
diff --git a/src/PlanViewer.Web/wwwroot/css/app.css b/src/PlanViewer.Web/wwwroot/css/app.css
index b352858..f512855 100644
--- a/src/PlanViewer.Web/wwwroot/css/app.css
+++ b/src/PlanViewer.Web/wwwroot/css/app.css
@@ -717,6 +717,16 @@ textarea::placeholder {
font-size: 0.7rem;
}
+.wait-benefit {
+ font-size: 0.65rem;
+ font-weight: 600;
+ color: var(--text-secondary);
+ padding: 0.05rem 0.3rem;
+ border-radius: 3px;
+ background: rgba(0, 0, 0, 0.04);
+ margin-left: 0.25rem;
+}
+
/* === Warnings Strip === */
.warnings-strip {
margin-bottom: 0.75rem;