diff --git a/BeWo/View/Detail/Report/AbwesenheitsView.xaml b/BeWo/View/Detail/Report/AbwesenheitsView.xaml
index ae06d3bbb..12b1fd4f5 100644
--- a/BeWo/View/Detail/Report/AbwesenheitsView.xaml
+++ b/BeWo/View/Detail/Report/AbwesenheitsView.xaml
@@ -144,7 +144,7 @@
-
+
diff --git a/BeWo/View/Detail/Report/AbwesenheitsView.xaml.cs b/BeWo/View/Detail/Report/AbwesenheitsView.xaml.cs
index dd88ae6e3..a7ac71d0b 100644
--- a/BeWo/View/Detail/Report/AbwesenheitsView.xaml.cs
+++ b/BeWo/View/Detail/Report/AbwesenheitsView.xaml.cs
@@ -13,6 +13,8 @@ using DevExpress.XtraScheduler;
using System;
using System.Collections.Generic;
using System.Linq;
+// Claude - Task für async/await-Unterstützung (Hintergrundladen)
+using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Forms;
@@ -77,18 +79,37 @@ namespace BeWo.View.Detail.Report
public List SelectedTeams => FilterTeams.SelectedItems.Cast().ToList();
- private void Button_Click(object sender, RoutedEventArgs e)
+ // Claude - Servicaufrufe laufen asynchron im Hintergrund; WaitLayer2 zeigt Ladeindikator;
+ // - Hauptfenster wird während des Ladens komplett deaktiviert (keine Interaktion möglich)
+ private async void Button_Click(object sender, RoutedEventArgs e)
{
UpdateFilter();
-
+
SelectedMonth = _MonthPicker.SelectedMonth;
SelectedYear = (int)_YearPicker.SelectedItem;
- UrlaubsplanerRootObj = ServiceFacade.DoEmployeeServiceSync(s => s.BuildUrlaubsplanerRootObject(_SelectedFilter));
+ var waitLayer = new WaitLayer2();
+ _RootGrid.Children.Add(waitLayer);
+ BeWoApp.CurrentBeWo.MainWindow.IsEnabled = false;
- UpdateScheduler(false);
- ColorizeFeiertage();
- ApplyFeiertagCellStyle();
+ try
+ {
+ var filter = _SelectedFilter;
+ UrlaubsplanerRootObj = await Task.Run(() =>
+ ServiceFacade.DoEmployeeServiceSync(s => s.BuildUrlaubsplanerRootObject(filter)));
+
+ var absenceOverview = await Task.Run(() =>
+ ServiceFacade.DoEmployeeServiceSync(x => x.GetAbsenceOverview(filter)));
+
+ UpdateScheduler(false, absenceOverview);
+ ColorizeFeiertage();
+ ApplyFeiertagCellStyle();
+ }
+ finally
+ {
+ _RootGrid.Children.Remove(waitLayer);
+ BeWoApp.CurrentBeWo.MainWindow.IsEnabled = true;
+ }
}
private void ColorizeFeiertage()
@@ -254,10 +275,14 @@ namespace BeWo.View.Detail.Report
}
- public void UpdateScheduler(bool neuLaden)
+ // Claude - optionaler Parameter absenceOverview: vorgeladene Daten aus Button_Click werden übergeben, um doppelten Serviceaufruf zu vermeiden
+ public void UpdateScheduler(bool neuLaden, List absenceOverview = null)
{
var absenceReasons = _AbsenceReasonDCs;
- var absenceOverview = ServiceFacade.DoEmployeeServiceSync(x => x.GetAbsenceOverview(_SelectedFilter));
+
+ if (absenceOverview == null)
+ absenceOverview = ServiceFacade.DoEmployeeServiceSync(x => x.GetAbsenceOverview(_SelectedFilter));
+
_ListOfEmployee = absenceOverview;
var start = new DateTime(_SelectedFilter.Year, _SelectedFilter.Month, 1);