< Summary

Information
Class: Pomodoro.Web.Components.History.DateNavigatorBase
Assembly: Pomodoro.Web
File(s): /home/runner/work/Pomodoro/Pomodoro/src/Pomodoro.Web/Components/History/DateNavigator.razor.cs
Line coverage
100%
Covered lines: 56
Uncovered lines: 0
Coverable lines: 56
Total lines: 123
Line coverage: 100%
Branch coverage
100%
Covered branches: 8
Total branches: 8
Branch coverage: 100%
Method coverage

Feature is only available for sponsors

Upgrade to PRO version

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity Line coverage
OnInitializedAsync()100%11100%
OnParametersSetAsync()100%11100%
get_LocalDateTimeService()100%11100%
get_SelectedDate()100%11100%
get_OnDateChanged()100%11100%
get_FormattedDate()100%11100%
get_IsTodayAsyncValue()100%11100%
IsTodayAsync()100%11100%
get_IsToday()100%11100%
GoToPrevious()100%11100%
GoToNext()100%11100%
GoToToday()100%11100%
UpdateFormattedDate()100%11100%
UpdateIsTodayAsync()100%11100%
FormatDateAsync()100%44100%
FormatDate(...)100%44100%

File(s)

/home/runner/work/Pomodoro/Pomodoro/src/Pomodoro.Web/Components/History/DateNavigator.razor.cs

#LineLine coverage
 1using Microsoft.AspNetCore.Components;
 2using Pomodoro.Web.Services;
 3
 4namespace Pomodoro.Web.Components.History;
 5
 6/// <summary>
 7/// Code-behind for DateNavigator component
 8/// Provides date navigation controls
 9/// </summary>
 10public class DateNavigatorBase : ComponentBase
 11{
 12    #region Lifecycle Methods
 13
 14    protected override async Task OnInitializedAsync()
 10215    {
 10216        await UpdateFormattedDate();
 10217        await UpdateIsTodayAsync();
 10218        await base.OnInitializedAsync();
 10219    }
 20
 21    protected override async Task OnParametersSetAsync()
 11422    {
 11423        await UpdateFormattedDate();
 11424        await UpdateIsTodayAsync();
 11425        await base.OnParametersSetAsync();
 11426    }
 27
 28    #endregion
 29
 30    #region Services
 31
 32    [Inject]
 63733    protected ILocalDateTimeService LocalDateTimeService { get; set; } = default!;
 34
 35    #endregion
 36
 37    #region Parameters
 38
 39    [Parameter]
 55340    public DateTime SelectedDate { get; set; }
 41
 42    [Parameter]
 10543    public EventCallback<DateTime> OnDateChanged { get; set; }
 44
 45    #endregion
 46
 47    #region Properties
 48
 43849    protected string FormattedDate { get; set; } = string.Empty;
 45650    protected bool IsTodayAsyncValue { get; set; }
 51
 52    protected async Task<bool> IsTodayAsync()
 21653    {
 21654        var localDate = await LocalDateTimeService.GetLocalDateAsync();
 21655        return SelectedDate.Date == localDate;
 21656    }
 57
 258    protected bool IsToday => SelectedDate.Date == DateTime.Now.Date;
 59
 60    #endregion
 61
 62    #region Actions
 63
 64    protected async Task GoToPrevious()
 465    {
 466        var newDate = SelectedDate.AddDays(Constants.TimeConversion.DayOffsetPrevious);
 467        await OnDateChanged.InvokeAsync(newDate);
 468    }
 69
 70    protected async Task GoToNext()
 171    {
 172        var newDate = SelectedDate.AddDays(Constants.TimeConversion.DayOffsetNext);
 173        await OnDateChanged.InvokeAsync(newDate);
 174    }
 75
 76    protected async Task GoToToday()
 177    {
 178        var localDate = await LocalDateTimeService.GetLocalDateAsync();
 179        await OnDateChanged.InvokeAsync(localDate);
 180    }
 81
 82    #endregion
 83
 84    #region Helper Methods
 85
 86    protected async Task UpdateFormattedDate()
 21687    {
 21688        FormattedDate = await FormatDateAsync(SelectedDate);
 21689    }
 90
 91    protected async Task UpdateIsTodayAsync()
 21692    {
 21693        IsTodayAsyncValue = await IsTodayAsync();
 21694    }
 95
 96    protected async Task<string> FormatDateAsync(DateTime date)
 21697    {
 21698        var today = await LocalDateTimeService.GetLocalDateAsync();
 21699        var yesterday = today.AddDays(Constants.TimeConversion.DayOffsetPrevious);
 100
 216101        if (date.Date == today)
 168102            return Constants.TimeFormats.TodayText;
 48103        if (date.Date == yesterday)
 3104            return Constants.TimeFormats.YesterdayText;
 105
 45106        return date.ToString(Constants.TimeFormats.DateFormat);
 216107    }
 108
 109    protected string FormatDate(DateTime date)
 3110    {
 3111        var today = DateTime.Now.Date;
 3112        var yesterday = today.AddDays(Constants.TimeConversion.DayOffsetPrevious);
 113
 3114        if (date.Date == today)
 1115            return Constants.TimeFormats.TodayText;
 2116        if (date.Date == yesterday)
 1117            return Constants.TimeFormats.YesterdayText;
 118
 1119        return date.ToString(Constants.TimeFormats.DateFormat);
 3120    }
 121
 122    #endregion
 123}