MudTable is now sortable
This commit is contained in:
@@ -8,13 +8,15 @@
|
||||
|
||||
<PageTitle>User Comparison</PageTitle>
|
||||
|
||||
<button class="btn btn-primary" @onclick="DownloadCsvAsync" disabled="@(!LdapUsers.Any())">Export CSV</button>
|
||||
<MudButton OnClick="DownloadCsvAsync" Disabled="@(!LdapUsers.Any())">Export CSV</MudButton>
|
||||
|
||||
<h1>User Comparison</h1>
|
||||
<MudText Typo="Typo.h1">User Comparison</MudText>
|
||||
|
||||
@if (!AdminState.Value.LdapUsersLoaded || !AdminState.Value.MoodleUsersLoaded)
|
||||
{
|
||||
<p><em>Loading users...</em></p>
|
||||
<MudAlert Severity="Severity.Info" Variant="Variant.Outlined">
|
||||
Loading @string.Join(" and ", PendingUserImports, " users")...
|
||||
</MudAlert>
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -27,19 +29,21 @@ else
|
||||
|
||||
@if (!CombinedUsers.Any())
|
||||
{
|
||||
<p>No users found.</p>
|
||||
<MudAlert Severity="Severity.Warning" Variant="Variant.Outlined">
|
||||
No users found.
|
||||
</MudAlert>
|
||||
}
|
||||
else
|
||||
{
|
||||
<MudTable T="CombinedUser" Items="@CombinedUsers" Hover="true" Dense="true" RowsPerPage="25">
|
||||
<HeaderContent>
|
||||
<MudTh>Username</MudTh>
|
||||
<MudTh>Classroom</MudTh>
|
||||
<MudTh>Surname</MudTh>
|
||||
<MudTh>Given name</MudTh>
|
||||
<MudTh>Role</MudTh>
|
||||
<MudTh>Exists in LDAP</MudTh>
|
||||
<MudTh>Exists in Moodle</MudTh>
|
||||
<MudTh><MudTableSortLabel SortBy="SortByUsername">Username</MudTableSortLabel></MudTh>
|
||||
<MudTh><MudTableSortLabel SortBy="SortByClassroom">Classroom</MudTableSortLabel></MudTh>
|
||||
<MudTh><MudTableSortLabel SortBy="SortBySurname">Surname</MudTableSortLabel></MudTh>
|
||||
<MudTh><MudTableSortLabel SortBy="SortByGivenName">Given name</MudTableSortLabel></MudTh>
|
||||
<MudTh><MudTableSortLabel SortBy="SortByRole">Role</MudTableSortLabel></MudTh>
|
||||
<MudTh><MudTableSortLabel SortBy="SortByLdapExistence">Exists in LDAP</MudTableSortLabel></MudTh>
|
||||
<MudTh><MudTableSortLabel SortBy="SortByMoodleExistence">Exists in Moodle</MudTableSortLabel></MudTh>
|
||||
</HeaderContent>
|
||||
<RowTemplate>
|
||||
<MudTd DataLabel="Username">@context.Username</MudTd>
|
||||
@@ -58,8 +62,32 @@ else
|
||||
}
|
||||
|
||||
@code {
|
||||
private static readonly Func<CombinedUser, object> SortByUsername = user => user.Username;
|
||||
private static readonly Func<CombinedUser, object> SortByClassroom = user => user.Classroom ?? string.Empty;
|
||||
private static readonly Func<CombinedUser, object> SortBySurname = user => user.Surname ?? string.Empty;
|
||||
private static readonly Func<CombinedUser, object> SortByGivenName = user => user.GivenName ?? string.Empty;
|
||||
private static readonly Func<CombinedUser, object> SortByRole = user => user.Role?.ToString() ?? string.Empty;
|
||||
private static readonly Func<CombinedUser, object> SortByLdapExistence = user => user.ExistsInLdap;
|
||||
private static readonly Func<CombinedUser, object> SortByMoodleExistence = user => user.ExistsInMoodle;
|
||||
|
||||
private IEnumerable<Wollmilchsau.Models.LdapUser> LdapUsers => AdminState.Value.LdapUsers.Values;
|
||||
|
||||
private IEnumerable<string> PendingUserImports
|
||||
{
|
||||
get
|
||||
{
|
||||
if (!AdminState.Value.LdapUsersLoaded)
|
||||
{
|
||||
yield return "LDAP";
|
||||
}
|
||||
|
||||
if (!AdminState.Value.MoodleUsersLoaded)
|
||||
{
|
||||
yield return "Moodle";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private IEnumerable<CombinedUser> CombinedUsers
|
||||
{
|
||||
get
|
||||
|
||||
Reference in New Issue
Block a user