Skip to content

Commit

Permalink
Added default copy type that will only copy details for enabled columns
Browse files Browse the repository at this point in the history
  • Loading branch information
jschick04 authored and bill-long committed May 20, 2024
1 parent 93708f9 commit 4307a7d
Show file tree
Hide file tree
Showing 5 changed files with 68 additions and 8 deletions.
5 changes: 3 additions & 2 deletions src/EventLogExpert.UI/Enums.cs
Original file line number Diff line number Diff line change
Expand Up @@ -29,9 +29,10 @@ public enum ColumnName

public enum CopyType
{
Full,
Default,
Simple,
Xml
Xml,
Full
}

public enum HighlightColor
Expand Down
4 changes: 3 additions & 1 deletion src/EventLogExpert/MainPage.xaml
Original file line number Diff line number Diff line change
Expand Up @@ -35,11 +35,13 @@
</MenuBarItem>
<MenuBarItem Text="Edit">
<MenuFlyoutItem Text="Copy Selected" x:Name="CopySelected"
Clicked="CopySelected_Clicked" CommandParameter="{x:Static ui:CopyType.Full}" />
Clicked="CopySelected_Clicked" CommandParameter="{x:Static ui:CopyType.Default}" />
<MenuFlyoutItem Text="Copy Selected (Simple)" x:Name="CopySelectedSimple"
Clicked="CopySelected_Clicked" CommandParameter="{x:Static ui:CopyType.Simple}" />
<MenuFlyoutItem Text="Copy Selected (XML)" x:Name="CopySelectedXml"
Clicked="CopySelected_Clicked" CommandParameter="{x:Static ui:CopyType.Xml}" />
<MenuFlyoutItem Text="Copy Selected (Full)" x:Name="CopySelectedFull"
Clicked="CopySelected_Clicked" CommandParameter="{x:Static ui:CopyType.Full}" />
<MenuFlyoutItem Text="Save All Filters" Clicked="SaveAllFilters_Clicked" />
<MenuFlyoutItem Text="Clear All Filters" Clicked="ClearAllFilters_Clicked" />
</MenuBarItem>
Expand Down
12 changes: 8 additions & 4 deletions src/EventLogExpert/MainPage.xaml.cs
Original file line number Diff line number Diff line change
Expand Up @@ -406,19 +406,23 @@ private void SetCopyKeyboardAccelerator()
CopySelected.KeyboardAccelerators.Clear();
CopySelectedSimple.KeyboardAccelerators.Clear();
CopySelectedXml.KeyboardAccelerators.Clear();
CopySelectedFull.KeyboardAccelerators.Clear();

switch (_settingsState.Value.Config.CopyType)
{
case CopyType.Full :
case CopyType.Default:
CopySelected.KeyboardAccelerators.Add(CopyShortcut);
break;
case CopyType.Simple :
case CopyType.Simple:
CopySelectedSimple.KeyboardAccelerators.Add(CopyShortcut);
break;
case CopyType.Xml :
case CopyType.Xml:
CopySelectedXml.KeyboardAccelerators.Add(CopyShortcut);
break;
default : throw new ArgumentOutOfRangeException();
case CopyType.Full:
CopySelectedFull.KeyboardAccelerators.Add(CopyShortcut);
break;
default: throw new ArgumentOutOfRangeException();
}
});
}
Expand Down
52 changes: 52 additions & 0 deletions src/EventLogExpert/Services/ClipboardService.cs
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
using EventLogExpert.Eventing.Models;
using EventLogExpert.UI;
using EventLogExpert.UI.Store.EventLog;
using EventLogExpert.UI.Store.EventTable;
using EventLogExpert.UI.Store.Settings;
using Fluxor;
using System.Collections.Immutable;
Expand All @@ -19,16 +20,20 @@ public interface IClipboardService

public sealed class ClipboardService : IClipboardService
{
private readonly IStateSelection<EventTableState, ImmutableDictionary<ColumnName, bool>> _eventTableColumns;
private readonly IStateSelection<EventLogState, ImmutableList<DisplayEventModel>> _selectedEvents;
private readonly IState<SettingsState> _settingsState;

public ClipboardService(
IStateSelection<EventTableState, ImmutableDictionary<ColumnName, bool>> eventTableColumns,
IStateSelection<EventLogState, ImmutableList<DisplayEventModel>> selectedEvents,
IState<SettingsState> settingsState)
{
_eventTableColumns = eventTableColumns;
_selectedEvents = selectedEvents;
_settingsState = settingsState;

_eventTableColumns.Select(s => s.Columns);
_selectedEvents.Select(s => s.SelectedEvents);
}

Expand Down Expand Up @@ -57,6 +62,53 @@ private string GetFormattedEvent(CopyType? copyType, DisplayEventModel @event)
{
switch (copyType ?? _settingsState.Value.Config.CopyType)
{
case CopyType.Default:
StringBuilder defaultEvent = new();

foreach ((ColumnName column, _) in _eventTableColumns.Value.Where(x => x.Value))
{
switch (column)
{
case ColumnName.Level:
defaultEvent.Append($"\"{@event.Level}\" ");
break;
case ColumnName.DateAndTime:
defaultEvent.Append($"\"{@event.TimeCreated.ConvertTimeZone(_settingsState.Value.Config.TimeZoneInfo)}\" ");
break;
case ColumnName.ActivityId:
defaultEvent.Append($"\"{@event.ActivityId}\" ");
break;
case ColumnName.Log:
defaultEvent.Append($"\"{@event.OwningLog.Split("\\").Last()}\" ");
break;
case ColumnName.ComputerName:
defaultEvent.Append($"\"{@event.ComputerName}\" ");
break;
case ColumnName.Source:
defaultEvent.Append($"\"{@event.Source}\" ");
break;
case ColumnName.EventId:
defaultEvent.Append($"\"{@event.Id}\" ");
break;
case ColumnName.TaskCategory:
defaultEvent.Append($"\"{@event.TaskCategory}\" ");
break;
case ColumnName.Keywords:
defaultEvent.Append($"\"{string.Join(", ", @event.KeywordsDisplayNames)}\" ");
break;
case ColumnName.ProcessId:
defaultEvent.Append($"\"{@event.ProcessId}\" ");
break;
case ColumnName.ThreadId:
defaultEvent.Append($"\"{@event.ThreadId}\" ");
break;
case ColumnName.User:
defaultEvent.Append($"\"{@event.UserId}\" ");
break;
}
}

return defaultEvent.Append($"\"{@event.Description}\"").ToString();
case CopyType.Simple:
StringBuilder simpleEvent = new();

Expand Down
3 changes: 2 additions & 1 deletion src/EventLogExpert/Shared/Components/ContextMenu.razor
Original file line number Diff line number Diff line change
@@ -1,9 +1,10 @@
@using EventLogExpert.UI

<div id="context-menu">
<div @onclick="() => CopySelected(CopyType.Full)">Copy Selected</div>
<div @onclick="() => CopySelected(CopyType.Default)">Copy Selected</div>
<div @onclick="() => CopySelected(CopyType.Simple)">Copy Selected (Simple)</div>
<div @onclick="() => CopySelected(CopyType.Xml)">Copy Selected (XML)</div>
<div @onclick="() => CopySelected(CopyType.Full)">Copy Selected (Full)</div>

<hr />

Expand Down

0 comments on commit 4307a7d

Please sign in to comment.