added pinevents
This commit is contained in:
parent
3418a95f05
commit
495bd39050
|
|
@ -1,4 +1,9 @@
|
|||
<MudGrid>
|
||||
@using KoogleApp.Model.EventMessages
|
||||
@using KoogleApp.Services
|
||||
@inject IMyEventAggregator EventAggregator
|
||||
|
||||
|
||||
<MudGrid>
|
||||
|
||||
<MudItem xs="4">
|
||||
<MudPaper Class="d-flex align-center justify-center mud-width-full py-0">
|
||||
|
|
@ -27,7 +32,7 @@
|
|||
{
|
||||
<MudItem xs="4">
|
||||
<MudPaper Class="d-flex align-center justify-center mud-width-full py-0">
|
||||
<MudButton OnClick="OneClick">
|
||||
<MudButton OnClick="@(async _ => await OneClick(1))">
|
||||
<MudIcon Class="ma-2" Icon="@Icons.Material.Filled.Filter1" Color="Color.Primary"
|
||||
Style="font-size: 3rem;"/>
|
||||
</MudButton>
|
||||
|
|
@ -35,7 +40,7 @@
|
|||
</MudItem>
|
||||
<MudItem xs="4">
|
||||
<MudPaper Class="d-flex align-center justify-center mud-width-full py-0">
|
||||
<MudButton OnClick="OneClick">
|
||||
<MudButton OnClick="@(async _ => await OneClick(2))">
|
||||
<MudIcon Class="ma-2" Icon="@Icons.Material.Filled.Filter2" Color="Color.Primary"
|
||||
Style="font-size: 3rem;"/>
|
||||
</MudButton>
|
||||
|
|
@ -43,7 +48,7 @@
|
|||
</MudItem>
|
||||
<MudItem xs="4">
|
||||
<MudPaper Class="d-flex align-center justify-center mud-width-full py-0">
|
||||
<MudButton OnClick="OneClick">
|
||||
<MudButton OnClick="@(async _ => await OneClick(3))">
|
||||
<MudIcon Class="ma-2" Icon="@Icons.Material.Filled.Filter3" Color="Color.Primary"
|
||||
Style="font-size: 3rem;"/>
|
||||
</MudButton>
|
||||
|
|
@ -54,7 +59,7 @@
|
|||
|
||||
<MudItem xs="4">
|
||||
<MudPaper Class="d-flex align-center justify-center mud-width-full py-0">
|
||||
<MudButton OnClick="OneClick">
|
||||
<MudButton OnClick="@(async _ => await OneClick(4))">
|
||||
<MudIcon Class="ma-2" Icon="@Icons.Material.Filled.Filter4" Color="Color.Primary"
|
||||
Style="font-size: 3rem;"/>
|
||||
</MudButton>
|
||||
|
|
@ -62,7 +67,7 @@
|
|||
</MudItem>
|
||||
<MudItem xs="4">
|
||||
<MudPaper Class="d-flex align-center justify-center mud-width-full py-0">
|
||||
<MudButton OnClick="OneClick">
|
||||
<MudButton OnClick="@(async _ => await OneClick(5))">
|
||||
<MudIcon Class="ma-2" Icon="@Icons.Material.Filled.Filter5" Color="Color.Primary"
|
||||
Style="font-size: 3rem;"/>
|
||||
</MudButton>
|
||||
|
|
@ -70,7 +75,7 @@
|
|||
</MudItem>
|
||||
<MudItem xs="4">
|
||||
<MudPaper Class="d-flex align-center justify-center mud-width-full py-0">
|
||||
<MudButton OnClick="OneClick">
|
||||
<MudButton OnClick="@(async _ => await OneClick(6))">
|
||||
<MudIcon Class="ma-2" Icon="@Icons.Material.Filled.Filter6" Color="Color.Primary"
|
||||
Style="font-size: 3rem;"/>
|
||||
</MudButton>
|
||||
|
|
@ -81,7 +86,7 @@
|
|||
|
||||
<MudItem xs="4">
|
||||
<MudPaper Class="d-flex align-center justify-center mud-width-full py-0">
|
||||
<MudButton OnClick="OneClick">
|
||||
<MudButton OnClick="@(async _ => await OneClick(7))">
|
||||
<MudIcon Class="ma-2" Icon="@Icons.Material.Filled.Filter7" Color="Color.Primary"
|
||||
Style="font-size: 3rem;"/>
|
||||
</MudButton>
|
||||
|
|
@ -89,7 +94,7 @@
|
|||
</MudItem>
|
||||
<MudItem xs="4">
|
||||
<MudPaper Class="d-flex align-center justify-center mud-width-full py-0">
|
||||
<MudButton OnClick="OneClick">
|
||||
<MudButton OnClick="@(async _ => await OneClick(8))">
|
||||
<MudIcon Class="ma-2" Icon="@Icons.Material.Filled.Filter8" Color="Color.Primary"
|
||||
Style="font-size: 3rem;"/>
|
||||
</MudButton>
|
||||
|
|
@ -97,7 +102,7 @@
|
|||
</MudItem>
|
||||
<MudItem xs="4">
|
||||
<MudPaper Class="d-flex align-center justify-center mud-width-full py-0">
|
||||
<MudButton OnClick="OneClick">
|
||||
<MudButton OnClick="@(async _ => await OneClick(9))">
|
||||
<MudIcon Class="ma-2" Icon="@Icons.Material.Filled.Filter9" Color="Color.Primary"
|
||||
Style="font-size: 3rem;"/>
|
||||
</MudButton>
|
||||
|
|
@ -111,7 +116,7 @@
|
|||
{
|
||||
<MudItem xs="12">
|
||||
<MudPaper Class="d-flex align-center justify-center mud-width-full py-0">
|
||||
<MudButton OnClick="OneClick">
|
||||
<MudButton>
|
||||
<p>Spieler auswählen</p>
|
||||
</MudButton>
|
||||
</MudPaper>
|
||||
|
|
@ -133,14 +138,15 @@
|
|||
get;
|
||||
set;
|
||||
}
|
||||
|
||||
private void ToggleClick(MouseEventArgs obj)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
private void OneClick(MouseEventArgs obj)
|
||||
private async Task OneClick(int number)
|
||||
{
|
||||
|
||||
await EventAggregator.PublishAsync(new NumberPanelMessage(number));
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,5 +1,9 @@
|
|||
<MudItem xs="12" md="6">
|
||||
<NumberPanel ShowNumbers="ShowNumbers" CanSelectPlayer="CanSelectPlayers" />
|
||||
@using KoogleApp.Services
|
||||
|
||||
|
||||
<MudItem xs="12" md="6">
|
||||
<NumberPanel ShowNumbers="ShowNumbers"
|
||||
CanSelectPlayer="CanSelectPlayers" />
|
||||
</MudItem>
|
||||
|
||||
<MudItem xs="12" md="6">
|
||||
|
|
|
|||
|
|
@ -1,4 +1,11 @@
|
|||
|
||||
@using KoogleApp.Model.EventMessages
|
||||
@using KoogleApp.Services
|
||||
|
||||
@implements IDisposable
|
||||
@implements IMyHandle<PinValueChangedMessage>
|
||||
|
||||
@inject IMyEventAggregator EventAggregator
|
||||
|
||||
@if (Disabled)
|
||||
{
|
||||
<MudIcon Class="ma-2" Icon="@Icons.Material.Filled.CheckCircle" Color="Color.Dark"
|
||||
|
|
@ -11,20 +18,14 @@
|
|||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
@if (!Value)
|
||||
{
|
||||
<MudButton OnClick="ToggleClick" Disabled="Disabled">
|
||||
<MudIcon Class="ma-2" Icon="@Icons.Material.Filled.ModeStandby" Color="Color.Primary" Style="font-size: 3rem;" />
|
||||
</MudButton>
|
||||
}
|
||||
else
|
||||
{
|
||||
<MudButton OnClick="ToggleClick" Disabled="Disabled">
|
||||
<MudIcon Class="ma-2" Icon="@Icons.Material.Filled.CheckCircleOutline" Color="Color.Warning"
|
||||
Style="font-size: 3rem;"/>
|
||||
</MudButton>
|
||||
}
|
||||
{
|
||||
<MudButton OnClick="ToggleClick" Disabled="Disabled">
|
||||
<MudIcon Class="ma-2"
|
||||
Icon="@(Value ? Icons.Material.Filled.CheckCircleOutline: Icons.Material.Filled.ModeStandby)"
|
||||
Color="@(Value ? Color.Warning: Color.Primary)"
|
||||
Style="font-size: 3rem;" />
|
||||
</MudButton>
|
||||
|
||||
@if (ShowSwitch)
|
||||
{
|
||||
<MudSwitch T="bool" Label="" Size="Size.Medium" Disabled="Disabled"
|
||||
|
|
@ -37,8 +38,21 @@ else
|
|||
|
||||
|
||||
@code {
|
||||
private bool _value;
|
||||
|
||||
[Parameter]
|
||||
public bool Value { get; set; } = false;
|
||||
public bool Value
|
||||
{
|
||||
get => _value;
|
||||
set
|
||||
{
|
||||
_value = value;
|
||||
InvokeAsync(StateHasChanged);
|
||||
}
|
||||
}
|
||||
|
||||
[Parameter]
|
||||
public int PinNumber { get; set; }
|
||||
|
||||
[Parameter]
|
||||
public bool Disabled { get; set; }
|
||||
|
|
@ -49,9 +63,28 @@ else
|
|||
private const string PinIconStr =
|
||||
"<image width=\"24\" height=\"24\" xlink:href=\"icons/pin_64.png\" />";
|
||||
|
||||
private void ToggleClick(MouseEventArgs obj)
|
||||
private async Task ToggleClick(MouseEventArgs obj)
|
||||
{
|
||||
Value = !Value;
|
||||
await EventAggregator.PublishAsync(new PinValueChangedMessage(pinNumber: PinNumber, Value));
|
||||
}
|
||||
|
||||
protected override void OnInitialized()
|
||||
{
|
||||
EventAggregator.Subscribe(this);
|
||||
}
|
||||
|
||||
public void Dispose()
|
||||
{
|
||||
EventAggregator.Unsubscribe(this);
|
||||
}
|
||||
|
||||
public async Task HandleAsync(PinValueChangedMessage message)
|
||||
{
|
||||
if (message.PinNumber == PinNumber)
|
||||
{
|
||||
Value = message.Value;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,7 +1,16 @@
|
|||
<MudGrid>
|
||||
@using System.Reflection.Metadata.Ecma335
|
||||
@using KoogleApp.Model.EventMessages
|
||||
@using KoogleApp.Services
|
||||
|
||||
@implements IMyHandle<NumberPanelMessage>
|
||||
@implements IDisposable
|
||||
|
||||
@inject IMyEventAggregator EventAggregator
|
||||
|
||||
<MudGrid>
|
||||
<MudItem xs="12">
|
||||
<MudPaper Class="d-flex align-center justify-center mud-width-full py-0">
|
||||
<Pin/>
|
||||
<Pin @ref="_pin1" PinNumber="1" />
|
||||
</MudPaper>
|
||||
</MudItem>
|
||||
|
||||
|
|
@ -9,12 +18,12 @@
|
|||
|
||||
<MudItem xs="6">
|
||||
<MudPaper Class="d-flex align-center justify-center mud-width-full py-0">
|
||||
<Pin />
|
||||
<Pin @ref="_pin2" PinNumber="2" />
|
||||
</MudPaper>
|
||||
</MudItem>
|
||||
<MudItem xs="6">
|
||||
<MudPaper Class="d-flex align-center justify-center mud-width-full py-0">
|
||||
<Pin />
|
||||
<Pin @ref="_pin3" PinNumber="3" />
|
||||
</MudPaper>
|
||||
</MudItem>
|
||||
|
||||
|
|
@ -22,17 +31,17 @@
|
|||
|
||||
<MudItem xs="4">
|
||||
<MudPaper Class="d-flex align-center justify-center mud-width-full py-0">
|
||||
<Pin />
|
||||
<Pin @ref="_pin4" PinNumber="4" />
|
||||
</MudPaper>
|
||||
</MudItem>
|
||||
<MudItem xs="4">
|
||||
<MudPaper Class="d-flex align-center justify-center mud-width-full py-0">
|
||||
<Pin />
|
||||
<Pin @ref="_pin5" PinNumber="5" />
|
||||
</MudPaper>
|
||||
</MudItem>
|
||||
<MudItem xs="4">
|
||||
<MudPaper Class="d-flex align-center justify-center mud-width-full py-0">
|
||||
<Pin />
|
||||
<Pin @ref="_pin6" PinNumber="6" />
|
||||
</MudPaper>
|
||||
</MudItem>
|
||||
|
||||
|
|
@ -40,23 +49,76 @@
|
|||
|
||||
<MudItem xs="6">
|
||||
<MudPaper Class="d-flex align-center justify-center mud-width-full py-0">
|
||||
<Pin />
|
||||
<Pin @ref="_pin7" PinNumber="7" />
|
||||
</MudPaper>
|
||||
</MudItem>
|
||||
<MudItem xs="6">
|
||||
<MudPaper Class="d-flex align-center justify-center mud-width-full py-0">
|
||||
<Pin />
|
||||
<Pin @ref="_pin8" PinNumber="8" />
|
||||
</MudPaper>
|
||||
</MudItem>
|
||||
<MudFlexBreak />
|
||||
|
||||
<MudItem xs="12">
|
||||
<MudPaper Class="d-flex align-center justify-center mud-width-full py-0">
|
||||
<Pin/>
|
||||
<Pin @ref="_pin9" PinNumber="9" />
|
||||
</MudPaper>
|
||||
</MudItem>
|
||||
</MudGrid>
|
||||
|
||||
@code {
|
||||
Pin _pin1;
|
||||
Pin _pin2;
|
||||
Pin _pin3;
|
||||
Pin _pin4;
|
||||
Pin _pin5;
|
||||
Pin _pin6;
|
||||
Pin _pin7;
|
||||
Pin _pin8;
|
||||
Pin _pin9;
|
||||
|
||||
readonly List<Pin> _pins = [];
|
||||
|
||||
protected override void OnInitialized()
|
||||
{
|
||||
EventAggregator.Subscribe(this);
|
||||
}
|
||||
|
||||
public void Dispose()
|
||||
{
|
||||
EventAggregator.Unsubscribe(this);
|
||||
}
|
||||
|
||||
protected override void OnAfterRender(bool firstRender)
|
||||
{
|
||||
if (firstRender)
|
||||
{
|
||||
_pins.Add(_pin9);
|
||||
_pins.Add(_pin8);
|
||||
_pins.Add(_pin7);
|
||||
_pins.Add(_pin6);
|
||||
_pins.Add(_pin5);
|
||||
_pins.Add(_pin4);
|
||||
_pins.Add(_pin3);
|
||||
_pins.Add(_pin2);
|
||||
_pins.Add(_pin1);
|
||||
}
|
||||
}
|
||||
|
||||
public async Task HandleAsync(NumberPanelMessage message)
|
||||
{
|
||||
var chgCnt = 0;
|
||||
foreach (var pin in _pins)
|
||||
{
|
||||
var nr = _pins.IndexOf(pin) + 1;
|
||||
if (!pin.Disabled)
|
||||
{
|
||||
pin.Value = chgCnt < message.Number;
|
||||
chgCnt++;
|
||||
}
|
||||
}
|
||||
|
||||
await InvokeAsync(StateHasChanged);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,6 +1,9 @@
|
|||
<MudGrid>
|
||||
@using KoogleApp.Model
|
||||
<MudGrid>
|
||||
|
||||
<NumberPinPanel ShowNumbers="true" CanSelectPlayers="true" />
|
||||
<NumberPinPanel ShowNumbers="true"
|
||||
CanSelectPlayers="true"
|
||||
/>
|
||||
|
||||
<MudItem xs="4">
|
||||
<MudPaper Class="d-flex align-center justify-center mud-width-full py-0">
|
||||
|
|
@ -33,15 +36,31 @@
|
|||
|
||||
@code {
|
||||
|
||||
[Parameter]
|
||||
public EventCallback<ThrowEventArgs> OnClick { get; set; }
|
||||
|
||||
private void SinkLeftClick(MouseEventArgs obj)
|
||||
{
|
||||
|
||||
DoThrow(true, false);
|
||||
}
|
||||
|
||||
private void SinkRightClick(MouseEventArgs obj)
|
||||
{
|
||||
|
||||
DoThrow(false, true);
|
||||
}
|
||||
private async Task DoThrow(bool leftSink, bool rightSink)
|
||||
{
|
||||
var ev = new ThrowEventArgs
|
||||
{
|
||||
LeftSink = leftSink,
|
||||
RightSink = rightSink
|
||||
};
|
||||
// if (GetDisabledState())
|
||||
// return;
|
||||
await OnClick.InvokeAsync(ev);
|
||||
// Activatable?.Activate(this, ev);
|
||||
}
|
||||
|
||||
|
||||
|
||||
private void ThrowClick(MouseEventArgs obj)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -0,0 +1,15 @@
|
|||
using KoogleApp.Model.Framework;
|
||||
|
||||
namespace KoogleApp.Model.EventMessages
|
||||
{
|
||||
public class NumberPanelMessage: ScopedEventBase
|
||||
{
|
||||
public int Number { get; private set; }
|
||||
|
||||
public NumberPanelMessage(int number)
|
||||
{
|
||||
Scope = EventScope.Global;
|
||||
Number = number;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,18 @@
|
|||
using KoogleApp.Components.Controls;
|
||||
using KoogleApp.Model.Framework;
|
||||
|
||||
namespace KoogleApp.Model.EventMessages
|
||||
{
|
||||
public class PinValueChangedMessage : ScopedEventBase
|
||||
{
|
||||
public int PinNumber { get; private set; }
|
||||
|
||||
public bool Value { get; private set; }
|
||||
public PinValueChangedMessage(int pinNumber, bool value)
|
||||
{
|
||||
Scope = EventScope.Global;
|
||||
Value = value;
|
||||
PinNumber = pinNumber;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,8 @@
|
|||
namespace KoogleApp.Model
|
||||
{
|
||||
public class ThrowEventArgs
|
||||
{
|
||||
public bool LeftSink { get; set; }
|
||||
public bool RightSink { get; set; }
|
||||
}
|
||||
}
|
||||
|
|
@ -3,11 +3,19 @@
|
|||
"Status": {
|
||||
"Content": "Willkommen! Starte die Zusammenarbeit."
|
||||
},
|
||||
"Version": 2,
|
||||
"LastModified": "2025-11-03T19:09:57.4404986+01:00",
|
||||
"Version": 3,
|
||||
"LastModified": "2025-11-05T20:53:27.735651+01:00",
|
||||
"LastModifiedBy": "test1@test.de"
|
||||
},
|
||||
"UndoHistory": [
|
||||
{
|
||||
"Status": {
|
||||
"Content": "Willkommen! Starte die Zusammenarbeit."
|
||||
},
|
||||
"Version": 2,
|
||||
"LastModified": "2025-11-03T19:09:57.4404986+01:00",
|
||||
"LastModifiedBy": "test1@test.de"
|
||||
},
|
||||
{
|
||||
"Status": {
|
||||
"Content": "Willkommen! Starte die Zusammenarbeit."
|
||||
|
|
@ -17,14 +25,5 @@
|
|||
"LastModifiedBy": "System"
|
||||
}
|
||||
],
|
||||
"RedoHistory": [
|
||||
{
|
||||
"Status": {
|
||||
"Content": "Willkommen! Starte die Zusammenarbeit."
|
||||
},
|
||||
"Version": 3,
|
||||
"LastModified": "2025-11-05T20:53:27.735651+01:00",
|
||||
"LastModifiedBy": "test1@test.de"
|
||||
}
|
||||
]
|
||||
"RedoHistory": []
|
||||
}
|
||||
Loading…
Reference in New Issue