internal static IntervalDisplayData CreateIntervalDisplayData(WorkoutInterval interval) { var pace = interval.Distance == 0 ? 0 : interval.Duration * 100 / interval.Distance; var swolf = interval.Distance == 0 ? 0 : interval.Duration * 50 / interval.Distance + interval.StrokeCount; var result = new IntervalDisplayData { IntervalId = interval.Id, IntervalNo = interval.IntervalNo.GetValueOrDefault(), DistanceFormatted = interval.Distance > 0 ? interval.Distance.ToStringInvariant() + " m" : "-", DurationFormatted = DisplayValuesFormatter.FormatDuration(interval.Duration, true), StartTime = DisplayValuesFormatter.FormatDuration(interval.TimeOffset, false), StrokeCountFormatted = interval.StrokeCount > 0 ? interval.StrokeCount.ToStringInvariant("0.#") : "-", PaceFormatted = interval.Distance > 0 ? DisplayValuesFormatter.FormatDuration(pace, true) : "-", SwolfFormatted = interval.StrokeTypeId != StrokeType.Drill && interval.StrokeCount > 0 ? swolf.ToStringInvariant("0.#") : "-", IntervalTypeId = interval.WorkoutIntervalTypeId.GetValueOrDefault(), IntervalTypeName = interval.WorkoutIntervalType?.Name }; foreach (var length in interval.Lengths) { result.Lengths.Add(new IntervalLengthDisplayData { LengthNo = length.LengthNo.GetValueOrDefault(), DurationFormatted = DisplayValuesFormatter.FormatDuration(length.Duration, true), DistanceFormatted = $"{length.Distance} m", PaceFormatted = length.Distance > 0 ? DisplayValuesFormatter.FormatDuration(length.Duration * 100 / length.Distance, true) : "-", StrokeCount = length.StrokeCount, StrokeTypeId = length.StrokeTypeId, StrokeTypeName = length.StrokeTypeId.GetDisplayName() }); } return(result); }
public static string GetDurationFormatted(this Workout workout) { if (workout == null) { throw new ArgumentNullException(nameof(workout)); } return(DisplayValuesFormatter.FormatDuration(workout.Duration, false)); }