< Summary

Information
Class: Elsa.Dashboard.Api.Services.DashboardRange
Assembly: Elsa.Dashboard.Api
File(s): /home/runner/work/elsa-core/elsa-core/src/modules/Elsa.Dashboard.Api/Services/DashboardRangeResolver.cs
Line coverage
100%
Covered lines: 1
Uncovered lines: 0
Coverable lines: 1
Total lines: 47
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_Key()100%11100%

File(s)

/home/runner/work/elsa-core/elsa-core/src/modules/Elsa.Dashboard.Api/Services/DashboardRangeResolver.cs

#LineLine coverage
 1using Elsa.Common;
 2using Elsa.Dashboard.Api.Models;
 3
 4namespace Elsa.Dashboard.Api.Services;
 5
 6public class DashboardRangeResolver(ISystemClock clock)
 7{
 8    public DashboardRange Resolve(string? range)
 9    {
 10        var key = Normalize(range);
 11        var duration = key switch
 12        {
 13            DashboardRangeKeys.OneHour => TimeSpan.FromHours(1),
 14            DashboardRangeKeys.SevenDays => TimeSpan.FromDays(7),
 15            _ => TimeSpan.FromHours(24)
 16        };
 17        var to = clock.UtcNow;
 18        return new(key, to.Subtract(duration), to);
 19    }
 20
 21    public string ResolveGranularity(string? granularity, string range) =>
 22        string.IsNullOrWhiteSpace(granularity)
 23            ? range switch
 24            {
 25                DashboardRangeKeys.OneHour => DashboardTrendGranularity.Minute,
 26                DashboardRangeKeys.SevenDays => DashboardTrendGranularity.Day,
 27                _ => DashboardTrendGranularity.Hour
 28            }
 29            : granularity;
 30
 31    public TimeSpan GetBucketSize(string granularity) =>
 32        granularity.Equals(DashboardTrendGranularity.Minute, StringComparison.OrdinalIgnoreCase)
 33            ? TimeSpan.FromMinutes(5)
 34            : granularity.Equals(DashboardTrendGranularity.Day, StringComparison.OrdinalIgnoreCase)
 35                ? TimeSpan.FromDays(1)
 36                : TimeSpan.FromHours(1);
 37
 38    private static string Normalize(string? range) =>
 39        range?.Trim().ToLowerInvariant() switch
 40        {
 41            DashboardRangeKeys.OneHour => DashboardRangeKeys.OneHour,
 42            DashboardRangeKeys.SevenDays => DashboardRangeKeys.SevenDays,
 43            _ => DashboardRangeKeys.TwentyFourHours
 44        };
 45}
 46
 13747public record DashboardRange(string Key, DateTimeOffset From, DateTimeOffset To);

Methods/Properties

get_Key()