diff --git a/GreadyPoang.EntityLayer/HelperEntities/PlayerColumn.cs b/GreadyPoang.EntityLayer/HelperEntities/PlayerColumn.cs new file mode 100644 index 0000000..0365a40 --- /dev/null +++ b/GreadyPoang.EntityLayer/HelperEntities/PlayerColumn.cs @@ -0,0 +1,32 @@ +using Common.Library; + +namespace GreadyPoang.EntityLayer; + +public class PlayerColumn : EntityBase +{ + public PlayerColumn() + { + _playerName = string.Empty; + _values = new List(); + } + private string _playerName; + private List _values; + public string PlayerName + { + get { return _playerName; } + set + { + _playerName = value; + RaisePropertyChanged(nameof(PlayerName)); + } + } + public List Values + { + get { return _values; } + set + { + _values = value; + RaisePropertyChanged(nameof(Values)); + } + } +} diff --git a/GreadyPoang.ViewModelLayer/ViewModelClasses/RoundRunningViewModel.cs b/GreadyPoang.ViewModelLayer/ViewModelClasses/RoundRunningViewModel.cs index 0549f71..d9fe3f5 100644 --- a/GreadyPoang.ViewModelLayer/ViewModelClasses/RoundRunningViewModel.cs +++ b/GreadyPoang.ViewModelLayer/ViewModelClasses/RoundRunningViewModel.cs @@ -29,6 +29,7 @@ public class RoundRunningViewModel : ViewModelBase _combined = combined; _objectMessage = objectMessage; _roundElements = new ObservableCollection(); + _builderObject = new(); } private readonly IRepository? _roundsRepo; @@ -40,6 +41,7 @@ public class RoundRunningViewModel : ViewModelBase private ObservableCollection _GameRoundList = new(); private ObservableCollection _ParticipantList = new(); + private Collection _playerColumns; public ObservableCollection RoundElements { @@ -51,9 +53,35 @@ public class RoundRunningViewModel : ViewModelBase } } + public Collection PlayerColumns + { + get { return _playerColumns; } + set + { + _playerColumns = value; + RaisePropertyChanged(nameof(PlayerColumns)); + } + } + + + + private RoundBuilderElement _builderObject; + + public RoundBuilderElement BuilderObject + { + get { return _builderObject; } + set + { + _builderObject = value; + RaisePropertyChanged(nameof(BuilderObject)); + } + } + public ObservableCollection Get() { + BuilderObject.ParticipantName = "Kalle Default"; + if (_objectMessage.CurrentGroup != null) { Debug.WriteLine($"Chosen round: {_objectMessage.CurrentGroup.GameRoundId}"); @@ -65,9 +93,38 @@ public class RoundRunningViewModel : ViewModelBase { _roundElements.Add(item); } + FillupResultTable(_objectMessage.CurrentGroup.Elements); } return RoundElements; } + + private void FillupResultTable(List elements) + { + Random slumper = new Random(); + if (_playerColumns != null) + { + _playerColumns.Clear(); + } + else + { + _playerColumns = new Collection(); + } + foreach (var element in elements) + { + var player = new PlayerColumn + { + PlayerName = element.ParticipantName + }; + + for (int i = 0; i < slumper.Next(6); i++) + { + player.Values.Add(slumper.Next(1, 10).ToString()); + } + + _playerColumns.Add(player); + } + } + } diff --git a/GreadyPoang/CommandClasses/RoundRunningViewModelCommands.cs b/GreadyPoang/CommandClasses/RoundRunningViewModelCommands.cs index 6f713e1..1dee87b 100644 --- a/GreadyPoang/CommandClasses/RoundRunningViewModelCommands.cs +++ b/GreadyPoang/CommandClasses/RoundRunningViewModelCommands.cs @@ -33,6 +33,23 @@ public class RoundRunningViewModelCommands : RoundRunningViewModel public ICommand RensaCommand { get; private set; } public ICommand ElementTappedCommand { get; private set; } public ICommand ParticipantTappedCommand { get; private set; } + public ICommand StoreAndHandlePontsCommand { get; private set; } + #endregion + public override void Init() + { + base.Init(); + StoreAndHandlePontsCommand = new Command(async () => StoreAndHandle()); + //EditCommand = new Command(async (id) => await EditAsync(id), (id) => id > 0); + //RensaCommand = new Command(async () => RensaAsync()); + //ParticipantTappedCommand = new Command(async (selectedParticipant) => SelectNewlyAddedParticipant(selectedParticipant)); + //ElementTappedCommand = new Command((selectedElement) => RoundSelected(selectedElement)); + + } + + private void StoreAndHandle() + { + throw new NotImplementedException(); + } } diff --git a/GreadyPoang/ViewHelpers/DigitsOnlyBehavior.cs b/GreadyPoang/ViewHelpers/DigitsOnlyBehavior.cs new file mode 100644 index 0000000..6ad6613 --- /dev/null +++ b/GreadyPoang/ViewHelpers/DigitsOnlyBehavior.cs @@ -0,0 +1,38 @@ +using System.Text.RegularExpressions; + +namespace GreadyPoang.ViewHelpers; + +public class DigitsOnlyBehavior : Behavior +{ + protected override void OnAttachedTo(Entry entry) + { + entry.TextChanged += OnTextChanged; + base.OnAttachedTo(entry); + } + + protected override void OnDetachingFrom(Entry entry) + { + entry.TextChanged -= OnTextChanged; + base.OnDetachingFrom(entry); + } + + private void OnTextChanged(object sender, TextChangedEventArgs e) + { + var entry = sender as Entry; + if (entry == null) return; + + // Tillåt endast siffror (0–9) + if (!Regex.IsMatch(e.NewTextValue, @"^\d*$")) + { + entry.Text = e.OldTextValue; // Återställ till tidigare giltigt värde + } + /* + * Vill du tillåta decimaler? Ändra regex till @"^\d*\.?\d*$" + Vill du tillåta negativa tal? Använd @"^-?\d*$" + Vill du visa en varning när användaren skriver fel? + Lägg till en BindableProperty för IsValid och bind den till UI. + * + */ + + } +} diff --git a/GreadyPoang/Views/RoundRunningView.xaml b/GreadyPoang/Views/RoundRunningView.xaml index 7eda743..c8154bd 100644 --- a/GreadyPoang/Views/RoundRunningView.xaml +++ b/GreadyPoang/Views/RoundRunningView.xaml @@ -4,6 +4,7 @@ xmlns:partial="clr-namespace:GreadyPoang.ViewsPartial" x:Class="GreadyPoang.Views.RoundRunningView" xmlns:vm ="clr-namespace:GreadyPoang.CommandClasses" + xmlns:behaviors="clr-namespace:GreadyPoang.ViewHelpers" xmlns:local="clr-namespace:GreadyPoang.EntityLayer;assembly=GreadyPoang.EntityLayer" xmlns:model="clr-namespace:GreadyPoang.EntityLayer;assembly=GreadyPoang.EntityLayer" x:DataType="vm:RoundRunningViewModelCommands" @@ -12,6 +13,9 @@ + + + @@ -23,29 +27,83 @@ + Margin="2"> - + - - - + + + + + + + + + + + + + + + + + + + + + + + -