first NavBar finish

This commit is contained in:
Natlinux
2022-11-28 00:42:42 +01:00
parent 56a433876e
commit b6a427ca29
9 changed files with 65 additions and 21 deletions

View File

@@ -4,6 +4,7 @@ using Apollon.Domain.Queries;
using Apollon.EntityFramework; using Apollon.EntityFramework;
using Apollon.EntityFramework.Commands; using Apollon.EntityFramework.Commands;
using Apollon.EntityFramework.Queries; using Apollon.EntityFramework.Queries;
using Apollon.WPF.Services;
using Apollon.WPF.Stores; using Apollon.WPF.Stores;
using Apollon.WPF.ViewModels; using Apollon.WPF.ViewModels;
using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore;
@@ -30,7 +31,8 @@ namespace Apollon.WPF
private readonly IUpdateTournamentCommand _updateTournamentCommand; private readonly IUpdateTournamentCommand _updateTournamentCommand;
private readonly IDeleteTournamentCommand _deleteTournamentCommand; private readonly IDeleteTournamentCommand _deleteTournamentCommand;
private readonly TournamentsStore _tournamentStore; private readonly TournamentsStore _tournamentStore;
private readonly SelectedTournamentsStore _selectedTournamentStore; private readonly SelectedTournamentsStore _selectedTournamentStore;
private readonly NavBarPreparationViewModel _navBarPreparationViewModel;
public App() public App()
{ {
@@ -46,7 +48,13 @@ namespace Apollon.WPF
_deleteTournamentCommand = new DeleteTournamentCommand(_tournamentsDbContextFactory); _deleteTournamentCommand = new DeleteTournamentCommand(_tournamentsDbContextFactory);
_tournamentStore = new TournamentsStore(_getAllTournamentQuery, _createTournamentCommand, _updateTournamentCommand, _deleteTournamentCommand); _tournamentStore = new TournamentsStore(_getAllTournamentQuery, _createTournamentCommand, _updateTournamentCommand, _deleteTournamentCommand);
_selectedTournamentStore = new SelectedTournamentsStore(_tournamentStore); _selectedTournamentStore = new SelectedTournamentsStore(_tournamentStore);
}
_navBarPreparationViewModel = new NavBarPreparationViewModel(CreateOverviewNavigationService(),
CreateGroupsNavigationService(),
CreateClassesNavigationService(),
CreateArchersNavigationService());
}
protected override void OnStartup(StartupEventArgs e) protected override void OnStartup(StartupEventArgs e)
{ {
using(ApplicationDbContext context = _tournamentsDbContextFactory.Create()) using(ApplicationDbContext context = _tournamentsDbContextFactory.Create())
@@ -58,13 +66,17 @@ namespace Apollon.WPF
_selectedTournamentStore, _selectedTournamentStore,
_modalNavigationStore, _modalNavigationStore,
_tournamentStore, _tournamentStore,
_navigationStore); _navigationStore,
CreateGroupsNavigationService());
_navigationStore.CurrentViewModel = OverviewViewModel.LoadViewModel( _navigationStore.CurrentViewModel = OverviewViewModel.LoadViewModel(
_selectedTournamentStore, _selectedTournamentStore,
_modalNavigationStore, _modalNavigationStore,
_tournamentStore, _tournamentStore,
_navigationStore); _navigationStore,
CreateGroupsNavigationService());
MainWindow = new MainWindow() MainWindow = new MainWindow()
{ {
@@ -74,5 +86,29 @@ namespace Apollon.WPF
base.OnStartup(e); base.OnStartup(e);
} }
private NavigationService<OverviewViewModel> CreateOverviewNavigationService()
{
return new NavigationService<OverviewViewModel>(
_navigationStore, () => OverviewViewModel.LoadViewModel(_selectedTournamentStore, _modalNavigationStore, _tournamentStore, _navigationStore, CreateGroupsNavigationService()));
}
private NavigationService<GroupsViewModel> CreateGroupsNavigationService()
{
return new NavigationService<GroupsViewModel>(
_navigationStore, () => new GroupsViewModel( _navBarPreparationViewModel, _selectedTournamentStore, _navigationStore, _modalNavigationStore, _tournamentStore, CreateGroupsNavigationService()));
}
private NavigationService<ClassesViewModel> CreateClassesNavigationService()
{
return new NavigationService<ClassesViewModel>(
_navigationStore, ()=> new ClassesViewModel(_navBarPreparationViewModel, _selectedTournamentStore));
}
private NavigationService<ArchersViewModel> CreateArchersNavigationService()
{
return new NavigationService<ArchersViewModel>(
_navigationStore, () => new ArchersViewModel(_navBarPreparationViewModel, _selectedTournamentStore));
}
} }
} }

View File

