Files
chapter-organizer/WebApp/Components/Pages/EventDefinitionPages/Index.razor
T

92 lines
4.3 KiB
Plaintext

@page "/events"
@using Microsoft.EntityFrameworkCore
@inject AppDbContext Context
<PageTitle>Events - TSA Chapter Organizer</PageTitle>
<MudText Typo="Typo.h3">Events</MudText>
<MudButton StartIcon="@Icons.Material.Filled.Create" Href="events/create">Create New</MudButton>
<MudDataGrid T="EventDefinition" ServerData="ServerReload" @ref="_dataGrid" Filterable="true" RowsPerPage="50">
<Columns>
<PropertyColumn Property="@(e => e.Name)" Title="Event Name" Sortable="true" />
<PropertyColumn Property="@(e => e.EventFormat)" Title="Event Format" />
<PropertyColumn Property="@(e => e.LevelOfEffort)" Title="Level of Effort" />
<PropertyColumn Property="@(e => e.SemifinalistActivity)" Title="On-site Activity" />
<PropertyColumn Property="@(e => e.RegionalEvent)" Title="Regional Event" />
<TemplateColumn Title="Team Size" CellStyle="white-space:nowrap">
<CellTemplate>
[@context.Item.MinTeamSize&nbsp;-&nbsp;@context.Item.MaxTeamSize]
</CellTemplate>
</TemplateColumn>
<TemplateColumn Title="Teams State #">
<CellTemplate>
@context.Item.MaxTeamCountState
</CellTemplate>
</TemplateColumn>
<TemplateColumn>
<CellTemplate>
<MudStack Row>
<MudButtonGroup Size="Size.Small">
<MudTooltip Text="Details">
<MudIconButton Href="@($"/events/details?id={context.Item.Id}")" Icon="@Icons.Material.Filled.Description">Details</MudIconButton>
</MudTooltip>
<MudTooltip Text="Edit">
<MudIconButton Href="@($"/events/edit?id={context.Item.Id}")" Icon="@Icons.Material.Filled.Edit">Edit</MudIconButton>
</MudTooltip>
<MudTooltip Text="Delete">
<MudIconButton Href="@($"/events/delete?id={context.Item.Id}")" Icon="@Icons.Material.Filled.Delete" Color="@Color.Warning">Delete</MudIconButton>
</MudTooltip>
</MudButtonGroup>
</MudStack>
</CellTemplate>
</TemplateColumn>
</Columns>
<PagerContent>
<MudDataGridPager T="EventDefinition"></MudDataGridPager>
</PagerContent>
</MudDataGrid>
@*
<QuickGrid Class="table" Items="context.Events">
<PropertyColumn Property="eventdefinition => eventdefinition.Name" />
<PropertyColumn Property="eventdefinition => eventdefinition.EventFormat" />
@* <PropertyColumn Property="eventdefinition => eventdefinition.MinTeamSize" />
<PropertyColumn Property="eventdefinition => eventdefinition.MaxTeamSize" />
<PropertyColumn Property="eventdefinition => eventdefinition.SemifinalistActivity" />
<PropertyColumn Property="eventdefinition => eventdefinition.Notes" />
<PropertyColumn Property="eventdefinition => eventdefinition.MaxTeamCountState" />
<PropertyColumn Property="eventdefinition => eventdefinition.RegionalEvent" />
<PropertyColumn Property="eventdefinition => eventdefinition.RegionalPresubmit" />
<PropertyColumn Property="eventdefinition => eventdefinition.StatePresubmission" />
<PropertyColumn Property="eventdefinition => eventdefinition.StatePretesting" />
<PropertyColumn Property="eventdefinition => eventdefinition.StatePreliminaryRound" />
<PropertyColumn Property="eventdefinition => eventdefinition.Documentation" />
<PropertyColumn Property="eventdefinition => eventdefinition.Eligibility" />
<PropertyColumn Property="eventdefinition => eventdefinition.Theme" />
<PropertyColumn Property="eventdefinition => eventdefinition.Description" />
<PropertyColumn Property="eventdefinition => eventdefinition.LevelOfEffort" />
*@
@code {
MudDataGrid<EventDefinition> _dataGrid = null!;
private async Task<GridData<EventDefinition>> ServerReload(GridState<EventDefinition> state)
{
var query = Context.Events.Where(state.FilterDefinitions).OrderBy(state.SortDefinitions);
var totalItems = await query.CountAsync();
var pagedData = await query.Skip(state.Page * state.PageSize).Take(state.PageSize).ToArrayAsync();
return new GridData<EventDefinition>
{
TotalItems = totalItems,
Items = pagedData
};
}
}