Verschiedene Oberflächen + bessere UI

This commit is contained in:
2025-04-10 13:46:58 +02:00
parent 0b1336b72f
commit 1ed15bc562
21 changed files with 815 additions and 270 deletions

View File

@@ -99,6 +99,9 @@
<Compile Include="View\Detail\AI\AiConfigView.xaml.cs">
<DependentUpon>AiConfigView.xaml</DependentUpon>
</Compile>
<Compile Include="View\Detail\AI\AiConversationChatModalPopup.xaml.cs">
<DependentUpon>AiConversationChatModalPopup.xaml</DependentUpon>
</Compile>
<Compile Include="View\TemplateSelectors\AiConversationMessageTemplateSelector.cs" />
<Compile Include="View\Windows\AnimatedBeWoWindow.xaml.cs">
<DependentUpon>AnimatedBeWoWindow.xaml</DependentUpon>
@@ -107,6 +110,10 @@
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
</Page>
<Page Include="View\Detail\AI\AiConversationChatModalPopup.xaml">
<Generator>MSBuild:Compile</Generator>
<SubType>Designer</SubType>
</Page>
<Page Include="View\Windows\AnimatedBeWoWindow.xaml">
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
@@ -439,7 +446,7 @@
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
</Page>
<Page Include="View\Detail\AiConversationChatView.xaml">
<Page Include="View\Detail\AI\AiConversationChatView.xaml">
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
</Page>
@@ -1374,7 +1381,7 @@
<Compile Include="View\Detail\Administration\SoziotherapieSettingsView.xaml.cs">
<DependentUpon>SoziotherapieSettingsView.xaml</DependentUpon>
</Compile>
<Compile Include="View\Detail\AiConversationChatView.xaml.cs">
<Compile Include="View\Detail\AI\AiConversationChatView.xaml.cs">
<DependentUpon>AiConversationChatView.xaml</DependentUpon>
</Compile>
<Compile Include="View\Detail\CustomerVermittlungArbeitView.xaml.cs">

View File

@@ -608,11 +608,11 @@
Grid.ColumnSpan="2"
Padding="5,5,5,5"
HorizontalAlignment="Stretch"
VerticalAlignment="Stretch">
VerticalAlignment="Stretch">
<ContentPresenter
HorizontalAlignment="Stretch"
VerticalAlignment="Stretch"
Margin="0,0,0,0"
HorizontalAlignment="Stretch"
VerticalAlignment="Stretch"
Content="{TemplateBinding Content}"
ContentStringFormat="{TemplateBinding ContentStringFormat}"
ContentTemplate="{TemplateBinding ContentTemplate}"

View File

@@ -52,8 +52,6 @@ namespace BeWo
public static MainControl MainControl;
public static AnimatedBeWoWindow CurrentAnimatedBeWoWindow;
public static string ShortVersion = "3.24";
public static string Version = "Version 3.24";
@@ -1350,6 +1348,10 @@ namespace BeWo
{
abc.Close();
}
else if (title.IndexOf("Fenster") >= 0)
{
abc.Close();
}
}
MainControl.HideCurrentModalViewWindows();

View File

@@ -25,6 +25,7 @@ using BeWo.View.Detail.Zeiterfassung;
using BeWo.View.Document;
using BeWo.View.Master;
using BeWo.View.Navigation;
using BeWo.View.Windows;
using BeWo.ViewModel;
using BS.Shared;
@@ -177,6 +178,8 @@ namespace BeWo
UpdateMandator();
}
public AnimatedBeWoWindow CurrentAnimatedBeWoWindow { get; set; }
public List<ModalViewWindow> OpenedModalViewWindows { get; set; }
internal Dictionary<UIContext, BeWoView> Views
@@ -464,6 +467,16 @@ namespace BeWo
}
}
public void ShowViewAsModalPopup(string title, Control control, HorizontalAlignment horizontalAlignment = HorizontalAlignment.Center, VerticalAlignment verticalAlignment = VerticalAlignment.Center)
{
var groupbox = new GroupBox();
groupbox.Header = title;
groupbox.Content = control;
ShowControlAsModalPopup(groupbox, horizontalAlignment, verticalAlignment);
}
public void ShowControlAsModalPopup(Control control)
{
ShowControlAsModalPopup(control, HorizontalAlignment.Center, VerticalAlignment.Center);
@@ -491,7 +504,7 @@ namespace BeWo
Grid.SetColumnSpan(control, 3);
Grid.SetRowSpan(control, 3);
grid_main.Children.Add(control);
Panel.SetZIndex(control, int.MaxValue);
Panel.SetZIndex(control, 1000);
});
}
@@ -928,7 +941,7 @@ namespace BeWo
grid_main.Children.Add(ModalPopupBackGround);
Panel.SetZIndex(ModalPopupBackGround, int.MaxValue);
Panel.SetZIndex(ModalPopupBackGround, 500);
}
private void logoutanimation_Completed(object sender, EventArgs e)

View File

@@ -1007,10 +1007,10 @@ namespace BeWo.ServiceProxy
Monitor.Enter(_Lock);
if ((++_RunningAsyncs) == 1 && BeWoApp.MainControl != null)
{
if (BeWoApp.CurrentAnimatedBeWoWindow is null)
if (BeWoApp.MainControl.CurrentAnimatedBeWoWindow is null)
BeWoApp.MainControl.StartWaiting();
else
BeWoApp.CurrentAnimatedBeWoWindow.StartWaiting();
BeWoApp.MainControl.CurrentAnimatedBeWoWindow.StartWaiting();
}
Monitor.Exit(_Lock);
@@ -1021,7 +1021,7 @@ namespace BeWo.ServiceProxy
Monitor.Enter(_Lock);
if ((--_RunningAsyncs) == 0 && BeWoApp.MainControl != null)
{
BeWoApp.CurrentAnimatedBeWoWindow?.EndWaiting();
BeWoApp.MainControl.CurrentAnimatedBeWoWindow?.EndWaiting();
BeWoApp.MainControl.EndWaiting();
}

View File

@@ -3,7 +3,8 @@
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:controls="clr-namespace:BeWo.Controls;assembly=BeWo.Controls"
xmlns:dxe="http://schemas.devexpress.com/winfx/2008/xaml/editors"
xmlns:uc="clr-namespace:BeWo.View.Controls" xmlns:templateselectors="clr-namespace:BeWo.View.TemplateSelectors">
xmlns:templateselectors="clr-namespace:BeWo.View.TemplateSelectors"
xmlns:uc="clr-namespace:BeWo.View.Controls">
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="Colors\Colors.xaml" />
@@ -43,6 +44,6 @@
<Style BasedOn="{StaticResource BaseRadioButton}" TargetType="RadioButton" />
<Style BasedOn="{StaticResource TextBoxBase}" TargetType="TextBox" />
<Style BasedOn="{StaticResource BaseTextEdit}" TargetType="dxe:TextEdit" />
<!-- Default Styles -->
<!-- Default Styles -->
</ResourceDictionary>

View File

