diff --git a/Needlework.Net/Needlework.Net.csproj b/Needlework.Net/Needlework.Net.csproj index 7cde83f..abe7683 100644 --- a/Needlework.Net/Needlework.Net.csproj +++ b/Needlework.Net/Needlework.Net.csproj @@ -79,6 +79,9 @@ PluginView.axaml + + SchemaSearchDetailsView.axaml + WebSocketView.axaml @@ -87,4 +90,8 @@ + + + + diff --git a/Needlework.Net/Program.cs b/Needlework.Net/Program.cs index d580d4c..e5a1255 100644 --- a/Needlework.Net/Program.cs +++ b/Needlework.Net/Program.cs @@ -70,7 +70,7 @@ class Program var locator = new ViewLocator(); // MAIN WINDOW locator.Register(() => new NotificationView()); - locator.Register(() => new SchemaSearchDetailsView()); + locator.Register(() => new Views.MainWindow.SchemaSearchDetailsView()); locator.Register(() => new SchemaView()); // ABOUT locator.Register(() => new AboutView()); @@ -89,7 +89,7 @@ class Program locator.Register(() => new LibraryView()); // SCHEMAS locator.Register(() => new SchemasView()); - locator.Register(() => new SchemaItemView()); + locator.Register(() => new Views.Pages.Schemas.SchemaSearchDetailsView()); // WEBSOCKET locator.Register(() => new WebSocketView()); locator.Register(() => new EventView()); diff --git a/Needlework.Net/ViewModels/Pages/Schemas/SchemaItemViewModel.cs b/Needlework.Net/ViewModels/Pages/Schemas/SchemaItemViewModel.cs deleted file mode 100644 index 090625b..0000000 --- a/Needlework.Net/ViewModels/Pages/Schemas/SchemaItemViewModel.cs +++ /dev/null @@ -1,22 +0,0 @@ -using CommunityToolkit.Mvvm.ComponentModel; -using Needlework.Net.ViewModels.Pages.Endpoints; -using System.Collections.Generic; - -namespace Needlework.Net.ViewModels.Pages.Schemas -{ - public partial class SchemaItemViewModel : ObservableObject - { - public SchemaItemViewModel(PropertyClassViewModel vm) - { - Id = vm.Id; - PropertyFields = vm.PropertyFields; - PropertyEnums = vm.PropertyEnums; - } - - public string Id { get; } - - public List PropertyFields { get; } = []; - - public List PropertyEnums { get; } = []; - } -} diff --git a/Needlework.Net/ViewModels/Pages/Schemas/SchemaSearchDetailsViewModel.cs b/Needlework.Net/ViewModels/Pages/Schemas/SchemaSearchDetailsViewModel.cs new file mode 100644 index 0000000..8b9df9b --- /dev/null +++ b/Needlework.Net/ViewModels/Pages/Schemas/SchemaSearchDetailsViewModel.cs @@ -0,0 +1,26 @@ +using CommunityToolkit.Mvvm.ComponentModel; +using Needlework.Net.ViewModels.Pages.Endpoints; +using System; + +namespace Needlework.Net.ViewModels.Pages.Schemas +{ + public partial class SchemaSearchDetailsViewModel : ObservableObject + { + public SchemaSearchDetailsViewModel(Tab tab, PropertyClassViewModel vm) + { + Tab = tab; + Id = vm.Id; + } + + public string Id { get; } + + public Tab Tab { get; } + + public string Document => Tab switch + { + Tab.LCU => "LCU", + Tab.GameClient => "Game Client", + _ => throw new NotImplementedException() + }; + } +} diff --git a/Needlework.Net/ViewModels/Pages/Schemas/SchemasViewModel.cs b/Needlework.Net/ViewModels/Pages/Schemas/SchemasViewModel.cs index c6808d5..64853d5 100644 --- a/Needlework.Net/ViewModels/Pages/Schemas/SchemasViewModel.cs +++ b/Needlework.Net/ViewModels/Pages/Schemas/SchemasViewModel.cs @@ -3,7 +3,6 @@ using Avalonia.Threading; using CommunityToolkit.Mvvm.ComponentModel; using DebounceThrottle; using Needlework.Net.Helpers; -using Needlework.Net.Models; using Needlework.Net.ViewModels.Pages.Endpoints; using System; using System.Collections.Generic; @@ -18,9 +17,7 @@ namespace Needlework.Net.ViewModels.Pages.Schemas private readonly DocumentService _documentService; - public record SchemaTab(string Key, Tab Tab); - - private List _schemas = []; + private List _schemas = []; public SchemasViewModel(DocumentService documentService) : base("Schemas", "fa-solid fa-file-lines", -100) { @@ -34,7 +31,7 @@ namespace Needlework.Net.ViewModels.Pages.Schemas private string? _search; [ObservableProperty] - private List _schemaItems = []; + private List _schemaItems = []; [ObservableProperty] private Vector _offset = new(); @@ -43,40 +40,20 @@ namespace Needlework.Net.ViewModels.Pages.Schemas { _debounceDispatcher.Debounce(() => { - Task.Run(async () => + if (string.IsNullOrEmpty(value)) { - var lcuSchemaDocument = await _documentService.GetLcuSchemaDocumentAsync(); - var lolClientDocument = await _documentService.GetLolClientDocumentAsync(); - if (string.IsNullOrEmpty(value)) + Dispatcher.UIThread.Invoke(() => { - Dispatcher.UIThread.Invoke(() => - { - SchemaItems = _schemas.Select((schema) => ToSchemaItemViewModel(schema, lcuSchemaDocument, lolClientDocument)) - .ToList(); - }); - return; - } - var items = _schemas.Where(schema => schema.Key.Contains(value, StringComparison.OrdinalIgnoreCase)) - .Select((schema) => ToSchemaItemViewModel(schema, lcuSchemaDocument, lolClientDocument)) - .ToList(); - Dispatcher.UIThread.Invoke(() => { SchemaItems = items; }); - }); + SchemaItems = _schemas.ToList(); + }); + return; + } + var items = _schemas.Where(schema => schema.Id.Contains(value, StringComparison.OrdinalIgnoreCase)) + .ToList(); + Dispatcher.UIThread.Invoke(() => { SchemaItems = items; }); }); } - private SchemaItemViewModel ToSchemaItemViewModel(SchemaTab schema, Document lcuSchemaDocument, Document lolClientDocument) - { - var document = schema.Tab switch - { - Tab.LCU => lcuSchemaDocument.OpenApiDocument, - Tab.GameClient => lolClientDocument.OpenApiDocument, - _ => throw new NotImplementedException() - }; - var vm = OpenApiHelpers.WalkSchema(document.Components.Schemas[schema.Key], document); - return new SchemaItemViewModel(vm); - - } - public override async Task InitializeAsync() { var lcuSchemaDocument = await _documentService.GetLcuSchemaDocumentAsync(); @@ -84,13 +61,11 @@ namespace Needlework.Net.ViewModels.Pages.Schemas Dispatcher.UIThread.Invoke(() => { var schemas = Enumerable.Concat( - lcuSchemaDocument.OpenApiDocument.Components.Schemas.Keys.Select(key => new SchemaTab(key, Tab.LCU)), - lolClientDocument.OpenApiDocument.Components.Schemas.Keys.Select(key => new SchemaTab(key, Tab.GameClient)) + lcuSchemaDocument.OpenApiDocument.Components.Schemas.Values.Select(schema => new SchemaSearchDetailsViewModel(Tab.LCU, OpenApiHelpers.WalkSchema(schema, lcuSchemaDocument.OpenApiDocument))), + lolClientDocument.OpenApiDocument.Components.Schemas.Values.Select(schema => new SchemaSearchDetailsViewModel(Tab.GameClient, OpenApiHelpers.WalkSchema(schema, lolClientDocument.OpenApiDocument))) ).ToList(); _schemas = schemas; - SchemaItems = schemas - .Select((schema) => ToSchemaItemViewModel(schema, lcuSchemaDocument, lolClientDocument)) - .ToList(); + SchemaItems = schemas.ToList(); IsBusy = false; }); } diff --git a/Needlework.Net/Views/Pages/Schemas/SchemaItemView.axaml b/Needlework.Net/Views/Pages/Schemas/SchemaItemView.axaml deleted file mode 100644 index c01c1e1..0000000 --- a/Needlework.Net/Views/Pages/Schemas/SchemaItemView.axaml +++ /dev/null @@ -1,59 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - diff --git a/Needlework.Net/Views/Pages/Schemas/SchemaSearchDetailsView.axaml b/Needlework.Net/Views/Pages/Schemas/SchemaSearchDetailsView.axaml new file mode 100644 index 0000000..86caedd --- /dev/null +++ b/Needlework.Net/Views/Pages/Schemas/SchemaSearchDetailsView.axaml @@ -0,0 +1,46 @@ + + + + + + + + + diff --git a/Needlework.Net/Views/Pages/Schemas/SchemaItemView.axaml.cs b/Needlework.Net/Views/Pages/Schemas/SchemaSearchDetailsView.axaml.cs similarity index 55% rename from Needlework.Net/Views/Pages/Schemas/SchemaItemView.axaml.cs rename to Needlework.Net/Views/Pages/Schemas/SchemaSearchDetailsView.axaml.cs index b7ffff4..6c7db4f 100644 --- a/Needlework.Net/Views/Pages/Schemas/SchemaItemView.axaml.cs +++ b/Needlework.Net/Views/Pages/Schemas/SchemaSearchDetailsView.axaml.cs @@ -2,9 +2,9 @@ using Avalonia.Controls; namespace Needlework.Net.Views.Pages.Schemas; -public partial class SchemaItemView : UserControl +public partial class SchemaSearchDetailsView : UserControl { - public SchemaItemView() + public SchemaSearchDetailsView() { InitializeComponent(); } diff --git a/Needlework.Net/Views/Pages/Schemas/SchemasView.axaml b/Needlework.Net/Views/Pages/Schemas/SchemasView.axaml index 15e8c6a..0a880c1 100644 --- a/Needlework.Net/Views/Pages/Schemas/SchemasView.axaml +++ b/Needlework.Net/Views/Pages/Schemas/SchemasView.axaml @@ -23,13 +23,13 @@ Offset="{Binding Offset, Mode=TwoWay}"> - - +