Renavigator umgebaut

This commit is contained in:
HuskyTeufel
2021-09-29 18:36:56 +02:00
parent f15d0b2983
commit debecff686
17 changed files with 73 additions and 37 deletions

View File

@@ -75,7 +75,7 @@ namespace DaSaSo.ViewModel
private void SaveBuildingsite() private void SaveBuildingsite()
{ {
_buildingsiteService.Update(Model.Id, Model); _buildingsiteService.Update(Model.Id, Model);
_renavigator.Renavigate(new BuildingsiteListViewModel(_buildingsiteService, _actualProject, _renavigator, null)); _renavigator.Renavigate();
} }
} }
} }

View File

@@ -35,7 +35,7 @@ namespace DaSaSo.ViewModel
private void SaveClient() private void SaveClient()
{ {
_dataService.Update(Model.Id, Model); _dataService.Update(Model.Id, Model);
renavigator.Renavigate(new ClientListViewModel(_dataService,_actualProject,renavigator)); renavigator.Renavigate();
} }
} }
} }

View File

@@ -59,18 +59,22 @@ namespace DaSaSo.ViewModel
public bool CanSelectClient => _selectedClient != null; public bool CanSelectClient => _selectedClient != null;
public ClientListViewModel(IDataService<Client> dataService, IActualProject actualProject, IRenavigator renavigator) public ClientListViewModel(IDataService<Client> dataService, IActualProject actualProject, IRenavigator editRenavigator)
{ {
Clients = new ObservableCollection<Client>(); Clients = new ObservableCollection<Client>();
_dataService = dataService; _dataService = dataService;
this.renavigator = renavigator; this.renavigator = renavigator;
LoadClient(); LoadClient();
SelectCommand = new SelectClientCommand(actualProject, this); //= new RelayCommand(SelectClient, () => SelectedClient != null); SelectCommand = new SelectClientCommand(actualProject, this); //= new RelayCommand(SelectClient, () => SelectedClient != null);
EditCommand = new EditClientCommand(_dataService,actualProject,renavigator,this); EditCommand = new EditClientCommand(_dataService,actualProject, editRenavigator, this);
AddNewClientCommand = new AddClientCommand(_dataService, actualProject, renavigator, this); AddNewClientCommand = new AddClientCommand(_dataService, actualProject, editRenavigator, this);
} }
~ClientListViewModel()
{
}
public async void LoadClient() public async void LoadClient()
{ {

View File

@@ -28,7 +28,7 @@ namespace DaSaSo.ViewModel.Commands
{ {
Buildingsite buildingsite = await _buildingsiteService.CreateBuildingsite(_actualProject.AktuellProjekt); Buildingsite buildingsite = await _buildingsiteService.CreateBuildingsite(_actualProject.AktuellProjekt);
_actualProject.SetBuildingSite(buildingsite); _actualProject.SetBuildingSite(buildingsite);
_renavigator.Renavigate(new BuildingsiteEditViewModel(_dataservice, _actualProject, _renavigator)); _renavigator.Renavigate();
} }
} }
} }

View File

@@ -30,7 +30,7 @@ namespace DaSaSo.ViewModel.Commands
Client newClient = await dataservice.Create(new Client()); Client newClient = await dataservice.Create(new Client());
actualProject.SetClient(newClient,false); actualProject.SetClient(newClient,false);
//actualProject.SetClient(clientListViewModel.SelectedClient); //actualProject.SetClient(clientListViewModel.SelectedClient);
renavigator.Renavigate(new ClientEditViewModel(dataservice, actualProject, renavigator)); renavigator.Renavigate();
} }
} }
} }

View File

@@ -31,7 +31,7 @@ namespace DaSaSo.ViewModel.Commands
{ {
Project pro = await _projectService.CreateProject(_actualProject.AktuellClient); Project pro = await _projectService.CreateProject(_actualProject.AktuellClient);
_actualProject.SetProject(pro); _actualProject.SetProject(pro);
_renavigator.Renavigate(new ProjectEditViewModel(_genericDataService, _actualProject, _renavigator, _projectService)); _renavigator.Renavigate();
} }
} }