@@ -1,5 +1,6 @@
using BeWo.View.Controls;
using BeWo.View.Detail;
using BeWo.View.Detail.AI;
using BeWo.View.Windows;
using BeWo.ViewModel;
using BS.Shared.Extensions;
@@ -23,11 +24,7 @@ namespace BeWo.View
control.ViewModel.UIContext = (int)(UIContext.ServiceRecord);
control.ViewModel.ContextBeWoObjects = context;
var window = GetAnimatedBeWoWindow(title, control, 400, height, 1000, 400, width, 1600);
//var window = GetGenericBeWoWindow(title, 400, height, 1000, 600, width, 1600);
//window.GroupBoxContent = control;
var window = GetAnimatedBeWoWindow(title, control, 400, height, 1000, 500, width, 1600);
return window;
}

View File

@@ -1,115 +1,198 @@
<UserControl x:Class="BeWo.View.Controls.ServiceRecordPopUp"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:localViewModel="clr-namespace:BeWo.ViewModel">
<Grid>
<TextBlock Name="tb_nodata" Background="White" Padding="20" Text="Keine Eintragungen vorhanden"
Foreground="Black" FontSize="14" />
<ListBox ItemsSource="{Binding}" ScrollViewer.CanContentScroll="True" x:Name="serviceRecordGrid" Grid.Row="0"
Grid.Column="1" IsSynchronizedWithCurrentItem="True" TabIndex="1" AlternationCount="-1"
Background="{x:Null}" ItemTemplate="{DynamicResource serviceRecordListBoxItemTemplate}"
Style="{DynamicResource ServiceRecordListStyle}" HorizontalContentAlignment="Stretch"
ItemContainerStyle="{DynamicResource serviceRecordListBoxItemStyle}" >
<ListBox.Resources>
<ControlTemplate x:Key="ServiceRecordListBoxTemplate" TargetType="{x:Type ListBox}">
<Border x:Name="Bd" SnapsToDevicePixels="True" Background="{TemplateBinding Background}"
BorderBrush="{TemplateBinding BorderBrush}">
<ScrollViewer Focusable="False" Padding="{TemplateBinding Padding}"
HorizontalScrollBarVisibility="Disabled">
<ItemsPresenter SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" />
</ScrollViewer>
<UserControl
x:Class="BeWo.View.Controls.ServiceRecordPopUp"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:localViewModel="clr-namespace:BeWo.ViewModel">
<Grid>
<TextBlock
Name="tb_nodata"
Padding="20"
Background="White"
FontSize="14"
Foreground="Black"
Text="Keine Eintragungen vorhanden" />
<ListBox
x:Name="serviceRecordGrid"
Grid.Row="0"
Grid.Column="1"
HorizontalContentAlignment="Stretch"
AlternationCount="-1"
Background="{x:Null}"
IsSynchronizedWithCurrentItem="True"
ItemContainerStyle="{DynamicResource serviceRecordListBoxItemStyle}"
ItemTemplate="{DynamicResource serviceRecordListBoxItemTemplate}"
ItemsSource="{Binding}"
ScrollViewer.CanContentScroll="True"
Style="{DynamicResource ServiceRecordListStyle}"
TabIndex="1">
<ListBox.Resources>
<ControlTemplate x:Key="ServiceRecordListBoxTemplate" TargetType="{x:Type ListBox}">
<Border
x:Name="Bd"
Background="{TemplateBinding Background}"
BorderBrush="{TemplateBinding BorderBrush}"
SnapsToDevicePixels="True">
<ScrollViewer
Padding="{TemplateBinding Padding}"
Focusable="False"
HorizontalScrollBarVisibility="Disabled">
<ItemsPresenter SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" />
</ScrollViewer>
</Border>
</ControlTemplate>
<Style x:Key="ServiceRecordListStyle" TargetType="{x:Type ListBox}">
<Setter Property="Template" Value="{StaticResource ServiceRecordListBoxTemplate}" />
<Setter Property="Padding" Value="2,0,2,2" />
</Style>
<Style x:Key="serviceRecordListBoxItemStyle" TargetType="{x:Type ListBoxItem}">
<Setter Property="Background" Value="#00FFFFFF" />
<Setter Property="HorizontalContentAlignment" Value="{Binding Path=HorizontalContentAlignment, RelativeSource={RelativeSource FindAncestor, AncestorLevel=1, AncestorType={x:Type ItemsControl}}}" />
<Setter Property="VerticalContentAlignment" Value="{Binding Path=VerticalContentAlignment, RelativeSource={RelativeSource FindAncestor, AncestorLevel=1, AncestorType={x:Type ItemsControl}}}" />
<Setter Property="Padding" Value="2,0,0,0" />
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type ListBoxItem}">
<Border
x:Name="Bd"
Padding="{TemplateBinding Padding}"
Background="{TemplateBinding Background}"
BorderBrush="{TemplateBinding BorderBrush}"
BorderThickness="{TemplateBinding BorderThickness}"
SnapsToDevicePixels="True">
<ContentPresenter
HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}"
VerticalAlignment="{TemplateBinding VerticalContentAlignment}"
Content="{TemplateBinding Content}"
ContentStringFormat="{TemplateBinding ContentStringFormat}"
ContentTemplate="{TemplateBinding ContentTemplate}"
SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" />
</Border>
<ControlTemplate.Triggers>
<Trigger Property="IsEnabled" Value="False">
<Setter Property="Foreground" Value="{DynamicResource {x:Static SystemColors.GrayTextBrushKey}}" />
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
<DataTemplate x:Key="serviceRecordListBoxItemTemplate" DataType="{x:Type localViewModel:ServiceRecordVM}">
<Grid
x:Name="template"
HorizontalAlignment="Stretch"
VerticalAlignment="Stretch">
<Border
x:Name="ItemBorder"
Width="Auto"
Height="Auto"
Margin="0,0,0,3"
Padding="6"
Background="{Binding Path=BackgroundBrush}"
BorderBrush="#FF7E7E7E"
BorderThickness="1,1,1,1"
CornerRadius="4,4,4,4">
<Grid TextBlock.Foreground="{Binding Path=TextBlock.Foreground, RelativeSource={RelativeSource TemplatedParent}}">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="12" />
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="12" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="17" />
<RowDefinition Height="14" />
<RowDefinition Height="14" />
<RowDefinition Height="14" />
<RowDefinition Height="14" />
<RowDefinition Height="14" />
<RowDefinition Height="24" />
</Grid.RowDefinitions>
<TextBlock
Grid.Row="1"
Grid.Column="0"
Text="Minuten (gerundet):" />
<TextBlock
Grid.Row="2"
Grid.Column="0"
Text="Leistungskategorie:" />
<TextBlock
Grid.Row="3"
Grid.Column="0"
Text="Leistung:" />
<TextBlock
Grid.Row="4"
Grid.Column="0"
Text="Angelegt von:" />
<TextBlock
Grid.Row="5"
Grid.Column="0"
Text="Angelegt am:" />
<TextBlock
Grid.Row="0"
Grid.Column="0"
Grid.ColumnSpan="5"
FontSize="13"
FontWeight="Bold"
Foreground="#FF494949"
Text="{Binding Path=LongDateString}" />
<TextBlock
Grid.Row="1"
Grid.Column="2"
Background="{x:Null}"
FontWeight="Bold"
Foreground="#FF4E7BC4"
Text="{Binding Path=DurationAndRoundedDuration}" />
<TextBlock
Grid.Row="2"
Grid.Column="2"
Text="{Binding Path=Category}" />
<TextBlock
Grid.Row="3"
Grid.Column="2"
Text="{Binding Path=ServiceDescription}" />
<TextBlock
Grid.Row="4"
Grid.Column="2"
Text="{Binding Path=EmployeeName}" />
<TextBlock
Grid.Row="5"
Grid.Column="2"
Text="{Binding Path=InsertedOn}" />
<TextBox
Grid.Row="1"
Grid.RowSpan="6"
Grid.Column="4"
MaxHeight="200"
Margin="0,0,0,0"
HorizontalAlignment="Stretch"
AutoWordSelection="True"
Background="{x:Null}"
BorderBrush="{x:Null}"
BorderThickness="0"
Focusable="True"
HorizontalScrollBarVisibility="Hidden"
IsEnabled="True"
IsReadOnly="True"
SnapsToDevicePixels="True"
Tag="{Binding}"
Text="{Binding Path=Notice}"
TextWrapping="Wrap"
VerticalScrollBarVisibility="Auto" />
</Grid>
</Border>
</ControlTemplate>
<Style x:Key="ServiceRecordListStyle" TargetType="{x:Type ListBox}">
<Setter Property="Template" Value="{StaticResource ServiceRecordListBoxTemplate}" />
<Setter Property="Padding" Value="2,0,2,2" />
</Style>
<Style x:Key="serviceRecordListBoxItemStyle" TargetType="{x:Type ListBoxItem}">
<Setter Property="Background" Value="#00FFFFFF" />
<Setter Property="HorizontalContentAlignment"
Value="{Binding Path=HorizontalContentAlignment, RelativeSource={RelativeSource FindAncestor, AncestorLevel=1, AncestorType={x:Type ItemsControl}}}" />
<Setter Property="VerticalContentAlignment"
Value="{Binding Path=VerticalContentAlignment, RelativeSource={RelativeSource FindAncestor, AncestorLevel=1, AncestorType={x:Type ItemsControl}}}" />
<Setter Property="Padding" Value="2,0,0,0" />
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type ListBoxItem}">
<Border x:Name="Bd" SnapsToDevicePixels="True" Background="{TemplateBinding Background}"
BorderBrush="{TemplateBinding BorderBrush}"
BorderThickness="{TemplateBinding BorderThickness}"
Padding="{TemplateBinding Padding}">
<ContentPresenter HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}"
VerticalAlignment="{TemplateBinding VerticalContentAlignment}"
SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}"
Content="{TemplateBinding Content}"
ContentStringFormat="{TemplateBinding ContentStringFormat}"
ContentTemplate="{TemplateBinding ContentTemplate}" />
</Border>
<ControlTemplate.Triggers>
<Trigger Property="IsEnabled" Value="False">
<Setter Property="Foreground"
Value="{DynamicResource {x:Static SystemColors.GrayTextBrushKey}}" />
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
<DataTemplate x:Key="serviceRecordListBoxItemTemplate" DataType="{x:Type localViewModel:ServiceRecordVM}">
<Grid x:Name="template" HorizontalAlignment="Stretch" VerticalAlignment="Stretch">
<Border x:Name="ItemBorder" CornerRadius="4,4,4,4" Width="Auto" Height="Auto" Padding="6"
Margin="0,0,0,3" Background="{Binding Path=BackgroundBrush}" BorderThickness="1,1,1,1"
BorderBrush="#FF7E7E7E">
<Grid TextBlock.Foreground="{Binding Path=TextBlock.Foreground, RelativeSource={RelativeSource TemplatedParent}}">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="12" />
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="12" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="17" />
<RowDefinition Height="14" />
<RowDefinition Height="14" />
<RowDefinition Height="14" />
<RowDefinition Height="14" />
<RowDefinition Height="14" />
<RowDefinition Height="24" />
</Grid.RowDefinitions>
<TextBlock Grid.Column="0" Grid.Row="1" Text="Minuten (gerundet):" />
<TextBlock Grid.Column="0" Grid.Row="2" Text="Leistungskategorie:" />
<TextBlock Grid.Column="0" Grid.Row="3" Text="Leistung:" />
<TextBlock Grid.Column="0" Grid.Row="4" Text="Angelegt von:" />
<TextBlock Grid.Column="0" Grid.Row="5" Text="Angelegt am:" />
<TextBlock Grid.Column="0" Grid.Row="0" Text="{Binding Path=LongDateString}"
Grid.ColumnSpan="5" FontWeight="Bold" FontSize="13" Foreground="#FF494949" />
<TextBlock Grid.Column="2" Grid.Row="1" Text="{Binding Path=DurationAndRoundedDuration}"
FontWeight="Bold" Background="{x:Null}" Foreground="#FF4E7BC4" />
<TextBlock Grid.Column="2" Grid.Row="2" Text="{Binding Path=Category}" />
<TextBlock Grid.Column="2" Grid.Row="3" Text="{Binding Path=ServiceDescription}" />
<TextBlock Grid.Column="2" Grid.Row="4" Text="{Binding Path=EmployeeName}" />
<TextBlock Grid.Column="2" Grid.Row="5" Text="{Binding Path=InsertedOn}" />
<TextBox Grid.Column="4" Grid.Row="1" Grid.RowSpan="6" HorizontalAlignment="Stretch"
Text="{Binding Path=Notice}" HorizontalScrollBarVisibility="Hidden"
VerticalScrollBarVisibility="Auto" Margin="0,0,0,0" BorderThickness="0"
BorderBrush="{x:Null}" Background="{x:Null}" SnapsToDevicePixels="True"
MaxHeight="200" TextWrapping="Wrap" AutoWordSelection="True" IsReadOnly="True"
Tag="{Binding}" IsEnabled="True" Focusable="True" />
</Grid>
</Border>
</Grid>
<DataTemplate.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="Background" TargetName="ItemBorder"
Value="{Binding Path=MouseOverBackgroundBrush}" />
</Trigger>
</DataTemplate.Triggers>
</DataTemplate>
</ListBox.Resources>
</ListBox>
</Grid>
</Grid>
<DataTemplate.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter TargetName="ItemBorder" Property="Background" Value="{Binding Path=MouseOverBackgroundBrush}" />
</Trigger>
</DataTemplate.Triggers>
</DataTemplate>
</ListBox.Resources>
</ListBox>
</Grid>
</UserControl>

