Team schedule improvements
This commit is contained in:
@@ -4,6 +4,7 @@
|
||||
@using WebApp.Models
|
||||
@using EventAssignment = Core.Calculation.EventAssignment
|
||||
@inject AppDbContext Context
|
||||
@inject IDialogService DialogService
|
||||
@inject NavigationManager NavigationManager
|
||||
|
||||
<PageTitle>Event Assignment - TSA Chapter Organizer</PageTitle>
|
||||
@@ -238,7 +239,7 @@
|
||||
</MudTable>
|
||||
</MudItem>
|
||||
<MudItem xs="12" lg="4">
|
||||
<MudText Typo="Typo.h4">TimeSlots</MudText>
|
||||
<MudText Typo="Typo.h4">Teams</MudText>
|
||||
<MudTable T="Team" ServerData="SolveAssignments" @ref="_teamData">
|
||||
<ColGroup>
|
||||
<col style="width: 200px;" />
|
||||
@@ -254,7 +255,7 @@
|
||||
}
|
||||
<MudTd>
|
||||
<b>@context.Event.Name</b>
|
||||
<span>@AppIcons.EventEffort(context.Event) @AppIcons.EventAttributes(context.Event)</span>
|
||||
<EventAttributes EventDefinition="context.Event"></EventAttributes>
|
||||
</MudTd>
|
||||
<MudTd Style="white-space:nowrap">
|
||||
|
||||
@@ -444,11 +445,19 @@
|
||||
|
||||
public async Task SaveTeams()
|
||||
{
|
||||
var teams = await Context.Teams.ExecuteDeleteAsync();
|
||||
var result = await DialogService
|
||||
.ShowMessageBox("Save Teams",
|
||||
(MarkupString)$"Are you sure want to save these teams? Current teams will be erased. This cannot be undone.",
|
||||
yesText: "Yes",
|
||||
noText: "Cancel");
|
||||
|
||||
await Context.Teams.AddRangeAsync(_teams);
|
||||
await Context.SaveChangesAsync();
|
||||
if (result == true)
|
||||
{
|
||||
await Context.Teams.ExecuteDeleteAsync();
|
||||
await Context.Teams.AddRangeAsync(_teams);
|
||||
await Context.SaveChangesAsync();
|
||||
|
||||
NavigationManager.NavigateTo("/teams");
|
||||
NavigationManager.NavigateTo("/teams");
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -31,7 +31,15 @@ else
|
||||
<MudSelectItem T="Student" Value="@student">@student.Name</MudSelectItem>
|
||||
}
|
||||
</MudSelect>
|
||||
<MudTextField T="Student" Label="Captain" @bind-Value="Team.Captain" For="@(() => Team.Captain)" Required="false" Clearable="true"></MudTextField>
|
||||
<MudStack>
|
||||
<MudText>Captain</MudText>
|
||||
<MudToggleGroup T="Student" SelectionMode="SelectionMode.ToggleSelection" @bind-Value="Team.Captain" CheckMark>
|
||||
@foreach (var student in _selectedStudents.OrderBy(e => e.FirstName))
|
||||
{
|
||||
<MudToggleItem Value="@(student)" Text="@student.Name" />
|
||||
}
|
||||
</MudToggleGroup>
|
||||
</MudStack>
|
||||
<MudTextField T="string?" Label="Identifier" @bind-Value="Team.Identifier" For="@(() => Team.Identifier)" Required="false" Clearable="true"></MudTextField>
|
||||
</MudPaper>
|
||||
</MudItem>
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
@page "/teams"
|
||||
@using Microsoft.EntityFrameworkCore
|
||||
@using WebApp.Models
|
||||
@inject AppDbContext Context
|
||||
@inject IDialogService DialogService
|
||||
@inject ISnackbar Snackbar
|
||||
@@ -31,11 +30,6 @@
|
||||
<TeamStudents Team="@context.Item"></TeamStudents>
|
||||
</CellTemplate>
|
||||
</TemplateColumn>
|
||||
@* <TemplateColumn Title="Grade (TSA Year)" SortBy="e => e.Grade" Sortable="true">
|
||||
<CellTemplate>
|
||||
@context.Item.Grade (@context.Item.TsaYear)
|
||||
</CellTemplate>
|
||||
</TemplateColumn> *@
|
||||
<TemplateColumn>
|
||||
<CellTemplate>
|
||||
<CrudActions
|
||||
@@ -47,7 +41,7 @@
|
||||
</TemplateColumn>
|
||||
</Columns>
|
||||
<PagerContent>
|
||||
<MudDataGridPager T="Student"></MudDataGridPager>
|
||||
<MudDataGridPager T="Team"></MudDataGridPager>
|
||||
</PagerContent>
|
||||
</MudDataGrid>
|
||||
|
||||
|
||||
@@ -33,14 +33,14 @@ else
|
||||
@context.ToString()
|
||||
</MudTd>
|
||||
<MudTd>
|
||||
@AppIcons.EventEffort(context.Event)
|
||||
@AppIcons.EventAttributes(context.Event)
|
||||
<EventAttributes EventDefinition="context.Event"></EventAttributes>
|
||||
</MudTd>
|
||||
|
||||
@{
|
||||
var students
|
||||
= context.Students
|
||||
.OrderBy(s => s.EventRankings.Find(e => e.EventDefinition == context.Event)?.Rank ?? int.MaxValue)
|
||||
.OrderByDescending(s => s == context.Captain)
|
||||
.ThenBy(s => s.EventRankings.Find(e => e.EventDefinition == context.Event)?.Rank ?? int.MaxValue)
|
||||
.ThenByDescending(e => e.Grade)
|
||||
.ThenBy(e => e.FirstName)
|
||||
.ToArray();
|
||||
@@ -54,8 +54,8 @@ else
|
||||
var rank = student.EventRankings
|
||||
.Find(e => e.EventDefinition == context.Event)?.Rank ?? int.MaxValue;
|
||||
|
||||
<MudTd Class="@($"event-rank-{rank}")">
|
||||
@student.Name
|
||||
<MudTd Class="@(EventRankClass(rank))">
|
||||
@student.Name @if(context?.Captain == student) {<span> (Cpt)</span>}
|
||||
</MudTd>
|
||||
}
|
||||
else
|
||||
@@ -117,10 +117,9 @@ else
|
||||
{
|
||||
var rank = context.EventRankings
|
||||
.Find(e => e.EventDefinition == team.Event)?.Rank ?? int.MaxValue;
|
||||
<MudTh Class="@($"event-rank-{rank}")">
|
||||
<MudTh Class="@(EventRankClass(rank))">
|
||||
@team.ToString()
|
||||
@AppIcons.EventEffort(team.Event)
|
||||
@AppIcons.EventAttributes(team.Event)
|
||||
<EventAttributes EventDefinition="team.Event"></EventAttributes>
|
||||
|
||||
@if (rank == int.MaxValue)
|
||||
{
|
||||
@@ -181,7 +180,7 @@ else
|
||||
<RowTemplate>
|
||||
@{ var rank = context.EventRankings
|
||||
.Find(e => e.EventDefinition == team.Event)?.Rank ?? int.MaxValue; }
|
||||
<MudTd Class="@($"event-rank-{rank}")">
|
||||
<MudTd Class="@(EventRankClass(rank))">
|
||||
@team.ToString()
|
||||
@AppIcons.EventEffort(team.Event)
|
||||
@AppIcons.EventAttributes(team.Event)
|
||||
@@ -205,6 +204,14 @@ else
|
||||
private Team[]? _teams;
|
||||
private int _maxTeamSize;
|
||||
private Student[]? _students;
|
||||
private bool _rankColorEnabled;
|
||||
|
||||
private string EventRankClass(int rank)
|
||||
{
|
||||
if (!_rankColorEnabled)
|
||||
return "";
|
||||
return "event-rank-" + rank;
|
||||
}
|
||||
|
||||
protected override async Task OnInitializedAsync()
|
||||
{
|
||||
|
||||
@@ -16,7 +16,7 @@
|
||||
@student.FirstName
|
||||
@if (captain)
|
||||
{
|
||||
<span> *</span>
|
||||
<span> (Cpt)</span>
|
||||
}
|
||||
</MudPaper>
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user