diff --git a/src/ScadaLink.CentralUI/Components/Pages/Design/Templates.razor b/src/ScadaLink.CentralUI/Components/Pages/Design/Templates.razor index c664f4f..16d71d6 100644 --- a/src/ScadaLink.CentralUI/Components/Pages/Design/Templates.razor +++ b/src/ScadaLink.CentralUI/Components/Pages/Design/Templates.razor @@ -19,105 +19,28 @@ - @if (_showRenameFolderDialog) - { - - } + - @if (_showNewFolderDialog) - { - - } + - @if (_showNewTemplateDialog) - { - - } + - @if (_showMoveTemplateDialog) - { - - } + @if (_loading) { @@ -697,22 +620,20 @@ // New-folder dialog state private bool _showNewFolderDialog; private int? _newFolderParentId; - private string _newFolderName = string.Empty; private string? _newFolderError; private void OpenNewFolderDialog(int? parentFolderId) { _newFolderParentId = parentFolderId; - _newFolderName = string.Empty; _newFolderError = null; _showNewFolderDialog = true; } - private async Task SubmitNewFolder() + private async Task SubmitNewFolder((int? ParentFolderId, string Name) req) { _newFolderError = null; var user = await GetCurrentUserAsync(); - var result = await TemplateFolderService.CreateFolderAsync(_newFolderName.Trim(), _newFolderParentId, user); + var result = await TemplateFolderService.CreateFolderAsync(req.Name, req.ParentFolderId, user); if (result.IsSuccess) { _showNewFolderDialog = false; @@ -728,25 +649,21 @@ // New-template dialog state private bool _showNewTemplateDialog; private int? _newTemplateFolderId; - private string _newTemplateName = string.Empty; - private string? _newTemplateDescription; private string? _newTemplateError; private void OpenNewTemplateDialog(int? folderId) { _newTemplateFolderId = folderId; - _newTemplateName = string.Empty; - _newTemplateDescription = null; _newTemplateError = null; _showNewTemplateDialog = true; } - private async Task SubmitNewTemplate() + private async Task SubmitNewTemplate((int? FolderId, string Name, string? Description) req) { _newTemplateError = null; var user = await GetCurrentUserAsync(); var result = await TemplateService.CreateTemplateAsync( - _newTemplateName.Trim(), _newTemplateDescription?.Trim(), null, user, folderId: _newTemplateFolderId); + req.Name, req.Description, null, user, folderId: req.FolderId); if (result.IsSuccess) { _showNewTemplateDialog = false; @@ -764,23 +681,21 @@ private bool _showMoveTemplateDialog; private int _moveTemplateId; private string _moveTemplateName = string.Empty; - private int? _moveTemplateTargetFolderId; private string? _moveTemplateError; private void OpenMoveTemplateDialog(int templateId, string label) { _moveTemplateId = templateId; _moveTemplateName = label; - _moveTemplateTargetFolderId = null; _moveTemplateError = null; _showMoveTemplateDialog = true; } - private async Task SubmitMoveTemplate() + private async Task SubmitMoveTemplate((int TemplateId, int? NewFolderId) req) { _moveTemplateError = null; var user = await GetCurrentUserAsync(); - var result = await TemplateService.MoveTemplateAsync(_moveTemplateId, _moveTemplateTargetFolderId, user); + var result = await TemplateService.MoveTemplateAsync(req.TemplateId, req.NewFolderId, user); if (result.IsSuccess) { _showMoveTemplateDialog = false; @@ -814,22 +729,22 @@ // Rename folder dialog state private bool _showRenameFolderDialog; private int _renameFolderId; - private string _renameFolderName = string.Empty; + private string _renameFolderInitialName = string.Empty; private string? _renameFolderError; private void OpenRenameFolderDialog(int folderId, string currentName) { _renameFolderId = folderId; - _renameFolderName = currentName; + _renameFolderInitialName = currentName; _renameFolderError = null; _showRenameFolderDialog = true; } - private async Task SubmitRenameFolder() + private async Task SubmitRenameFolder((int FolderId, string NewName) req) { _renameFolderError = null; var user = await GetCurrentUserAsync(); - var result = await TemplateFolderService.RenameFolderAsync(_renameFolderId, _renameFolderName.Trim(), user); + var result = await TemplateFolderService.RenameFolderAsync(req.FolderId, req.NewName, user); if (result.IsSuccess) { _showRenameFolderDialog = false; diff --git a/src/ScadaLink.CentralUI/Components/Shared/MoveTemplateDialog.razor b/src/ScadaLink.CentralUI/Components/Shared/MoveTemplateDialog.razor new file mode 100644 index 0000000..5980ceb --- /dev/null +++ b/src/ScadaLink.CentralUI/Components/Shared/MoveTemplateDialog.razor @@ -0,0 +1,59 @@ +@if (IsVisible) +{ + +} + +@code { + [Parameter] public bool IsVisible { get; set; } + [Parameter] public EventCallback IsVisibleChanged { get; set; } + [Parameter] public int TemplateId { get; set; } + [Parameter] public string TemplateName { get; set; } = string.Empty; + [Parameter] public IEnumerable<(int? Id, string Label)> FolderOptions { get; set; } = Array.Empty<(int?, string)>(); + [Parameter] public string? ErrorMessage { get; set; } + [Parameter] public EventCallback<(int TemplateId, int? NewFolderId)> OnSubmit { get; set; } + + private bool _wasVisible; + private int? _targetFolderId; + + protected override void OnParametersSet() + { + // Reset internal state on transition from hidden -> visible. + if (IsVisible && !_wasVisible) + { + _targetFolderId = null; + } + _wasVisible = IsVisible; + } + + private async Task Close() + { + await IsVisibleChanged.InvokeAsync(false); + } + + private async Task Submit() + { + await OnSubmit.InvokeAsync((TemplateId, _targetFolderId)); + } +} diff --git a/src/ScadaLink.CentralUI/Components/Shared/NewFolderDialog.razor b/src/ScadaLink.CentralUI/Components/Shared/NewFolderDialog.razor new file mode 100644 index 0000000..e1c6c15 --- /dev/null +++ b/src/ScadaLink.CentralUI/Components/Shared/NewFolderDialog.razor @@ -0,0 +1,52 @@ +@if (IsVisible) +{ + +} + +@code { + [Parameter] public bool IsVisible { get; set; } + [Parameter] public EventCallback IsVisibleChanged { get; set; } + [Parameter] public int? ParentFolderId { get; set; } + [Parameter] public string? ErrorMessage { get; set; } + [Parameter] public EventCallback<(int? ParentFolderId, string Name)> OnSubmit { get; set; } + + private bool _wasVisible; + private string _name = string.Empty; + + protected override void OnParametersSet() + { + // Reset internal state on transition from hidden -> visible. + if (IsVisible && !_wasVisible) + { + _name = string.Empty; + } + _wasVisible = IsVisible; + } + + private async Task Close() + { + await IsVisibleChanged.InvokeAsync(false); + } + + private async Task Submit() + { + await OnSubmit.InvokeAsync((ParentFolderId, _name.Trim())); + } +} diff --git a/src/ScadaLink.CentralUI/Components/Shared/NewTemplateDialog.razor b/src/ScadaLink.CentralUI/Components/Shared/NewTemplateDialog.razor new file mode 100644 index 0000000..b0009d7 --- /dev/null +++ b/src/ScadaLink.CentralUI/Components/Shared/NewTemplateDialog.razor @@ -0,0 +1,61 @@ +@if (IsVisible) +{ + +} + +@code { + [Parameter] public bool IsVisible { get; set; } + [Parameter] public EventCallback IsVisibleChanged { get; set; } + [Parameter] public int? FolderId { get; set; } + [Parameter] public string? ErrorMessage { get; set; } + [Parameter] public EventCallback<(int? FolderId, string Name, string? Description)> OnSubmit { get; set; } + + private bool _wasVisible; + private string _name = string.Empty; + private string? _description; + + protected override void OnParametersSet() + { + // Reset internal state on transition from hidden -> visible. + if (IsVisible && !_wasVisible) + { + _name = string.Empty; + _description = null; + } + _wasVisible = IsVisible; + } + + private async Task Close() + { + await IsVisibleChanged.InvokeAsync(false); + } + + private async Task Submit() + { + await OnSubmit.InvokeAsync((FolderId, _name.Trim(), _description?.Trim())); + } +} diff --git a/src/ScadaLink.CentralUI/Components/Shared/RenameFolderDialog.razor b/src/ScadaLink.CentralUI/Components/Shared/RenameFolderDialog.razor new file mode 100644 index 0000000..f2603c4 --- /dev/null +++ b/src/ScadaLink.CentralUI/Components/Shared/RenameFolderDialog.razor @@ -0,0 +1,53 @@ +@if (IsVisible) +{ + +} + +@code { + [Parameter] public bool IsVisible { get; set; } + [Parameter] public EventCallback IsVisibleChanged { get; set; } + [Parameter] public int FolderId { get; set; } + [Parameter] public string InitialName { get; set; } = string.Empty; + [Parameter] public string? ErrorMessage { get; set; } + [Parameter] public EventCallback<(int FolderId, string NewName)> OnSubmit { get; set; } + + private bool _wasVisible; + private string _name = string.Empty; + + protected override void OnParametersSet() + { + // Reset internal state on transition from hidden -> visible. + if (IsVisible && !_wasVisible) + { + _name = InitialName; + } + _wasVisible = IsVisible; + } + + private async Task Close() + { + await IsVisibleChanged.InvokeAsync(false); + } + + private async Task Submit() + { + await OnSubmit.InvokeAsync((FolderId, _name.Trim())); + } +}