View File

@@ -42,7 +42,7 @@ namespace DaSaSo.ViewModel.Commands
public override async Task ExecuteAsync(object? parameter) public override async Task ExecuteAsync(object? parameter)
{ {
actualProject.SetBuildingSite(_buildingsiteListViewModel.SelectedBuildingsite); actualProject.SetBuildingSite(_buildingsiteListViewModel.SelectedBuildingsite);
renavigator.Renavigate(new BuildingsiteEditViewModel(buildingSiteDataService, actualProject, renavigator)); renavigator.Renavigate();
} }
} }
} }

View File

@@ -45,7 +45,7 @@ namespace DaSaSo.ViewModel.Commands
public override async Task ExecuteAsync(object? parameter) public override async Task ExecuteAsync(object? parameter)
{ {
actualProject.SetClient(_clientListViewModel.SelectedClient); actualProject.SetClient(_clientListViewModel.SelectedClient);
renavigator.Renavigate(new ClientEditViewModel(dataservice,actualProject,renavigator)); renavigator.Renavigate();
} }
} }
} }

View File

@@ -42,7 +42,7 @@ namespace DaSaSo.ViewModel.Commands
public override async Task ExecuteAsync(object? parameter) public override async Task ExecuteAsync(object? parameter)
{ {
_actualProject.SetProject(_projectListViewModel.SelectedProject); _actualProject.SetProject(_projectListViewModel.SelectedProject);
_renavigator.Renavigate(new ProjectEditViewModel(_dataService, _actualProject, _renavigator,_projectService)); _renavigator.Renavigate();
} }
} }
} }

View File

@@ -42,7 +42,7 @@ namespace DaSaSo.ViewModel.Commands
public override async Task ExecuteAsync(object? parameter) public override async Task ExecuteAsync(object? parameter)
{ {
_navigator.CurrentViewModel = null; _navigator.CurrentViewModel = null;
_renavigator.Renavigate(new SewerObjectListViewModel(_dataService, _actualProject, _sewerObjectService)); _renavigator.Renavigate();
} }
} }
} }

View File

@@ -8,6 +8,6 @@ namespace DaSaSo.ViewModel.Interface
{ {
public interface IRenavigator public interface IRenavigator
{ {
void Renavigate(BaseViewModel target); void Renavigate();
} }
} }

View File

@@ -62,7 +62,7 @@ namespace DaSaSo.ViewModel
private void SaveProject() private void SaveProject()
{ {
_dataservice.Update(_model.Id, _model); _dataservice.Update(_model.Id, _model);
_renavigator.Renavigate(new ProjectListViewModel(_dataservice, _actualProject, _renavigator, _projectService)); _renavigator.Renavigate();
} }
} }
} }

View File

@@ -65,5 +65,11 @@ namespace DaSaSo.ViewModel
_actualProject.SetSewerObject(sewer,false); _actualProject.SetSewerObject(sewer,false);
IsLoading = false; IsLoading = false;
} }
public override void Dispose()
{
_navigator.StateChanged -= () => OnPropertyChanged(nameof(CurrentSewerViewModel));
base.Dispose();
}
} }
} }

View File

@@ -7,19 +7,20 @@ using System.Threading.Tasks;
namespace DaSaSo.ViewModel.State.Navigation namespace DaSaSo.ViewModel.State.Navigation
{ {
public class ViewModelDelegateRenavigator : IRenavigator public class ViewModelDelegateRenavigator<TViewModel> : IRenavigator where TViewModel: BaseViewModel
{ {
private readonly IMainWindowNavigator _navigator; private readonly IMainWindowNavigator _navigator;
private readonly CreateViewModel<TViewModel> _createViewModel;
public ViewModelDelegateRenavigator(IMainWindowNavigator navigator, CreateViewModel<TViewModel> createViewModel)
public ViewModelDelegateRenavigator(IMainWindowNavigator navigator)
{ {
_navigator = navigator; _navigator = navigator;
_createViewModel = createViewModel;
} }
public void Renavigate(BaseViewModel target) public void Renavigate()
{ {
_navigator.CurrentViewModel = target; _navigator.CurrentViewModel = _createViewModel();
} }
} }
} }