View File

@@ -21,6 +21,7 @@
<Setter Property="Minimum" Value="0" />
<Setter Property="Maximum" Value="1" />
<Setter Property="SmallChange" Value="0.01" />
<Setter Property="IsMoveToPointEnabled" Value="True" />
</Style>
</ResourceDictionary>
</UserControl.Resources>

View File

@@ -0,0 +1,54 @@
<localView:BeWoView
x:Class="BeWo.View.Detail.AI.AiConversationChatModalPopup"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:ai="clr-namespace:BeWo.View.Detail.AI"
xmlns:core="clr-namespace:BS.Shared.Core;assembly=BS.Shared"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:dx="http://schemas.devexpress.com/winfx/2008/xaml/core"
xmlns:dxa="http://schemas.devexpress.com/winfx/2008/xaml/accordion"
xmlns:dxwui="http://schemas.devexpress.com/winfx/2008/xaml/windowsui"
xmlns:listviewmodel="clr-namespace:BeWo.ViewModel.ListViewModel"
xmlns:localView="clr-namespace:BeWo.View"
xmlns:markup="clr-namespace:BeWo.MultiLanguage.Markup"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:t="clr-namespace:BeWo.MultiLanguage.Markup"
xmlns:uc="clr-namespace:BeWo.Controls;assembly=BeWo.Controls"
xmlns:viewmodel="clr-namespace:BeWo.ViewModel"
Width="1200"
Height="800"
HorizontalAlignment="Stretch"
VerticalAlignment="Stretch"
Focusable="True"
mc:Ignorable="d">
<localView:BeWoView.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="..\..\..\Styles\ModernOrangeBlack.xaml" />
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</localView:BeWoView.Resources>
<localView:BeWoView.DataContext>
<listviewmodel:AiConversationListVM />
</localView:BeWoView.DataContext>
<Grid>
<GroupBox Style="{StaticResource PopUpWindowStyle}">
<GroupBox.Header>
<StackPanel
Margin="0"
VerticalAlignment="Center"
Orientation="Horizontal">
<TextBlock
Margin="4,4,0,0"
Padding="0,0,0,0"
VerticalAlignment="Stretch"
Background="{x:Null}"
FontSize="20"
Foreground="#FFFFFFFF"
Text="Zeiterfassung KI Chat" />
</StackPanel>
</GroupBox.Header>
<ai:AiConversationChatView DataContext="{Binding}" />
</GroupBox>
</Grid>
</localView:BeWoView>

