diff --git a/Oqtane.Client/Modules/Admin/Users/Index.razor b/Oqtane.Client/Modules/Admin/Users/Index.razor index 2b293e2d..dac92dbe 100644 --- a/Oqtane.Client/Modules/Admin/Users/Index.razor +++ b/Oqtane.Client/Modules/Admin/Users/Index.razor @@ -35,9 +35,9 @@ else       - @SharedLocalizer["Username"] - @SharedLocalizer["Name"] - @Localizer["LastLoginOn"] + @Localizer["Username"] + @Localizer["Name"] + @Localizer["LastLoginOn"] @@ -413,6 +413,9 @@ else private string _lifetime; private string _token; + private bool isSortedAscending; + private string activeSortColumn; + public override SecurityAccessLevel SecurityAccessLevel => SecurityAccessLevel.View; protected override async Task OnInitializedAsync() @@ -654,4 +657,43 @@ else _togglesecret = SharedLocalizer["ShowPassword"]; } } + + private void SortTable(string columnName) + { + if (columnName != activeSortColumn) + { + users = users.OrderBy(x => x.User.GetType().GetProperty(columnName)?.GetValue(x.User)).ToList(); + isSortedAscending = true; + activeSortColumn = columnName; + } + else + { + if (isSortedAscending) + { + users = users.OrderByDescending(x => x.User.GetType().GetProperty(columnName)?.GetValue(x.User)).ToList(); + } + else + { + users = users.OrderBy(x => x.User.GetType().GetProperty(columnName)?.GetValue(x.User)).ToList(); + } + + isSortedAscending = !isSortedAscending; + } + } + + private string SetSortIcon(string columnName) + { + if (activeSortColumn != columnName) + { + return "app-fas pe-3 "; + } + if (isSortedAscending) + { + return "app-fas oi oi-sort-ascending"; + } + else + { + return "app-fas oi oi-sort-descending"; + } + } } diff --git a/Oqtane.Server/wwwroot/css/app.css b/Oqtane.Server/wwwroot/css/app.css index 8a2a4e3a..35deeb07 100644 --- a/Oqtane.Server/wwwroot/css/app.css +++ b/Oqtane.Server/wwwroot/css/app.css @@ -219,4 +219,12 @@ app { /* Pager */ .app-pager-pointer { cursor: pointer; +} + +.app-sort-th { + cursor: pointer; +} + +.app-fas { + margin-left: 5px; } \ No newline at end of file