Fixed Maschine Categories

This commit is contained in:
TheJoKlLa 2022-07-18 23:46:53 +02:00
parent a3bf515fb4
commit 4a4b237374
7 changed files with 40 additions and 8 deletions

View File

@ -30,7 +30,15 @@
</Button.IsVisible> </Button.IsVisible>
</Button> </Button>
<ListView ItemsSource="{Binding MachineListItemViewModel_List}" SelectionMode="None" SeparatorColor="Transparent" IsGroupingEnabled="True" GroupDisplayBinding="{Binding Category}"> <ListView ItemsSource="{Binding MachineListItemViewModel_List}" SelectionMode="None" SeparatorColor="Transparent" IsGroupingEnabled="True" GroupDisplayBinding="{Binding Category}">
<ListView.GroupHeaderTemplate>
<DataTemplate>
<ViewCell>
<StackLayout Margin="0, 10, 0, 0">
<Label Text="{Binding Category}"/>
</StackLayout>
</ViewCell>
</DataTemplate>
</ListView.GroupHeaderTemplate>
<ListView.ItemTemplate> <ListView.ItemTemplate>
<DataTemplate> <DataTemplate>
<ViewCell> <ViewCell>

View File

@ -36,6 +36,8 @@ namespace Borepin.PageModel
private async Task _CreateMachineList(List<Machine> machine_list) private async Task _CreateMachineList(List<Machine> machine_list)
{ {
List<Task> tasks = new List<Task>();
List<MachineViewModelListGroup> viewmodel_group_list = new List<MachineViewModelListGroup>(); List<MachineViewModelListGroup> viewmodel_group_list = new List<MachineViewModelListGroup>();
MachineViewModelListGroup viewmodel_group_inusebyme = new MachineViewModelListGroup() MachineViewModelListGroup viewmodel_group_inusebyme = new MachineViewModelListGroup()
{ {
@ -54,7 +56,7 @@ namespace Borepin.PageModel
{ {
IsInUseByMe = true, IsInUseByMe = true,
}; };
await new_viewmodel.LoadInstance(machine).ConfigureAwait(false); tasks.Add(new_viewmodel.LoadInstance(machine));
new_viewmodel.Machine.Category = Resources.Text.TextResource.InUseByMe; new_viewmodel.Machine.Category = Resources.Text.TextResource.InUseByMe;
@ -63,14 +65,14 @@ namespace Borepin.PageModel
else if (machine.Category == null) else if (machine.Category == null)
{ {
MachineListItemViewModel new_viewmodel = new MachineListItemViewModel(_NavigationService, _PageDialogService); 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); viewmodel_group_inusebyme.Add(new_viewmodel);
} }
else else
{ {
MachineListItemViewModel new_viewmodel = new MachineListItemViewModel(_NavigationService, _PageDialogService); 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)); MachineViewModelListGroup viewmodel_group = viewmodel_group_list.Find(x => string.Equals(x.Category, machine.Category, StringComparison.Ordinal));
if (viewmodel_group != null) if (viewmodel_group != null)
@ -89,6 +91,8 @@ namespace Borepin.PageModel
} }
} }
await Task.WhenAll(tasks).ConfigureAwait(false);
viewmodel_group_inusebyme.Sort_Machines(); viewmodel_group_inusebyme.Sort_Machines();
viewmodel_group_uncategorised.Sort_Machines(); viewmodel_group_uncategorised.Sort_Machines();
foreach(MachineViewModelListGroup viewmodel_group in viewmodel_group_list) foreach(MachineViewModelListGroup viewmodel_group in viewmodel_group_list)
@ -96,6 +100,7 @@ namespace Borepin.PageModel
viewmodel_group.Sort_Machines(); viewmodel_group.Sort_Machines();
} }
viewmodel_group_uncategorised.Category = Resources.Text.TextResource.Uncategorised;
List<MachineViewModelListGroup> viewmodel_group_list_sorted = new List<MachineViewModelListGroup>(); List<MachineViewModelListGroup> viewmodel_group_list_sorted = new List<MachineViewModelListGroup>();
if(viewmodel_group_inusebyme.Count != 0) if(viewmodel_group_inusebyme.Count != 0)
{ {

View File

@ -33,6 +33,8 @@ namespace Borepin.PageModel
#region LoadData #region LoadData
public override async Task LoadInstance(object instance) public override async Task LoadInstance(object instance)
{ {
List<Task> tasks = new List<Task>();
IList<ConnectionData> list = await _LoginStorageService.GetList().ConfigureAwait(false); IList<ConnectionData> list = await _LoginStorageService.GetList().ConfigureAwait(false);
if (_API.IsConnected) if (_API.IsConnected)
{ {
@ -52,10 +54,11 @@ namespace Borepin.PageModel
foreach (ConnectionData connectionData in list) foreach (ConnectionData connectionData in list)
{ {
ServerListItemViewModel serverListItemViewModel = new ServerListItemViewModel(_NavigationService, _PageDialogService); ServerListItemViewModel serverListItemViewModel = new ServerListItemViewModel(_NavigationService, _PageDialogService);
await serverListItemViewModel.LoadInstance(connectionData).ConfigureAwait(false); tasks.Add(serverListItemViewModel.LoadInstance(connectionData));
serverListItemViewModel_List.Add(serverListItemViewModel); serverListItemViewModel_List.Add(serverListItemViewModel);
} }
await Task.WhenAll(tasks).ConfigureAwait(false);
ServerListItemViewModel_List = serverListItemViewModel_List; ServerListItemViewModel_List = serverListItemViewModel_List;
IsBusy = false; IsBusy = false;

View File

@ -28,16 +28,20 @@ namespace Borepin.PageModel
#region Data #region Data
public override async Task LoadAPIData() public override async Task LoadAPIData()
{ {
List<Task> tasks = new List<Task>();
IReadOnlyList<User> user_list = await _API.Session.UserSystem.Manage.GetUserList().ConfigureAwait(false); IReadOnlyList<User> user_list = await _API.Session.UserSystem.Manage.GetUserList().ConfigureAwait(false);
List<UserListItemViewModel> viewmodel_list= new List<UserListItemViewModel>(); List<UserListItemViewModel> viewmodel_list= new List<UserListItemViewModel>();
foreach (User user in user_list) foreach (User user in user_list)
{ {
UserListItemViewModel new_viewmodel = new UserListItemViewModel(_NavigationService, _PageDialogService); 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); viewmodel_list.Add(new_viewmodel);
} }
await Task.WhenAll(tasks).ConfigureAwait(false);
viewmodel_list.OrderBy(x => x.Instance.Username, StringComparison.OrdinalIgnoreCase.WithNaturalSort()); viewmodel_list.OrderBy(x => x.Instance.Username, StringComparison.OrdinalIgnoreCase.WithNaturalSort());
UserListItemViewModel_List = viewmodel_list; UserListItemViewModel_List = viewmodel_list;
} }
@ -86,7 +90,7 @@ namespace Borepin.PageModel
{ {
Device.BeginInvokeOnMainThread(async () => 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) if (result.Exception != null)
{ {
Log.Fatal(result.Exception, "Navigating failed"); Log.Fatal(result.Exception, "Navigating failed");

View File

@ -801,6 +801,15 @@ namespace Borepin.Resources.Text {
} }
} }
/// <summary>
/// Looks up a localized string similar to Uncategorised.
/// </summary>
internal static string Uncategorised {
get {
return ResourceManager.GetString("Uncategorised", resourceCulture);
}
}
/// <summary> /// <summary>
/// Looks up a localized string similar to Add User. /// Looks up a localized string similar to Add User.
/// </summary> /// </summary>

View File

@ -366,6 +366,9 @@ Ask in your Space if you can be trained on the machine to be unlocked for the ma
<data name="TITLE_Users" xml:space="preserve"> <data name="TITLE_Users" xml:space="preserve">
<value>Users</value> <value>Users</value>
</data> </data>
<data name="Uncategorised" xml:space="preserve">
<value>Uncategorised</value>
</data>
<data name="UserListPage_AddUser" xml:space="preserve"> <data name="UserListPage_AddUser" xml:space="preserve">
<value>Add User</value> <value>Add User</value>
</data> </data>

@ -1 +1 @@
Subproject commit 086bbc2497785d2cc63e9252df6f6d3ee7599579 Subproject commit 63e63853c1d5ca9f223aa3627ad391ce434a0683