@using RobotNet.WebApp.Scripts.Components.Dialogs @implements IDisposable @inject IJSRuntime JsRuntime @inject ISnackbar Snackbar @inject IDialogService DialogService @foreach (var model in Workspace.Folders) { } @foreach (var model in Workspace.Files) { } @code { [CascadingParameter] private ScriptWorkspace Workspace { get; set; } = null!; readonly string ItemRadioName = $"script-{Guid.NewGuid()}"; protected override void OnInitialized() { base.OnInitialized(); Workspace.RootChanged += OnRootChanged; } private void OnRootChanged() { this.InvokeAsync(() => { StateHasChanged(); }); } private async Task ResetSelect() { Workspace.SelectFolder(null); await JsRuntime.InvokeVoidAsync("UncheckRadioAll", ItemRadioName); } private async Task SaveSelect() { if (Workspace.IsReadOnly) { Snackbar.Add($"Hệ thống đang ở trạng thái {Workspace.ProcessorState}, Không thể thay đổi script", Severity.Warning); return; } var results = await Workspace.SaveSelectAsync(); foreach (var result in results) { if (!result.IsSuccess) { Snackbar.Add(result.Message, Severity.Error); } } } private async Task DeleteSelect() { if (Workspace.IsReadOnly) { Snackbar.Add($"Hệ thống đang ở trạng thái {Workspace.ProcessorState}, Không thể thay đổi script", Severity.Warning); return; } // Truyền Workspace vào DeleteFileOrFolderDialog qua parameters var parameters = new DialogParameters { { "Workspace", Workspace } }; await DialogService.ShowAsync("", parameters: parameters); } private async Task RenameSelect() { if (Workspace.IsReadOnly) { Snackbar.Add($"Hệ thống đang ở trạng thái {Workspace.ProcessorState}, Không thể thay đổi script", Severity.Warning); return; } var parameters = new DialogParameters { { "Workspace", Workspace } }; await DialogService.ShowAsync("", parameters: parameters); } public void Dispose() { Workspace.RootChanged -= OnRootChanged; GC.SuppressFinalize(this); } }