Fix up CRUD pages a bit.

This commit is contained in:
2025-12-01 00:03:25 -05:00
parent a2857d56e0
commit bfaebfbb13
5 changed files with 152 additions and 109 deletions
@@ -17,18 +17,16 @@
<MudPaper Class="pa-4"> <MudPaper Class="pa-4">
<MudTextField T="string" Label="Event Name" @bind-Value="EventDefinition.Name" For="@(() => EventDefinition.Name)"></MudTextField> <MudTextField T="string" Label="Event Name" @bind-Value="EventDefinition.Name" For="@(() => EventDefinition.Name)"></MudTextField>
<MudTextField T="string" Label="Short Name" @bind-Value="EventDefinition.ShortName" For="@(() => EventDefinition.ShortName)"></MudTextField> <MudTextField T="string" Label="Short Name" @bind-Value="EventDefinition.ShortName" For="@(() => EventDefinition.ShortName)"></MudTextField>
<label for="@EventDefinition.EventFormat" class="form-label">Format:</label> <MudText Typo="Typo.subtitle2" Class="mt-4 mb-2">Format</MudText>
<MudRadioGroup T="EventFormat" @bind-Value="@EventDefinition.EventFormat"> <MudRadioGroup T="EventFormat" @bind-Value="@EventDefinition.EventFormat" For="@(() => EventDefinition.EventFormat)">
@* <MudRadio T="EventFormat" Value="EventFormat.Team">Team</MudRadio>
<MudRadio T="EventFormat" Value="EventFormat.Individual">Individual</MudRadio> *@
@foreach (EventFormat format in Enum.GetValues(typeof(EventFormat))) @foreach (EventFormat format in Enum.GetValues(typeof(EventFormat)))
{ {
<MudRadio T="EventFormat" value="@format">@(format.ToString())</MudRadio> <MudRadio T="EventFormat" Value="@format">@format.ToString()</MudRadio>
} }
</MudRadioGroup> </MudRadioGroup>
<ValidationMessage For="() => EventDefinition.EventFormat" class="text-danger" />
<MudTextField T="string" Label="Theme" AutoGrow="true" @bind-Value="EventDefinition.Description" For="@(() => EventDefinition.Description)"></MudTextField> <MudTextField T="string" Label="Description" AutoGrow="true" @bind-Value="EventDefinition.Description" For="@(() => EventDefinition.Description)" Class="mt-4"></MudTextField>
<MudTextField T="string" Label="Theme" AutoGrow="true" @bind-Value="EventDefinition.Theme" For="@(() => EventDefinition.Theme)"></MudTextField> <MudTextField T="string" Label="Theme" AutoGrow="true" @bind-Value="EventDefinition.Theme" For="@(() => EventDefinition.Theme)"></MudTextField>
<MudTextField T="string" Label="Documentation" @bind-Value="EventDefinition.Documentation" For="@(() => EventDefinition.Documentation)"></MudTextField> <MudTextField T="string" Label="Documentation" @bind-Value="EventDefinition.Documentation" For="@(() => EventDefinition.Documentation)"></MudTextField>
<MudNumericField T="int?" Label="Level of Effort" @bind-Value="EventDefinition.LevelOfEffort" For="@(() => EventDefinition.LevelOfEffort)"></MudNumericField> <MudNumericField T="int?" Label="Level of Effort" @bind-Value="EventDefinition.LevelOfEffort" For="@(() => EventDefinition.LevelOfEffort)"></MudNumericField>
@@ -1,65 +1,91 @@
@page "/events/details" @page "/events/details"
@attribute [Authorize] @attribute [Authorize]
@using Microsoft.EntityFrameworkCore @using Microsoft.EntityFrameworkCore
@inject AppDbContext context @inject AppDbContext context
@inject NavigationManager NavigationManager @inject NavigationManager NavigationManager
<PageTitle>Details</PageTitle> <PageTitle>Event Details - TSA Chapter Organizer</PageTitle>
<h1>Details</h1> <MudText Typo="Typo.h3">Details</MudText>
<MudText Typo="Typo.h4">Event Definition</MudText>
<MudDivider />
<div> @if (eventdefinition is null)
<h2>EventDefinition</h2> {
<hr /> <MudText><em>Loading...</em></MudText>
@if (eventdefinition is null) }
{ else
<p><em>Loading...</em></p> {
} <MudPaper Class="pa-4 mt-4">
else { <MudGrid>
<dl class="row"> <MudItem xs="12" sm="6" md="4">
<dt class="col-sm-2">Name</dt> <MudText Typo="Typo.subtitle2">Name</MudText>
<dd class="col-sm-10">@eventdefinition.Name</dd> <MudText>@eventdefinition.Name</MudText>
<dt class="col-sm-2">ShortName</dt> </MudItem>
<dd class="col-sm-10">@eventdefinition.ShortName</dd> <MudItem xs="12" sm="6" md="4">
<dt class="col-sm-2">EventFormat</dt> <MudText Typo="Typo.subtitle2">Short Name</MudText>
<dd class="col-sm-10">@eventdefinition.EventFormat</dd> <MudText>@eventdefinition.ShortName</MudText>
<dt class="col-sm-2">MinTeamSize</dt> </MudItem>
<dd class="col-sm-10">@eventdefinition.MinTeamSize</dd> <MudItem xs="12" sm="6" md="4">
<dt class="col-sm-2">MaxTeamSize</dt> <MudText Typo="Typo.subtitle2">Event Format</MudText>
<dd class="col-sm-10">@eventdefinition.MaxTeamSize</dd> <MudText>@eventdefinition.EventFormat</MudText>
<dt class="col-sm-2">SemifinalistActivity</dt> </MudItem>
<dd class="col-sm-10">@eventdefinition.SemifinalistActivity</dd> <MudItem xs="12" sm="6" md="4">
<dt class="col-sm-2">Notes</dt> <MudText Typo="Typo.subtitle2">Min Team Size</MudText>
<dd class="col-sm-10">@eventdefinition.Notes</dd> <MudText>@eventdefinition.MinTeamSize</MudText>
<dt class="col-sm-2">ChapterEligibilityCountState</dt> </MudItem>
<dd class="col-sm-10">@eventdefinition.ChapterEligibilityCountState</dd> <MudItem xs="12" sm="6" md="4">
<dt class="col-sm-2">RegionalEvent</dt> <MudText Typo="Typo.subtitle2">Max Team Size</MudText>
<dd class="col-sm-10">@eventdefinition.RegionalEvent</dd> <MudText>@eventdefinition.MaxTeamSize</MudText>
<dt class="col-sm-2">RegionalPresubmit</dt> </MudItem>
@* <dd class="col-sm-10">@eventdefinition.RegionalPresubmit</dd> *@ <MudItem xs="12" sm="6" md="4">
<dt class="col-sm-2">Presubmission</dt> <MudText Typo="Typo.subtitle2">Chapter Eligibility Count (State)</MudText>
<dd class="col-sm-10">@eventdefinition.Presubmission</dd> <MudText>@eventdefinition.ChapterEligibilityCountState</MudText>
<dt class="col-sm-2">StatePretesting</dt> </MudItem>
@* <dd class="col-sm-10">@eventdefinition.StatePretesting</dd> *@ <MudItem xs="12" sm="6" md="4">
<dt class="col-sm-2">StatePreliminaryRound</dt> <MudText Typo="Typo.subtitle2">Regional Event</MudText>
@* <dd class="col-sm-10">@eventdefinition.StatePreliminaryRound</dd> *@ <MudText>@eventdefinition.RegionalEvent</MudText>
<dt class="col-sm-2">Documentation</dt> </MudItem>
<dd class="col-sm-10">@eventdefinition.Documentation</dd> <MudItem xs="12" sm="6" md="4">
<dt class="col-sm-2">Eligibility</dt> <MudText Typo="Typo.subtitle2">Presubmission Required</MudText>
<dd class="col-sm-10">@eventdefinition.Eligibility</dd> <MudText>@eventdefinition.Presubmission</MudText>
<dt class="col-sm-2">Theme</dt> </MudItem>
<dd class="col-sm-10">@eventdefinition.Theme</dd> <MudItem xs="12" sm="6" md="4">
<dt class="col-sm-2">Description</dt> <MudText Typo="Typo.subtitle2">Level of Effort</MudText>
<dd class="col-sm-10">@eventdefinition.Description</dd> <MudText>@eventdefinition.LevelOfEffort</MudText>
<dt class="col-sm-2">LevelOfEffort</dt> </MudItem>
<dd class="col-sm-10">@eventdefinition.LevelOfEffort</dd> <MudItem xs="12">
</dl> <MudText Typo="Typo.subtitle2">Semifinalist Activity</MudText>
<div> <MudText>@eventdefinition.SemifinalistActivity</MudText>
<a href="@($"/eventdefinitions/edit?id={eventdefinition.Id}")">Edit</a> | </MudItem>
<a href="@($"/events")">Back to List</a> <MudItem xs="12">
</div> <MudText Typo="Typo.subtitle2">Notes</MudText>
} <MudText>@eventdefinition.Notes</MudText>
</div> </MudItem>
<MudItem xs="12">
<MudText Typo="Typo.subtitle2">Documentation</MudText>
<MudText>@eventdefinition.Documentation</MudText>
</MudItem>
<MudItem xs="12">
<MudText Typo="Typo.subtitle2">Eligibility</MudText>
<MudText>@eventdefinition.Eligibility</MudText>
</MudItem>
<MudItem xs="12">
<MudText Typo="Typo.subtitle2">Theme</MudText>
<MudText>@eventdefinition.Theme</MudText>
</MudItem>
<MudItem xs="12">
<MudText Typo="Typo.subtitle2">Description</MudText>
<MudText>@eventdefinition.Description</MudText>
</MudItem>
</MudGrid>
</MudPaper>
<div class="mt-4">
<MudButton StartIcon="@Icons.Material.Filled.Edit" Href="@($"/events/edit?id={eventdefinition.Id}")" Variant="Variant.Filled" Color="Color.Primary">Edit</MudButton>
<MudButton StartIcon="@Icons.Material.Filled.ArrowBack" Href="/events" Variant="Variant.Text">Back to List</MudButton>
</div>
}
@code { @code {
private EventDefinition? eventdefinition; private EventDefinition? eventdefinition;
@@ -19,17 +19,15 @@
<MudTextField T="string" Label="Event Name" @bind-Value="EventDefinition.Name" For="@(() => EventDefinition.Name)"></MudTextField> <MudTextField T="string" Label="Event Name" @bind-Value="EventDefinition.Name" For="@(() => EventDefinition.Name)"></MudTextField>
<MudTextField T="string" Label="Short Name" @bind-Value="EventDefinition.ShortName" For="@(() => EventDefinition.ShortName)"></MudTextField> <MudTextField T="string" Label="Short Name" @bind-Value="EventDefinition.ShortName" For="@(() => EventDefinition.ShortName)"></MudTextField>
<label for="@EventDefinition.EventFormat" class="form-label">Format:</label> <MudText Typo="Typo.subtitle2" Class="mt-4 mb-2">Format</MudText>
<MudRadioGroup T="EventFormat" @bind-Value="@EventDefinition.EventFormat"> <MudRadioGroup T="EventFormat" @bind-Value="@EventDefinition.EventFormat" For="@(() => EventDefinition.EventFormat)">
@* <MudRadio T="EventFormat" Value="EventFormat.Team">Team</MudRadio>
<MudRadio T="EventFormat" Value="EventFormat.Individual">Individual</MudRadio> *@
@foreach (EventFormat format in Enum.GetValues(typeof(EventFormat))) @foreach (EventFormat format in Enum.GetValues(typeof(EventFormat)))
{ {
<MudRadio T="EventFormat" value="@format">@(format.ToString())</MudRadio> <MudRadio T="EventFormat" Value="@format">@format.ToString()</MudRadio>
} }
</MudRadioGroup> </MudRadioGroup>
<ValidationMessage For="() => EventDefinition.EventFormat" class="text-danger" />
<MudTextField T="string" Label="Theme" AutoGrow="true" @bind-Value="EventDefinition.Description" For="@(() => EventDefinition.Description)"></MudTextField> <MudTextField T="string" Label="Description" AutoGrow="true" @bind-Value="EventDefinition.Description" For="@(() => EventDefinition.Description)" Class="mt-4"></MudTextField>
<MudTextField T="string" Label="Theme" AutoGrow="true" @bind-Value="EventDefinition.Theme" For="@(() => EventDefinition.Theme)"></MudTextField> <MudTextField T="string" Label="Theme" AutoGrow="true" @bind-Value="EventDefinition.Theme" For="@(() => EventDefinition.Theme)"></MudTextField>
<MudTextField T="string" Label="Documentation" @bind-Value="EventDefinition.Documentation" For="@(() => EventDefinition.Documentation)"></MudTextField> <MudTextField T="string" Label="Documentation" @bind-Value="EventDefinition.Documentation" For="@(() => EventDefinition.Documentation)"></MudTextField>
<MudNumericField T="int?" Label="Level of Effort" @bind-Value="EventDefinition.LevelOfEffort" For="@(() => EventDefinition.LevelOfEffort)"></MudNumericField> <MudNumericField T="int?" Label="Level of Effort" @bind-Value="EventDefinition.LevelOfEffort" For="@(() => EventDefinition.LevelOfEffort)"></MudNumericField>
@@ -1,4 +1,4 @@
@page "/students/details" @page "/students/details"
@attribute [Authorize] @attribute [Authorize]
@using Microsoft.EntityFrameworkCore @using Microsoft.EntityFrameworkCore
@using Core.Entities @using Core.Entities
@@ -8,44 +8,66 @@
<PageTitle>Student Details - TSA Chapter Organizer</PageTitle> <PageTitle>Student Details - TSA Chapter Organizer</PageTitle>
<h1>Details</h1> <MudText Typo="Typo.h3">Details</MudText>
<MudText Typo="Typo.h4">Student</MudText>
<MudDivider />
<div> @if (student is null)
<h2>Student</h2> {
<hr /> <MudText><em>Loading...</em></MudText>
@if (student is null) }
{ else
<p><em>Loading...</em></p> {
} <MudPaper Class="pa-4 mt-4">
else { <MudGrid>
<dl class="row"> <MudItem xs="12" sm="6" md="4">
<dt class="col-sm-2">FirstName</dt> <MudText Typo="Typo.subtitle2">First Name</MudText>
<dd class="col-sm-10">@student.FirstName</dd> <MudText>@student.FirstName</MudText>
<dt class="col-sm-2">LastName</dt> </MudItem>
<dd class="col-sm-10">@student.LastName</dd> <MudItem xs="12" sm="6" md="4">
<dt class="col-sm-2">Grade</dt> <MudText Typo="Typo.subtitle2">Last Name</MudText>
<dd class="col-sm-10">@student.Grade</dd> <MudText>@student.LastName</MudText>
<dt class="col-sm-2">Email</dt> </MudItem>
<dd class="col-sm-10">@student.Email</dd> <MudItem xs="12" sm="6" md="4">
<dt class="col-sm-2">PhoneNumber</dt> <MudText Typo="Typo.subtitle2">Grade</MudText>
<dd class="col-sm-10">@student.PhoneNumber</dd> <MudText>@student.Grade</MudText>
<dt class="col-sm-2">TsaYear</dt> </MudItem>
<dd class="col-sm-10">@student.TsaYear</dd> <MudItem xs="12" sm="6" md="4">
<dt class="col-sm-2">StateId</dt> <MudText Typo="Typo.subtitle2">Email</MudText>
<dd class="col-sm-10">@student.StateId</dd> <MudText>@student.Email</MudText>
<dt class="col-sm-2">RegionalId</dt> </MudItem>
<dd class="col-sm-10">@student.RegionalId</dd> <MudItem xs="12" sm="6" md="4">
<dt class="col-sm-2">NationalId</dt> <MudText Typo="Typo.subtitle2">Phone Number</MudText>
<dd class="col-sm-10">@student.NationalId</dd> <MudText>@student.PhoneNumber</MudText>
<dt class="col-sm-2">OfficerRole</dt> </MudItem>
<dd class="col-sm-10">@student.OfficerRole</dd> <MudItem xs="12" sm="6" md="4">
</dl> <MudText Typo="Typo.subtitle2">TSA Year</MudText>
<div> <MudText>@student.TsaYear</MudText>
<a href="@($"/students/edit?id={student.Id}")">Edit</a> | </MudItem>
<a href="@($"/students")">Back to List</a> <MudItem xs="12" sm="6" md="4">
</div> <MudText Typo="Typo.subtitle2">State ID</MudText>
} <MudText>@student.StateId</MudText>
</div> </MudItem>
<MudItem xs="12" sm="6" md="4">
<MudText Typo="Typo.subtitle2">Regional ID</MudText>
<MudText>@student.RegionalId</MudText>
</MudItem>
<MudItem xs="12" sm="6" md="4">
<MudText Typo="Typo.subtitle2">National ID</MudText>
<MudText>@student.NationalId</MudText>
</MudItem>
<MudItem xs="12" sm="6" md="4">
<MudText Typo="Typo.subtitle2">Officer Role</MudText>
<MudText>@student.OfficerRole</MudText>
</MudItem>
</MudGrid>
</MudPaper>
<div class="mt-4">
<MudButton StartIcon="@Icons.Material.Filled.Edit" Href="@($"/students/edit?id={student.Id}")" Variant="Variant.Filled" Color="Color.Primary">Edit</MudButton>
<MudButton StartIcon="@Icons.Material.Filled.ArrowBack" Href="/students" Variant="Variant.Text">Back to List</MudButton>
</div>
}
@code { @code {
private Student? student; private Student? student;
@@ -34,7 +34,6 @@
<TemplateColumn> <TemplateColumn>
<CellTemplate> <CellTemplate>
<CrudActions <CrudActions
DetailsHref="@($"/teams/details?id={context.Item!.Id}")"
EditHref="@($"/teams/edit?id={context.Item!.Id}")" EditHref="@($"/teams/edit?id={context.Item!.Id}")"
DeleteOnClick="() => DeleteTeam(context.Item!)"> DeleteOnClick="() => DeleteTeam(context.Item!)">
</CrudActions> </CrudActions>