Progress on schedule page formatting

This commit is contained in:
2025-10-27 14:44:11 -04:00
parent ea21406309
commit 967aa567e8
@@ -10,32 +10,56 @@
<MudText Typo="Typo.h3">@Configuration["ChapterSettings:Shortname"] TSA Schedule @Configuration["ChapterSettings:CompetitionYear"]</MudText> <MudText Typo="Typo.h3">@Configuration["ChapterSettings:Shortname"] TSA Schedule @Configuration["ChapterSettings:CompetitionYear"]</MudText>
<MudPaper Class="pa-4 mt-5"> <MudPaper Class="pa-4 mt-5">
@* <MudText>Include: @string.Join(", ", _scheduledTeams) </MudText> *@ @* <MudText>Include: @string.Join(", ", _scheduledTeams) </MudText> *@
<MudGrid> <MudGrid>
<MudItem xs="6" lg="9"> <MudItem xs="7" sm="8" lg="9">
<MudText Typo="Typo.h4">Time Slots</MudText> <MudText Typo="Typo.h4">Time Slots</MudText>
<MudNumericField @bind-Value="_parameters.TimeSlots" <MudGrid>
Label="Time Slots" Min="1" Max="4"></MudNumericField> <MudItem xs="12" sm="6" lg="4">
<MudButton Class="ma-3" OnClick="Solve" Variant="Variant.Filled" Color="Color.Primary" Disabled="@_isSolving">Solve</MudButton> <MudNumericField @bind-Value="_parameters.TimeSlots"
<MudIconButton OnClick="CopyToClipboard" Icon="@Icons.Material.Filled.ContentCopy"> Label="Time Slots" Min="1" Max="4"></MudNumericField>
</MudIconButton> </MudItem>
<MudItem xs="12" sm="6" lg="4">
<MudButton Variant="Variant.Outlined" OnClick="() => AddHighLevelOfEffort()" FullWidth="true">Add High Effort</MudButton>
</MudItem>
<MudItem xs="12" sm="6" lg="4">
<MudButton Variant="Variant.Outlined" OnClick="() => AddRegionals()" FullWidth="true">Add Regionals</MudButton>
</MudItem>
<MudItem xs="12" sm="6" lg="4">
<MudButton Variant="Variant.Outlined" OnClick="() => RemoveIndividual()" FullWidth="true">Remove Individual</MudButton>
</MudItem>
<MudItem xs="12" sm="6" lg="4">
<MudButton Variant="Variant.Outlined" OnClick="() => RemoveLowLevelOfEffort()" FullWidth="true">Remove Low Effort</MudButton>
</MudItem>
<MudItem xs="12" sm="6" lg="4">
<MudButton Variant="Variant.Outlined" OnClick="() => Invert()" FullWidth="true">Invert</MudButton>
</MudItem>
<MudItem xs="12" sm="6" lg="4">
<MudButton Variant="Variant.Outlined" Color="Color.Warning" OnClick="() => Reset()" FullWidth="true">Reset</MudButton>
</MudItem>
<MudItem xs="12">
<MudButton Variant="Variant.Filled" Class="ma-3" OnClick="Solve" Color="Color.Primary" Disabled="@_isSolving">Solve</MudButton>
<MudTooltip Text="Copy to Clipboard">
<MudIconButton OnClick="CopyToClipboard" Icon="@Icons.Material.Filled.ContentCopy"></MudIconButton>
</MudTooltip>
</MudItem>
</MudGrid>
<MudTable T="Team[]" ServerData="SolveSchedule" @ref="_solutionData"> <MudTable T="Team[]" ServerData="SolveSchedule" @ref="_solutionData">
<HeaderContent> <HeaderContent>
</HeaderContent> </HeaderContent>
<RowTemplate> <RowTemplate>
<MudTd> <MudTd>
@{ @{
var overlaps var overlaps
= TeamSchedulerSolution.GetStudentTeamOverlaps(context).ToArray(); = TeamSchedulerSolution.GetStudentTeamOverlaps(context).ToArray();
} }
<MudGrid Class="d-flex justify-start align-start">
@foreach (var team in context.OrderBy(e => e.ToString())) @foreach (var team in context.OrderBy(e => e.ToString()))
{ {
var removed = !_scheduledTeams.Contains(team); var removed = !_scheduledTeams.Contains(team);
<MudItem> <MudItem xs="12">
<MudLink Typo="Typo.body1" <MudLink Typo="Typo.body1"
Class="d-flex align-center" Class="d-flex align-center"
Color="Color.Default" Color="Color.Default"
@@ -57,12 +81,9 @@
</MudText> </MudText>
} }
</MudLink> </MudLink>
</MudItem> </MudItem>
} }
</MudGrid>
</MudTd> </MudTd>
<MudTd> <MudTd>
@{ @{
@@ -72,9 +93,10 @@
{ {
<MudItem>Unscheduled</MudItem> <MudItem>Unscheduled</MudItem>
foreach (var student in unscheduled) <MudGrid>
@foreach (var student in unscheduled)
{ {
<MudItem Class=""> <MudItem xs="12" sm="6" lg="3">
<MudText Typo="Typo.body1" HtmlTag="i">@student.FirstName </MudText>&nbsp; <MudText Typo="Typo.body1" HtmlTag="i">@student.FirstName </MudText>&nbsp;
@{ @{
var pa = _possibleAdditions.ToArray(); var pa = _possibleAdditions.ToArray();
@@ -95,24 +117,15 @@
} }
</MudItem> </MudItem>
} }
</MudGrid>
} }
</MudTd> </MudTd>
</RowTemplate> </RowTemplate>
</MudTable> </MudTable>
</MudItem> </MudItem>
<MudItem xs="6" lg="3"> <MudItem xs="5" sm="4" lg="3">
<MudStack> <MudStack>
<MudButton OnClick="() => AddHighLevelOfEffort()">Add High Effort</MudButton>
<MudButton OnClick="() => AddRegionals()">Add Regionals</MudButton>
<MudButton OnClick="() => RemoveIndividual()">Remove Individual</MudButton>
<MudButton OnClick="() => RemoveLowLevelOfEffort()">Remove Low Effort</MudButton>
<MudButton OnClick="() => Invert()">Invert</MudButton>
<MudItem>@string.Join(", ", (_possibleAdditions ?? []).Select(e => e.ToString()))</MudItem> <MudItem>@string.Join(", ", (_possibleAdditions ?? []).Select(e => e.ToString()))</MudItem>
<MudToggleGroup T="Team" <MudToggleGroup T="Team"
SelectionMode="SelectionMode.MultiSelection" SelectionMode="SelectionMode.MultiSelection"
@bind-Values="_scheduledTeams" @bind-Values="_scheduledTeams"
@@ -177,6 +190,11 @@
= _teams.Where(t => !rt.Contains(t)); = _teams.Where(t => !rt.Contains(t));
} }
private async Task Reset()
{
_scheduledTeams = [];
}
private void ToggleRequiredTeam(Team unassignedTeam) private void ToggleRequiredTeam(Team unassignedTeam)
{ {
if (_scheduledTeams.Contains(unassignedTeam)) if (_scheduledTeams.Contains(unassignedTeam))