diff --git a/DigitalLearningSolutions.Web.Tests/ViewComponents/CurrentFiltersViewComponentTests.cs b/DigitalLearningSolutions.Web.Tests/ViewComponents/CurrentFiltersViewComponentTests.cs index 20ae4b1026..870d743b61 100644 --- a/DigitalLearningSolutions.Web.Tests/ViewComponents/CurrentFiltersViewComponentTests.cs +++ b/DigitalLearningSolutions.Web.Tests/ViewComponents/CurrentFiltersViewComponentTests.cs @@ -40,16 +40,19 @@ public void CurrentFiltersViewComponent_selects_expected_filters_to_display() var categories = new List { new Category { CategoryName = "Word" }, new Category { CategoryName = "Excel" } }; const string searchString = "test"; + const string sortBy = "sort"; + const string sortDirection = "sortDirection"; + const int itemsPerPage = 10; var availableFilters = AdministratorsViewModelFilterOptions.GetAllAdministratorsFilterModels(categories); var inputViewModel = new CentreAdministratorsViewModel( 1, new SearchSortFilterPaginationResult( - new PaginationResult(new List(), 1, 1, 10, 0), + new PaginationResult(new List(), 1, 1, itemsPerPage, 0), searchString, - null, - null, + sortBy, + sortDirection, "CategoryName|CategoryName|Word╡Role|IsCentreAdmin|true" ), availableFilters, @@ -68,6 +71,9 @@ public void CurrentFiltersViewComponent_selects_expected_filters_to_display() var expectedFilterViewModel = new CurrentFiltersViewModel( expectedAppliedFilters, searchString, + sortBy, + sortDirection, + itemsPerPage, new Dictionary() ); diff --git a/DigitalLearningSolutions.Web/ViewComponents/CurrentFiltersViewComponent.cs b/DigitalLearningSolutions.Web/ViewComponents/CurrentFiltersViewComponent.cs index a12dd851b2..0ef3f7662f 100644 --- a/DigitalLearningSolutions.Web/ViewComponents/CurrentFiltersViewComponent.cs +++ b/DigitalLearningSolutions.Web/ViewComponents/CurrentFiltersViewComponent.cs @@ -23,6 +23,9 @@ IBaseSearchablePageViewModel searchablePageViewModel var model = new CurrentFiltersViewModel( appliedFilters, searchablePageViewModel.SearchString, + searchablePageViewModel.SortBy, + searchablePageViewModel.SortDirection, + searchablePageViewModel.ItemsPerPage, searchablePageViewModel.RouteData ); diff --git a/DigitalLearningSolutions.Web/ViewModels/Common/SearchablePage/CurrentFiltersViewModel.cs b/DigitalLearningSolutions.Web/ViewModels/Common/SearchablePage/CurrentFiltersViewModel.cs index b0aaa32e58..903b8f8f68 100644 --- a/DigitalLearningSolutions.Web/ViewModels/Common/SearchablePage/CurrentFiltersViewModel.cs +++ b/DigitalLearningSolutions.Web/ViewModels/Common/SearchablePage/CurrentFiltersViewModel.cs @@ -1,9 +1,13 @@ namespace DigitalLearningSolutions.Web.ViewModels.Common.SearchablePage { + using System; using System.Collections.Generic; public class CurrentFiltersViewModel { + [Obsolete("This is currently only used in SearchSelfAssessmentOvervieviewViewModel.cs, " + + "but this version has been superseded by the version with sortBy etc. " + + "parameters to fix a bug with Clear Filters resetting Sort and Items per page")] public CurrentFiltersViewModel( IEnumerable filters, string? searchString, @@ -15,10 +19,33 @@ Dictionary routeData RouteData = routeData; } + public CurrentFiltersViewModel( + IEnumerable appliedFilters, + string? searchString, + string? sortBy, + string? sortDirection, + int itemsPerPage, + Dictionary routeData + ) + { + AppliedFilters = appliedFilters; + SearchString = searchString; + SortBy = sortBy; + SortDirection = sortDirection; + ItemsPerPage = itemsPerPage; + RouteData = routeData; + } + public IEnumerable AppliedFilters { get; set; } public string? SearchString { get; set; } + public string? SortBy { get; set; } + + public string? SortDirection { get; set; } + + public int ItemsPerPage { get; set; } + public Dictionary RouteData { get; set; } } } diff --git a/DigitalLearningSolutions.Web/Views/Shared/Components/CurrentFilters/Default.cshtml b/DigitalLearningSolutions.Web/Views/Shared/Components/CurrentFilters/Default.cshtml index e0d83bb88d..9d99dc8209 100644 --- a/DigitalLearningSolutions.Web/Views/Shared/Components/CurrentFilters/Default.cshtml +++ b/DigitalLearningSolutions.Web/Views/Shared/Components/CurrentFilters/Default.cshtml @@ -6,6 +6,9 @@
+ + + @foreach (var (key, value) in Model.RouteData) { }