From f737fad43aac6575695679986f24f24b89c9e904 Mon Sep 17 00:00:00 2001 From: lostb1t Date: Fri, 16 Aug 2024 17:01:53 +0200 Subject: [PATCH 1/4] Rework get children functions to support ItemSortBy values --- .../Entities/Movies/BoxSet.cs | 44 +++++++++---------- 1 file changed, 21 insertions(+), 23 deletions(-) diff --git a/MediaBrowser.Controller/Entities/Movies/BoxSet.cs b/MediaBrowser.Controller/Entities/Movies/BoxSet.cs index d7ccfd8aee..abd1a2a543 100644 --- a/MediaBrowser.Controller/Entities/Movies/BoxSet.cs +++ b/MediaBrowser.Controller/Entities/Movies/BoxSet.cs @@ -112,37 +112,35 @@ namespace MediaBrowser.Controller.Entities.Movies return true; } + public IEnumerable Sort(IEnumerable items, User user) + { + var sortBy = new[] + { + ItemSortBy.ProductionYear, + ItemSortBy.PremiereDate, + ItemSortBy.SortName + }; + if (!string.IsNullOrEmpty(DisplayOrder)) + { + sortBy = new[] + { + Enum.Parse(DisplayOrder) + }; + } + + return LibraryManager.Sort(items, user, sortBy, SortOrder.Ascending); + } + public override List GetChildren(User user, bool includeLinkedChildren, InternalItemsQuery query) { var children = base.GetChildren(user, includeLinkedChildren, query); - - if (string.Equals(DisplayOrder, "SortName", StringComparison.OrdinalIgnoreCase)) - { - // Sort by name - return LibraryManager.Sort(children, user, new[] { ItemSortBy.SortName }, SortOrder.Ascending).ToList(); - } - - if (string.Equals(DisplayOrder, "PremiereDate", StringComparison.OrdinalIgnoreCase)) - { - // Sort by release date - return LibraryManager.Sort(children, user, new[] { ItemSortBy.ProductionYear, ItemSortBy.PremiereDate, ItemSortBy.SortName }, SortOrder.Ascending).ToList(); - } - - // Default sorting - return LibraryManager.Sort(children, user, new[] { ItemSortBy.ProductionYear, ItemSortBy.PremiereDate, ItemSortBy.SortName }, SortOrder.Ascending).ToList(); + return Sort(children, user).ToList(); } public override IEnumerable GetRecursiveChildren(User user, InternalItemsQuery query) { var children = base.GetRecursiveChildren(user, query); - - if (string.Equals(DisplayOrder, "PremiereDate", StringComparison.OrdinalIgnoreCase)) - { - // Sort by release date - return LibraryManager.Sort(children, user, new[] { ItemSortBy.ProductionYear, ItemSortBy.PremiereDate, ItemSortBy.SortName }, SortOrder.Ascending).ToList(); - } - - return children; + return Sort(children, user).ToList(); } public BoxSetInfo GetLookupInfo() From e59eac6a07b665b8bc8bc7176716705d8b72bdbd Mon Sep 17 00:00:00 2001 From: lostb1t Date: Fri, 16 Aug 2024 18:31:40 +0200 Subject: [PATCH 2/4] filter in special display order --- MediaBrowser.Controller/Entities/Movies/BoxSet.cs | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/MediaBrowser.Controller/Entities/Movies/BoxSet.cs b/MediaBrowser.Controller/Entities/Movies/BoxSet.cs index abd1a2a543..90f9ee4677 100644 --- a/MediaBrowser.Controller/Entities/Movies/BoxSet.cs +++ b/MediaBrowser.Controller/Entities/Movies/BoxSet.cs @@ -122,6 +122,11 @@ namespace MediaBrowser.Controller.Entities.Movies }; if (!string.IsNullOrEmpty(DisplayOrder)) { + if (DisplayOrder == "InsertDate") + { + return items; + } + sortBy = new[] { Enum.Parse(DisplayOrder) From 0b7dc7ff64cece5b2f5eeb3a6edfcda3f29dfa74 Mon Sep 17 00:00:00 2001 From: lostb1t Date: Sat, 17 Aug 2024 09:14:45 +0200 Subject: [PATCH 3/4] use default enum for unordered --- .../Entities/Movies/BoxSet.cs | 25 +++++++------------ 1 file changed, 9 insertions(+), 16 deletions(-) diff --git a/MediaBrowser.Controller/Entities/Movies/BoxSet.cs b/MediaBrowser.Controller/Entities/Movies/BoxSet.cs index 90f9ee4677..088387de16 100644 --- a/MediaBrowser.Controller/Entities/Movies/BoxSet.cs +++ b/MediaBrowser.Controller/Entities/Movies/BoxSet.cs @@ -114,26 +114,19 @@ namespace MediaBrowser.Controller.Entities.Movies public IEnumerable Sort(IEnumerable items, User user) { - var sortBy = new[] - { - ItemSortBy.ProductionYear, - ItemSortBy.PremiereDate, - ItemSortBy.SortName - }; + var sortBy = ItemSortBy.PremiereDate; + if (!string.IsNullOrEmpty(DisplayOrder)) { - if (DisplayOrder == "InsertDate") - { - return items; - } - - sortBy = new[] - { - Enum.Parse(DisplayOrder) - }; + sortBy = Enum.Parse(DisplayOrder); } - return LibraryManager.Sort(items, user, sortBy, SortOrder.Ascending); + if (sortBy == ItemSortBy.Default) + { + return items; + } + + return LibraryManager.Sort(items, user, new[] { sortBy }, SortOrder.Ascending); } public override List GetChildren(User user, bool includeLinkedChildren, InternalItemsQuery query) From 4344b951a69926df52a41e054c6ffa4ac164fa64 Mon Sep 17 00:00:00 2001 From: lostb1t Date: Mon, 19 Aug 2024 11:47:34 +0200 Subject: [PATCH 4/4] make Sort private and use Enum parse --- MediaBrowser.Controller/Entities/Movies/BoxSet.cs | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/MediaBrowser.Controller/Entities/Movies/BoxSet.cs b/MediaBrowser.Controller/Entities/Movies/BoxSet.cs index 088387de16..a07187d2fd 100644 --- a/MediaBrowser.Controller/Entities/Movies/BoxSet.cs +++ b/MediaBrowser.Controller/Entities/Movies/BoxSet.cs @@ -112,13 +112,11 @@ namespace MediaBrowser.Controller.Entities.Movies return true; } - public IEnumerable Sort(IEnumerable items, User user) + private IEnumerable Sort(IEnumerable items, User user) { - var sortBy = ItemSortBy.PremiereDate; - - if (!string.IsNullOrEmpty(DisplayOrder)) + if (!Enum.TryParse(DisplayOrder, out var sortBy)) { - sortBy = Enum.Parse(DisplayOrder); + sortBy = ItemSortBy.PremiereDate; } if (sortBy == ItemSortBy.Default)