Bewertungssystem angefangen

This commit is contained in:
2023-09-11 20:39:23 +02:00
parent f41cfff5c0
commit 560ac6246b
32 changed files with 9504 additions and 51 deletions

View File

@@ -0,0 +1,32 @@
using dcnsanplanung.shared.Model;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace dcnsanplanung.wpf.DesignViewModel
{
internal class DesignHaltungObjektViewModel
{
public string Objektbezeichnung { get; set; } = "SW01";
public string SK { get; set; } = "0";
public string DN { get; set; } = "200";
public string Material { get; set; } = "STZ";
static List<Sanierungsvorgabe> sanierung = new List<Sanierungsvorgabe>()
{
new Sanierungsvorgabe() { Vorgabe = "Fräsen"},
new Sanierungsvorgabe() { Vorgabe = "Reinigen"},
};
/*
public List<Schaden> Schaeden { get; set; } = new List<Schaden>()
{
new Schaden() { Entfernung = 10, Kodierung="BCA#D#A##", Schadensklasse=0, Sanierungsvorgaben = sanierung},
new Schaden() { Entfernung = 20, Kodierung="BCA#D#A##", Schadensklasse=0, Sanierungsvorgaben = sanierung},
new Schaden() { Entfernung = 30, Kodierung="BCA#D#A##", Schadensklasse=0, Sanierungsvorgaben = sanierung},
new Schaden() { Entfernung = 40, Kodierung="BCA#D#A##", Schadensklasse=0, Sanierungsvorgaben = sanierung},
};
*/
}
}

View File

@@ -4,11 +4,12 @@
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:dcnsanplanung.wpf"
xmlns:viewmodel="clr-namespace:dcnsanplanung.wpf.ViewModel"
mc:Ignorable="d"
Title="MainWindow" Height="450" Width="800" Loaded="Window_Loaded">
Title="MainWindow" Height="450" Width="800">
<Grid>
<StackPanel>
<ComboBox Name="Items" SelectionChanged="Items_SelectionChanged">
<ComboBox ItemsSource="{Binding VerfügbareHaltungen}" SelectedItem="{Binding SelectedHaltung}" SelectionChanged="Items_SelectionChanged">
<ComboBox.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal">
@@ -19,8 +20,8 @@
</DataTemplate>
</ComboBox.ItemTemplate>
</ComboBox>
<Button Name="LoadXML" Click="LoadXML_Click" Content="LoadXML" />
<Button Name="LoadXML" Command="{Binding LoadXMLFile}" Content="LoadXML" />
</StackPanel>
</Grid>

View File

@@ -1,4 +1,5 @@
using dcnsanplanung.shared.Model;
using dcnsanplanung.wpf.ViewModel;
using Schnittstelle.Import.XML.v2013.Model;
using System;
using System.Collections.Generic;
@@ -25,34 +26,20 @@ namespace dcnsanplanung.wpf
public MainWindow()
{
InitializeComponent();
this.DataContext = new MainWindowViewModel();
}
private async void LoadXML_Click(object sender, RoutedEventArgs e)
{
DAL.Helper.WriteToDatabase writer = new DAL.Helper.WriteToDatabase(@"C:\Users\damia\source\repos\dcnsanplanung\test_code.xml");
//await writer.WriteInHaltung();
await writer.WriteInLV();
}
private void Items_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
Haltung? selectedItem = Items.SelectedItem as Haltung;
if (selectedItem == null) return;
W_ObjektView w_ObjektView = new W_ObjektView(selectedItem);
MainWindowViewModel mwvd = (MainWindowViewModel)this.DataContext;
if (mwvd == null || mwvd.SelectedHaltung == null) return;
W_ObjektView w_ObjektView = new W_ObjektView();
w_ObjektView.DataContext = new HaltungObjektViewModel(mwvd.SelectedHaltung);
w_ObjektView.ShowDialog();
}
private async void Window_Loaded(object sender, RoutedEventArgs e)
{
//
DAL.Services.PostgresqlData.HaltungDataService haltungsdataservice = new DAL.Services.PostgresqlData.HaltungDataService("Host = localhost; Database = sanplaner; Username = dcnsanplaner; Password = sanplaner");
var s = await haltungsdataservice.GetAllByProjekt(0);
foreach(var item in s)
{
Items.Items.Add(item);
}
}
}
}

