144 lines
4.6 KiB
Plaintext
144 lines
4.6 KiB
Plaintext
@using Fluxor
|
|
@using GoodWood.Domain.Enums
|
|
@using GoodWood.Web.Store.GameState
|
|
@using MudBlazor
|
|
|
|
@inherits Fluxor.Blazor.Web.Components.FluxorComponent
|
|
|
|
@inject IState<GameState> GameState
|
|
@inject IDispatcher Dispatcher
|
|
|
|
<MudPaper Class="pa-4">
|
|
<MudStack Row="true" AlignItems="AlignItems.Center" Justify="Justify.SpaceBetween" Class="mb-4">
|
|
<MudStack Row="true" AlignItems="AlignItems.Center" Spacing="2">
|
|
<MudIcon Icon="@Icons.Material.Filled.History" />
|
|
<MudText Typo="Typo.h6">Abgeschlossene Spiele</MudText>
|
|
</MudStack>
|
|
@if (GameState.Value.CompletedGames.Count > 0)
|
|
{
|
|
<MudChip T="string" Size="Size.Small" Color="Color.Default">
|
|
@GameState.Value.CompletedGames.Count
|
|
</MudChip>
|
|
}
|
|
</MudStack>
|
|
|
|
@if (GameState.Value.IsLoading)
|
|
{
|
|
<MudProgressLinear Indeterminate="true" Class="mb-4" />
|
|
}
|
|
|
|
@if (GameState.Value.CompletedGames.Count == 0)
|
|
{
|
|
<MudAlert Severity="Severity.Info" Dense="true">
|
|
Noch keine abgeschlossenen Spiele an diesem Spieltag.
|
|
</MudAlert>
|
|
}
|
|
else
|
|
{
|
|
<MudTable Items="@GameState.Value.CompletedGames"
|
|
Dense="true"
|
|
Hover="true"
|
|
Striped="true"
|
|
Breakpoint="Breakpoint.Sm">
|
|
<HeaderContent>
|
|
<MudTh>Spieltyp</MudTh>
|
|
<MudTh>Gestartet</MudTh>
|
|
<MudTh>Beendet</MudTh>
|
|
<MudTh>Spieler</MudTh>
|
|
<MudTh>Status</MudTh>
|
|
</HeaderContent>
|
|
<RowTemplate>
|
|
<MudTd DataLabel="Spieltyp">
|
|
<MudStack Row="true" AlignItems="AlignItems.Center" Spacing="2">
|
|
<MudIcon Icon="@GetGameIcon(context.GameTypeName)" Size="Size.Small" />
|
|
<MudText>@GetGameDisplayName(context.GameTypeName)</MudText>
|
|
</MudStack>
|
|
</MudTd>
|
|
<MudTd DataLabel="Gestartet">
|
|
@(context.StartedAt?.ToLocalTime().ToString("HH:mm") ?? "-")
|
|
</MudTd>
|
|
<MudTd DataLabel="Beendet">
|
|
@(context.CompletedAt?.ToLocalTime().ToString("HH:mm") ?? "-")
|
|
</MudTd>
|
|
<MudTd DataLabel="Spieler">
|
|
@context.ParticipantCount
|
|
</MudTd>
|
|
<MudTd DataLabel="Status">
|
|
<MudChip T="string"
|
|
Size="Size.Small"
|
|
Color="@GetStatusColor(context.Status)"
|
|
Icon="@GetStatusIcon(context.Status)">
|
|
@GetStatusLabel(context.Status)
|
|
</MudChip>
|
|
</MudTd>
|
|
</RowTemplate>
|
|
</MudTable>
|
|
}
|
|
</MudPaper>
|
|
|
|
@code {
|
|
/// <summary>
|
|
/// ID of the day to load completed games for.
|
|
/// </summary>
|
|
[Parameter]
|
|
public Guid DayId { get; set; }
|
|
|
|
protected override void OnInitialized()
|
|
{
|
|
base.OnInitialized();
|
|
|
|
if (DayId != Guid.Empty)
|
|
{
|
|
Dispatcher.Dispatch(new LoadCompletedGamesAction(DayId));
|
|
}
|
|
}
|
|
|
|
protected override void OnParametersSet()
|
|
{
|
|
base.OnParametersSet();
|
|
|
|
if (DayId != Guid.Empty)
|
|
{
|
|
Dispatcher.Dispatch(new LoadCompletedGamesAction(DayId));
|
|
}
|
|
}
|
|
|
|
private static string GetGameIcon(string gameTypeName) => gameTypeName switch
|
|
{
|
|
"Training" => Icons.Material.Filled.FitnessCenter,
|
|
"Shit" => Icons.Material.Filled.Casino,
|
|
_ => Icons.Material.Filled.SportsScore
|
|
};
|
|
|
|
private static string GetGameDisplayName(string gameTypeName) => gameTypeName switch
|
|
{
|
|
"Training" => "Training",
|
|
"Shit" => "Scheiss-Spiel",
|
|
_ => gameTypeName
|
|
};
|
|
|
|
private static Color GetStatusColor(GameStatus status) => status switch
|
|
{
|
|
GameStatus.Completed => Color.Success,
|
|
GameStatus.Aborted => Color.Warning,
|
|
GameStatus.Active => Color.Info,
|
|
_ => Color.Default
|
|
};
|
|
|
|
private static string GetStatusIcon(GameStatus status) => status switch
|
|
{
|
|
GameStatus.Completed => Icons.Material.Filled.CheckCircle,
|
|
GameStatus.Aborted => Icons.Material.Filled.Cancel,
|
|
GameStatus.Active => Icons.Material.Filled.PlayCircle,
|
|
_ => Icons.Material.Filled.Circle
|
|
};
|
|
|
|
private static string GetStatusLabel(GameStatus status) => status switch
|
|
{
|
|
GameStatus.Completed => "Beendet",
|
|
GameStatus.Aborted => "Abgebrochen",
|
|
GameStatus.Active => "Aktiv",
|
|
_ => status.ToString()
|
|
};
|
|
}
|