diff --git a/Borepin/Borepin/Page/MachineListPage.xaml b/Borepin/Borepin/Page/MachineListPage.xaml index f0b9c88..5b47d51 100644 --- a/Borepin/Borepin/Page/MachineListPage.xaml +++ b/Borepin/Borepin/Page/MachineListPage.xaml @@ -30,7 +30,15 @@ - + + + + + + + + diff --git a/Borepin/Borepin/PageModel/MachineListPageModel.cs b/Borepin/Borepin/PageModel/MachineListPageModel.cs index 8b81d4f..78db4d8 100644 --- a/Borepin/Borepin/PageModel/MachineListPageModel.cs +++ b/Borepin/Borepin/PageModel/MachineListPageModel.cs @@ -36,6 +36,8 @@ namespace Borepin.PageModel private async Task _CreateMachineList(List machine_list) { + List tasks = new List(); + List viewmodel_group_list = new List(); MachineViewModelListGroup viewmodel_group_inusebyme = new MachineViewModelListGroup() { @@ -54,7 +56,7 @@ namespace Borepin.PageModel { IsInUseByMe = true, }; - await new_viewmodel.LoadInstance(machine).ConfigureAwait(false); + tasks.Add(new_viewmodel.LoadInstance(machine)); new_viewmodel.Machine.Category = Resources.Text.TextResource.InUseByMe; @@ -63,14 +65,14 @@ namespace Borepin.PageModel else if (machine.Category == null) { MachineListItemViewModel new_viewmodel = new MachineListItemViewModel(_NavigationService, _PageDialogService); - await new_viewmodel.LoadInstance(machine).ConfigureAwait(false); + tasks.Add(new_viewmodel.LoadInstance(machine)); viewmodel_group_inusebyme.Add(new_viewmodel); } else { MachineListItemViewModel new_viewmodel = new MachineListItemViewModel(_NavigationService, _PageDialogService); - await new_viewmodel.LoadInstance(machine).ConfigureAwait(false); + tasks.Add(new_viewmodel.LoadInstance(machine)); MachineViewModelListGroup viewmodel_group = viewmodel_group_list.Find(x => string.Equals(x.Category, machine.Category, StringComparison.Ordinal)); if (viewmodel_group != null) @@ -89,6 +91,8 @@ namespace Borepin.PageModel } } + await Task.WhenAll(tasks).ConfigureAwait(false); + viewmodel_group_inusebyme.Sort_Machines(); viewmodel_group_uncategorised.Sort_Machines(); foreach(MachineViewModelListGroup viewmodel_group in viewmodel_group_list) @@ -96,6 +100,7 @@ namespace Borepin.PageModel viewmodel_group.Sort_Machines(); } + viewmodel_group_uncategorised.Category = Resources.Text.TextResource.Uncategorised; List viewmodel_group_list_sorted = new List(); if(viewmodel_group_inusebyme.Count != 0) { diff --git a/Borepin/Borepin/PageModel/ServerListPageModel.cs b/Borepin/Borepin/PageModel/ServerListPageModel.cs index bd3f9a4..26dff07 100644 --- a/Borepin/Borepin/PageModel/ServerListPageModel.cs +++ b/Borepin/Borepin/PageModel/ServerListPageModel.cs @@ -33,6 +33,8 @@ namespace Borepin.PageModel #region LoadData public override async Task LoadInstance(object instance) { + List tasks = new List(); + IList list = await _LoginStorageService.GetList().ConfigureAwait(false); if (_API.IsConnected) { @@ -52,10 +54,11 @@ namespace Borepin.PageModel foreach (ConnectionData connectionData in list) { ServerListItemViewModel serverListItemViewModel = new ServerListItemViewModel(_NavigationService, _PageDialogService); - await serverListItemViewModel.LoadInstance(connectionData).ConfigureAwait(false); + tasks.Add(serverListItemViewModel.LoadInstance(connectionData)); serverListItemViewModel_List.Add(serverListItemViewModel); } + await Task.WhenAll(tasks).ConfigureAwait(false); ServerListItemViewModel_List = serverListItemViewModel_List; IsBusy = false; diff --git a/Borepin/Borepin/PageModel/UserListPageModel.cs b/Borepin/Borepin/PageModel/UserListPageModel.cs index 3fcf180..24e5223 100644 --- a/Borepin/Borepin/PageModel/UserListPageModel.cs +++ b/Borepin/Borepin/PageModel/UserListPageModel.cs @@ -28,16 +28,20 @@ namespace Borepin.PageModel #region Data public override async Task LoadAPIData() { + List tasks = new List(); + IReadOnlyList user_list = await _API.Session.UserSystem.Manage.GetUserList().ConfigureAwait(false); List viewmodel_list= new List(); foreach (User user in user_list) { UserListItemViewModel new_viewmodel = new UserListItemViewModel(_NavigationService, _PageDialogService); - await new_viewmodel.LoadInstance(user).ConfigureAwait(false); + tasks.Add(new_viewmodel.LoadInstance(user)); viewmodel_list.Add(new_viewmodel); } + await Task.WhenAll(tasks).ConfigureAwait(false); + viewmodel_list.OrderBy(x => x.Instance.Username, StringComparison.OrdinalIgnoreCase.WithNaturalSort()); UserListItemViewModel_List = viewmodel_list; } @@ -86,7 +90,7 @@ namespace Borepin.PageModel { Device.BeginInvokeOnMainThread(async () => { - INavigationResult result = await _NavigationService.NavigateAsync("/MainPage/NavigationPage/AddUserPage").ConfigureAwait(false); + INavigationResult result = await _NavigationService.NavigateAsync("AddUserPage").ConfigureAwait(false); if (result.Exception != null) { Log.Fatal(result.Exception, "Navigating failed"); diff --git a/Borepin/Borepin/Resources/Text/TextResource.Designer.cs b/Borepin/Borepin/Resources/Text/TextResource.Designer.cs index 34a14b6..70780d3 100644 --- a/Borepin/Borepin/Resources/Text/TextResource.Designer.cs +++ b/Borepin/Borepin/Resources/Text/TextResource.Designer.cs @@ -801,6 +801,15 @@ namespace Borepin.Resources.Text { } } + /// + /// Looks up a localized string similar to Uncategorised. + /// + internal static string Uncategorised { + get { + return ResourceManager.GetString("Uncategorised", resourceCulture); + } + } + /// /// Looks up a localized string similar to Add User. /// diff --git a/Borepin/Borepin/Resources/Text/TextResource.resx b/Borepin/Borepin/Resources/Text/TextResource.resx index 76330ce..ff8668f 100644 --- a/Borepin/Borepin/Resources/Text/TextResource.resx +++ b/Borepin/Borepin/Resources/Text/TextResource.resx @@ -366,6 +366,9 @@ Ask in your Space if you can be trained on the machine to be unlocked for the ma Users + + Uncategorised + Add User diff --git a/external/capnproto-dotnetcore b/external/capnproto-dotnetcore index 086bbc2..63e6385 160000 --- a/external/capnproto-dotnetcore +++ b/external/capnproto-dotnetcore @@ -1 +1 @@ -Subproject commit 086bbc2497785d2cc63e9252df6f6d3ee7599579 +Subproject commit 63e63853c1d5ca9f223aa3627ad391ce434a0683