View File

@@ -0,0 +1,39 @@
using BeWo.ServiceProxy;
using BeWo.ViewModel.ListViewModel;
using BS.Shared.Extensions;
using DevExpress.Mvvm;
using System;
using System.Collections.Generic;
using System.Collections.Specialized;
using System.Diagnostics;
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 BeWo.View.Detail.AI
{
/// <summary>
/// Interaktionslogik für AiConversationChatView.xaml
/// </summary>
public partial class AiConversationChatModalPopup : BeWoView
{
public AiConversationChatModalPopup()
{
InitializeComponent();
}
public AiConversationListVM ViewModel
{
get => DataContext as AiConversationListVM;
}
}
}

View File

@@ -1,5 +1,5 @@
<localView:BeWoView
x:Class="BeWo.View.Detail.AiConversationChatView"
x:Class="BeWo.View.Detail.AI.AiConversationChatView"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:ai="clr-namespace:BeWo.View.Detail.AI"
@@ -27,7 +27,7 @@
<localView:BeWoView.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="..\..\Styles\ModernOrangeBlack.xaml" />
<ResourceDictionary Source="..\..\..\Styles\ModernOrangeBlack.xaml" />
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</localView:BeWoView.Resources>
@@ -129,45 +129,20 @@
</Grid>
<Grid Grid.Column="1">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" />
<ColumnDefinition Width="100*" MaxWidth="100" />
<ColumnDefinition Width="10000*" MaxWidth="1200" />
<ColumnDefinition Width="100*" MaxWidth="100" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="*" />
<RowDefinition Height="auto" />
</Grid.RowDefinitions>
<Grid Grid.Row="1" Visibility="{Binding SelectedVM, Converter={StaticResource ObjectVisibilityConverter}}">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="0" />
<ColumnDefinition Width="*" />
<ColumnDefinition Width="auto" />
</Grid.ColumnDefinitions>
<!--<TextBox
x:Name="txt_input_context"
Height="100"
MaxHeight="200"
Margin="5"
HorizontalAlignment="Stretch"
VerticalAlignment="Stretch"
AcceptsReturn="True"
Visibility="Collapsed"
Text="{Binding Context_Input}" />-->
<TextBox
x:Name="txt_input_message"
Grid.Column="1"
Height="28"
MaxHeight="200"
Margin="5"
HorizontalAlignment="Stretch"
VerticalAlignment="Stretch"
AcceptsReturn="True"
Text="{Binding MessageInput}" />
<Button
Grid.Column="2"
Margin="4"
VerticalAlignment="Stretch"
Command="{Binding SendNewMessageCommand}"
Content="Senden" />
</Grid>
<ListView
x:Name="listbox_messages"
Grid.Column="2"
Padding="3"
Background="Transparent"
BorderThickness="0"
@@ -175,6 +150,32 @@
ItemsSource="{Binding SelectedVM.Messages.VMList, Converter={StaticResource TestDebugConverter}}"
ScrollViewer.CanContentScroll="False"
ScrollViewer.HorizontalScrollBarVisibility="Disabled">
<ListView.Resources>
<Style TargetType="ScrollBar">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="ScrollBar">
<Grid Background="Transparent">
<Track Name="PART_Track"
IsDirectionReversed="True"
Focusable="false">
<Track.DecreaseRepeatButton>
<RepeatButton Command="ScrollBar.LineUpCommand"
Visibility="Collapsed"
IsEnabled="False" />
</Track.DecreaseRepeatButton>
<Track.IncreaseRepeatButton>
<RepeatButton Command="ScrollBar.LineDownCommand"
Visibility="Collapsed"
IsEnabled="False" />
</Track.IncreaseRepeatButton>
</Track>
</Grid>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</ListView.Resources>
<ListView.ItemContainerStyle>
<Style TargetType="ListViewItem">
<Setter Property="HorizontalContentAlignment" Value="Stretch" />
@@ -195,6 +196,47 @@
</ItemsPanelTemplate>
</ListView.ItemsPanel>
</ListView>
<Grid
Grid.Row="1"
Grid.Column="1"
Grid.ColumnSpan="3"
Margin="4,4,4,4"
Visibility="{Binding SelectedVM, Converter={StaticResource ObjectVisibilityConverter}}">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="0" />
<ColumnDefinition Width="*" />
<ColumnDefinition Width="auto" />
</Grid.ColumnDefinitions>
<!--<TextBox
x:Name="txt_input_context"
Height="100"
MaxHeight="200"
Margin="5"
HorizontalAlignment="Stretch"
VerticalAlignment="Stretch"
AcceptsReturn="True"
Visibility="Collapsed"
Text="{Binding Context_Input}" />-->
<TextBox
x:Name="txt_input_message"
Grid.Column="1"
Height="auto"
MaxHeight="200"
Margin="4"
HorizontalAlignment="Stretch"
VerticalAlignment="Stretch"
AcceptsReturn="True"
Text="{Binding MessageInput}" />
<Button
Grid.Column="2"
Height="auto"
MinHeight="25"
MaxHeight="100"
Margin="4"
VerticalAlignment="Stretch"
Command="{Binding SendNewMessageCommand}"
Content="Senden" />
</Grid>
</Grid>
</Grid>
<Border

View File

