< Summary

Information
Class: Pomodoro.Web.Components.History.WeekNavigatorBase
Assembly: Pomodoro.Web
File(s): /home/runner/work/Pomodoro/Pomodoro/src/Pomodoro.Web/Components/History/WeekNavigator.razor.cs
Line coverage
100%
Covered lines: 27
Uncovered lines: 0
Coverable lines: 27
Total lines: 91
Line coverage: 100%
Branch coverage
N/A
Covered branches: 0
Total branches: 0
Branch coverage: N/A
Method coverage

Feature is only available for sponsors

Upgrade to PRO version

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity Line coverage
get_SelectedWeekStart()100%11100%
get_OnWeekChanged()100%11100%
get_IsThisWeek()100%11100%
GoToPreviousWeek()100%11100%
GoToNextWeek()100%11100%
GoToThisWeek()100%11100%
GetWeekStart(...)100%11100%
FormatWeekRange(...)100%11100%

File(s)

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

#LineLine coverage
 1using Microsoft.AspNetCore.Components;
 2
 3namespace Pomodoro.Web.Components.History;
 4
 5/// <summary>
 6/// Code-behind for WeekNavigator component
 7/// Provides week navigation controls (Saturday to Friday week)
 8/// </summary>
 9public class WeekNavigatorBase : ComponentBase
 10{
 11    #region Parameters
 12
 13    [Parameter]
 16314    public DateTime SelectedWeekStart { get; set; }
 15
 16    [Parameter]
 3317    public EventCallback<DateTime> OnWeekChanged { get; set; }
 18
 19    #endregion
 20
 21    #region Properties
 22
 23    /// <summary>
 24    /// Check if the selected week is the current week
 25    /// </summary>
 26    protected bool IsThisWeek
 27    {
 28        get
 8229        {
 8230            var thisWeekStart = GetWeekStart(DateTime.Now.Date);
 8231            return SelectedWeekStart.Date == thisWeekStart.Date;
 8232        }
 33    }
 34
 35    #endregion
 36
 37    #region Actions
 38
 39    /// <summary>
 40    /// Navigate to the previous week (Saturday to Friday)
 41    /// </summary>
 42    protected async Task GoToPreviousWeek()
 243    {
 244        var newWeekStart = SelectedWeekStart.AddDays(-Constants.Charts.DaysPerWeek);
 245        await OnWeekChanged.InvokeAsync(newWeekStart);
 246    }
 47
 48    /// <summary>
 49    /// Navigate to the next week (Saturday to Friday)
 50    /// </summary>
 51    protected async Task GoToNextWeek()
 352    {
 353        var newWeekStart = SelectedWeekStart.AddDays(Constants.Charts.DaysPerWeek);
 354        await OnWeekChanged.InvokeAsync(newWeekStart);
 355    }
 56
 57    /// <summary>
 58    /// Navigate to the current week
 59    /// </summary>
 60    protected async Task GoToThisWeek()
 161    {
 162        var thisWeekStart = GetWeekStart(DateTime.Now.Date);
 163        await OnWeekChanged.InvokeAsync(thisWeekStart);
 164    }
 65
 66    #endregion
 67
 68    #region Helper Methods
 69
 70    /// <summary>
 71    /// Get the Saturday start of the week containing the given date
 72    /// DayOfWeek: Sun=0, Mon=1, Tue=2, Wed=3, Thu=4, Fri=5, Sat=6
 73    /// </summary>
 74    public static DateTime GetWeekStart(DateTime date)
 24575    {
 24576        int dayOfWeek = (int)date.DayOfWeek;
 24577        int daysSinceSaturday = (dayOfWeek + Constants.TimeConversion.SaturdayBasedWeekOffset) % Constants.TimeConversio
 24578        return date.AddDays(-daysSinceSaturday).Date;
 24579    }
 80
 81    /// <summary>
 82    /// Format the week range for display (e.g., "Jan 20 - Jan 26, 2026")
 83    /// </summary>
 84    protected string FormatWeekRange(DateTime weekStart)
 4185    {
 4186        var weekEnd = weekStart.AddDays(Constants.TimeConversion.WeeklyLookbackDays);
 4187        return string.Format(Constants.History.WeekRangeFormat, weekStart, weekEnd);
 4188    }
 89
 90    #endregion
 91}