Skip to content

Commit

Permalink
Added toggle to load XML when opening a new log to settings
Browse files Browse the repository at this point in the history
  • Loading branch information
jschick04 committed Oct 24, 2024
1 parent bf0a949 commit 2ec9a26
Show file tree
Hide file tree
Showing 9 changed files with 48 additions and 15 deletions.
4 changes: 2 additions & 2 deletions src/EventLogExpert.Eventing/Models/DisplayEventModel.cs
Original file line number Diff line number Diff line change
Expand Up @@ -18,9 +18,9 @@ public sealed record DisplayEventModel(

public List<string> KeywordsDisplayNames { get; init; } = [];

// This is the log name from the event reader
public string Level { get; init; } = string.Empty;

// This is the log name from the event reader
public string LogName { get; init; } = string.Empty;

public int? ProcessId { get; init; }
Expand All @@ -37,5 +37,5 @@ public sealed record DisplayEventModel(

public SecurityIdentifier UserId { get; init; } = new(WellKnownSidType.NullSid, null);

public string Xml { get; init; } = string.Empty;
public string? Xml { get; init; }
}
2 changes: 2 additions & 0 deletions src/EventLogExpert.UI/Interfaces/IPreferencesProvider.cs
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,8 @@ public interface IPreferencesProvider

CopyType KeyboardCopyTypePreference { get; set; }

bool LoadXmlPreference { get; set; }

LogLevel LogLevelPreference { get; set; }

bool PreReleasePreference { get; set; }
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -192,9 +192,7 @@ private void StartWatching(string logName)
ThreadId = eventArgs.EventRecord.ThreadId,
TimeCreated = eventArgs.EventRecord.TimeCreated!.Value.ToUniversalTime(),
UserId = eventArgs.EventRecord.UserId,
Xml = _settingsState.Value.Config.IsXmlEnabled ?
eventArgs.EventRecord.ToXml() :
"XML loading is disabled in settings"
Xml = _settingsState.Value.Config.IsXmlEnabled ? eventArgs.EventRecord.ToXml() : null
}));
}
};
Expand Down
4 changes: 3 additions & 1 deletion src/EventLogExpert.UI/Store/Settings/SettingsEffects.cs
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,8 @@ public Task HandleLoadSettings(IDispatcher dispatcher)
ShowDisplayPaneOnSelectionChange = preferencesProvider.DisplayPaneSelectionPreference,
CopyType = preferencesProvider.KeyboardCopyTypePreference,
LogLevel = preferencesProvider.LogLevelPreference,
IsPreReleaseEnabled = preferencesProvider.PreReleasePreference
IsPreReleaseEnabled = preferencesProvider.PreReleasePreference,
IsXmlEnabled = preferencesProvider.LoadXmlPreference
};

dispatcher.Dispatch(new SettingsAction.LoadSettingsCompleted(config, preferencesProvider.DisabledDatabasesPreference));
Expand All @@ -47,6 +48,7 @@ public Task HandleSave(SettingsAction.Save action, IDispatcher dispatcher)
preferencesProvider.KeyboardCopyTypePreference = action.Settings.CopyType;
preferencesProvider.LogLevelPreference = action.Settings.LogLevel;
preferencesProvider.PreReleasePreference = action.Settings.IsPreReleaseEnabled;
preferencesProvider.LoadXmlPreference = action.Settings.IsXmlEnabled;

dispatcher.Dispatch(new SettingsAction.SaveCompleted(action.Settings));

Expand Down
6 changes: 3 additions & 3 deletions src/EventLogExpert/Components/DetailsPane.razor
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@
<p class="details-description">@SelectedEvent.Description</p>
</div>

@if (!string.IsNullOrEmpty(SelectedEvent.Xml))
@if (SettingsState.Value.Config.IsXmlEnabled)
{
<hr />

Expand All @@ -48,13 +48,13 @@
</div>

<p class="details-xml" data-toggle="@_isXmlVisible.ToString().ToLower()">
@if (SettingsState.Value.Config.IsXmlEnabled)
@if (!string.IsNullOrEmpty(SelectedEvent.Xml))
{
@XElement.Parse(SelectedEvent.Xml)
}
else
{
<text>@SelectedEvent.Xml</text>
<text>Xml data is unavailable</text>
}
</p>
}
Expand Down
10 changes: 8 additions & 2 deletions src/EventLogExpert/Services/ClipboardService.cs
Original file line number Diff line number Diff line change
Expand Up @@ -120,7 +120,9 @@ private string GetFormattedEvent(CopyType? copyType, DisplayEventModel @event)