@@ -52,7 +52,7 @@ namespace Apollon.WPF.Commands
await _tournamentStore.Add(tournament); await _tournamentStore.Add(tournament);
_modalNavigationStore.Close(); _modalNavigationStore.Close();
_navigationStore.CurrentViewModel = new GroupsViewModel(_selectedTournamentsStore, _navigationStore, _modalNavigationStore, _tournamentStore); //_navigationStore.CurrentViewModel = new GroupsViewModel(_selectedTournamentsStore, _navigationStore, _modalNavigationStore, _tournamentStore);
} }
catch (Exception) catch (Exception)

View File

@@ -1,4 +1,5 @@
using System; using Apollon.WPF.Stores;
using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq; using System.Linq;
using System.Text; using System.Text;
@@ -8,10 +9,12 @@ namespace Apollon.WPF.ViewModels
{ {
public class ArchersViewModel : ViewModelBase public class ArchersViewModel : ViewModelBase
{ {
public TournamentDetailsViewModel TournamentDetailsViewModel { get; }
public NavBarPreparationViewModel NavBarPreparationViewModel { get; } public NavBarPreparationViewModel NavBarPreparationViewModel { get; }
public ArchersViewModel(NavBarPreparationViewModel navBarPreparationViewModel) public ArchersViewModel(NavBarPreparationViewModel navBarPreparationViewModel, SelectedTournamentsStore selectedTournamentsStore)
{ {
TournamentDetailsViewModel = new TournamentDetailsViewModel(selectedTournamentsStore);
NavBarPreparationViewModel = navBarPreparationViewModel; NavBarPreparationViewModel = navBarPreparationViewModel;
} }
} }

View File

@@ -1,4 +1,5 @@
using System; using Apollon.WPF.Stores;
using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq; using System.Linq;
using System.Text; using System.Text;
@@ -8,10 +9,12 @@ namespace Apollon.WPF.ViewModels
{ {
public class ClassesViewModel : ViewModelBase public class ClassesViewModel : ViewModelBase
{ {
public TournamentDetailsViewModel TournamentDetailsViewModel { get; }
public NavBarPreparationViewModel NavBarPreparationViewModel { get; } public NavBarPreparationViewModel NavBarPreparationViewModel { get; }
public ClassesViewModel(NavBarPreparationViewModel navBarPreparationViewModel) public ClassesViewModel(NavBarPreparationViewModel navBarPreparationViewModel, SelectedTournamentsStore selectedTournamentsStore)
{ {
TournamentDetailsViewModel = new TournamentDetailsViewModel(selectedTournamentsStore);
NavBarPreparationViewModel = navBarPreparationViewModel; NavBarPreparationViewModel = navBarPreparationViewModel;
} }
} }

View File

@@ -18,11 +18,13 @@ namespace Apollon.WPF.ViewModels
public NavBarPreparationViewModel NavBarPreparationViewModel { get; } public NavBarPreparationViewModel NavBarPreparationViewModel { get; }
public ICommand NavigateOverviewCommand { get; } public ICommand NavigateOverviewCommand { get; }
public GroupsViewModel(SelectedTournamentsStore selectedTournamentStore, NavigationStore navigationStore, ModalNavigationStore modalNavigationStore, TournamentsStore tournamentsStore) public GroupsViewModel(NavBarPreparationViewModel navBarPreparationViewModel, SelectedTournamentsStore selectedTournamentStore, NavigationStore navigationStore, ModalNavigationStore modalNavigationStore, TournamentsStore tournamentsStore, NavigationService<GroupsViewModel> groupNavigationService)
{ {
TournamentDetailsViewModel = new TournamentDetailsViewModel(selectedTournamentStore); TournamentDetailsViewModel = new TournamentDetailsViewModel(selectedTournamentStore);
NavigateOverviewCommand = new NavigateCommand<OverviewViewModel>(new NavigationService<OverviewViewModel>(navigationStore, () => OverviewViewModel.LoadViewModel(selectedTournamentStore, modalNavigationStore, tournamentsStore, navigationStore))); NavBarPreparationViewModel = navBarPreparationViewModel;
NavigateOverviewCommand = new NavigateCommand<OverviewViewModel>(new NavigationService<OverviewViewModel>(navigationStore, () => OverviewViewModel.LoadViewModel(selectedTournamentStore, modalNavigationStore, tournamentsStore, navigationStore, groupNavigationService)));
} }
} }
} }

View File