@@ -19,7 +19,7 @@ using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
namespace BeWo.View.Detail
namespace BeWo.View.Detail.AI
{
/// <summary>
/// Interaktionslogik für AiConversationChatView.xaml
@@ -37,11 +37,6 @@ namespace BeWo.View.Detail
popup_settings.Closed += (s, e) => ViewModel.UpdateConfig();
}
public AiConversationChatView(object o) : this()
{
}
public AiConversationListVM ViewModel
{
get => DataContext as AiConversationListVM;
@@ -52,6 +47,8 @@ namespace BeWo.View.Detail
private void BeWoView_Loaded(object sender, RoutedEventArgs e)
{
if (BeWoApp.IsInDesignMode)
return;
ViewModel.ReloadConfigCommand.Execute(null);
ViewModel.ReloadConversationsCommand.Execute(null);
}
@@ -64,11 +61,6 @@ namespace BeWo.View.Detail
popup_settings.IsOpen = true;
}, true, this);
}
private void Test()
{
}
private void listbox_conversations_SelectionChanged(object sender, NotifyCollectionChangedEventArgs e)
{

View File

@@ -1,22 +1,47 @@
<localView:BeWoView x:Class="BeWo.View.Detail.Accounting.EquityInvoiceItemEditView"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:localView="clr-namespace:BeWo.View"
xmlns:localViewModel="clr-namespace:BeWo.ViewModel"
xmlns:localViewDetail="clr-namespace:BeWo.View.Detail.Accounting"
xmlns:val="clr-namespace:BeWo.Validation"
xmlns:proxy="clr-namespace:BeWo.ServiceProxy"
xmlns:uc="clr-namespace:BeWo.Controls;assembly=BeWo.Controls"
xmlns:markup="clr-namespace:BeWo.MultiLanguage.Markup"
xmlns:dxg="http://schemas.devexpress.com/winfx/2008/xaml/grid"
xmlns:dx="http://schemas.devexpress.com/winfx/2008/xaml/core" xmlns:dxe="http://schemas.devexpress.com/winfx/2008/xaml/editors" Height="Auto" Width="Auto" HorizontalAlignment="Stretch" xmlns:s="clr-namespace:System;assembly=mscorlib" xmlns:r="clr-namespace:BeWo.Security" VerticalAlignment="Stretch" Focusable="True" xmlns:Microsoft_Windows_Themes="clr-namespace:Microsoft.Windows.Themes;assembly=PresentationFramework.Classic">
<localView:BeWoView
x:Class="BeWo.View.Detail.Accounting.EquityInvoiceItemEditView"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:Microsoft_Windows_Themes="clr-namespace:Microsoft.Windows.Themes;assembly=PresentationFramework.Classic"
xmlns:dx="http://schemas.devexpress.com/winfx/2008/xaml/core"
xmlns:dxe="http://schemas.devexpress.com/winfx/2008/xaml/editors"
xmlns:dxg="http://schemas.devexpress.com/winfx/2008/xaml/grid"
xmlns:localView="clr-namespace:BeWo.View"
xmlns:localViewDetail="clr-namespace:BeWo.View.Detail.Accounting"
xmlns:localViewModel="clr-namespace:BeWo.ViewModel"
xmlns:markup="clr-namespace:BeWo.MultiLanguage.Markup"
xmlns:proxy="clr-namespace:BeWo.ServiceProxy"
xmlns:r="clr-namespace:BeWo.Security"
xmlns:s="clr-namespace:System;assembly=mscorlib"
xmlns:uc="clr-namespace:BeWo.Controls;assembly=BeWo.Controls"
xmlns:val="clr-namespace:BeWo.Validation"
Width="Auto"
Height="Auto"
HorizontalAlignment="Stretch"
VerticalAlignment="Stretch"
Focusable="True">
<GroupBox MinHeight="200" Width="800" Style="{StaticResource PopUpWindowStyle}">
<GroupBox
Width="800"
MinHeight="200"
Style="{StaticResource PopUpWindowStyle}">
<GroupBox.Header>
<StackPanel Orientation="Horizontal" VerticalAlignment="Center" Margin="0,0,0,0">
<Image Source="..\..\Ressources\Icons\CoinsDisabled.png" Height="28" />
<TextBox Text="Rechnung bearbeiten" Margin="10,4,0,0" Background="{x:Null}" Foreground="{DynamicResource MainGroupBoxForegroundBrush}" FontSize="20" BorderBrush="{x:Null}" VerticalAlignment="Stretch" BorderThickness="0,0,0,0" Padding="0,0,0,0" />
<StackPanel
Margin="0,0,0,0"
VerticalAlignment="Center"
Orientation="Horizontal">
<Image Height="28" Source="..\..\Ressources\Icons\CoinsDisabled.png" />
<TextBox
Margin="10,4,0,0"
Padding="0,0,0,0"
VerticalAlignment="Stretch"
Background="{x:Null}"
BorderBrush="{x:Null}"
BorderThickness="0,0,0,0"
FontSize="20"
Foreground="{DynamicResource MainGroupBoxForegroundBrush}"
Text="Rechnung bearbeiten" />
</StackPanel>
</GroupBox.Header>
@@ -28,10 +53,13 @@
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<Rectangle Fill="{DynamicResource AccountingContentBrush}" VerticalAlignment="Top" Height="6" />
<Rectangle
Height="6"
VerticalAlignment="Top"
Fill="{DynamicResource AccountingContentBrush}" />
<ScrollViewer Grid.Row="1" VerticalScrollBarVisibility="Auto">
<Grid Grid.IsSharedSizeScope="True" Margin="10,10,0,10">
<Grid Margin="10,10,0,10" Grid.IsSharedSizeScope="True">
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
@@ -44,7 +72,11 @@
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<GroupBox Margin="3 6 3 6" Style="{StaticResource ObjectEditGroupBox}" Grid.ColumnSpan="2" Header="Rechnungsdetails">
<GroupBox
Grid.ColumnSpan="2"
Margin="3,6,3,6"
Header="Rechnungsdetails"
Style="{StaticResource ObjectEditGroupBox}">
<Grid>
@@ -68,34 +100,111 @@
</Grid.RowDefinitions>
<Label Content="Rechnungsnummer" />
<TextBox Margin="3" Height="23" Grid.Column="1" Text="{Binding Path=InvoiceNumber}" />
<TextBox
Grid.Column="1"
Height="23"
Margin="3"
Text="{Binding Path=InvoiceNumber}" />
<Label Content="{markup:Translate Ersteller Vorname}" Grid.Row="0" Grid.Column="2" />
<TextBox Margin="3" Grid.Row="0" Grid.Column="3" Text="{Binding CreatorFirstName}" Height="23" />
<Label
Grid.Row="0"
Grid.Column="2"
Content="{markup:Translate Ersteller Vorname}" />
<TextBox
Grid.Row="0"
Grid.Column="3"
Height="23"
Margin="3"
Text="{Binding CreatorFirstName}" />
<Label Content="{markup:Translate Ersteller Nachname}" Grid.Row="0" Grid.Column="4" />
<TextBox Margin="3" Height="23" Grid.Row="0" Grid.Column="5" Text="{Binding CreatorLastName}" />
<Label
Grid.Row="0"
Grid.Column="4"
Content="{markup:Translate Ersteller Nachname}" />
<TextBox
Grid.Row="0"
Grid.Column="5"
Height="23"
Margin="3"
Text="{Binding CreatorLastName}" />
<Label Content="Rechnungsdatum" Grid.Row="1" Grid.Column="0" />
<dxe:DateEdit MaskType="DateTimeAdvancingCaret" BorderThickness="1" Margin="3" Height="23" Grid.Row="1" Grid.Column="1" EditValue="{val:ValidationBinding Path=InvoiceDate, Mode=TwoWay}" />
<Label
Grid.Row="1"
Grid.Column="0"
Content="Rechnungsdatum" />
<dxe:DateEdit
Grid.Row="1"
Grid.Column="1"
Height="23"
Margin="3"
BorderThickness="1"
EditValue="{val:ValidationBinding Path=InvoiceDate,
Mode=TwoWay}"
MaskType="DateTimeAdvancingCaret" />
<Label Content="Abrechnungszeitraum von" Grid.Row="1" Grid.Column="2" />
<dxe:DateEdit MaskType="DateTimeAdvancingCaret" BorderThickness="1" Height="23" Margin="3" Grid.Row="1" Grid.Column="3" EditValue="{val:ValidationBinding Path=AccountingPeriodStart}" />
<Label
Grid.Row="1"
Grid.Column="2"
Content="Abrechnungszeitraum von" />
<dxe:DateEdit
Grid.Row="1"
Grid.Column="3"
Height="23"
Margin="3"
BorderThickness="1"
EditValue="{val:ValidationBinding Path=AccountingPeriodStart}"
MaskType="DateTimeAdvancingCaret" />
<Label Content="Abrechnungszeitraum bis" Grid.Row="1" Grid.Column="4" />
<dxe:DateEdit MaskType="DateTimeAdvancingCaret" BorderThickness="1" Height="23" Margin="3" Grid.Row="1" Grid.Column="5" EditValue="{val:ValidationBinding Path=AccountingPeriodEnd}" />
<Label
Grid.Row="1"
Grid.Column="4"
Content="Abrechnungszeitraum bis" />
<dxe:DateEdit
Grid.Row="1"
Grid.Column="5"
Height="23"
Margin="3"
BorderThickness="1"
EditValue="{val:ValidationBinding Path=AccountingPeriodEnd}"
MaskType="DateTimeAdvancingCaret" />
<Label Grid.Column="0" Grid.Row="2" Content="anz Mahnungen" />
<dxe:SpinEdit MinValue="0" IsFloatValue="False" AllowNullInput="True" EditValue="{Binding Path=DunningLetterCount, Converter={StaticResource Int2DecimalConverter}}" Height="23" Margin="3" Grid.Row="2" Grid.Column="1" />
<Label
Grid.Row="2"
Grid.Column="0"
Content="anz Mahnungen" />
<dxe:SpinEdit
Grid.Row="2"
Grid.Column="1"
Height="23"
Margin="3"
AllowNullInput="True"
EditValue="{Binding Path=DunningLetterCount, Converter={StaticResource Int2DecimalConverter}}"
IsFloatValue="False"
MinValue="0" />
<Label Content="Bemerkung" Grid.Row="2" Grid.Column="2" />
<TextBox Grid.Row="2" Grid.Column="3" Grid.ColumnSpan="3" Margin="3" AcceptsReturn="True" TextWrapping="Wrap" Height="23" Text="{Binding Notice}" />
<Label
Grid.Row="2"
Grid.Column="2"
Content="Bemerkung" />
<TextBox
Grid.Row="2"
Grid.Column="3"
Grid.ColumnSpan="3"
Height="23"
Margin="3"
AcceptsReturn="True"
Text="{Binding Notice}"
TextWrapping="Wrap" />
</Grid>
</GroupBox>
<GroupBox Margin="3 6 6 3" Grid.Row="1" Style="{StaticResource ObjectEditGroupBox}" Header="{markup:Translate EmpfängerSingular}">
<GroupBox
Grid.Row="1"
Margin="3,6,6,3"
Header="{markup:Translate EmpfängerSingular}"
Style="{StaticResource ObjectEditGroupBox}">
<Grid>
@@ -113,28 +222,78 @@
</Grid.RowDefinitions>
<Label Content="Vorname" />
<TextBox Margin="3" Grid.Row="0" Grid.Column="1" Text="{val:ValidationBinding Path=RecipientPersonFirstName}" Height="23" />
<TextBox
Grid.Row="0"
Grid.Column="1"
Height="23"
Margin="3"
Text="{val:ValidationBinding Path=RecipientPersonFirstName}" />
<Label Content="Nachname" Grid.Row="0" Grid.Column="2" />
<TextBox Margin="3" Grid.Row="0" Grid.Column="3" Text="{val:ValidationBinding Path=RecipientPersonLastName}" Height="23" />
<Label
Grid.Row="0"
Grid.Column="2"
Content="Nachname" />
<TextBox
Grid.Row="0"
Grid.Column="3"
Height="23"
Margin="3"
Text="{val:ValidationBinding Path=RecipientPersonLastName}" />
<Label Content="Aktenzeichen" Grid.Row="1" Grid.Column="0" />
<TextBox Margin="3" Height="23" Grid.Row="1" Grid.Column="1" Text="{Binding CustomerReferenceNumber}" />
<Label
Grid.Row="1"
Grid.Column="0"
Content="Aktenzeichen" />
<TextBox
Grid.Row="1"
Grid.Column="1"
Height="23"
Margin="3"
Text="{Binding CustomerReferenceNumber}" />
<Label Content="Strasse" Grid.Row="1" Grid.Column="2" />
<TextBox Margin="3" Grid.Row="1" Grid.Column="3" Text="{val:ValidationBinding Path=RecipientStreet}" Height="23" />
<Label
Grid.Row="1"
Grid.Column="2"
Content="Strasse" />
<TextBox
Grid.Row="1"
Grid.Column="3"
Height="23"
Margin="3"
Text="{val:ValidationBinding Path=RecipientStreet}" />
<Label Content="Postleitzahl" Grid.Row="2" Grid.Column="0" />
<TextBox Margin="3,3,3,0" Grid.Row="2" Grid.Column="1" Text="{val:ValidationBinding Path=RecipientPostCode}" Height="23" />
<Label
Grid.Row="2"
Grid.Column="0"
Content="Postleitzahl" />
<TextBox
Grid.Row="2"
Grid.Column="1"
Height="23"
Margin="3,3,3,0"
Text="{val:ValidationBinding Path=RecipientPostCode}" />
<Label Content="Ort" Grid.Row="2" Grid.Column="2" />
<TextBox Margin="3" Grid.Row="2" Grid.Column="3" Text="{val:ValidationBinding Path=RecipientTown}" Height="23" />
<Label
Grid.Row="2"
Grid.Column="2"
Content="Ort" />
<TextBox
Grid.Row="2"
Grid.Column="3"
Height="23"
Margin="3"
Text="{val:ValidationBinding Path=RecipientTown}" />
</Grid>
</GroupBox>
<GroupBox Margin="6 6 3 3" Style="{StaticResource ObjectEditGroupBox}" Grid.Row="1" Grid.Column="2" Header="{markup:Translate Absender}">
<GroupBox
Grid.Row="1"
Grid.Column="2"
Margin="6,6,3,3"
Header="{markup:Translate Absender}"
Style="{StaticResource ObjectEditGroupBox}">
<Grid>
<Grid.ColumnDefinitions>
@@ -151,61 +310,163 @@
</Grid.RowDefinitions>
<Label Content="Vorname" />
<TextBox Margin="3" Grid.Row="0" Grid.Column="1" Text="{Binding SenderFirstName}" Height="23" />
<TextBox
Grid.Row="0"
Grid.Column="1"
Height="23"
Margin="3"
Text="{Binding SenderFirstName}" />
<Label Content="Nachname" Grid.Row="0" Grid.Column="2" />
<TextBox Margin="3" Grid.Row="0" Grid.Column="3" Text="{Binding SenderLastName}" Height="23" />
<Label
Grid.Row="0"
Grid.Column="2"
Content="Nachname" />
<TextBox
Grid.Row="0"
Grid.Column="3"
Height="23"
Margin="3"
Text="{Binding SenderLastName}" />
<Label Content="Organisation" Grid.Row="1" />
<TextBox Margin="3" Grid.Row="1" Grid.Column="1" Text="{Binding SenderOrganisation}" Height="23" />
<Label Grid.Row="1" Content="Organisation" />
<TextBox
Grid.Row="1"
Grid.Column="1"
Height="23"
Margin="3"
Text="{Binding SenderOrganisation}" />
<Label Content="Abteilung" Grid.Row="1" Grid.Column="2" />
<TextBox Margin="3" Grid.Row="1" Grid.Column="3" Text="{Binding SenderDivision}" Height="23" />
<Label
Grid.Row="1"
Grid.Column="2"
Content="Abteilung" />
<TextBox
Grid.Row="1"
Grid.Column="3"
Height="23"
Margin="3"
Text="{Binding SenderDivision}" />
<Label Content="Fax" Grid.Row="2" Grid.Column="0" />
<TextBox Margin="3" Grid.Row="2" Grid.Column="1" Text="{Binding SenderFax}" Height="23" />
<Label
Grid.Row="2"
Grid.Column="0"
Content="Fax" />
<TextBox
Grid.Row="2"
Grid.Column="1"
Height="23"
Margin="3"
Text="{Binding SenderFax}" />
<Label Content="Telefon" Grid.Row="2" Grid.Column="2" />
<TextBox Margin="3" Grid.Row="2" Grid.Column="3" Text="{Binding SenderPhone}" Height="23" />
<Label
Grid.Row="2"
Grid.Column="2"
Content="Telefon" />
<TextBox
Grid.Row="2"
Grid.Column="3"
Height="23"
Margin="3"
Text="{Binding SenderPhone}" />
</Grid>
</GroupBox>
<GroupBox Margin="3 6 3 3" Style="{StaticResource ObjectEditGroupBox}" Grid.ColumnSpan="2" Grid.Row="2" Header="Rechnungsposten">
<GroupBox
Grid.Row="2"
Grid.ColumnSpan="2"
Margin="3,6,3,3"
Header="Rechnungsposten"
Style="{StaticResource ObjectEditGroupBox}">
<dxg:GridControl MaxHeight="200" SnapsToDevicePixels="True" Margin="3" x:Name="datagrid_invoiceItems" DataSource="{Binding InvoiceItems.VMList}" VerticalAlignment="Stretch" HorizontalAlignment="Stretch">
<dxg:GridControl
x:Name="datagrid_invoiceItems"
MaxHeight="200"
Margin="3"
HorizontalAlignment="Stretch"
VerticalAlignment="Stretch"
DataSource="{Binding InvoiceItems.VMList}"
SnapsToDevicePixels="True">
<dxg:GridControl.Columns>
<dxg:GridColumn FieldName="Notice" Header="" FixedWidth="True" Width="24" ReadOnly="True">
<dxg:GridColumn
Width="24"
FieldName="Notice"
FixedWidth="True"
Header=""
ReadOnly="True">
<dxg:GridColumn.CellTemplate>
<DataTemplate>
<Button Content="r" FontFamily="Webdings" Click="DeleteButton_Click" Width="18" Height="18" VerticalAlignment="Center" />
<Button
Width="18"
Height="18"
VerticalAlignment="Center"
Click="DeleteButton_Click"
Content="r"
FontFamily="Webdings" />
</DataTemplate>
</dxg:GridColumn.CellTemplate>
</dxg:GridColumn>
<dxg:GridColumn x:Name="colItemPeriodStart" FieldName="ItemPeriodStart" Header="Von" EditSettings="{dxe:DateSettings DisplayFormat=d}" Width="80" />
<dxg:GridColumn x:Name="colItemPeriodEnd" FieldName="ItemPeriodEnd" Header="Bis" EditSettings="{dxe:DateSettings DisplayFormat=d}" Width="80" />
<dxg:GridColumn FieldName="ItemDescription" Header="Posten" Width="150" />
<dxg:GridColumn x:Name="colAmountPerUnit" FieldName="AmountPerUnit" Header="Satz" Width="80">
<dxg:GridColumn
x:Name="colItemPeriodStart"
Width="80"
EditSettings="{dxe:DateSettings DisplayFormat=d}"
FieldName="ItemPeriodStart"
Header="Von" />
<dxg:GridColumn
x:Name="colItemPeriodEnd"
Width="80"
EditSettings="{dxe:DateSettings DisplayFormat=d}"
FieldName="ItemPeriodEnd"
Header="Bis" />
<dxg:GridColumn
Width="150"
FieldName="ItemDescription"
Header="Posten" />
<dxg:GridColumn
x:Name="colAmountPerUnit"
Width="80"
FieldName="AmountPerUnit"
Header="Satz">
<dxg:GridColumn.EditSettings>
<dxe:TextEditSettings DisplayFormat="c" Mask="c" MaskType="Numeric"></dxe:TextEditSettings>
<dxe:TextEditSettings
DisplayFormat="c"
Mask="c"
MaskType="Numeric" />
</dxg:GridColumn.EditSettings>
</dxg:GridColumn>
<dxg:GridColumn x:Name="colUnitCount" FieldName="UnitCount" Header="Anzahl" Width="80" />
<dxg:GridColumn x:Name="colAmountTotal" FieldName="AmountTotal" Header="Betrag">
<dxg:GridColumn
x:Name="colUnitCount"
Width="80"
FieldName="UnitCount"
Header="Anzahl" />
<dxg:GridColumn
x:Name="colAmountTotal"
FieldName="AmountTotal"
Header="Betrag">
<dxg:GridColumn.CellStyle>
<Style TargetType="dxg:LightweightCellEditor">
<Setter Property="TextBlock.FontWeight" Value="Bold" />
</Style>
</dxg:GridColumn.CellStyle>
<dxg:GridColumn.EditSettings>
<dxe:TextEditSettings DisplayFormat="c" Mask="c" MaskType="Numeric"></dxe:TextEditSettings>
<dxe:TextEditSettings
DisplayFormat="c"
Mask="c"
MaskType="Numeric" />
</dxg:GridColumn.EditSettings>
</dxg:GridColumn>
</dxg:GridControl.Columns>
<dxg:GridControl.View>
<dxg:TableView NewItemRowPosition="Top" Loaded="gridView_Loaded" x:Name="gridView" NavigationStyle="Cell" ShowGroupPanel="False" SnapsToDevicePixels="True" Margin="3" />
<dxg:TableView
x:Name="gridView"
Margin="3"
Loaded="gridView_Loaded"
NavigationStyle="Cell"
NewItemRowPosition="Top"
ShowGroupPanel="False"
SnapsToDevicePixels="True" />
</dxg:GridControl.View>
</dxg:GridControl>
@@ -214,9 +475,26 @@
</Grid>
</ScrollViewer>
<StackPanel Grid.ColumnSpan="2" Grid.Row="2" Orientation="Horizontal" VerticalAlignment="Center" Height="Auto" Margin="5 0 5 5" HorizontalAlignment="Right">
<Button x:Name="btnSave" Content="Speichern und schließen" Margin="5" Command="ApplicationCommands.Save" Height="25" />
<Button x:Name="btnClose" Content="Abbrechen" Margin="5" Command="ApplicationCommands.Close" Height="25" />
<StackPanel
Grid.Row="2"
Grid.ColumnSpan="2"
Height="Auto"
Margin="5,0,5,5"
HorizontalAlignment="Right"
VerticalAlignment="Center"
Orientation="Horizontal">
<Button
x:Name="btnSave"
Height="25"
Margin="5"
Command="ApplicationCommands.Save"
Content="Speichern und schließen" />
<Button
x:Name="btnClose"
Height="25"
Margin="5"
Command="ApplicationCommands.Close"
Content="Abbrechen" />
</StackPanel>
</Grid>

