Skip to content

Commit cd2ba63

Browse files
committed
add filter by level options(size alignment needed)
1 parent 90aa484 commit cd2ba63

File tree

3 files changed

+62
-9
lines changed

3 files changed

+62
-9
lines changed

src/WEventViewer/MainWindow.axaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@
4040

4141
<DataGridTextColumn Header="TimeCreated" Binding="{Binding TimeCreated}"/>
4242
<DataGridTextColumn Header="LogName" Binding="{Binding LogName}"/>
43+
<DataGridTextColumn Header="Provider" Binding="{Binding ProviderName}"/>
4344
<DataGridTextColumn Header="Id" Binding="{Binding Id}"/>
4445
<DataGridTextColumn Header="Level" Binding="{Binding Level}"/>
4546
<DataGridTextColumn Header="Description" Binding="{Binding Formatted}"/>

src/WEventViewer/OpenLogWindow.axaml

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -93,15 +93,15 @@
9393
</StackPanel>
9494
<CheckBox Content="filter providers(separeted by ',')" Margin="10" IsChecked="{Binding UseProviderNames}"/>
9595
<TextBox Text="{Binding ProviderNames}" IsEnabled="{Binding UseProviderNames}"/>
96-
<CheckBox Content="filter by level" Margin="10"/>
97-
<StackPanel Orientation="Horizontal">
98-
<CheckBox Content="Critical" Margin="10"/>
99-
<CheckBox Content="Error" Margin="10"/>
100-
<CheckBox Content="Warning" Margin="10"/>
101-
<CheckBox Content="Information" Margin="10"/>
102-
<CheckBox Content="Verbose" Margin="10"/>
103-
</StackPanel>
104-
</StackPanel>
96+
<CheckBox Content="filter by level" Margin="10" IsChecked="{Binding UseFilterByLevel}"/>
97+
<StackPanel Orientation="Horizontal">
98+
<CheckBox Content="Critical" Margin="10" IsChecked="{Binding IsCriticalChecked}" IsEnabled="{Binding UseFilterByLevel}"/>
99+
<CheckBox Content="Error" Margin="10" IsChecked="{Binding IsErrorChecked}" IsEnabled="{Binding UseFilterByLevel}"/>
100+
<CheckBox Content="Warning" Margin="10" IsChecked="{Binding IsWarningChecked}" IsEnabled="{Binding UseFilterByLevel}"/>
101+
<CheckBox Content="Information" Margin="10" IsChecked="{Binding IsInformationChecked}" IsEnabled="{Binding UseFilterByLevel}"/>
102+
<CheckBox Content="Verbose" Margin="10" IsChecked="{Binding IsVerboseChecked}" IsEnabled="{Binding UseFilterByLevel}"/>
103+
</StackPanel>
104+
</StackPanel>
105105
</ScrollViewer>
106106
<!--<Expander Header="Advanced" Grid.Row="2" HorizontalAlignment="Stretch" MaxHeight="300">
107107
</Expander>-->

src/WEventViewer/ViewModel/OpenLogWindowViewModel.cs

Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -147,6 +147,7 @@ public bool UseRawQuery
147147
UseBeginDate = false;
148148
UseEndDate = false;
149149
UseProviderNames = false;
150+
UseFilterByLevel = false;
150151
}
151152
}
152153
}
@@ -184,6 +185,34 @@ string BuildQuery()
184185
var providerConditions = string.Join(" or ", ProviderNames.Split(',').Select(x => $"@Name = '{x.Trim()}'"));
185186
conditions.Add($"Provider[{providerConditions}]");
186187
}
188+
if (UseFilterByLevel)
189+
{
190+
var levelConditions = new List<string>();
191+
if(IsCriticalChecked)
192+
{
193+
levelConditions.Add("Level=1");
194+
}
195+
if(IsErrorChecked)
196+
{
197+
levelConditions.Add("Level=2");
198+
}
199+
if(IsWarningChecked)
200+
{
201+
levelConditions.Add("Level=3");
202+
}
203+
if(IsInformationChecked)
204+
{
205+
levelConditions.Add("Level=4");
206+
}
207+
if(IsVerboseChecked)
208+
{
209+
levelConditions.Add("Level=5");
210+
}
211+
if (levelConditions.Count > 0)
212+
{
213+
conditions.Add($"({string.Join(" or ", levelConditions)})");
214+
}
215+
}
187216
if (conditions.Count > 0)
188217
{
189218
return $"*[System[{string.Join(" and ", conditions)}]]";
@@ -304,5 +333,28 @@ public bool UseProviderNames
304333
}
305334
}
306335
public string ProviderNames { get; set; } = string.Empty;
336+
bool _UseFilterByLevel = false;
337+
public bool UseFilterByLevel
338+
{
339+
get => _UseFilterByLevel;
340+
set
341+
{
342+
var changed = _UseFilterByLevel != value;
343+
_UseFilterByLevel = value;
344+
if (changed)
345+
{
346+
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(nameof(UseFilterByLevel)));
347+
if(UseRawQuery && value)
348+
{
349+
UseRawQuery = false;
350+
}
351+
}
352+
}
353+
}
354+
public bool IsCriticalChecked { get; set; } = false;
355+
public bool IsErrorChecked { get; set; } = false;
356+
public bool IsWarningChecked { get; set; } = false;
357+
public bool IsInformationChecked { get; set; } = false;
358+
public bool IsVerboseChecked { get; set; } = false;
307359
}
308360
}

0 commit comments

Comments
 (0)