@@ -11,7 +11,7 @@ namespace Apollon.WPF.ViewModels
{ {
public class NavBarPreparationViewModel : ViewModelBase public class NavBarPreparationViewModel : ViewModelBase
{ {
public ICommand NavigateOverviewCommand { get;} public ICommand NavigateOverviewCommand { get; }
public ICommand NavigateGroupsCommand { get;} public ICommand NavigateGroupsCommand { get;}
public ICommand NavigateClassesCommand { get;} public ICommand NavigateClassesCommand { get;}
public ICommand NavigateArchersCommand { get;} public ICommand NavigateArchersCommand { get;}

View File

@@ -30,14 +30,13 @@ namespace Apollon.WPF.ViewModels
public ICommand NavigatePreparationCommand { get; } public ICommand NavigatePreparationCommand { get; }
public OverviewDetailsViewModel(SelectedTournamentsStore selectedTournamentStore, NavigationStore navigationStore, ModalNavigationStore modalNavigationStore,TournamentsStore tournamentsStore) public OverviewDetailsViewModel(SelectedTournamentsStore selectedTournamentStore, NavigationService<GroupsViewModel> groupNavigationService)
{ {
_selectedTournamentStore = selectedTournamentStore; _selectedTournamentStore = selectedTournamentStore;
_selectedTournamentStore.SelectedTournamentChanged += SelectedTournamentStore_SelectedTournamentChanged; _selectedTournamentStore.SelectedTournamentChanged += SelectedTournamentStore_SelectedTournamentChanged;
NavigatePreparationCommand = new NavigateCommand<GroupsViewModel>(new NavigationService<GroupsViewModel> ( NavigatePreparationCommand = new NavigateCommand<GroupsViewModel>(groupNavigationService);
navigationStore, () => new GroupsViewModel( _selectedTournamentStore, navigationStore, modalNavigationStore, tournamentsStore)));
} }
protected override void Dispose() protected override void Dispose()

View File

@@ -46,10 +46,10 @@ namespace Apollon.WPF.ViewModels
public ICommand NavigateNameListCommand { get; } public ICommand NavigateNameListCommand { get; }
public OverviewViewModel(TournamentsStore tournamentStore, SelectedTournamentsStore selectedTournamentStore, public OverviewViewModel(TournamentsStore tournamentStore, SelectedTournamentsStore selectedTournamentStore,
ModalNavigationStore modalNavigationStore, NavigationStore navigationStore) ModalNavigationStore modalNavigationStore, NavigationStore navigationStore, NavigationService<GroupsViewModel> groupNavigationService)
{ {
OverviewListingViewModel = new OverviewListingViewModel(selectedTournamentStore, modalNavigationStore, tournamentStore); OverviewListingViewModel = new OverviewListingViewModel(selectedTournamentStore, modalNavigationStore, tournamentStore);
OverviewDetailsViewModel = new OverviewDetailsViewModel(selectedTournamentStore ,navigationStore, modalNavigationStore,tournamentStore); OverviewDetailsViewModel = new OverviewDetailsViewModel(selectedTournamentStore ,groupNavigationService);
LoadTournamentsCommand = new LoadTournamentsCommand(this, tournamentStore); LoadTournamentsCommand = new LoadTournamentsCommand(this, tournamentStore);
OpenAddTournamentCommand = new OpenAddTournamentCommand(tournamentStore, modalNavigationStore, navigationStore, selectedTournamentStore); OpenAddTournamentCommand = new OpenAddTournamentCommand(tournamentStore, modalNavigationStore, navigationStore, selectedTournamentStore);
@@ -61,9 +61,10 @@ namespace Apollon.WPF.ViewModels
public static OverviewViewModel LoadViewModel(SelectedTournamentsStore selectedTournamentStore, public static OverviewViewModel LoadViewModel(SelectedTournamentsStore selectedTournamentStore,
ModalNavigationStore modalNavigationStore, ModalNavigationStore modalNavigationStore,
TournamentsStore tournamentStore, TournamentsStore tournamentStore,
NavigationStore navigationStore) NavigationStore navigationStore,
NavigationService<GroupsViewModel> groupNavigationService)
{ {
OverviewViewModel viewModel = new OverviewViewModel(tournamentStore, selectedTournamentStore, modalNavigationStore, navigationStore); OverviewViewModel viewModel = new OverviewViewModel(tournamentStore, selectedTournamentStore, modalNavigationStore, navigationStore, groupNavigationService);
viewModel.LoadTournamentsCommand.Execute(null); viewModel.LoadTournamentsCommand.Execute(null);

View File

@@ -7,7 +7,7 @@
xmlns:components="clr-namespace:Apollon.WPF.Views.Components" xmlns:components="clr-namespace:Apollon.WPF.Views.Components"
mc:Ignorable="d" mc:Ignorable="d"
d:DesignHeight="680" d:DesignWidth="1100"> d:DesignHeight="680" d:DesignWidth="1100">
<Grid Margin="1535"> <Grid Margin="15, 35">
<Grid.RowDefinitions> <Grid.RowDefinitions>
<RowDefinition Height="80"/> <RowDefinition Height="80"/>
<RowDefinition Height="550"/> <RowDefinition Height="550"/>