KoogleApp/KoogleApp/Components/Controls/ChangePlayerSelect.razor

73 lines
2.1 KiB
Plaintext

@using KoogleApp.Store.Game.Participants
@using KoogleApp.Store.Player
@inherits FluxorComponent
@inject IState<ParticipantsState> ParticipantsState
@inject IState<PlayersState> PlayersState
@inject IDispatcher Dispatcher
<MudSelect T="PlayerState" Label="" HelperText="aktuellen Spieler auswählen"
@bind-Value="Selected"
Converter="converter">
@foreach (var player in PlayersState.Value.Players.Where(p => ParticipantsState.Value.PlayerIds.Contains(p.Id)))
{
<MudSelectItem T="PlayerState" Value="@player">@player.Name</MudSelectItem>
}
</MudSelect>
@code {
Converter<PlayerState> converter = new Converter<PlayerState>
{
SetFunc = value => value?.Name,
GetFunc = text => null,
};
// PlayerState? _selected => ValueSelector(PlayersState.Value); // PlayersState.Value.Players.FirstOrDefault(_ => _.Id == ParticipantsState.Value.PlayerIds.First());
PlayerState? Selected
{
get
{
if (ParticipantsState.Value != null && ParticipantsState.Value.PlayerIds.Length > 0)
{
return PlayersState.Value.Players.FirstOrDefault(_ => _.Id == ParticipantsState.Value.PlayerIds.First());
}
return null;
}
set
{
if (value != null)
Dispatcher.Dispatch(new SelectedPlayerChangedAction(ParticipantsState.Value, value.Id));
}
}
// [Parameter, EditorRequired]
// public Action<PlayerState?> OnPlayerSelected
// {
// get;
// set;
// } = null!;
[Parameter]
public Func<PlayersState, PlayerState> ValueSelector
{
get;
set;
} = null!;
// protected override void OnAfterRender(bool firstRender)
// {
// if (firstRender)
// {
// if (ParticipantsState.Value.PlayerIds.Length > 0)
// {
// _selected = PlayersState.Value.Players.FirstOrDefault(_ => _.Id == ParticipantsState.Value.PlayerIds.First());
// StateHasChanged();
// }
// }
// }
}