From ed84ca8963670bec249f2c84de33ed2401876aee Mon Sep 17 00:00:00 2001 From: Pat Hartl Date: Wed, 13 Nov 2024 01:42:52 -0600 Subject: [PATCH] Grouping in depot, default to no grouping --- .../DepotFilterModel.cs | 2 +- LANCommander.Launcher/Styles/_depot.scss | 12 +++-- .../UI/Depot/Components/DepotList.razor | 48 +++++++++++++++++-- LANCommander.Launcher/UI/Depot/Index.razor | 12 ----- 4 files changed, 53 insertions(+), 21 deletions(-) diff --git a/LANCommander.Launcher.Models/DepotFilterModel.cs b/LANCommander.Launcher.Models/DepotFilterModel.cs index 6b9dbb39..32aeb602 100644 --- a/LANCommander.Launcher.Models/DepotFilterModel.cs +++ b/LANCommander.Launcher.Models/DepotFilterModel.cs @@ -6,7 +6,7 @@ namespace LANCommander.Launcher.Models public class DepotFilterModel { public string Title { get; set; } - public GroupBy GroupBy { get; set; } = GroupBy.Collection; + public GroupBy GroupBy { get; set; } = GroupBy.None; public SortBy SortBy { get; set; } = SortBy.Title; public SortDirection SortDirection { get; set; } = SortDirection.Ascending; public ICollection Engines { get; set; } diff --git a/LANCommander.Launcher/Styles/_depot.scss b/LANCommander.Launcher/Styles/_depot.scss index 88fb0ca4..a258b53c 100644 --- a/LANCommander.Launcher/Styles/_depot.scss +++ b/LANCommander.Launcher/Styles/_depot.scss @@ -32,19 +32,23 @@ $hero-max-height: 40vh; flex-shrink: 0; } -.depot-games { +.depot-list { width: 100%; overflow-y: scroll; overflow-x: hidden; - display: grid; - grid-template-columns: repeat(auto-fill, minmax($cover-max-width, 1fr)); - gap: $cover-gap; padding-top: $window-drag-area-height + $cover-vertical-padding; padding-left: $cover-horizontal-padding + $cover-gap; padding-right: $cover-horizontal-padding + $cover-gap; padding-bottom: $cover-vertical-padding + $cover-gap; } +.depot-list-items, +.depot-list-group-items { + display: grid; + grid-template-columns: repeat(auto-fill, minmax($cover-max-width, 1fr)); + gap: $cover-gap; +} + .depot-game { display: flex; align-items: center; diff --git a/LANCommander.Launcher/UI/Depot/Components/DepotList.razor b/LANCommander.Launcher/UI/Depot/Components/DepotList.razor index 773e72bb..a0ece99e 100644 --- a/LANCommander.Launcher/UI/Depot/Components/DepotList.razor +++ b/LANCommander.Launcher/UI/Depot/Components/DepotList.razor @@ -1,14 +1,54 @@ @using LANCommander.SDK.Models @inject SDK.Client Client - - @foreach (var item in Items) +
+ @if (Groups.Count > 1) { - + @foreach (var group in Groups) + { +
+ + +
+ @foreach (var item in Items.Where(i => i.Groups.Contains(group) || (group == "Uncategorized" && i.Groups.Length == 0))) + { + + } +
+
+ } } - + else + { +
+ @foreach (var item in Items) + { + + } +
+ } +
@code { [Parameter] public IEnumerable Items { get; set; } [Parameter] public EventCallback OnItemSelected { get; set; } + + List Groups = new(); + + protected override async Task OnParametersSetAsync() + { + await UpdateGroups(); + } + + async Task UpdateGroups() + { + Groups = Items.SelectMany(i => i.Groups).Distinct().ToList(); + + var uncategorized = Items.Where(i => i.Groups == null || i.Groups.Length == 0).ToList(); + + if (Items.Any(i => i.Groups == null || i.Groups.Length == 0)) + Groups.Add("Uncategorized"); + + await InvokeAsync(StateHasChanged); + } } diff --git a/LANCommander.Launcher/UI/Depot/Index.razor b/LANCommander.Launcher/UI/Depot/Index.razor index 92909a3c..19d986dd 100644 --- a/LANCommander.Launcher/UI/Depot/Index.razor +++ b/LANCommander.Launcher/UI/Depot/Index.razor @@ -36,7 +36,6 @@ DepotGameDetails DepotGameDetails; - List Groups = new(); IEnumerable ListItems = new List(); Models.ListItem SelectedItem { get; set; } @@ -64,17 +63,6 @@ { ListItems = listItems; - await UpdateGroups(); - await InvokeAsync(StateHasChanged); - } - - async Task UpdateGroups() - { - Groups = ListItems.SelectMany(i => i.Groups).Distinct().ToList(); - - if (ListItems.Any(i => i.Groups == null || i.Groups.Length == 0)) - Groups.Add("Uncategorized"); - await InvokeAsync(StateHasChanged); } }