add loading progress to hours window
This commit is contained in:
@@ -2,7 +2,6 @@
|
|||||||
using Blueberry.Redmine.Dto;
|
using Blueberry.Redmine.Dto;
|
||||||
using System.Collections.Concurrent;
|
using System.Collections.Concurrent;
|
||||||
using System.Collections.ObjectModel;
|
using System.Collections.ObjectModel;
|
||||||
using System.Threading.Tasks;
|
|
||||||
using System.Windows;
|
using System.Windows;
|
||||||
using Wpf.Ui.Controls;
|
using Wpf.Ui.Controls;
|
||||||
|
|
||||||
@@ -28,11 +27,15 @@ namespace Blueberry
|
|||||||
_config = config;
|
_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();
|
var current = await _manager.GetCurrentUserAsync();
|
||||||
hoursProgress.Visibility = Visibility.Hidden;
|
hoursProgress.Visibility = Visibility.Hidden;
|
||||||
|
hoursProgress.IsIndeterminate = true;
|
||||||
_users.Clear();
|
_users.Clear();
|
||||||
_users.AddRange(u);
|
_users.AddRange(u);
|
||||||
userComboBox.Items.Clear();
|
userComboBox.Items.Clear();
|
||||||
@@ -40,14 +43,63 @@ namespace Blueberry
|
|||||||
userComboBox.Items.Add(user);
|
userComboBox.Items.Add(user);
|
||||||
|
|
||||||
userComboBox.SelectedItem = current;
|
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;
|
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;
|
var user = userComboBox.SelectedItem as UserInfo.User;
|
||||||
if(user is null)
|
if(user is null)
|
||||||
@@ -64,6 +116,8 @@ namespace Blueberry
|
|||||||
|
|
||||||
for (int i = 0; i < selectedDates.Count; i++)
|
for (int i = 0; i < selectedDates.Count; i++)
|
||||||
{
|
{
|
||||||
|
hoursProgress.IsIndeterminate = false;
|
||||||
|
totalI = selectedDates.Count;
|
||||||
var date = selectedDates[i];
|
var date = selectedDates[i];
|
||||||
tasks[i] = Task.Run(async () =>
|
tasks[i] = Task.Run(async () =>
|
||||||
{
|
{
|
||||||
@@ -83,12 +137,16 @@ namespace Blueberry
|
|||||||
};
|
};
|
||||||
hours.Add(dh);
|
hours.Add(dh);
|
||||||
}
|
}
|
||||||
|
loadI++;
|
||||||
|
UpdateProgressI();
|
||||||
});
|
});
|
||||||
await Task.Delay(10);
|
await Task.Delay(10);
|
||||||
}
|
}
|
||||||
|
|
||||||
await Task.WhenAll(tasks);
|
await Task.WhenAll(tasks);
|
||||||
|
|
||||||
|
hoursProgress.IsIndeterminate = true;
|
||||||
|
|
||||||
var newTickets = await _manager.GetIssuesAsync(user.Id, createdFrom: selectedDates.First(), createdTo: selectedDates.Last());
|
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 closedTickets = await _manager.GetIssuesAsync(user.Id, isOpen: false, updatedFrom: selectedDates.First(), updatedTo: selectedDates.Last());
|
||||||
var currentTickets = await _manager.GetUserOpenIssuesAsync(user.Id);
|
var currentTickets = await _manager.GetUserOpenIssuesAsync(user.Id);
|
||||||
|
|||||||
Reference in New Issue
Block a user