From 893f2264636e2924f3d8682fa1df4b68e8a312fb Mon Sep 17 00:00:00 2001 From: BlossomiShymae <87099578+BlossomiShymae@users.noreply.github.com> Date: Sat, 10 Aug 2024 05:01:09 -0500 Subject: [PATCH] Add search for endpoint operations --- .../ViewModels/EndpointViewModel.cs | 16 ++++++++++++++++ .../Views/EndpointView.axaml | 18 +++++++++++++----- 2 files changed, 29 insertions(+), 5 deletions(-) diff --git a/Needlework.Net.Desktop/ViewModels/EndpointViewModel.cs b/Needlework.Net.Desktop/ViewModels/EndpointViewModel.cs index fe47892..f50d4e3 100644 --- a/Needlework.Net.Desktop/ViewModels/EndpointViewModel.cs +++ b/Needlework.Net.Desktop/ViewModels/EndpointViewModel.cs @@ -12,15 +12,31 @@ namespace Needlework.Net.Desktop.ViewModels public string Endpoint { get; } public string Title => Endpoint; + [ObservableProperty] private IAvaloniaReadOnlyList _pathOperations; [ObservableProperty] private PathOperationViewModel? _selectedPathOperation; + [ObservableProperty] private string? _search; + [ObservableProperty] private IAvaloniaReadOnlyList _filteredPathOperations; + public EndpointViewModel(string endpoint) { Endpoint = endpoint; var handler = WeakReferenceMessenger.Default.Send().Response; PathOperations = new AvaloniaList(handler.Plugins[endpoint].Select(x => new PathOperationViewModel(x))); + FilteredPathOperations = new AvaloniaList(PathOperations); + } + + partial void OnSearchChanged(string? value) + { + if (string.IsNullOrWhiteSpace(value)) + { + FilteredPathOperations = new AvaloniaList(PathOperations); + return; + } + + FilteredPathOperations = new AvaloniaList(PathOperations.Where(o => o.Path.ToLower().Contains(value.ToLower()))); } } } diff --git a/Needlework.Net.Desktop/Views/EndpointView.axaml b/Needlework.Net.Desktop/Views/EndpointView.axaml index 1806f03..2f317e0 100644 --- a/Needlework.Net.Desktop/Views/EndpointView.axaml +++ b/Needlework.Net.Desktop/Views/EndpointView.axaml @@ -3,6 +3,7 @@ xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:suki="clr-namespace:SukiUI.Controls;assembly=SukiUI" + xmlns:materialIcons="clr-namespace:Material.Icons.Avalonia;assembly=Material.Icons.Avalonia" xmlns:theme="clr-namespace:SukiUI.Theme;assembly=SukiUI" xmlns:vm="using:Needlework.Net.Desktop.ViewModels" xmlns:avalonEdit="https://github.com/avaloniaui/avaloniaedit" @@ -12,15 +13,22 @@ + + + -