|
2 | 2 | xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" |
3 | 3 | x:Class="PlanViewer.App.Controls.PlanViewerControl" |
4 | 4 | Background="{DynamicResource BackgroundBrush}"> |
| 5 | + <UserControl.Styles> |
| 6 | + <Style Selector="Border.InsightCard"> |
| 7 | + <Setter Property="Background" Value="{DynamicResource InsightCardBackgroundBrush}"/> |
| 8 | + <Setter Property="BorderBrush" Value="{DynamicResource InsightCardBorderBrush}"/> |
| 9 | + <Setter Property="BorderThickness" Value="1"/> |
| 10 | + <Setter Property="CornerRadius" Value="8"/> |
| 11 | + <Setter Property="BoxShadow" Value="0 4 12 0 #60000000"/> |
| 12 | + <Setter Property="Padding" Value="12,8,12,10"/> |
| 13 | + <Setter Property="Margin" Value="0,0,8,0"/> |
| 14 | + </Style> |
| 15 | + <Style Selector="TextBlock.InsightHeader"> |
| 16 | + <Setter Property="FontSize" Value="14"/> |
| 17 | + <Setter Property="FontWeight" Value="SemiBold"/> |
| 18 | + <Setter Property="Margin" Value="0,0,0,8"/> |
| 19 | + </Style> |
| 20 | + </UserControl.Styles> |
5 | 21 | <Grid> |
6 | 22 | <Grid.RowDefinitions> |
7 | 23 | <RowDefinition Height="Auto"/> |
|
74 | 90 | FontWeight="SemiBold" |
75 | 91 | Foreground="{DynamicResource ForegroundBrush}"/> |
76 | 92 | </Expander.Header> |
77 | | - <Grid MaxHeight="220" HorizontalAlignment="Stretch"> |
| 93 | + <Grid MaxHeight="240" Margin="8,4,8,8" HorizontalAlignment="Stretch"> |
78 | 94 | <Grid.ColumnDefinitions> |
79 | 95 | <ColumnDefinition Width="Auto" MinWidth="0"/> |
80 | 96 | <ColumnDefinition Width="Auto" MinWidth="180"/> |
|
84 | 100 | </Grid.ColumnDefinitions> |
85 | 101 |
|
86 | 102 | <!-- Server Context (first, placeholder when no metadata) --> |
87 | | - <Border x:Name="ServerContextBorder" Grid.Column="0" Padding="10,4,10,8" |
88 | | - Background="#1A1A2D" |
89 | | - BorderBrush="#3A3A5A" BorderThickness="0,0,1,0" |
| 103 | + <Border x:Name="ServerContextBorder" Grid.Column="0" Classes="InsightCard" |
90 | 104 | IsVisible="False"> |
91 | 105 | <ScrollViewer VerticalScrollBarVisibility="Auto" |
92 | 106 | HorizontalScrollBarVisibility="Disabled"> |
93 | 107 | <StackPanel> |
94 | | - <TextBlock Text="Server Context" |
95 | | - FontSize="13" |
96 | | - FontWeight="SemiBold" |
97 | | - Foreground="#9B9BFF" |
98 | | - Margin="0,0,0,6"/> |
| 108 | + <TextBlock Classes="InsightHeader" |
| 109 | + Text="Server Context" |
| 110 | + Foreground="#9B9BFF"/> |
99 | 111 | <StackPanel x:Name="ServerContextContent"/> |
100 | 112 | <TextBlock x:Name="ServerContextEmpty" |
101 | 113 | Text="Run Repro Script to capture server context" |
|
106 | 118 | </Border> |
107 | 119 |
|
108 | 120 | <!-- Runtime Summary --> |
109 | | - <Border Grid.Column="1" Padding="10,4,10,8" |
110 | | - Background="{DynamicResource BackgroundDarkBrush}" |
111 | | - BorderBrush="{DynamicResource BorderBrush}" BorderThickness="0,0,1,0"> |
| 121 | + <Border Grid.Column="1" Classes="InsightCard"> |
112 | 122 | <StackPanel> |
113 | 123 | <TextBlock x:Name="RuntimeSummaryTitle" |
| 124 | + Classes="InsightHeader" |
114 | 125 | Text="Runtime Summary" |
115 | | - FontSize="13" |
116 | | - FontWeight="SemiBold" |
117 | | - Foreground="{DynamicResource ForegroundBrush}" |
118 | | - Margin="0,0,0,4"/> |
| 126 | + Foreground="{DynamicResource ForegroundBrush}"/> |
119 | 127 | <StackPanel x:Name="RuntimeSummaryContent"/> |
120 | 128 | <TextBlock x:Name="RuntimeSummaryEmpty" |
121 | 129 | Text="Estimated plan — no runtime stats" |
|
125 | 133 | </Border> |
126 | 134 |
|
127 | 135 | <!-- Missing Indexes (center) --> |
128 | | - <Border Grid.Column="2" Padding="10,4,10,8" |
129 | | - Background="#3D2A0E" |
130 | | - BorderBrush="#7A5A1E" BorderThickness="0,0,1,0"> |
| 136 | + <Border Grid.Column="2" Classes="InsightCard"> |
131 | 137 | <ScrollViewer VerticalScrollBarVisibility="Auto" |
132 | 138 | HorizontalScrollBarVisibility="Disabled"> |
133 | 139 | <StackPanel> |
134 | 140 | <TextBlock x:Name="MissingIndexHeader" |
| 141 | + Classes="InsightHeader" |
135 | 142 | Text="Missing Index Suggestions" |
136 | | - FontSize="13" |
137 | | - FontWeight="SemiBold" Foreground="#FFB347" |
138 | | - Margin="0,0,0,6"/> |
| 143 | + Foreground="#FFB347"/> |
139 | 144 | <StackPanel x:Name="MissingIndexContent"/> |
140 | 145 | <TextBlock x:Name="MissingIndexEmpty" |
141 | 146 | Text="No missing index suggestions" |
|
146 | 151 | </Border> |
147 | 152 |
|
148 | 153 | <!-- Parameters --> |
149 | | - <Border Grid.Column="3" Padding="10,4,10,8" |
150 | | - Background="#1A2D1A" |
151 | | - BorderBrush="#3A5A3A" BorderThickness="0,0,1,0"> |
| 154 | + <Border Grid.Column="3" Classes="InsightCard"> |
152 | 155 | <ScrollViewer VerticalScrollBarVisibility="Auto" |
153 | 156 | HorizontalScrollBarVisibility="Disabled"> |
154 | 157 | <StackPanel> |
155 | 158 | <TextBlock x:Name="ParametersHeader" |
| 159 | + Classes="InsightHeader" |
156 | 160 | Text="Parameters" |
157 | | - FontSize="13" |
158 | | - FontWeight="SemiBold" Foreground="#7BCF7B" |
159 | | - Margin="0,0,0,6"/> |
| 161 | + Foreground="#7BCF7B"/> |
160 | 162 | <StackPanel x:Name="ParametersContent"/> |
161 | 163 | <TextBlock x:Name="ParametersEmpty" |
162 | 164 | Text="No parameters" |
|
167 | 169 | </Border> |
168 | 170 |
|
169 | 171 | <!-- Wait Stats (right, fills remaining space) --> |
170 | | - <Border Grid.Column="4" Padding="10,4,10,8" |
171 | | - Background="#1A2A3D"> |
| 172 | + <Border Grid.Column="4" Classes="InsightCard" Margin="0"> |
172 | 173 | <ScrollViewer VerticalScrollBarVisibility="Auto" |
173 | 174 | HorizontalScrollBarVisibility="Auto"> |
174 | 175 | <StackPanel> |
175 | 176 | <TextBlock x:Name="WaitStatsHeader" |
| 177 | + Classes="InsightHeader" |
176 | 178 | Text="Wait Stats" |
177 | | - FontSize="13" |
178 | | - FontWeight="SemiBold" Foreground="#4FA3FF" |
179 | | - Margin="0,0,0,6"/> |
| 179 | + Foreground="#4FA3FF"/> |
180 | 180 | <StackPanel x:Name="WaitStatsContent"/> |
181 | 181 | <TextBlock x:Name="WaitStatsEmpty" |
182 | 182 | Text="No wait stats (estimated plan)" |
|
0 commit comments