From 4efc6f67558165928f04bb135fb5191e1ff983f9 Mon Sep 17 00:00:00 2001 From: Erik Darling <2136037+erikdarlingdata@users.noreply.github.com> Date: Mon, 16 Feb 2026 18:20:03 -0500 Subject: [PATCH] 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 --- Lite/Controls/ServerTab.xaml.cs | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/Lite/Controls/ServerTab.xaml.cs b/Lite/Controls/ServerTab.xaml.cs index 0d16810a..4b771b0f 100644 --- a/Lite/Controls/ServerTab.xaml.cs +++ b/Lite/Controls/ServerTab.xaml.cs @@ -39,6 +39,9 @@ public partial class ServerTab : UserControl private List _perfmonCounterItems = new(); private Helpers.ChartHoverHelper? _waitStatsHover; private Helpers.ChartHoverHelper? _perfmonHover; + private Helpers.ChartHoverHelper? _cpuHover; + private Helpers.ChartHoverHelper? _memoryHover; + private Helpers.ChartHoverHelper? _tempDbHover; private Helpers.ChartHoverHelper? _tempDbFileIoHover; private Helpers.ChartHoverHelper? _fileIoReadHover; private Helpers.ChartHoverHelper? _fileIoWriteHover; @@ -129,6 +132,9 @@ public ServerTab(ServerConnection server, DuckDbInitializer duckDb, CredentialSe /* Chart hover tooltips */ _waitStatsHover = new Helpers.ChartHoverHelper(WaitStatsChart, "ms/sec"); _perfmonHover = new Helpers.ChartHoverHelper(PerfmonChart, ""); + _cpuHover = new Helpers.ChartHoverHelper(CpuChart, "%"); + _memoryHover = new Helpers.ChartHoverHelper(MemoryChart, "GB"); + _tempDbHover = new Helpers.ChartHoverHelper(TempDbChart, "MB"); _tempDbFileIoHover = new Helpers.ChartHoverHelper(TempDbFileIoChart, "ms"); _fileIoReadHover = new Helpers.ChartHoverHelper(FileIoReadChart, "ms"); _fileIoWriteHover = new Helpers.ChartHoverHelper(FileIoWriteChart, "ms"); @@ -589,6 +595,7 @@ private static string FormatMb(double mb) private void UpdateCpuChart(List data) { ClearChart(CpuChart); + _cpuHover?.Clear(); ApplyDarkTheme(CpuChart); if (data.Count == 0) { CpuChart.Refresh(); return; } @@ -600,10 +607,12 @@ private void UpdateCpuChart(List data) var sqlPlot = CpuChart.Plot.Add.Scatter(times, sqlCpu); sqlPlot.LegendText = "SQL Server"; sqlPlot.Color = ScottPlot.Color.FromHex("#4FC3F7"); + _cpuHover?.Add(sqlPlot, "SQL Server"); var otherPlot = CpuChart.Plot.Add.Scatter(times, otherCpu); otherPlot.LegendText = "Other"; otherPlot.Color = ScottPlot.Color.FromHex("#E57373"); + _cpuHover?.Add(otherPlot, "Other"); CpuChart.Plot.Axes.DateTimeTicksBottom(); ReapplyAxisColors(CpuChart); @@ -617,6 +626,7 @@ private void UpdateCpuChart(List data) private void UpdateMemoryChart(List data, List grantData) { ClearChart(MemoryChart); + _memoryHover?.Clear(); ApplyDarkTheme(MemoryChart); if (data.Count == 0) { MemoryChart.Refresh(); return; } @@ -629,15 +639,18 @@ private void UpdateMemoryChart(List data, List data, List data, List data) { ClearChart(TempDbChart); + _tempDbHover?.Clear(); ApplyDarkTheme(TempDbChart); if (data.Count == 0) { TempDbChart.Refresh(); return; } @@ -682,14 +697,17 @@ private void UpdateTempDbChart(List data) var userPlot = TempDbChart.Plot.Add.Scatter(times, userObj); userPlot.LegendText = "User Objects"; userPlot.Color = ScottPlot.Color.FromHex("#4FC3F7"); + _tempDbHover?.Add(userPlot, "User Objects"); var internalPlot = TempDbChart.Plot.Add.Scatter(times, internalObj); internalPlot.LegendText = "Internal Objects"; internalPlot.Color = ScottPlot.Color.FromHex("#FFD54F"); + _tempDbHover?.Add(internalPlot, "Internal Objects"); var vsPlot = TempDbChart.Plot.Add.Scatter(times, versionStore); vsPlot.LegendText = "Version Store"; vsPlot.Color = ScottPlot.Color.FromHex("#81C784"); + _tempDbHover?.Add(vsPlot, "Version Store"); TempDbChart.Plot.Axes.DateTimeTicksBottom(); ReapplyAxisColors(TempDbChart);