View File

@@ -23,7 +23,7 @@ namespace DaSaSo.Wpf.HostBuilders
{ {
services.AddSingleton<IDataService<Client>, ClientDataService>(); services.AddSingleton<IDataService<Client>, ClientDataService>();
services.AddSingleton<IDataService<Project>, ProjectDataService>(); services.AddSingleton<IDataService<Project>, ProjectDataService>();
services.AddSingleton<IDataService<Buildingsite>, BuildingsiteDataService>(); services.AddTransient<IDataService<Buildingsite>, BuildingsiteDataService>();
services.AddSingleton<IDataService<SewerObject>, SewerObjectDataService>(); services.AddSingleton<IDataService<SewerObject>, SewerObjectDataService>();
services.AddSingleton<IDataService<SewerPoint>, SewerpointDataService>(); services.AddSingleton<IDataService<SewerPoint>, SewerpointDataService>();
services.AddSingleton<IProjectService, ProjectService>(); services.AddSingleton<IProjectService, ProjectService>();

View File

@@ -28,18 +28,38 @@ namespace DaSaSo.Wpf.HostBuilders
services.AddTransient<MainWindowViewModel>(); services.AddTransient<MainWindowViewModel>();
services.AddSingleton<ClientListViewModel>(); services.AddSingleton<ClientListViewModel>();
services.AddSingleton<ViewModelDelegateRenavigator<ClientListViewModel>>();
services.AddSingleton<ViewModelDelegateRenavigator<ClientEditViewModel>>();
services.AddSingleton<ViewModelDelegateRenavigator<ProjectListViewModel>>();
services.AddSingleton<ViewModelDelegateRenavigator<ProjectEditViewModel>>();
services.AddSingleton<ViewModelDelegateRenavigator<BuildingsiteListViewModel>>();
services.AddSingleton<ViewModelDelegateRenavigator<BuildingsiteEditViewModel>>();
services.AddSingleton<ViewModelDelegateRenavigator<SewerObjectListViewModel>>();
services.AddSingleton<CreateViewModel<HomeViewModel>>(services => services.AddSingleton<CreateViewModel<HomeViewModel>>(services =>
{ {
return () => new HomeViewModel(); return () => new HomeViewModel();
}); });
services.AddSingleton<CreateViewModel<ClientEditViewModel>>(services => services.AddTransient<CreateViewModel<ClientEditViewModel>>(services =>
{ {
return () => new ClientEditViewModel( return () => new ClientEditViewModel(
services.GetRequiredService<IDataService<Client>>(), services.GetRequiredService<IDataService<Client>>(),
services.GetRequiredService<IActualProject>(), services.GetRequiredService<IActualProject>(),
new ViewModelDelegateRenavigator( services.GetRequiredService<ViewModelDelegateRenavigator<ClientListViewModel>>()
services.GetRequiredService<IMainWindowNavigator>() );
));
});
services.AddTransient<CreateViewModel<ProjectEditViewModel>>(services =>
{
return () => new ProjectEditViewModel(
services.GetRequiredService<IDataService<Project>>(),
services.GetRequiredService<IActualProject>(),
services.GetRequiredService<ViewModelDelegateRenavigator<ProjectListViewModel>>(),
services.GetRequiredService<IProjectService>()
);
}); });
services.AddSingleton<CreateViewModel<HomeViewModel>>(services => services.AddSingleton<CreateViewModel<HomeViewModel>>(services =>
{ {
@@ -60,14 +80,14 @@ namespace DaSaSo.Wpf.HostBuilders
services.GetRequiredService<IDataService<SewerObject>>()); services.GetRequiredService<IDataService<SewerObject>>());
}); });
services.AddSingleton<CreateViewModel<ClientListViewModel>>(services => services.AddTransient<CreateViewModel<ClientListViewModel>>(services =>
{ {
return () => new ClientListViewModel( return () => new ClientListViewModel(
services.GetRequiredService<IDataService<Client>>(), services.GetRequiredService<IDataService<Client>>(),
services.GetRequiredService<IActualProject>(), services.GetRequiredService<IActualProject>(),
new ViewModelDelegateRenavigator( services.GetRequiredService<ViewModelDelegateRenavigator<ClientEditViewModel>>()
services.GetRequiredService<IMainWindowNavigator>() );
));
}); });
services.AddSingleton<CreateViewModel<SewerMainListViewModel>>(services => services.AddSingleton<CreateViewModel<SewerMainListViewModel>>(services =>
{ {
@@ -76,9 +96,7 @@ namespace DaSaSo.Wpf.HostBuilders
services.GetRequiredService<ISewerMainNavigator>(), services.GetRequiredService<ISewerMainNavigator>(),
services.GetRequiredService<IActualProject>(), services.GetRequiredService<IActualProject>(),
services.GetRequiredService<IViewModelSewerMainFactory>(), services.GetRequiredService<IViewModelSewerMainFactory>(),
new ViewModelDelegateRenavigator( services.GetRequiredService<ViewModelDelegateRenavigator<SewerObjectListViewModel>>(),
services.GetRequiredService<IMainWindowNavigator>()
),
services.GetRequiredService<ISewerObjectService>(), services.GetRequiredService<ISewerObjectService>(),
services.GetRequiredService<ISewerpointService>() services.GetRequiredService<ISewerpointService>()
); );
@@ -88,24 +106,31 @@ namespace DaSaSo.Wpf.HostBuilders
return () => new ProjectListViewModel( return () => new ProjectListViewModel(
services.GetRequiredService<IDataService<Project>>(), services.GetRequiredService<IDataService<Project>>(),
services.GetRequiredService<IActualProject>(), services.GetRequiredService<IActualProject>(),
new ViewModelDelegateRenavigator( services.GetRequiredService<ViewModelDelegateRenavigator<ProjectEditViewModel>>(),
services.GetRequiredService<IMainWindowNavigator>()),
services.GetRequiredService<IProjectService>() services.GetRequiredService<IProjectService>()
); );
}); });
services.AddSingleton<CreateViewModel<BuildingsiteListViewModel>>(services => services.AddTransient<CreateViewModel<BuildingsiteListViewModel>>(services =>
{ {
return () => new BuildingsiteListViewModel( return () => new BuildingsiteListViewModel(
services.GetRequiredService<IDataService<Buildingsite>>(), services.GetRequiredService<IDataService<Buildingsite>>(),
services.GetRequiredService<IActualProject>(), services.GetRequiredService<IActualProject>(),
new ViewModelDelegateRenavigator( services.GetRequiredService<ViewModelDelegateRenavigator<BuildingsiteEditViewModel>>(),
services.GetRequiredService<IMainWindowNavigator>()),
services.GetRequiredService<IBuildingsiteService>() services.GetRequiredService<IBuildingsiteService>()
); );
}); });
services.AddTransient<CreateViewModel<BuildingsiteEditViewModel>>(services =>
{
return () => new BuildingsiteEditViewModel(
services.GetRequiredService<IDataService<Buildingsite>>(),
services.GetRequiredService<IActualProject>(),
services.GetRequiredService<ViewModelDelegateRenavigator<BuildingsiteListViewModel>>()
);
});
services.AddSingleton<CreateViewModel<SewerObjectListViewModel>>(services => services.AddSingleton<CreateViewModel<SewerObjectListViewModel>>(services =>
{ {
return () => new SewerObjectListViewModel( return () => new SewerObjectListViewModel(

View File

@@ -1,6 +1,6 @@
{ {
"ConnectionStrings": { "ConnectionStrings": {
"databaseToUse": "sqlite", "databaseToUse": "default",
"default": "Host = localhost; Database = dasaso; Username = kansan; Password = kansan", "default": "Host = localhost; Database = dasaso; Username = kansan; Password = kansan",
"sqlite": "Data Source=database.db" "sqlite": "Data Source=database.db"
} }