View File

@@ -3920,6 +3920,10 @@
StaysOpen="False">
<localSearchView:OrganisationSearchView x:Name="personOrganisationsearchview" />
</Popup>
<Border x:Name="popup_content" Margin="0,10,0,-10" Height="1" Width="1"/>
<Border
x:Name="popup_content"
Width="1"
Height="1"
Margin="0,10,0,-10" />
</Grid>
</localView:BeWoView>

View File

@@ -615,9 +615,20 @@
</Hyperlink>
</TextBlock>
<Button Margin="3" Click="Ai_Button_Click">
AI Chat
</Button>
<StackPanel Margin="3">
<Button
Margin="3"
HorizontalAlignment="Stretch"
Click="Ai_Button_Click">
AI Chat Window
</Button>
<Button
Margin="3"
HorizontalAlignment="Stretch"
Click="Ai_Button2_Click">
AI Chat Popup
</Button>
</StackPanel>
</StackPanel>
<Grid
Grid.Row="0"

View File

@@ -52,6 +52,7 @@ using VerticalAlignment = System.Windows.VerticalAlignment;
using DependencyObject = System.Windows.DependencyObject;
using BeWo.AI.View;
using BeWo.AI;
using BeWo.View.Detail.AI;
namespace BeWo.View.Detail.Zeiterfassung
{
@@ -5076,10 +5077,29 @@ namespace BeWo.View.Detail.Zeiterfassung
var context = ViewModel.GetVisibleInformationReferences(records);
var control = new AiConversationChatView();
control.ViewModel.UIContext = (int)(UIContext.ServiceRecord);
control.ViewModel.ContextBeWoObjects = context;
var window = BeWoWindowBuilder.GetAiConversationZeiterfassungWindow(context);
window.Show();
}
private void Ai_Button2_Click(object sender, RoutedEventArgs e)
{
var records = GetVisibleRecordVMs();
var context = ViewModel.GetVisibleInformationReferences(records);
var control = new AiConversationChatModalPopup();
control.ViewModel.UIContext = (int)(UIContext.ServiceRecord);
control.ViewModel.ContextBeWoObjects = context;
MainControl.ShowControlAsModalPopup(control);
}
private IEnumerable<ServiceRecordVM> GetVisibleRecordVMs()
{
var list = new List<ServiceRecordVM>();

View File

@@ -11,6 +11,7 @@
Closing="Window_Closing"
ResizeMode="CanResizeWithGrip"
SnapsToDevicePixels="True"
TextOptions.TextFormattingMode="Display"
WindowStartupLocation="CenterOwner"
WindowStyle="None">
<Window.Resources>

View File

@@ -24,6 +24,7 @@ namespace BeWo.View.Windows
public partial class AnimatedBeWoWindow : Window
{
private bool closeStoryBoardCompleted = false;
private bool isClosing = false;
private WaitLayer2 _WaitLayer;
private object _GroupBoxContent;
@@ -48,9 +49,9 @@ namespace BeWo.View.Windows
StartWaiting();
if (BeWoApp.CurrentAnimatedBeWoWindow == null)
if (BeWoApp.MainControl.CurrentAnimatedBeWoWindow == null)
{
BeWoApp.CurrentAnimatedBeWoWindow = this;
BeWoApp.MainControl.CurrentAnimatedBeWoWindow = this;
}
else
{
@@ -70,11 +71,13 @@ namespace BeWo.View.Windows
public void Window_Closing(object sender, CancelEventArgs e)
{
if (!closeStoryBoardCompleted)
if (!closeStoryBoardCompleted && !isClosing)
{
if (BeWoApp.CurrentAnimatedBeWoWindow == this)
isClosing = true;
if (BeWoApp.MainControl.CurrentAnimatedBeWoWindow == this)
{
BeWoApp.CurrentAnimatedBeWoWindow = null;
BeWoApp.MainControl.CurrentAnimatedBeWoWindow = null;
}
else
{
@@ -99,7 +102,8 @@ namespace BeWo.View.Windows
private void closeStoryBoard_Completed(object sender, EventArgs e)
{
closeStoryBoardCompleted = true;
isClosing = false;
Close();
}

View File

@@ -134,6 +134,7 @@ namespace BeWo.Service.ServiceImplementations
var config = GetAiConfig();
// Send Request, wait for Response
var dt_before_request = DateTime.Now;
var result = ServiceFacade.OpenWebUI.SendAiMessageRequest(conv_dc, config, out var model, out var duration);
// Antwort
@@ -141,7 +142,7 @@ namespace BeWo.Service.ServiceImplementations
assi_msg.Message = result;
assi_msg.AiConversation = conv;
assi_msg.Role = BS.Shared.AiConversationMessageRole.Assistent;
assi_msg.Created = DateTime.Now;
assi_msg.Created = dt_before_request;
assi_msg.Duration = duration ?? 0;
assi_msg.ModelName = model;

View File

@@ -46,13 +46,8 @@ namespace BeWo.Service.ServiceProxy
var payload = new
{
model = conversation.Modell.ModelName,
messages = conversation.Messages.Select(m => new { role = m.Role.ToString().ToLower(), content = m.Message }),
options = new
{
temperature = config.Temperature,
num_predict = config.Max_Gen_Len
}
model = config.SelectedModel.ModelName,
messages = conversation.Messages.Select(m => new { role = m.Role.ToString().ToLower(), content = m.Message })
};
//var requestData = JsonConvert.SerializeObject(payload);