@@ -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