add loading progress to hours window
This commit is contained in:
@@ -2,7 +2,6 @@
|
||||
using Blueberry.Redmine.Dto;
|
||||
using System.Collections.Concurrent;
|
||||
using System.Collections.ObjectModel;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows;
|
||||
using Wpf.Ui.Controls;
|
||||
|
||||
@@ -28,11 +27,15 @@ namespace Blueberry
|
||||
_config = config;
|
||||
}
|
||||
|
||||
private async void FluentWindow_Loaded(object sender, System.Windows.RoutedEventArgs e)
|
||||
private async void FluentWindow_Loaded(object sender, RoutedEventArgs e)
|
||||
{
|
||||
var u = await _manager.GetUsersAsync();
|
||||
userComboBox.IsEnabled =
|
||||
searchButton.IsEnabled =
|
||||
dateButton.IsEnabled = false;
|
||||
var u = await _manager.GetUsersAsync(progress: UpdateProgress());
|
||||
var current = await _manager.GetCurrentUserAsync();
|
||||
hoursProgress.Visibility = Visibility.Hidden;
|
||||
hoursProgress.IsIndeterminate = true;
|
||||
_users.Clear();
|
||||
_users.AddRange(u);
|
||||
userComboBox.Items.Clear();
|
||||
@@ -40,14 +43,63 @@ namespace Blueberry
|
||||
userComboBox.Items.Add(user);
|
||||
|
||||
userComboBox.SelectedItem = current;
|
||||
userComboBox.IsEnabled =
|
||||
searchButton.IsEnabled =
|
||||
dateButton.IsEnabled = true;
|
||||
}
|
||||
|
||||
private void dateButton_Click(object sender, System.Windows.RoutedEventArgs e)
|
||||
private IProgress<(int, int)> UpdateProgress()
|
||||
{
|
||||
var p = new Progress<(int current, int total)>((x) =>
|
||||
{
|
||||
Dispatcher.Invoke(() =>
|
||||
{
|
||||
hoursProgress.IsIndeterminate = false;
|
||||
var percent = (int)((double)x.current / x.total * 100);
|
||||
hoursProgress.Progress = percent;
|
||||
});
|
||||
});
|
||||
return p;
|
||||
}
|
||||
|
||||
private void dateButton_Click(object sender, RoutedEventArgs e)
|
||||
{
|
||||
calendarFlyout.IsOpen = true;
|
||||
}
|
||||
|
||||
private async void searchButton_Click(object sender, System.Windows.RoutedEventArgs e)
|
||||
private void UpdateProgressI()
|
||||
{
|
||||
Dispatcher.Invoke(() =>
|
||||
{
|
||||
var percent = (int)((double)loadI / totalI * 100);
|
||||
lock (_lock)
|
||||
{
|
||||
hoursProgress.Progress = percent;
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
private int loadInternalI = 0;
|
||||
private object _lock = new();
|
||||
private int loadI { get
|
||||
{
|
||||
var result = 0;
|
||||
lock(_lock)
|
||||
{
|
||||
result = loadInternalI;
|
||||
}
|
||||
return result;
|
||||
}
|
||||
set
|
||||
{
|
||||
lock (_lock)
|
||||
{
|
||||
loadInternalI = value;
|
||||
}
|
||||
}
|
||||
}
|
||||
private int totalI = 0;
|
||||
private async void searchButton_Click(object sender, RoutedEventArgs e)
|
||||
{
|
||||
var user = userComboBox.SelectedItem as UserInfo.User;
|
||||
if(user is null)
|
||||
@@ -64,6 +116,8 @@ namespace Blueberry
|
||||
|
||||
for (int i = 0; i < selectedDates.Count; i++)
|
||||
{
|
||||
hoursProgress.IsIndeterminate = false;
|
||||
totalI = selectedDates.Count;
|
||||
var date = selectedDates[i];
|
||||
tasks[i] = Task.Run(async () =>
|
||||
{
|
||||
@@ -83,12 +137,16 @@ namespace Blueberry
|
||||
};
|
||||
hours.Add(dh);
|
||||
}
|
||||
loadI++;
|
||||
UpdateProgressI();
|
||||
});
|
||||
await Task.Delay(10);
|
||||
}
|
||||
|
||||
await Task.WhenAll(tasks);
|
||||
|
||||
hoursProgress.IsIndeterminate = true;
|
||||
|
||||
var newTickets = await _manager.GetIssuesAsync(user.Id, createdFrom: selectedDates.First(), createdTo: selectedDates.Last());
|
||||
var closedTickets = await _manager.GetIssuesAsync(user.Id, isOpen: false, updatedFrom: selectedDates.First(), updatedTo: selectedDates.Last());
|
||||
var currentTickets = await _manager.GetUserOpenIssuesAsync(user.Id);
|
||||
|
||||
Reference in New Issue
Block a user