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}">
-
-
+