Skip to content

Commit 4efc6f6

Browse files
Add missing chart hover tooltips for CPU, Memory, and TempDB charts in Lite
Wire up ChartHoverHelper for the three Lite charts that were missing tooltip support. Wait Stats, Perfmon, TempDB File I/O, and File I/O charts already had this; CPU, Memory, and TempDB (by type) did not. Closes #81 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
1 parent 5427618 commit 4efc6f6

1 file changed

Lines changed: 18 additions & 0 deletions

File tree

Lite/Controls/ServerTab.xaml.cs

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,9 @@ public partial class ServerTab : UserControl
3939
private List<SelectableItem> _perfmonCounterItems = new();
4040
private Helpers.ChartHoverHelper? _waitStatsHover;
4141
private Helpers.ChartHoverHelper? _perfmonHover;
42+
private Helpers.ChartHoverHelper? _cpuHover;
43+
private Helpers.ChartHoverHelper? _memoryHover;
44+
private Helpers.ChartHoverHelper? _tempDbHover;
4245
private Helpers.ChartHoverHelper? _tempDbFileIoHover;
4346
private Helpers.ChartHoverHelper? _fileIoReadHover;
4447
private Helpers.ChartHoverHelper? _fileIoWriteHover;
@@ -129,6 +132,9 @@ public ServerTab(ServerConnection server, DuckDbInitializer duckDb, CredentialSe
129132
/* Chart hover tooltips */
130133
_waitStatsHover = new Helpers.ChartHoverHelper(WaitStatsChart, "ms/sec");
131134
_perfmonHover = new Helpers.ChartHoverHelper(PerfmonChart, "");
135+
_cpuHover = new Helpers.ChartHoverHelper(CpuChart, "%");
136+
_memoryHover = new Helpers.ChartHoverHelper(MemoryChart, "GB");
137+
_tempDbHover = new Helpers.ChartHoverHelper(TempDbChart, "MB");
132138
_tempDbFileIoHover = new Helpers.ChartHoverHelper(TempDbFileIoChart, "ms");
133139
_fileIoReadHover = new Helpers.ChartHoverHelper(FileIoReadChart, "ms");
134140
_fileIoWriteHover = new Helpers.ChartHoverHelper(FileIoWriteChart, "ms");
@@ -589,6 +595,7 @@ private static string FormatMb(double mb)
589595
private void UpdateCpuChart(List<CpuUtilizationRow> data)
590596
{
591597
ClearChart(CpuChart);
598+
_cpuHover?.Clear();
592599
ApplyDarkTheme(CpuChart);
593600

594601
if (data.Count == 0) { CpuChart.Refresh(); return; }
@@ -600,10 +607,12 @@ private void UpdateCpuChart(List<CpuUtilizationRow> data)
600607
var sqlPlot = CpuChart.Plot.Add.Scatter(times, sqlCpu);
601608
sqlPlot.LegendText = "SQL Server";
602609
sqlPlot.Color = ScottPlot.Color.FromHex("#4FC3F7");
610+
_cpuHover?.Add(sqlPlot, "SQL Server");
603611

604612
var otherPlot = CpuChart.Plot.Add.Scatter(times, otherCpu);
605613
otherPlot.LegendText = "Other";
606614
otherPlot.Color = ScottPlot.Color.FromHex("#E57373");
615+
_cpuHover?.Add(otherPlot, "Other");
607616

608617
CpuChart.Plot.Axes.DateTimeTicksBottom();
609618
ReapplyAxisColors(CpuChart);
@@ -617,6 +626,7 @@ private void UpdateCpuChart(List<CpuUtilizationRow> data)
617626
private void UpdateMemoryChart(List<MemoryTrendPoint> data, List<MemoryTrendPoint> grantData)
618627
{
619628
ClearChart(MemoryChart);
629+
_memoryHover?.Clear();
620630
ApplyDarkTheme(MemoryChart);
621631

622632
if (data.Count == 0) { MemoryChart.Refresh(); return; }
@@ -629,15 +639,18 @@ private void UpdateMemoryChart(List<MemoryTrendPoint> data, List<MemoryTrendPoin
629639
var totalPlot = MemoryChart.Plot.Add.Scatter(times, totalMem);
630640
totalPlot.LegendText = "Total Server Memory";
631641
totalPlot.Color = ScottPlot.Color.FromHex("#4FC3F7");
642+
_memoryHover?.Add(totalPlot, "Total Server Memory");
632643

633644
var targetPlot = MemoryChart.Plot.Add.Scatter(times, targetMem);
634645
targetPlot.LegendText = "Target Memory";
635646
targetPlot.Color = ScottPlot.Colors.Gray;
636647
targetPlot.LineStyle.Pattern = LinePattern.Dashed;
648+
_memoryHover?.Add(targetPlot, "Target Memory");
637649

638650
var bpPlot = MemoryChart.Plot.Add.Scatter(times, bufferPool);
639651
bpPlot.LegendText = "Buffer Pool";
640652
bpPlot.Color = ScottPlot.Color.FromHex("#81C784");
653+
_memoryHover?.Add(bpPlot, "Buffer Pool");
641654

642655
/* Memory grants trend line — show zero line when no grant data */
643656
double[] grantTimes, grantMb;
@@ -655,6 +668,7 @@ private void UpdateMemoryChart(List<MemoryTrendPoint> data, List<MemoryTrendPoin
655668
var grantPlot = MemoryChart.Plot.Add.Scatter(grantTimes, grantMb);
656669
grantPlot.LegendText = "Memory Grants";
657670
grantPlot.Color = ScottPlot.Color.FromHex("#FFB74D");
671+
_memoryHover?.Add(grantPlot, "Memory Grants");
658672

659673
MemoryChart.Plot.Axes.DateTimeTicksBottom();
660674
ReapplyAxisColors(MemoryChart);
@@ -670,6 +684,7 @@ private void UpdateMemoryChart(List<MemoryTrendPoint> data, List<MemoryTrendPoin
670684
private void UpdateTempDbChart(List<TempDbRow> data)
671685
{
672686
ClearChart(TempDbChart);
687+
_tempDbHover?.Clear();
673688
ApplyDarkTheme(TempDbChart);
674689

675690
if (data.Count == 0) { TempDbChart.Refresh(); return; }
@@ -682,14 +697,17 @@ private void UpdateTempDbChart(List<TempDbRow> data)
682697
var userPlot = TempDbChart.Plot.Add.Scatter(times, userObj);
683698
userPlot.LegendText = "User Objects";
684699
userPlot.Color = ScottPlot.Color.FromHex("#4FC3F7");
700+
_tempDbHover?.Add(userPlot, "User Objects");
685701

686702
var internalPlot = TempDbChart.Plot.Add.Scatter(times, internalObj);
687703
internalPlot.LegendText = "Internal Objects";
688704
internalPlot.Color = ScottPlot.Color.FromHex("#FFD54F");
705+
_tempDbHover?.Add(internalPlot, "Internal Objects");
689706

690707
var vsPlot = TempDbChart.Plot.Add.Scatter(times, versionStore);
691708
vsPlot.LegendText = "Version Store";
692709
vsPlot.Color = ScottPlot.Color.FromHex("#81C784");
710+
_tempDbHover?.Add(vsPlot, "Version Store");
693711

694712
TempDbChart.Plot.Axes.DateTimeTicksBottom();
695713
ReapplyAxisColors(TempDbChart);

0 commit comments

Comments
 (0)