From 495bd3905029293f4a38c54244858d29aadb0755 Mon Sep 17 00:00:00 2001 From: beo3000 Date: Sat, 8 Nov 2025 20:44:27 +0100 Subject: [PATCH] added pinevents --- .../Components/Controls/NumberPanel.razor | 32 +++++--- .../Components/Controls/NumberPinPanel.razor | 8 +- KoogleApp/Components/Controls/Pin.razor | 67 +++++++++++---- KoogleApp/Components/Controls/PinPanel.razor | 82 ++++++++++++++++--- .../Components/Controls/ThrowPanel.razor | 29 +++++-- .../Model/EventMessages/NumberPanelMessage.cs | 15 ++++ .../EventMessages/PinValueChangedMessage.cs | 18 ++++ KoogleApp/Model/ThrowEventArgs.cs | 8 ++ KoogleApp/appdata.json | 23 +++--- 9 files changed, 223 insertions(+), 59 deletions(-) create mode 100644 KoogleApp/Model/EventMessages/NumberPanelMessage.cs create mode 100644 KoogleApp/Model/EventMessages/PinValueChangedMessage.cs create mode 100644 KoogleApp/Model/ThrowEventArgs.cs diff --git a/KoogleApp/Components/Controls/NumberPanel.razor b/KoogleApp/Components/Controls/NumberPanel.razor index 70a6659..8f95158 100644 --- a/KoogleApp/Components/Controls/NumberPanel.razor +++ b/KoogleApp/Components/Controls/NumberPanel.razor @@ -1,4 +1,9 @@ - +@using KoogleApp.Model.EventMessages +@using KoogleApp.Services +@inject IMyEventAggregator EventAggregator + + + @@ -27,7 +32,7 @@ { - + @@ -35,7 +40,7 @@ - + @@ -43,7 +48,7 @@ - + @@ -54,7 +59,7 @@ - + @@ -62,7 +67,7 @@ - + @@ -70,7 +75,7 @@ - + @@ -81,7 +86,7 @@ - + @@ -89,7 +94,7 @@ - + @@ -97,7 +102,7 @@ - + @@ -111,7 +116,7 @@ { - +

Spieler auswählen

@@ -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)); } } diff --git a/KoogleApp/Components/Controls/NumberPinPanel.razor b/KoogleApp/Components/Controls/NumberPinPanel.razor index 75a4d79..72fc290 100644 --- a/KoogleApp/Components/Controls/NumberPinPanel.razor +++ b/KoogleApp/Components/Controls/NumberPinPanel.razor @@ -1,5 +1,9 @@ - - +@using KoogleApp.Services + + + + diff --git a/KoogleApp/Components/Controls/Pin.razor b/KoogleApp/Components/Controls/Pin.razor index c256c8d..607f85b 100644 --- a/KoogleApp/Components/Controls/Pin.razor +++ b/KoogleApp/Components/Controls/Pin.razor @@ -1,4 +1,11 @@ - +@using KoogleApp.Model.EventMessages +@using KoogleApp.Services + +@implements IDisposable +@implements IMyHandle + +@inject IMyEventAggregator EventAggregator + @if (Disabled) { - -
- } - else - { - - - - } +{ + + + + @if (ShowSwitch) { _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 = ""; - 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; + } } } diff --git a/KoogleApp/Components/Controls/PinPanel.razor b/KoogleApp/Components/Controls/PinPanel.razor index 0e927ca..8694676 100644 --- a/KoogleApp/Components/Controls/PinPanel.razor +++ b/KoogleApp/Components/Controls/PinPanel.razor @@ -1,7 +1,16 @@ - +@using System.Reflection.Metadata.Ecma335 +@using KoogleApp.Model.EventMessages +@using KoogleApp.Services + +@implements IMyHandle +@implements IDisposable + +@inject IMyEventAggregator EventAggregator + + - + @@ -9,12 +18,12 @@ - + - + @@ -22,17 +31,17 @@ - + - + - + @@ -40,23 +49,76 @@ - + - + - + @code { + Pin _pin1; + Pin _pin2; + Pin _pin3; + Pin _pin4; + Pin _pin5; + Pin _pin6; + Pin _pin7; + Pin _pin8; + Pin _pin9; + + readonly List _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); + } } diff --git a/KoogleApp/Components/Controls/ThrowPanel.razor b/KoogleApp/Components/Controls/ThrowPanel.razor index 9d45651..98febc7 100644 --- a/KoogleApp/Components/Controls/ThrowPanel.razor +++ b/KoogleApp/Components/Controls/ThrowPanel.razor @@ -1,6 +1,9 @@ - +@using KoogleApp.Model + - + @@ -33,15 +36,31 @@ @code { + [Parameter] + public EventCallback 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) { diff --git a/KoogleApp/Model/EventMessages/NumberPanelMessage.cs b/KoogleApp/Model/EventMessages/NumberPanelMessage.cs new file mode 100644 index 0000000..d432af0 --- /dev/null +++ b/KoogleApp/Model/EventMessages/NumberPanelMessage.cs @@ -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; + } + } +} diff --git a/KoogleApp/Model/EventMessages/PinValueChangedMessage.cs b/KoogleApp/Model/EventMessages/PinValueChangedMessage.cs new file mode 100644 index 0000000..2963b58 --- /dev/null +++ b/KoogleApp/Model/EventMessages/PinValueChangedMessage.cs @@ -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; + } + } +} diff --git a/KoogleApp/Model/ThrowEventArgs.cs b/KoogleApp/Model/ThrowEventArgs.cs new file mode 100644 index 0000000..908540f --- /dev/null +++ b/KoogleApp/Model/ThrowEventArgs.cs @@ -0,0 +1,8 @@ +namespace KoogleApp.Model +{ + public class ThrowEventArgs + { + public bool LeftSink { get; set; } + public bool RightSink { get; set; } + } +} diff --git a/KoogleApp/appdata.json b/KoogleApp/appdata.json index 6922115..e2b9068 100644 --- a/KoogleApp/appdata.json +++ b/KoogleApp/appdata.json @@ -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": [] } \ No newline at end of file