Observable properties och RelayCommands införda
This commit is contained in:
@ -1,29 +0,0 @@
|
|||||||
using System.ComponentModel;
|
|
||||||
|
|
||||||
namespace Common.Library;
|
|
||||||
|
|
||||||
public abstract class CommonBase : INotifyPropertyChanged
|
|
||||||
{
|
|
||||||
#region Constructor
|
|
||||||
protected CommonBase()
|
|
||||||
{
|
|
||||||
Init();
|
|
||||||
}
|
|
||||||
#endregion
|
|
||||||
|
|
||||||
#region Init Method
|
|
||||||
public virtual void Init()
|
|
||||||
{
|
|
||||||
|
|
||||||
}
|
|
||||||
#endregion
|
|
||||||
|
|
||||||
|
|
||||||
#region RaisePropertyChanged Method
|
|
||||||
public event PropertyChangedEventHandler? PropertyChanged;
|
|
||||||
public virtual void RaisePropertyChanged(string propertyName)
|
|
||||||
{
|
|
||||||
this.PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
|
|
||||||
}
|
|
||||||
#endregion
|
|
||||||
}
|
|
||||||
@ -1,5 +0,0 @@
|
|||||||
namespace Common.Library;
|
|
||||||
|
|
||||||
public class EntityBase : CommonBase
|
|
||||||
{
|
|
||||||
}
|
|
||||||
@ -1,14 +0,0 @@
|
|||||||
//using GreadyPoang.DataLayer;
|
|
||||||
|
|
||||||
namespace Common.Library;
|
|
||||||
public class ViewModelBase : CommonBase
|
|
||||||
{
|
|
||||||
//private readonly LocalDbService _dbService;
|
|
||||||
|
|
||||||
//public ViewModelBase(LocalDbService dbService)
|
|
||||||
//{
|
|
||||||
// _dbService = dbService;
|
|
||||||
//}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
@ -6,19 +6,9 @@
|
|||||||
<Nullable>enable</Nullable>
|
<Nullable>enable</Nullable>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
|
||||||
<Compile Remove="BaseClasses\CommonBase.cs" />
|
|
||||||
<Compile Remove="BaseClasses\EntityBase.cs" />
|
|
||||||
<Compile Remove="BaseClasses\ViewModelBase.cs" />
|
|
||||||
</ItemGroup>
|
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<PackageReference Include="CommunityToolkit.Mvvm" Version="8.4.0" />
|
<PackageReference Include="CommunityToolkit.Mvvm" Version="8.4.0" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
|
||||||
<Folder Include="BaseClasses\" />
|
|
||||||
</ItemGroup>
|
|
||||||
|
|
||||||
|
|
||||||
</Project>
|
</Project>
|
||||||
|
|||||||
@ -1,5 +1,6 @@
|
|||||||
using Common.Library;
|
using Common.Library;
|
||||||
using CommunityToolkit.Mvvm.ComponentModel;
|
using CommunityToolkit.Mvvm.ComponentModel;
|
||||||
|
using CommunityToolkit.Mvvm.Input;
|
||||||
using GreadyPoang.EntityLayer;
|
using GreadyPoang.EntityLayer;
|
||||||
using System.Collections.ObjectModel;
|
using System.Collections.ObjectModel;
|
||||||
|
|
||||||
@ -20,6 +21,7 @@ public partial class ParticipantViewModel : ObservableObject
|
|||||||
_sharingService = sharingService;
|
_sharingService = sharingService;
|
||||||
ParticipantObject = new Participant();
|
ParticipantObject = new Participant();
|
||||||
ParticipantList = new ObservableCollection<Participant>();
|
ParticipantList = new ObservableCollection<Participant>();
|
||||||
|
IsSaveCommandEnabled = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
@ -33,6 +35,11 @@ public partial class ParticipantViewModel : ObservableObject
|
|||||||
private readonly IMethodSharingService<Participant> _sharingService;
|
private readonly IMethodSharingService<Participant> _sharingService;
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
|
|
||||||
|
[ObservableProperty]
|
||||||
|
private bool isSaveCommandEnabled;
|
||||||
|
|
||||||
|
|
||||||
#region Get Method
|
#region Get Method
|
||||||
public ObservableCollection<Participant> Get()
|
public ObservableCollection<Participant> Get()
|
||||||
{
|
{
|
||||||
@ -58,7 +65,12 @@ public partial class ParticipantViewModel : ObservableObject
|
|||||||
|
|
||||||
return ParticipantObject;
|
return ParticipantObject;
|
||||||
}
|
}
|
||||||
public virtual bool Save()
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
|
||||||
|
[RelayCommand(CanExecute = nameof(IsSaveCommandEnabled))]
|
||||||
|
private async Task<bool> Save()
|
||||||
{
|
{
|
||||||
if (_Repository == null || ParticipantObject == null)
|
if (_Repository == null || ParticipantObject == null)
|
||||||
{
|
{
|
||||||
@ -70,8 +82,21 @@ public partial class ParticipantViewModel : ObservableObject
|
|||||||
{
|
{
|
||||||
ParticipantObject = new Participant();
|
ParticipantObject = new Participant();
|
||||||
this.Get();
|
this.Get();
|
||||||
|
await Shell.Current.GoToAsync("..");
|
||||||
}
|
}
|
||||||
return tmp != -1;
|
return tmp != -1;
|
||||||
}
|
}
|
||||||
#endregion
|
|
||||||
|
[RelayCommand]
|
||||||
|
private void DeleteAsync(Participant pp)
|
||||||
|
{
|
||||||
|
Console.WriteLine($"Valt från ViewModel: {pp.FullName}");
|
||||||
|
if (_Repository == null || pp == null || pp.ParticipantId <= 0)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
var tmpTask = _Repository.Delete(pp);
|
||||||
|
this.Get();
|
||||||
|
Shell.Current.GoToAsync("..");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
@ -1,5 +1,6 @@
|
|||||||
using Common.Library;
|
using Common.Library;
|
||||||
using CommunityToolkit.Mvvm.ComponentModel;
|
using CommunityToolkit.Mvvm.ComponentModel;
|
||||||
|
using CommunityToolkit.Mvvm.Input;
|
||||||
using GreadyPoang.DataLayer;
|
using GreadyPoang.DataLayer;
|
||||||
using GreadyPoang.EntityLayer;
|
using GreadyPoang.EntityLayer;
|
||||||
using GreadyPoang.Services;
|
using GreadyPoang.Services;
|
||||||
@ -98,8 +99,8 @@ public partial class RoundRunningViewModel : ObservableObject
|
|||||||
return RoundElements;
|
return RoundElements;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[RelayCommand]
|
||||||
public void StoreAndHandlePoints()
|
private void StoreAndHandlePointsAsync()
|
||||||
{
|
{
|
||||||
var game = _roundsRepo.Get(BuilderObject.GameRoundId).GetAwaiter().GetResult();
|
var game = _roundsRepo.Get(BuilderObject.GameRoundId).GetAwaiter().GetResult();
|
||||||
var regNr = RoundElements.Count > 0 ? RoundElements.Max(e => e.GameRoundRegNr) + 1 : 1;
|
var regNr = RoundElements.Count > 0 ? RoundElements.Max(e => e.GameRoundRegNr) + 1 : 1;
|
||||||
@ -147,6 +148,8 @@ public partial class RoundRunningViewModel : ObservableObject
|
|||||||
RoundElements.FirstOrDefault(e => e.ParticipantId == col.PlayerId).GameRegPoints = col.PlayerPoints;
|
RoundElements.FirstOrDefault(e => e.ParticipantId == col.PlayerId).GameRegPoints = col.PlayerPoints;
|
||||||
}
|
}
|
||||||
TriggerRebuild();
|
TriggerRebuild();
|
||||||
|
Shell.Current.GoToAsync("..").GetAwaiter().GetResult();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private int nextPlayerElement()
|
private int nextPlayerElement()
|
||||||
|
|||||||
@ -1,5 +1,6 @@
|
|||||||
using Common.Library;
|
using Common.Library;
|
||||||
using CommunityToolkit.Mvvm.ComponentModel;
|
using CommunityToolkit.Mvvm.ComponentModel;
|
||||||
|
using CommunityToolkit.Mvvm.Input;
|
||||||
using GreadyPoang.DataLayer;
|
using GreadyPoang.DataLayer;
|
||||||
using GreadyPoang.EntityLayer;
|
using GreadyPoang.EntityLayer;
|
||||||
using GreadyPoang.Services;
|
using GreadyPoang.Services;
|
||||||
@ -39,6 +40,7 @@ public partial class RoundStartingViewModel : ObservableObject
|
|||||||
private readonly ICombinedRepository _combined;
|
private readonly ICombinedRepository _combined;
|
||||||
private readonly IObjectMessageService _objectMessage;
|
private readonly IObjectMessageService _objectMessage;
|
||||||
|
|
||||||
|
|
||||||
[ObservableProperty]
|
[ObservableProperty]
|
||||||
private Participant selectedItem;
|
private Participant selectedItem;
|
||||||
partial void OnSelectedItemChanged(Participant value)
|
partial void OnSelectedItemChanged(Participant value)
|
||||||
@ -108,6 +110,7 @@ public partial class RoundStartingViewModel : ObservableObject
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#region Get Method
|
#region Get Method
|
||||||
public ObservableCollection<RoundBuilderGroup> Get()
|
public ObservableCollection<RoundBuilderGroup> Get()
|
||||||
{
|
{
|
||||||
@ -167,7 +170,9 @@ public partial class RoundStartingViewModel : ObservableObject
|
|||||||
|
|
||||||
return GameRoundObject;
|
return GameRoundObject;
|
||||||
}
|
}
|
||||||
public virtual bool Save()
|
|
||||||
|
[RelayCommand]
|
||||||
|
public async Task<bool> SaveAsync()
|
||||||
{
|
{
|
||||||
if (_roundsRepo == null || GameRoundObject == null)
|
if (_roundsRepo == null || GameRoundObject == null)
|
||||||
{
|
{
|
||||||
@ -180,11 +185,13 @@ public partial class RoundStartingViewModel : ObservableObject
|
|||||||
GameRoundObject = new GameRound();
|
GameRoundObject = new GameRound();
|
||||||
RoundElements.Clear();
|
RoundElements.Clear();
|
||||||
this.Get();
|
this.Get();
|
||||||
|
await Shell.Current.GoToAsync("..");
|
||||||
}
|
}
|
||||||
return tmp;
|
return tmp;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void Rensa()
|
[RelayCommand]
|
||||||
|
private async Task RensaAsync()
|
||||||
{
|
{
|
||||||
foreach (var element in RoundElements)
|
foreach (var element in RoundElements)
|
||||||
{
|
{
|
||||||
@ -192,22 +199,31 @@ public partial class RoundStartingViewModel : ObservableObject
|
|||||||
}
|
}
|
||||||
_roundsRepo?.DeleteById(GameRoundObject?.GameRoundId ?? 0);
|
_roundsRepo?.DeleteById(GameRoundObject?.GameRoundId ?? 0);
|
||||||
RoundElements.Clear();
|
RoundElements.Clear();
|
||||||
|
await Shell.Current.GoToAsync("..");
|
||||||
}
|
}
|
||||||
|
|
||||||
public void RoundSelected(RoundBuilderElement element)
|
[RelayCommand]
|
||||||
|
public async Task<bool> RoundSelected(RoundBuilderElement element)
|
||||||
{
|
{
|
||||||
|
bool goneOk = false;
|
||||||
var rbGroup = GameRoundList.FirstOrDefault(g => g.GameRoundId == element.GameRoundId);
|
var rbGroup = GameRoundList.FirstOrDefault(g => g.GameRoundId == element.GameRoundId);
|
||||||
Debug.WriteLine($"Du valde raden med Runda {element.GameRoundId} och spelare: {element.ParticipantName}");
|
Debug.WriteLine($"Du valde raden med Runda {element.GameRoundId} och spelare: {element.ParticipantName}");
|
||||||
if (rbGroup != null)
|
if (rbGroup != null)
|
||||||
{
|
{
|
||||||
_objectMessage.CurrentGroup = rbGroup;
|
_objectMessage.CurrentGroup = rbGroup;
|
||||||
Shell.Current.GoToAsync("//RoundRunningView");
|
await Shell.Current.GoToAsync("//RoundRunningView");
|
||||||
|
goneOk = true;
|
||||||
}
|
}
|
||||||
|
return goneOk;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void SelectNewlyAddedParticipant(RoundBuilderElement roundBuilder)
|
[RelayCommand]
|
||||||
|
public async Task<bool> SelectNewlyAddedParticipant(RoundBuilderElement roundBuilder)
|
||||||
{
|
{
|
||||||
|
bool goneOk = false;
|
||||||
Debug.WriteLine($"Du valde raden med Runda {roundBuilder.GameRoundId} och spelare: {roundBuilder.ParticipantName}");
|
Debug.WriteLine($"Du valde raden med Runda {roundBuilder.GameRoundId} och spelare: {roundBuilder.ParticipantName}");
|
||||||
|
goneOk = true;
|
||||||
|
return goneOk;
|
||||||
}
|
}
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|||||||
@ -1,58 +0,0 @@
|
|||||||
using Common.Library;
|
|
||||||
using CommunityToolkit.Mvvm.ComponentModel;
|
|
||||||
using GreadyPoang.EntityLayer;
|
|
||||||
using GreadyPoang.ViewModelLayer;
|
|
||||||
using System.Windows.Input;
|
|
||||||
|
|
||||||
namespace GreadyPoang.CommandClasses;
|
|
||||||
|
|
||||||
public partial class ParticipantViewModelCommands : ParticipantViewModel
|
|
||||||
{
|
|
||||||
#region constructors
|
|
||||||
public ParticipantViewModelCommands() : base()
|
|
||||||
{
|
|
||||||
|
|
||||||
}
|
|
||||||
public ParticipantViewModelCommands(IRepository<Participant> repo, IMethodSharingService<Participant> sharingService) : base(repo, sharingService)
|
|
||||||
{
|
|
||||||
Init();
|
|
||||||
IsSaveCommandEnabled = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
#endregion
|
|
||||||
|
|
||||||
#region Private Variables
|
|
||||||
[ObservableProperty]
|
|
||||||
private bool isSaveCommandEnabled;
|
|
||||||
#endregion
|
|
||||||
|
|
||||||
#region Commands
|
|
||||||
public ICommand SaveCommand { get; private set; }
|
|
||||||
public ICommand EditCommand { get; private set; }
|
|
||||||
#endregion
|
|
||||||
|
|
||||||
#region Init Method
|
|
||||||
public void Init()
|
|
||||||
{
|
|
||||||
//base.Init();
|
|
||||||
SaveCommand = new Command(async () => SaveAsync(), () => IsSaveCommandEnabled);
|
|
||||||
EditCommand = new Command<int>(async (id) => await EditAsync(id), (id) => id > 0);
|
|
||||||
}
|
|
||||||
#endregion
|
|
||||||
|
|
||||||
protected async Task EditAsync(int id)
|
|
||||||
{
|
|
||||||
await Shell.Current.GoToAsync($"{nameof(Views.ParticipantListView)}?id={id}");
|
|
||||||
}
|
|
||||||
|
|
||||||
public async Task<bool> SaveAsync()
|
|
||||||
{
|
|
||||||
var ret = base.Save();
|
|
||||||
if (ret)
|
|
||||||
{
|
|
||||||
await Shell.Current.GoToAsync("..");
|
|
||||||
}
|
|
||||||
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@ -1,51 +0,0 @@
|
|||||||
using Common.Library;
|
|
||||||
using GreadyPoang.DataLayer;
|
|
||||||
using GreadyPoang.EntityLayer;
|
|
||||||
using GreadyPoang.Services;
|
|
||||||
using GreadyPoang.ViewModelLayer;
|
|
||||||
using System.Windows.Input;
|
|
||||||
|
|
||||||
namespace GreadyPoang.CommandClasses;
|
|
||||||
|
|
||||||
public class RoundRunningViewModelCommands : RoundRunningViewModel
|
|
||||||
{
|
|
||||||
public RoundRunningViewModelCommands() : base()
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
public RoundRunningViewModelCommands(
|
|
||||||
IRepository<GameRound> roundsRepo,
|
|
||||||
IRepository<GamePoint> pointsRepo,
|
|
||||||
IMethodSharingService<Participant> sharingService,
|
|
||||||
ICombinedRepository combined,
|
|
||||||
IObjectMessageService objectMessage)
|
|
||||||
: base(roundsRepo,
|
|
||||||
pointsRepo,
|
|
||||||
sharingService,
|
|
||||||
combined,
|
|
||||||
objectMessage)
|
|
||||||
{
|
|
||||||
Init();
|
|
||||||
}
|
|
||||||
|
|
||||||
#region Commands
|
|
||||||
//public ICommand SaveCommand { get; private set; }
|
|
||||||
//public ICommand EditCommand { get; private set; }
|
|
||||||
//public ICommand RensaCommand { get; private set; }
|
|
||||||
//public ICommand ElementTappedCommand { get; private set; }
|
|
||||||
//public ICommand ParticipantTappedCommand { get; private set; }
|
|
||||||
public ICommand StoreAndHandlePointsCommand { get; private set; }
|
|
||||||
|
|
||||||
#endregion
|
|
||||||
|
|
||||||
public void Init()
|
|
||||||
{
|
|
||||||
StoreAndHandlePointsCommand = new Command(async () => StoreAndHandleAsync());
|
|
||||||
}
|
|
||||||
|
|
||||||
private async Task StoreAndHandleAsync()
|
|
||||||
{
|
|
||||||
base.StoreAndHandlePoints();
|
|
||||||
await Shell.Current.GoToAsync("..");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@ -1,99 +0,0 @@
|
|||||||
using Common.Library;
|
|
||||||
using CommunityToolkit.Mvvm.ComponentModel;
|
|
||||||
using GreadyPoang.DataLayer;
|
|
||||||
using GreadyPoang.EntityLayer;
|
|
||||||
using GreadyPoang.Services;
|
|
||||||
using GreadyPoang.ViewModelLayer;
|
|
||||||
using System.Windows.Input;
|
|
||||||
|
|
||||||
namespace GreadyPoang.CommandClasses;
|
|
||||||
|
|
||||||
public partial class RoundStartingViewModelCommands : RoundStartingViewModel
|
|
||||||
{
|
|
||||||
public RoundStartingViewModelCommands() : base()
|
|
||||||
{
|
|
||||||
|
|
||||||
}
|
|
||||||
public RoundStartingViewModelCommands(
|
|
||||||
IRepository<GameRound> roundsRepo,
|
|
||||||
IRepository<GamePoint> pointsRepo,
|
|
||||||
IMethodSharingService<Participant> sharingService,
|
|
||||||
ICombinedRepository combined,
|
|
||||||
IObjectMessageService objectMessage)
|
|
||||||
: base(roundsRepo,
|
|
||||||
pointsRepo,
|
|
||||||
sharingService,
|
|
||||||
combined,
|
|
||||||
objectMessage)
|
|
||||||
{
|
|
||||||
Init();
|
|
||||||
IsSaveCommandEnabled = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
#region Private Variables
|
|
||||||
[ObservableProperty]
|
|
||||||
private bool isSaveCommandEnabled;
|
|
||||||
#endregion
|
|
||||||
|
|
||||||
#region Commands
|
|
||||||
public ICommand SaveCommand { get; private set; }
|
|
||||||
public ICommand EditCommand { get; private set; }
|
|
||||||
public ICommand RensaCommand { get; private set; }
|
|
||||||
public ICommand ElementTappedCommand { get; private set; }
|
|
||||||
public ICommand ParticipantTappedCommand { get; private set; }
|
|
||||||
#endregion
|
|
||||||
|
|
||||||
#region Init Method
|
|
||||||
|
|
||||||
public void Init()
|
|
||||||
{
|
|
||||||
//base.Init();
|
|
||||||
SaveCommand = new Command(async () => SaveAsync(), () => IsSaveCommandEnabled);
|
|
||||||
EditCommand = new Command<int>(async (id) => await EditAsync(id), (id) => id > 0);
|
|
||||||
RensaCommand = new Command(async () => RensaAsync());
|
|
||||||
ParticipantTappedCommand = new Command<RoundBuilderElement>(async (selectedParticipant) => SelectNewlyAddedParticipant(selectedParticipant));
|
|
||||||
ElementTappedCommand = new Command<RoundBuilderElement>((selectedElement) => RoundSelected(selectedElement));
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
private async Task RensaAsync()
|
|
||||||
{
|
|
||||||
base.Rensa();
|
|
||||||
await Shell.Current.GoToAsync("..");
|
|
||||||
}
|
|
||||||
#endregion
|
|
||||||
|
|
||||||
protected async Task EditAsync(int id)
|
|
||||||
{
|
|
||||||
await Shell.Current.GoToAsync($"{nameof(Views.RoundStartingView)}?id={id}");
|
|
||||||
}
|
|
||||||
|
|
||||||
public async Task<bool> SaveAsync()
|
|
||||||
{
|
|
||||||
var ret = base.Save();
|
|
||||||
if (ret)
|
|
||||||
{
|
|
||||||
await Shell.Current.GoToAsync("..");
|
|
||||||
}
|
|
||||||
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
|
|
||||||
public async Task<bool> RoundSelected(RoundBuilderElement element)
|
|
||||||
{
|
|
||||||
bool goneOk = false;
|
|
||||||
base.RoundSelected(element);
|
|
||||||
goneOk = true;
|
|
||||||
return goneOk;
|
|
||||||
}
|
|
||||||
|
|
||||||
public async Task<bool> SelectNewlyAddedParticipant(RoundBuilderElement roundBuilder)
|
|
||||||
{
|
|
||||||
bool goneOk = false;
|
|
||||||
base.SelectNewlyAddedParticipant(roundBuilder);
|
|
||||||
goneOk = true;
|
|
||||||
return goneOk;
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
@ -1,5 +1,4 @@
|
|||||||
using Common.Library;
|
using Common.Library;
|
||||||
using GreadyPoang.CommandClasses;
|
|
||||||
using GreadyPoang.DataLayer;
|
using GreadyPoang.DataLayer;
|
||||||
using GreadyPoang.DataLayer.Database;
|
using GreadyPoang.DataLayer.Database;
|
||||||
using GreadyPoang.EntityLayer;
|
using GreadyPoang.EntityLayer;
|
||||||
@ -39,15 +38,15 @@ public static class MauiProgram
|
|||||||
});
|
});
|
||||||
|
|
||||||
builder.Services.AddScoped<IRepository<Participant>, ParticipantRepository>();
|
builder.Services.AddScoped<IRepository<Participant>, ParticipantRepository>();
|
||||||
builder.Services.AddScoped<ParticipantViewModelCommands>();
|
builder.Services.AddScoped<ParticipantViewModel>();
|
||||||
builder.Services.AddScoped<ParticipantListView>();
|
builder.Services.AddScoped<ParticipantListView>();
|
||||||
|
|
||||||
builder.Services.AddScoped<IRepository<GameRound>, GameRoundRepository>();
|
builder.Services.AddScoped<IRepository<GameRound>, GameRoundRepository>();
|
||||||
builder.Services.AddScoped<RoundStartingViewModelCommands>();
|
builder.Services.AddScoped<RoundStartingViewModel>();
|
||||||
builder.Services.AddScoped<RoundStartingView>();
|
builder.Services.AddScoped<RoundStartingView>();
|
||||||
|
|
||||||
builder.Services.AddScoped<IRepository<GamePoint>, GamePointRepository>();
|
builder.Services.AddScoped<IRepository<GamePoint>, GamePointRepository>();
|
||||||
builder.Services.AddScoped<RoundRunningViewModelCommands>();
|
builder.Services.AddScoped<RoundRunningViewModel>();
|
||||||
builder.Services.AddScoped<RoundRunningView>();
|
builder.Services.AddScoped<RoundRunningView>();
|
||||||
|
|
||||||
builder.Services.AddScoped<IMethodSharingService<Participant>, MethodSharingService>();
|
builder.Services.AddScoped<IMethodSharingService<Participant>, MethodSharingService>();
|
||||||
|
|||||||
@ -2,13 +2,15 @@
|
|||||||
<ContentPage xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
|
<ContentPage xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
|
||||||
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
|
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
|
||||||
xmlns:partial="clr-namespace:GreadyPoang.ViewsPartial"
|
xmlns:partial="clr-namespace:GreadyPoang.ViewsPartial"
|
||||||
xmlns:vm="clr-namespace:GreadyPoang.CommandClasses"
|
xmlns:vm="clr-namespace:GreadyPoang.ViewModelLayer;assembly=GreadyPoang.ViewModelLayer"
|
||||||
xmlns:model="clr-namespace:GreadyPoang.EntityLayer;assembly=GreadyPoang.EntityLayer"
|
xmlns:model="clr-namespace:GreadyPoang.EntityLayer;assembly=GreadyPoang.EntityLayer"
|
||||||
x:Class="GreadyPoang.Views.ParticipantListView"
|
x:Class="GreadyPoang.Views.ParticipantListView"
|
||||||
x:DataType="vm:ParticipantViewModelCommands"
|
x:DataType="vm:ParticipantViewModel"
|
||||||
x:Name="ParticipantListPage"
|
x:Name="ParticipantListPage"
|
||||||
Title="Deltagar Lista">
|
Title="Deltagar Lista">
|
||||||
|
|
||||||
|
<!--xmlns:toolkit="http://schemas.microsoft.com/dotnet/2022/maui/toolkit"-->
|
||||||
|
|
||||||
<Border Style="{StaticResource Border.Page}" StrokeThickness="4">
|
<Border Style="{StaticResource Border.Page}" StrokeThickness="4">
|
||||||
<Grid Style="{StaticResource Grid.Page}">
|
<Grid Style="{StaticResource Grid.Page}">
|
||||||
<Grid.RowDefinitions>
|
<Grid.RowDefinitions>
|
||||||
@ -22,9 +24,9 @@
|
|||||||
ViewDescription="Lägg till deltagare här" />
|
ViewDescription="Lägg till deltagare här" />
|
||||||
<Border Stroke="Gold" StrokeThickness="2" BackgroundColor="LemonChiffon" Grid.Row="1">
|
<Border Stroke="Gold" StrokeThickness="2" BackgroundColor="LemonChiffon" Grid.Row="1">
|
||||||
<VerticalStackLayout Spacing="4" >
|
<VerticalStackLayout Spacing="4" >
|
||||||
<Label Style="{StaticResource Label}"
|
<!--<Label Style="{StaticResource SubHeadline}"
|
||||||
Text="Deltagare "
|
Text="Deltagare "
|
||||||
FontAttributes="Bold" FontSize="Large"/>
|
FontAttributes="Bold" />-->
|
||||||
<Grid ColumnDefinitions="Auto,Auto,*" RowDefinitions="Auto,auto,auto,auto"
|
<Grid ColumnDefinitions="Auto,Auto,*" RowDefinitions="Auto,auto,auto,auto"
|
||||||
Padding="10" RowSpacing="8">
|
Padding="10" RowSpacing="8">
|
||||||
<Label Grid.Row="0" Grid.Column="0" Style="{StaticResource Label}"
|
<Label Grid.Row="0" Grid.Column="0" Style="{StaticResource Label}"
|
||||||
@ -67,7 +69,6 @@
|
|||||||
ItemsUpdatingScrollMode="KeepLastItemInView">
|
ItemsUpdatingScrollMode="KeepLastItemInView">
|
||||||
<CollectionView.ItemTemplate>
|
<CollectionView.ItemTemplate>
|
||||||
<DataTemplate x:DataType="model:Participant">
|
<DataTemplate x:DataType="model:Participant">
|
||||||
<!--Stroke="DarkGray" BackgroundColor="Cornsilk"-->
|
|
||||||
<Border Margin="8" Padding="12" >
|
<Border Margin="8" Padding="12" >
|
||||||
<VerticalStackLayout Spacing="4">
|
<VerticalStackLayout Spacing="4">
|
||||||
<Label FontAttributes="Bold"
|
<Label FontAttributes="Bold"
|
||||||
@ -76,7 +77,14 @@
|
|||||||
Text="{Binding LastNameFirstName}" />
|
Text="{Binding LastNameFirstName}" />
|
||||||
<HorizontalStackLayout >
|
<HorizontalStackLayout >
|
||||||
<Button Text="Edit" Style="{StaticResource HoverButtonBlueStyle}" CommandParameter="{Binding EditCommand}"/>
|
<Button Text="Edit" Style="{StaticResource HoverButtonBlueStyle}" CommandParameter="{Binding EditCommand}"/>
|
||||||
<Button Style="{StaticResource HoverButtonRedStyle}" Text="Delete" />
|
<Button Text="Delete" Style="{StaticResource HoverButtonRedStyle}"
|
||||||
|
Command="{Binding Source={RelativeSource AncestorType={x:Type vm:ParticipantViewModel}}, Path=DeleteAsyncCommand}"
|
||||||
|
CommandParameter="{Binding .}" />
|
||||||
|
|
||||||
|
<!--Command="{Binding BindingContext.ParticipantTappedCommand, Source={x:Reference Name=ParticipantList}}"
|
||||||
|
CommandParameter="{Binding .}" />-->
|
||||||
|
|
||||||
|
|
||||||
</HorizontalStackLayout>
|
</HorizontalStackLayout>
|
||||||
</VerticalStackLayout>
|
</VerticalStackLayout>
|
||||||
</Border>
|
</Border>
|
||||||
|
|||||||
@ -1,16 +1,16 @@
|
|||||||
using GreadyPoang.CommandClasses;
|
using GreadyPoang.ViewModelLayer;
|
||||||
|
|
||||||
namespace GreadyPoang.Views;
|
namespace GreadyPoang.Views;
|
||||||
|
|
||||||
public partial class ParticipantListView : ContentPage
|
public partial class ParticipantListView : ContentPage
|
||||||
{
|
{
|
||||||
public ParticipantListView(ParticipantViewModelCommands viewModel)
|
public ParticipantListView(ParticipantViewModel viewModel)
|
||||||
{
|
{
|
||||||
InitializeComponent();
|
InitializeComponent();
|
||||||
ViewModel = viewModel;
|
ViewModel = viewModel;
|
||||||
}
|
}
|
||||||
|
|
||||||
public ParticipantViewModelCommands ViewModel { get; set; }
|
public ParticipantViewModel ViewModel { get; set; }
|
||||||
public int ParticipantId { get; set; }
|
public int ParticipantId { get; set; }
|
||||||
|
|
||||||
protected override void OnAppearing()
|
protected override void OnAppearing()
|
||||||
|
|||||||
@ -3,11 +3,11 @@
|
|||||||
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
|
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
|
||||||
xmlns:partial="clr-namespace:GreadyPoang.ViewsPartial"
|
xmlns:partial="clr-namespace:GreadyPoang.ViewsPartial"
|
||||||
x:Class="GreadyPoang.Views.RoundRunningView"
|
x:Class="GreadyPoang.Views.RoundRunningView"
|
||||||
xmlns:vm ="clr-namespace:GreadyPoang.CommandClasses"
|
xmlns:vm ="clr-namespace:GreadyPoang.ViewModelLayer;assembly=GreadyPoang.ViewModelLayer"
|
||||||
xmlns:behaviors="clr-namespace:GreadyPoang.Common;assembly=GreadyPoang.Common"
|
xmlns:behaviors="clr-namespace:GreadyPoang.Common;assembly=GreadyPoang.Common"
|
||||||
xmlns:local="clr-namespace:GreadyPoang.EntityLayer;assembly=GreadyPoang.EntityLayer"
|
xmlns:local="clr-namespace:GreadyPoang.EntityLayer;assembly=GreadyPoang.EntityLayer"
|
||||||
xmlns:model="clr-namespace:GreadyPoang.EntityLayer;assembly=GreadyPoang.EntityLayer"
|
xmlns:model="clr-namespace:GreadyPoang.EntityLayer;assembly=GreadyPoang.EntityLayer"
|
||||||
x:DataType="vm:RoundRunningViewModelCommands"
|
x:DataType="vm:RoundRunningViewModel"
|
||||||
Title="RoundRunningView">
|
Title="RoundRunningView">
|
||||||
|
|
||||||
<Border Style="{StaticResource Border.Page}" StrokeThickness="4">
|
<Border Style="{StaticResource Border.Page}" StrokeThickness="4">
|
||||||
@ -78,13 +78,13 @@
|
|||||||
<Entry.Behaviors>
|
<Entry.Behaviors>
|
||||||
<behaviors:DigitsOnlyBehavior/>
|
<behaviors:DigitsOnlyBehavior/>
|
||||||
<behaviors:EventToCommandBehavior EventName="Completed"
|
<behaviors:EventToCommandBehavior EventName="Completed"
|
||||||
Command="{Binding StoreAndHandlePointsCommand}" />
|
Command="{Binding StoreAndHandlePointsAsyncCommand}" />
|
||||||
</Entry.Behaviors>
|
</Entry.Behaviors>
|
||||||
</Entry>
|
</Entry>
|
||||||
</Grid>
|
</Grid>
|
||||||
<Button Text="Register Points"
|
<Button Text="Register Points"
|
||||||
Style="{StaticResource HoverButtonRedStyle}"
|
Style="{StaticResource HoverButtonRedStyle}"
|
||||||
Command="{Binding StoreAndHandlePointsCommand}"/>
|
Command="{Binding StoreAndHandlePointsAsyncCommand}"/>
|
||||||
</HorizontalStackLayout>
|
</HorizontalStackLayout>
|
||||||
</Border>
|
</Border>
|
||||||
<ScrollView Grid.Row="4" Orientation="Horizontal">
|
<ScrollView Grid.Row="4" Orientation="Horizontal">
|
||||||
|
|||||||
@ -1,11 +1,11 @@
|
|||||||
using GreadyPoang.CommandClasses;
|
|
||||||
using GreadyPoang.EntityLayer;
|
using GreadyPoang.EntityLayer;
|
||||||
|
using GreadyPoang.ViewModelLayer;
|
||||||
|
|
||||||
namespace GreadyPoang.Views;
|
namespace GreadyPoang.Views;
|
||||||
|
|
||||||
public partial class RoundRunningView : ContentPage
|
public partial class RoundRunningView : ContentPage
|
||||||
{
|
{
|
||||||
public RoundRunningView(RoundRunningViewModelCommands viewModel)
|
public RoundRunningView(RoundRunningViewModel viewModel)
|
||||||
{
|
{
|
||||||
InitializeComponent();
|
InitializeComponent();
|
||||||
ViewModel = viewModel;
|
ViewModel = viewModel;
|
||||||
@ -29,7 +29,7 @@ public partial class RoundRunningView : ContentPage
|
|||||||
|
|
||||||
//protected override
|
//protected override
|
||||||
|
|
||||||
public RoundRunningViewModelCommands ViewModel { get; set; }
|
public RoundRunningViewModel ViewModel { get; set; }
|
||||||
|
|
||||||
|
|
||||||
private void BuildScoreGrid(IEnumerable<PlayerColumn> columns)
|
private void BuildScoreGrid(IEnumerable<PlayerColumn> columns)
|
||||||
|
|||||||
@ -3,10 +3,10 @@
|
|||||||
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
|
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
|
||||||
xmlns:partial="clr-namespace:GreadyPoang.ViewsPartial"
|
xmlns:partial="clr-namespace:GreadyPoang.ViewsPartial"
|
||||||
x:Class="GreadyPoang.Views.RoundStartingView"
|
x:Class="GreadyPoang.Views.RoundStartingView"
|
||||||
xmlns:vm="clr-namespace:GreadyPoang.CommandClasses"
|
xmlns:vm="clr-namespace:GreadyPoang.ViewModelLayer;assembly=GreadyPoang.ViewModelLayer"
|
||||||
xmlns:local="clr-namespace:GreadyPoang.EntityLayer;assembly=GreadyPoang.EntityLayer"
|
xmlns:local="clr-namespace:GreadyPoang.EntityLayer;assembly=GreadyPoang.EntityLayer"
|
||||||
xmlns:model="clr-namespace:GreadyPoang.EntityLayer;assembly=GreadyPoang.EntityLayer"
|
xmlns:model="clr-namespace:GreadyPoang.EntityLayer;assembly=GreadyPoang.EntityLayer"
|
||||||
x:DataType="vm:RoundStartingViewModelCommands"
|
x:DataType="vm:RoundStartingViewModel"
|
||||||
x:Name="GameRoundStartingPage"
|
x:Name="GameRoundStartingPage"
|
||||||
Title="Starta ny Runda">
|
Title="Starta ny Runda">
|
||||||
|
|
||||||
@ -64,7 +64,7 @@
|
|||||||
>
|
>
|
||||||
<Border.GestureRecognizers>
|
<Border.GestureRecognizers>
|
||||||
<TapGestureRecognizer
|
<TapGestureRecognizer
|
||||||
Command="{Binding BindingContext.ParticipantTappedCommand, Source={x:Reference Name=ParticipantList}}"
|
Command="{Binding BindingContext.SelectNewlyAddedParticipantCommand, Source={x:Reference Name=ParticipantList}}"
|
||||||
CommandParameter="{Binding .}" />
|
CommandParameter="{Binding .}" />
|
||||||
</Border.GestureRecognizers>
|
</Border.GestureRecognizers>
|
||||||
<Border Margin="1" Padding="2" StrokeThickness="3" >
|
<Border Margin="1" Padding="2" StrokeThickness="3" >
|
||||||
@ -129,7 +129,7 @@
|
|||||||
Style="{StaticResource StatusBorderStyle}" >
|
Style="{StaticResource StatusBorderStyle}" >
|
||||||
<Border.GestureRecognizers>
|
<Border.GestureRecognizers>
|
||||||
<TapGestureRecognizer
|
<TapGestureRecognizer
|
||||||
Command="{Binding Path=BindingContext.ElementTappedCommand,Source={x:Reference OuterList}}"
|
Command="{Binding Path=BindingContext.RoundSelectedCommand ,Source={x:Reference OuterList}}"
|
||||||
CommandParameter="{Binding .}" />
|
CommandParameter="{Binding .}" />
|
||||||
</Border.GestureRecognizers>
|
</Border.GestureRecognizers>
|
||||||
|
|
||||||
|
|||||||
@ -1,4 +1,4 @@
|
|||||||
using GreadyPoang.CommandClasses;
|
using GreadyPoang.ViewModelLayer;
|
||||||
|
|
||||||
namespace GreadyPoang.Views;
|
namespace GreadyPoang.Views;
|
||||||
|
|
||||||
@ -6,12 +6,12 @@ public partial class RoundStartingView : ContentPage
|
|||||||
{
|
{
|
||||||
|
|
||||||
|
|
||||||
public RoundStartingView(RoundStartingViewModelCommands viewModel)
|
public RoundStartingView(RoundStartingViewModel viewModel)
|
||||||
{
|
{
|
||||||
InitializeComponent();
|
InitializeComponent();
|
||||||
ViewModel = viewModel;
|
ViewModel = viewModel;
|
||||||
}
|
}
|
||||||
public RoundStartingViewModelCommands ViewModel { get; set; }
|
public RoundStartingViewModel ViewModel { get; set; }
|
||||||
|
|
||||||
public int GameRoundId { get; set; }
|
public int GameRoundId { get; set; }
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user