using Microsoft.AspNetCore.Components; using Microsoft.AspNetCore.Components.Web; using Seenginx.Models; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Seenginx.Components { public partial class FilesWithEditor : ComponentBase where CFile : ConfigFile { [Parameter] public List Files { get; set; } = new List(); [Parameter] public List Filters { get; set; } = new List(); [Parameter] public List FilteredOutFiles { get; set; } = new List(); [Parameter] public EventCallback ApplyFilter { get; set; } [Parameter] public EventCallback AddFile { get; set; } [Parameter] public EventCallback UpdateFile { get; set; } [Parameter] public EventCallback DeleteFile { get; set; } [Parameter] public RenderFragment Editor { get; set; } [Parameter] public RenderFragment CreateDialog { get; set; } [Parameter] public RenderFragment UpdateDialog { get; set; } [Parameter] public RenderFragment DeleteDialog { get; set; } protected string SelectedFilter { get; set; } protected bool IsAnyFileSelected => SelectedFile != default; [Parameter] public EventCallback SelectedFileChanged { get; set; } [Parameter] public CFile SelectedFile { get; set; } protected async Task OnDeselectClick() { SelectedFile = null; await SelectedFileChanged.InvokeAsync(SelectedFile); } protected async Task OnFilterClick(string filter) { await ApplyFilter.InvokeAsync(filter); //for (int index = 0; index < Files.Count; index++) // if (FilteredOutFiles.Contains(index)) // Files[index].Hide(); // else // Files[index].Unhide(); } protected async Task SearchInputChanged(string searchInput) { if (string.IsNullOrEmpty(searchInput)) Files.ForEach(f => f.Unhide()); else Files.ForEach(f => { if (f.Name.ToLower().Contains(searchInput.ToLower())) f.Unhide(); else f.Hide(); }); } protected async Task OnFileClick(MouseEventArgs e, CFile file) { await SelectedFileChanged.InvokeAsync(file); } protected async Task OnAddDialog() { await AddFile.InvokeAsync(null); } protected async Task OnUpdateDialog() { await UpdateFile.InvokeAsync(SelectedFile); } protected async Task OnDeleteDialog() { await UpdateFile.InvokeAsync(SelectedFile); } } }