MH + Claude: WaitLayer im Urlaubsplaner eingefügt, damit man nicht mehr denkt, das Programm hat sich aufgehangen
This commit is contained in:
@@ -144,7 +144,7 @@
|
||||
<DataTemplate x:Key="AppointmentTooltipContentTemplate" />
|
||||
|
||||
</localView:BeWoView.Resources>
|
||||
<Grid>
|
||||
<Grid x:Name="_RootGrid">
|
||||
<GroupBox Header="Abwesenheiten" Style="{StaticResource ObjectEditGroupBox}">
|
||||
<Grid>
|
||||
<Grid.ColumnDefinitions>
|
||||
|
||||
@@ -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<CompactTeamDC> SelectedTeams => FilterTeams.SelectedItems.Cast<CompactTeamDC>().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<EmployeeDC> 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);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user