diff --git a/WotBlitzStatisticsPro.Blazor.Tests/Helpers/DatesHelperTests.cs b/WotBlitzStatisticsPro.Blazor.Tests/Helpers/DatesHelperTests.cs index 0e9d67f..afdc03e 100644 --- a/WotBlitzStatisticsPro.Blazor.Tests/Helpers/DatesHelperTests.cs +++ b/WotBlitzStatisticsPro.Blazor.Tests/Helpers/DatesHelperTests.cs @@ -27,6 +27,60 @@ namespace WotBlitzStatisticsPro.Blazor.Tests.Helpers } } - // ToDo: Write months, days, hours and minutes scenarios + [Test] + public void ShouldCalculateMonths() + { + var currentDate = new DateTime(2021, 5, 18); + + for (int i = 0; i < 5; i++) + { + var initialTime = currentDate.AddMonths(-(1 + i * 2)).AddDays(-i); + var result = DateDifferenceHelper.ParseTheDifference(currentDate - initialTime); + result.interval.Should().Be(TimeInterval.Month, $"iterator {i}"); + result.value.Should().Be(1 + i * 2); + } + } + + [Test] + public void ShouldCalculateDays() + { + var currentDate = new DateTime(2021, 5, 18); + + for (int i = 0; i < 5; i++) + { + var initialTime = currentDate.AddDays(-(1 + i * 2)).AddHours(-i); + var result = DateDifferenceHelper.ParseTheDifference(currentDate - initialTime); + result.interval.Should().Be(TimeInterval.Day, $"iterator {i}"); + result.value.Should().Be(1 + i * 2); + } + } + + [Test] + public void ShouldCalculateHours() + { + var currentDate = new DateTime(2021, 5, 18); + + for (int i = 0; i < 5; i++) + { + var initialTime = currentDate.AddHours(-(1 + i * 2)).AddMinutes(-i); + var result = DateDifferenceHelper.ParseTheDifference(currentDate - initialTime); + result.interval.Should().Be(TimeInterval.Hour, $"iterator {i}"); + result.value.Should().Be(1 + i * 2); + } + } + + [Test] + public void ShouldCalculateMinutes() + { + var currentDate = new DateTime(2021, 5, 18); + + for (int i = 0; i < 5; i++) + { + var initialTime = currentDate.AddMinutes(-(1 + i * 2)).AddSeconds(-i); + var result = DateDifferenceHelper.ParseTheDifference(currentDate - initialTime); + result.interval.Should().Be(TimeInterval.Minute, $"iterator {i}"); + result.value.Should().Be(1 + i * 2); + } + } } } \ No newline at end of file diff --git a/WotBlitzStatisticsPro.Blazor/Constants.cs b/WotBlitzStatisticsPro.Blazor/Constants.cs index ccb9f48..916bbdb 100644 --- a/WotBlitzStatisticsPro.Blazor/Constants.cs +++ b/WotBlitzStatisticsPro.Blazor/Constants.cs @@ -3,5 +3,27 @@ public class Constants { public const string ClanTagColor = "#d4d481"; + + + //public const string ScaleVeryBadColor = "#000000"; + //public const string ScaleBadColor = "#cd3333"; + //public const string ScaleBelowAverageColor = "#d77900"; + //public const string ScaleAverageColor = "#d7b600"; + //public const string ScaleGoodColor = "#6d9521"; + //public const string ScaleVeryGoodColor = "#4c762e"; + //public const string ScaleGreatColor = "#4a92b7"; + //public const string ScaleUnicumColor = "#83579d"; + //public const string ScaleSuperUnicumColor = "#5a3175"; + public const string ScaleVeryBadColor = "#a3a3a3"; + public const string ScaleBadColor = "#dc7070"; + public const string ScaleBelowAverageColor = "#ff9f25"; + public const string ScaleAverageColor = "#ffdd25"; + public const string ScaleGoodColor = "#9ad131"; + public const string ScaleVeryGoodColor = "#6fad43"; + public const string ScaleGreatColor = "#81b3cd"; + public const string ScaleUnicumColor = "#a785bb"; + public const string ScaleSuperUnicumColor = "#8348ab"; + + } } \ No newline at end of file diff --git a/WotBlitzStatisticsPro.Blazor/Helpers/DateDifferenceHelper.cs b/WotBlitzStatisticsPro.Blazor/Helpers/DateDifferenceHelper.cs index 3396792..639c02f 100644 --- a/WotBlitzStatisticsPro.Blazor/Helpers/DateDifferenceHelper.cs +++ b/WotBlitzStatisticsPro.Blazor/Helpers/DateDifferenceHelper.cs @@ -24,13 +24,39 @@ namespace WotBlitzStatisticsPro.Blazor.Helpers return $"{difference.value} {ago}"; } + public static string SinceTime(this DateTimeOffset time, IStringLocalizer localizer) + { + var currentDate = DateTime.Now; + + var difference = ParseTheDifference(currentDate - time); + string ago = difference.interval switch + { + TimeInterval.Year => localizer.GetString("years ago"), + TimeInterval.Month => localizer.GetString("months ago"), + TimeInterval.Day => localizer.GetString("days ago"), + TimeInterval.Hour => localizer.GetString("hours ago"), + TimeInterval.Minute => localizer.GetString("minutes ago") + }; + + return $"{difference.value} {ago}"; + } + public static (int value, TimeInterval interval) ParseTheDifference(TimeSpan difference) { - // ToDo: Check hours and mins if Days is 0 + if (difference.TotalHours < 1) + { + return (Convert.ToInt32(difference.TotalMinutes), TimeInterval.Minute); + } + + if (difference.TotalDays < 1) + { + return (Convert.ToInt32(difference.TotalHours), TimeInterval.Hour); + } + return difference.TotalDays switch { >= 365 => (CalculateYears(difference.TotalDays), TimeInterval.Year), - (> 30) and (< 365) => (CalculateMonths(difference.TotalDays), TimeInterval.Month), + (>= 30) and (< 365) => (CalculateMonths(difference.TotalDays), TimeInterval.Month), _ => (Convert.ToInt32(difference.TotalDays), TimeInterval.Day) }; } diff --git a/WotBlitzStatisticsPro.Blazor/Helpers/ScaleHelper.cs b/WotBlitzStatisticsPro.Blazor/Helpers/ScaleHelper.cs new file mode 100644 index 0000000..fcef425 --- /dev/null +++ b/WotBlitzStatisticsPro.Blazor/Helpers/ScaleHelper.cs @@ -0,0 +1,21 @@ +namespace WotBlitzStatisticsPro.Blazor.Helpers +{ + public static class ScaleHelper + { + public static string ScaleColor(this int winRate) + { + return winRate switch + { + ( > 0 ) and ( < 45) => Constants.ScaleVeryBadColor, + ( >= 45 ) and ( < 47 ) => Constants.ScaleBadColor, + ( >= 47 ) and ( < 49 ) => Constants.ScaleBelowAverageColor, + ( >= 49 ) and ( < 52 ) => Constants.ScaleAverageColor, + ( >= 52 ) and ( < 54 ) => Constants.ScaleGoodColor, + ( >= 54 ) and ( < 56 ) => Constants.ScaleVeryGoodColor, + ( >= 56 ) and ( < 60 ) => Constants.ScaleGreatColor, + ( >= 60 ) and ( < 65 ) => Constants.ScaleUnicumColor, + _ => Constants.ScaleSuperUnicumColor + }; + } + } +} \ No newline at end of file diff --git a/WotBlitzStatisticsPro.Blazor/Pages/FindClanListItem.razor b/WotBlitzStatisticsPro.Blazor/Pages/FindClanListItem.razor index 394b750..f380adc 100644 --- a/WotBlitzStatisticsPro.Blazor/Pages/FindClanListItem.razor +++ b/WotBlitzStatisticsPro.Blazor/Pages/FindClanListItem.razor @@ -18,6 +18,7 @@ +
@code { [Parameter] diff --git a/WotBlitzStatisticsPro.Blazor/Pages/FindPlayerListItem.razor b/WotBlitzStatisticsPro.Blazor/Pages/FindPlayerListItem.razor index e9578ee..eb4c327 100644 --- a/WotBlitzStatisticsPro.Blazor/Pages/FindPlayerListItem.razor +++ b/WotBlitzStatisticsPro.Blazor/Pages/FindPlayerListItem.razor @@ -1,4 +1,24 @@ -@Player.Nickname @(Player.ClanTag == null ? string.Empty : $"[{Player.ClanTag}]") +@using WotBlitzStatisticsPro.Blazor.Helpers +@inject IStringLocalizer Localize +
+
+ @Player.Nickname + @if (Player.ClanTag != null) + { + [@Player.ClanTag] + } +
+
+ @Player.WinRate% +
+
+ @Player.BattlesCount +
+
+ @Player.LastBattle.SinceTime(Localize) +
+
+
@code { [Parameter] diff --git a/WotBlitzStatisticsPro.Blazor/Resources/App.de.resx b/WotBlitzStatisticsPro.Blazor/Resources/App.de.resx index d986568..b9ca076 100644 --- a/WotBlitzStatisticsPro.Blazor/Resources/App.de.resx +++ b/WotBlitzStatisticsPro.Blazor/Resources/App.de.resx @@ -126,12 +126,18 @@ Startseite + + vor Stunden + Anmelden mit WG.net-ID Mitglieder + + vor Minuten + vor Monaten diff --git a/WotBlitzStatisticsPro.Blazor/Resources/App.ru.resx b/WotBlitzStatisticsPro.Blazor/Resources/App.ru.resx index 82b6bcb..9191665 100644 --- a/WotBlitzStatisticsPro.Blazor/Resources/App.ru.resx +++ b/WotBlitzStatisticsPro.Blazor/Resources/App.ru.resx @@ -126,12 +126,18 @@ На главную + + часов назад + Войти с WG.net ID Участников + + минут назад + месяцев назад diff --git a/WotBlitzStatisticsPro.Blazor/wwwroot/icons/details.battles.scale-200.png b/WotBlitzStatisticsPro.Blazor/wwwroot/icons/details.battles.scale-200.png new file mode 100644 index 0000000..e30e6e3 Binary files /dev/null and b/WotBlitzStatisticsPro.Blazor/wwwroot/icons/details.battles.scale-200.png differ diff --git a/WotBlitzStatisticsPro.Blazor/wwwroot/icons/details.wins.scale-200.png b/WotBlitzStatisticsPro.Blazor/wwwroot/icons/details.wins.scale-200.png new file mode 100644 index 0000000..9b3330f Binary files /dev/null and b/WotBlitzStatisticsPro.Blazor/wwwroot/icons/details.wins.scale-200.png differ