View File

@@ -8,11 +8,11 @@ using System.Threading.Tasks;
namespace dcnsanplanung.wpf.ViewModel
{
internal class BaseViewModel : INotifyPropertyChanged
internal abstract class BaseViewModel : INotifyPropertyChanged
{
public event PropertyChangedEventHandler? PropertyChanged;
void OnPropertyChanged([CallerMemberName] string propertyName = "")
protected void OnPropertyChanged([CallerMemberName] string propertyName = "")
{
if(PropertyChanged != null)
{

View File

@@ -0,0 +1,25 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Input;
namespace dcnsanplanung.wpf.ViewModel
{
internal class CellViewModel : BaseViewModel, ICellViewModel
{
private ICell _cell;
public ICell Cell {
get { return _cell; }
set {
_cell = value;
OnPropertyChanged(nameof(_cell));
}
}
public ICommand ChangeCellStateCommand { get; }
}
}

View File

@@ -0,0 +1,45 @@
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Input;
using System.Windows.Media;
namespace dcnsanplanung.wpf.ViewModel
{
internal class DesignDynamicGridViewModel : BaseViewModel
{
public ObservableCollection<ObservableCollection<ICellViewModel>> Cells { get; } = null;
public int GridWidth { get; } = 5;
public int GridHeight { get; } = 5;
public Color StartColor { get; set; } = Colors.AliceBlue;
public Color FinishColor { get; set; } = Colors.DarkBlue;
public Color BorderColor { get; set; } = Colors.DarkGray;
public DesignDynamicGridViewModel()
{
Cells = new ObservableCollection<ObservableCollection<ICellViewModel>>();
ICellViewModel cell = new CellViewModel();
Cells.Add(new ObservableCollection<ICellViewModel>()
{
});
}
}
public interface ICellViewModel
{
ICell Cell { get; set; }
ICommand ChangeCellStateCommand { get; }
}
public interface ICell
{
/// <summary>
/// State of the cell.
/// </summary>
bool State { get; set; }
}
}

View File

@@ -0,0 +1,45 @@
using CommunityToolkit.Mvvm.Input;
using dcnsanplanung.DAL.Services.PostgresqlData;
using dcnsanplanung.shared.Model;
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Input;
namespace dcnsanplanung.wpf.ViewModel
{
internal class HaltungObjektViewModel : BaseViewModel
{
private Haltung model;
public string Objektbezeichnung { get => model.Objektbezeichnung; }
public string SK { get => model.Bewertungklasse.ToString(); }
public string DN { get => model.DN.ToString(); }
public string Material { get => model.Material; }
public List<Schaden> Schaeden { get => model.Kodierungen; }
public HaltungObjektViewModel(Haltung selectedHaltung)
{
model = selectedHaltung;
LadeSchaeden();
}
private async void LadeSchaeden()
{
SchadenDataService schadenDataService = new SchadenDataService("Host = localhost; Database = sanplaner; Username = dcnsanplaner; Password = sanplaner");
IEnumerable<Schaden> src_kodierung = await schadenDataService.GetAllByHaltung(model);
model.Kodierungen = src_kodierung.ToList();
OnPropertyChanged(nameof(Schaeden));
}
}
}

View File

@@ -0,0 +1,61 @@
using CommunityToolkit.Mvvm.Input;
using dcnsanplanung.shared.Model;
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Input;
namespace dcnsanplanung.wpf.ViewModel
{
internal class MainWindowViewModel : BaseViewModel
{
public List<Haltung> VerfügbareHaltungen { get; set; } = new List<Haltung>();
public ICommand LoadXMLFile { get; set; }
private Haltung? selectedHaltung;
public Haltung? SelectedHaltung
{
get => selectedHaltung;
set
{
if(selectedHaltung != value)
{
selectedHaltung = value;
OnPropertyChanged();
}
}
}
public MainWindowViewModel()
{
LoadHaltungen();
LoadXMLFile = new RelayCommand(() => dooAsync());
}
async Task dooAsync()
{
DAL.Helper.WriteToDatabase writer = new DAL.Helper.WriteToDatabase(@"D:\Airbus\Airbus Nordenham RW Viewer für Sanierungskonzept\Airbus Nordenham RW.xml");
await writer.WriteInHaltung();
//Debugger.Break();
await writer.WriteInLV();
}
private async void LoadHaltungen()
{
DAL.Services.PostgresqlData.HaltungDataService haltungDataService = new DAL.Services.PostgresqlData.HaltungDataService("Host = localhost; Database = sanplaner; Username = dcnsanplaner; Password = sanplaner");
var s = await haltungDataService.GetAllByProjekt(0);
foreach(var item in s)
{
VerfügbareHaltungen.Add(item);
}
OnPropertyChanged(nameof(VerfügbareHaltungen));
}
}
}

View File

@@ -0,0 +1,44 @@
<UserControl x:Class="dcnsanplanung.wpf.Views.DynamicGridView"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:viewModels="clr-namespace:dcnsanplanung.wpf.ViewModel"
xmlns:local="clr-namespace:dcnsanplanung.wpf.Views"
mc:Ignorable="d"
d:DesignHeight="450" d:DesignWidth="800">
<UserControl.Resources>
<DataTemplate x:Key="CellTemplate">
<Border BorderBrush="Transparent"
BorderThickness="1 0 1 0"
DataContext="{Binding}"></Border>
</DataTemplate>
</UserControl.Resources>
<Grid
d:DataContext="{d:DesignInstance Type=viewModels:DesignDynamicGridViewModel, IsDesignTimeCreatable=True}">
<DataGrid Name="DynamicGrid"
DataContext="{Binding}"
ItemsSource="{Binding Path=Cells}"
IsEnabled="True"
IsTabStop="False"
>
<DataGrid.Columns>
<DataGridTemplateColumn Width="*">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<ItemsControl ItemsSource="{Binding}"
ItemTemplate="{DynamicResource CellTemplate}">
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<StackPanel Orientation="Horizontal"/>
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
</ItemsControl>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
</DataGrid.Columns>
</DataGrid>
</Grid>
</UserControl>

View File

@@ -0,0 +1,28 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
namespace dcnsanplanung.wpf.Views
{
/// <summary>
/// Interaktionslogik für DynamicGridView.xaml
/// </summary>
public partial class DynamicGridView : UserControl
{
public DynamicGridView()
{
InitializeComponent();
}
}
}

View File

@@ -3,11 +3,148 @@
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:designViewModel="clr-namespace:dcnsanplanung.wpf.DesignViewModel"
xmlns:local="clr-namespace:dcnsanplanung.wpf"
mc:Ignorable="d"
Title="W_ObjektView" Height="450" Width="800">
xmlns:views="clr-namespace:dcnsanplanung.wpf.Views"
Title="W_ObjektView" Height="450" Width="800" d:DataContext="{d:DesignInstance Type=designViewModel:DesignHaltungObjektViewModel, IsDesignTimeCreatable=True}">
<Grid>
<Label Name="Schadensklasse" />
<Grid.RowDefinitions>
<RowDefinition Height="auto" />
<RowDefinition />
</Grid.RowDefinitions>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition />
<ColumnDefinition />
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="auto" />
<RowDefinition Height="auto"/>
<RowDefinition Height="auto"/>
<RowDefinition Height="auto"/>
<RowDefinition Height="auto"/>
<RowDefinition Height="auto"/>
</Grid.RowDefinitions>
<Label Content="Objektbezeichnung" />
<Label Grid.Column="1" Content="{Binding Objektbezeichnung}" />
<Label Grid.Row="1" Content="Schadenklasse" />
<Label Grid.Row="1" Grid.Column="1" Content="{Binding SK}" />
<Label Grid.Row="2" Content="Durchmesser" />
<Label Grid.Row="2" Grid.Column="1" Content="{Binding DN}" />
<Label Grid.Row="3" Content="Material" />
<Label Grid.Row="3" Grid.Column="1" Content="{Binding Material}" />
</Grid>
<!--<views:DynamicGridView Grid.Row="1" x:Name="DynamicGridView" DataContext="{Binding Schaeden}"></views:DynamicGridView>-->
<ListView Grid.Row="1" ItemsSource="{Binding Schaeden}" AlternationCount="2">
<ListView.ItemContainerStyle>
<Style TargetType="ListViewItem">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="ListViewItem">
<Border BorderBrush="WhiteSmoke">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="50" />
<ColumnDefinition Width="80" />
<ColumnDefinition Width="10" />
<ColumnDefinition Width="*" />
<ColumnDefinition Width="80" />
</Grid.ColumnDefinitions>
<TextBlock Text="{Binding Entfernung}" />
<TextBlock Grid.Column="1" Text="{Binding Kodierung}" />
<TextBlock Grid.Column="2" Text="{Binding Schadensklasse}" />
<ItemsControl Grid.Column="3" ItemsSource="{Binding Sanierungsvorgaben}">
<ItemsControl.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding Vorgabe}" />
</DataTemplate>
</ItemsControl.ItemTemplate>
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<StackPanel Orientation="Horizontal" IsItemsHost="True" />
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
</ItemsControl>
<Button Grid.Column="4" Content="Editieren" />
</Grid>
</Border>
<ControlTemplate.Triggers>
<Trigger Property="ItemsControl.AlternationIndex" Value="0">
<Setter Property="Background" Value="White" />
</Trigger>
<Trigger Property="ItemsControl.AlternationIndex" Value="1">
<Setter Property="Background" Value="LightGray" />
</Trigger>
<Trigger Property="IsSelected" Value="True">
<Setter Property="Background" Value="LightBlue" />
</Trigger>
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="Background" Value="DeepSkyBlue" />
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</ListView.ItemContainerStyle>
<ListView.Style>
<Style TargetType="ListView">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="ListView">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="auto"/>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="auto" />
<RowDefinition Height="*" />
</Grid.RowDefinitions>
<ItemsControl Background="Green" ItemsSource="{Binding Schaeden}">
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<StackPanel Orientation="Horizontal" IsItemsHost="True" />
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
<ItemsControl.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding}" />
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
<ScrollViewer HorizontalScrollBarVisibility="Disabled" VerticalScrollBarVisibility="Auto" Grid.Row="1">
<ItemsPresenter />
</ScrollViewer>
</Grid>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</ListView.Style>
</ListView>
<!--<DataGrid Grid.Row="1" ItemsSource="{Binding Schaeden}" AutoGenerateColumns="False">
<DataGrid.Columns>
<DataGridTextColumn Header="Entfernung" Binding="{Binding Entfernung}" />
<DataGridTextColumn Header="Kodierung" Binding="{Binding Kodierung}" />
<DataGridTextColumn Header="Schadensklasse" Binding="{Binding Schadensklasse}" />
</DataGrid.Columns>
</DataGrid>-->
</Grid>
</Window>

View File

@@ -21,11 +21,9 @@ namespace dcnsanplanung.wpf
/// </summary>
public partial class W_ObjektView : Window
{
public W_ObjektView(Haltung haltung)
public W_ObjektView()
{
InitializeComponent();
Schadensklasse.Content = haltung.Bewertungklasse;
InitializeComponent();
}
}
}

View File

@@ -7,6 +7,10 @@
<UseWPF>true</UseWPF>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="CommunityToolkit.Mvvm" Version="8.2.0" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\dcnsanplanung.DAL\dcnsanplanung.DAL.csproj" />
<ProjectReference Include="..\dcnsanplanung.shared\dcnsanplanung.shared.csproj" />