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 Dictionary FilterFolder { get; set; } = new Dictionary(); [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 string SearchInput { 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) { SelectedFilter = filter; SearchFile(); } protected async Task SearchInputChanged(string searchInput) { SearchInput = searchInput; SearchFile(); } private void SearchFile() { if (string.IsNullOrEmpty(SearchInput)) { if (SelectedFilter == "All") Files.ForEach(f => f.Unhide()); else if (SelectedFilter == "Root") Files.ForEach(f => { if (f.Folder == FilterFolder[SelectedFilter]) f.Unhide(); else f.Hide(); }); else Files.ForEach(f => { if (f.Folder.Contains(FilterFolder[SelectedFilter])) f.Unhide(); else f.Hide(); }); } else { if (SelectedFilter == "All") Files.ForEach(f => { if (f.Name.ToLower().Contains(SearchInput)) f.Unhide(); else f.Hide(); }); else if (SelectedFilter == "Root") Files.ForEach(f => { if (f.Folder == FilterFolder[SelectedFilter]) f.Unhide(); else f.Hide(); }); else Files.ForEach(f => { if (f.Folder.Contains(FilterFolder[SelectedFilter])) f.Unhide(); else f.Hide(); }); //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); } } }