Skip to content

Commit

Permalink
Date Filter now adjusts when Time Zone is updated in settings
Browse files Browse the repository at this point in the history
  • Loading branch information
jschick04 committed May 26, 2023
1 parent 66035fb commit c8a9d3a
Show file tree
Hide file tree
Showing 2 changed files with 28 additions and 3 deletions.
2 changes: 2 additions & 0 deletions src/EventLogExpert.Library/Models/FilterDateModel.cs
Original file line number Diff line number Diff line change
Expand Up @@ -8,4 +8,6 @@ public record FilterDateModel
public DateTime After { get; set; }

public DateTime Before { get; set; }

public TimeZoneInfo TimeZoneInfo { get; set; } = null!;
}
29 changes: 26 additions & 3 deletions src/EventLogExpert/Components/FilterPane.razor.cs
Original file line number Diff line number Diff line change
Expand Up @@ -3,14 +3,16 @@

using EventLogExpert.Library.Models;
using EventLogExpert.Store.FilterPane;
using EventLogExpert.Store.Settings;
using Fluxor;
using Microsoft.AspNetCore.Components;
using System.Linq.Dynamic.Core;

namespace EventLogExpert.Components;

public partial class FilterPane
{
private readonly FilterDateModel _model = new();
private readonly FilterDateModel _model = new() { TimeZoneInfo = TimeZoneInfo.Utc };

private Timer? _advancedFilterDebounceTimer = null;
private string _advancedFilterErrorMessage = string.Empty;
Expand All @@ -35,19 +37,31 @@ private string MenuState
}
}

[Inject] private IStateSelection<SettingsState, string> TimeZoneState { get; set; } = null!;

protected override void OnInitialized()
{
TimeZoneState.Select(x => x.TimeZoneId);
TimeZoneState.SelectedValueChanged += (sender, args) => { UpdateFilterDateModel(); };

base.OnInitialized();
}

private void AddDateFilter()
{
_isFilterListVisible = true;
_canEditDate = true;

_model.TimeZoneInfo = SettingsState.Value.TimeZone;

// Offset by 1 minute to make sure we don't drop events
// since HTML input DateTime does not go lower than minutes
_model.Before = EventLogState.Value.Events.FirstOrDefault()?.TimeCreated
.AddMinutes(1).ConvertTimeZone(SettingsState.Value.TimeZone) ??
.AddMinutes(1).ConvertTimeZone(_model.TimeZoneInfo) ??
DateTime.Now;

_model.After = EventLogState.Value.Events.LastOrDefault()?.TimeCreated
.AddMinutes(-1).ConvertTimeZone(SettingsState.Value.TimeZone) ??
.AddMinutes(-1).ConvertTimeZone(_model.TimeZoneInfo) ??
DateTime.Now;

_isDateFilterVisible = true;
Expand Down Expand Up @@ -138,4 +152,13 @@ private bool TryParseExpression(string? expression, out string message)
return false;
}
}

private void UpdateFilterDateModel()
{
var temp = _model.TimeZoneInfo;
_model.TimeZoneInfo = SettingsState.Value.TimeZone;

_model.Before = TimeZoneInfo.ConvertTime(_model.Before, temp, _model.TimeZoneInfo);
_model.After = TimeZoneInfo.ConvertTime(_model.After, temp, _model.TimeZoneInfo);
}
}

0 comments on commit c8a9d3a

Please sign in to comment.