return simpleEvent.ToString();
case CopyType.Xml:
return XElement.Parse(@event.Xml).ToString();
return string.IsNullOrEmpty(@event.Xml) ?
string.Empty :
XElement.Parse(@event.Xml).ToString();
case CopyType.Full:
default:
StringBuilder fullEvent = new();
Expand All @@ -137,7 +139,11 @@ private string GetFormattedEvent(CopyType? copyType, DisplayEventModel @event)
fullEvent.AppendLine("Description:");
fullEvent.AppendLine(@event.Description);
fullEvent.AppendLine("Event Xml:");
fullEvent.AppendLine(XElement.Parse(@event.Xml).ToString());

if (!string.IsNullOrEmpty(@event.Xml))
{
fullEvent.AppendLine(XElement.Parse(@event.Xml).ToString());
}

return fullEvent.ToString();
}
Expand Down
7 changes: 7 additions & 0 deletions src/EventLogExpert/Services/PreferencesProvider.cs
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@ public sealed class PreferencesProvider : IPreferencesProvider
private const string EnabledEventTableColumns = "enabled-event-table-columns";
private const string FavoriteFilters = "favorite-filters";
private const string KeyboardCopyType = "keyboard-copy-type";
private const string LoadXmlEnabled = "load-xml-enabled";
private const string LoggingLevel = "logging-level";
private const string PreReleaseEnabled = "prerelease-enabled";
private const string RecentFilters = "recent-filters";
Expand Down Expand Up @@ -58,6 +59,12 @@ public CopyType KeyboardCopyTypePreference
set => Preferences.Default.Set(KeyboardCopyType, value.ToString());
}

public bool LoadXmlPreference
{
get => Preferences.Default.Get(LoadXmlEnabled, true);
set => Preferences.Default.Set(LoadXmlEnabled, value);
}

public LogLevel LogLevelPreference
{
get => Enum.TryParse(Preferences.Default.Get(LoggingLevel, LogLevel.Information.ToString()),
Expand Down
5 changes: 5 additions & 0 deletions src/EventLogExpert/Shared/Components/SettingsModal.razor
Original file line number Diff line number Diff line change
Expand Up @@ -75,6 +75,11 @@
}
</ValueSelect>
</div>

<div class="flex-center-aligned-row">
<text>Load XML Data When Opening Log:</text>
<BooleanSelect AriaLabel="Load XML Data When Opening Log" @bind-Value="_request.IsXmlEnabled" />
</div>
</div>

<div class="footer-group">
Expand Down
21 changes: 17 additions & 4 deletions src/EventLogExpert/Shared/Components/SettingsModal.razor.cs
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ public sealed partial class SettingsModal

private bool _databaseRemoved = false;
private SettingsModel _request = new();
private bool _shouldReload = false;

[Inject] private IAlertDialogService AlertDialogService { get; init; } = null!;

Expand All @@ -30,7 +31,7 @@ public sealed partial class SettingsModal

[Inject] private IState<SettingsState> SettingsState { get; init; } = null!;

protected internal override Task Close()
protected internal override async Task Close()
{
if (_databaseRemoved)
{
Expand All @@ -42,7 +43,13 @@ protected internal override Task Close()
.ToList()));
}

return base.Close();
if (_shouldReload)
{
await ReloadOpenLogs();
_shouldReload = false;
}

await base.Close();
}

protected override void OnInitialized()
Expand Down Expand Up @@ -142,7 +149,7 @@ private async Task ReloadOpenLogs()
if (EventLogState.Value.ActiveLogs.IsEmpty) { return; }

bool answer = await AlertDialogService.ShowAlert("Reload Open Logs Now?",
"In order to use these databases, all currently open logs must be reopened. Would you like to reopen all open logs now?",
"In order for these changes to take effect, all currently open logs must be reloaded. Would you like to reload all open logs now?",
"Yes", "No");

if (!answer) { return; }
Expand Down Expand Up @@ -185,6 +192,12 @@ private async Task Save()
{
if (!SettingsState.Value.Config.Equals(_request))
{
if (_request.IsXmlEnabled != SettingsState.Value.Config.IsXmlEnabled && _request.IsXmlEnabled)
{
// Really only need to reload logs if the user is enabling XML
_shouldReload = true;
}

Dispatcher.Dispatch(new SettingsAction.Save(_request));
}

Expand All @@ -197,7 +210,7 @@ private async Task Save()
.Select(db => db.name)
.ToList()));

await ReloadOpenLogs();
_shouldReload = true;
}

await Close();
Expand Down

0 comments on commit 2ec9a26

Please sign in to comment.