From 73a6125faf1b42bbb223f33ac50fb981164a9e7b Mon Sep 17 00:00:00 2001 From: ThePra Date: Mon, 6 Jul 2020 01:00:48 +0200 Subject: [PATCH] Many updates --- Seenginx.Models/ConfigFile.cs | 3 +- Seenginx/Components/FilesWithEditor.razor | 29 ++-- Seenginx/Components/FilesWithEditor.razor.cs | 27 +++- Seenginx/Pages/Nginx.razor | 3 +- Seenginx/Pages/Nginx.razor.cs | 20 +-- Seenginx/Services/FileManager.cs | 8 +- Seenginx/Services/IFileManager.cs | 4 +- Seenginx/Services/INginxService.cs | 9 +- Seenginx/Services/NginxService.cs | 152 +++++++++++++------ Seenginx/wwwroot/js/index.js | 3 + 10 files changed, 168 insertions(+), 90 deletions(-) diff --git a/Seenginx.Models/ConfigFile.cs b/Seenginx.Models/ConfigFile.cs index 079d052..2a0a55a 100644 --- a/Seenginx.Models/ConfigFile.cs +++ b/Seenginx.Models/ConfigFile.cs @@ -7,7 +7,6 @@ namespace Seenginx.Models public string FullPath { get; set; } public string Folder { get; set; } public string Name { get; set; } - public string DraftName { get; set; } public string Body { get; set; } public string DraftBody { get; set; } public string Permissions { get; set; } @@ -15,7 +14,7 @@ namespace Seenginx.Models public string[] Owners { get; set; } public string IsVisible { get; set; } = string.Empty; public string IsSelected { get; set; } = string.Empty; - public bool HasDraft => !string.IsNullOrEmpty(DraftName); + public bool HasDraft => !string.IsNullOrEmpty(DraftBody); public bool CanBeDeleted { get; set; } = true; public void Hide() { IsVisible = "is-hidden"; } diff --git a/Seenginx/Components/FilesWithEditor.razor b/Seenginx/Components/FilesWithEditor.razor index f1b3549..b2597b8 100644 --- a/Seenginx/Components/FilesWithEditor.razor +++ b/Seenginx/Components/FilesWithEditor.razor @@ -17,11 +17,19 @@ @if (IsAnyFileSelected) {
-
- +
+ + + + +
+
+
+ @if (HasTesting) + { + + } + -
} else diff --git a/Seenginx/Components/FilesWithEditor.razor.cs b/Seenginx/Components/FilesWithEditor.razor.cs index 8a0f313..469c67f 100644 --- a/Seenginx/Components/FilesWithEditor.razor.cs +++ b/Seenginx/Components/FilesWithEditor.razor.cs @@ -22,13 +22,18 @@ namespace Seenginx.Components [Parameter] public RenderFragment Editor { get; set; } = null; + [Parameter] public bool HasTesting { get; set; } = false; [Parameter] public EventCallback TestConfiguration { get; set; } [Parameter] public EventCallback ShowAddFileModal { get; set; } [Parameter] public EventCallback DeleteFileCallback { get; set; } + [Parameter] public EventCallback RenameFileCallback { get; set; } + [Parameter] public EventCallback SaveFileCallback { get; set; } + [Parameter] public EventCallback SaveDraftFileCallback { get; set; } [Parameter] public EventCallback SelectedFileChanged { get; set; } [Parameter] public CFile SelectedFile { get; set; } = default; protected string SearchInput { get; set; } + private bool ConfigHasChanged => (string.IsNullOrEmpty(SelectedFile.DraftBody) ? false : SelectedFile.Body != SelectedFile.DraftBody); protected bool IsAnyFileSelected => SelectedFile != default; protected string IsSelectedFileDeletable @@ -80,6 +85,11 @@ namespace Seenginx.Components await SelectedFileChanged.InvokeAsync(file); } + protected async Task OnFileRenameClick(MouseEventArgs e) + { + await RenameFileCallback.InvokeAsync(null); + } + protected async Task OnFileCloseClick(MouseEventArgs e) { Files.ForEach(f => f.Deselect()); @@ -91,18 +101,19 @@ namespace Seenginx.Components { var draftCode = await JsRuntime.InvokeAsync("GetEditorCode"); SelectedFile.DraftBody = draftCode; - } - - protected async Task OnUndoChanges(MouseEventArgs e) - { - SelectedFile.DraftBody = SelectedFile.Body; - await JsRuntime.InvokeVoidAsync("UpdateEditor", SelectedFile.Body); + await SaveDraftFileCallback.InvokeAsync(null); } protected async Task OnSave(MouseEventArgs e) { - var draftCode = await JsRuntime.InvokeAsync("GetEditorCode"); - SelectedFile.Body = draftCode; + var currentCode = await JsRuntime.InvokeAsync("GetEditorCode"); + SelectedFile.Body = currentCode; + await SaveFileCallback.InvokeAsync(null); + } + + protected async Task OnUndoChanges(MouseEventArgs e) + { + await JsRuntime.InvokeVoidAsync("UpdateEditor", SelectedFile.Body); } protected async Task OnTest(MouseEventArgs e) diff --git a/Seenginx/Pages/Nginx.razor b/Seenginx/Pages/Nginx.razor index bce57d5..aaa46dd 100644 --- a/Seenginx/Pages/Nginx.razor +++ b/Seenginx/Pages/Nginx.razor @@ -1,6 +1,7 @@ @inherits NginxBase @page "/nginx" + TestConfiguration="TestConfiguration" DeleteFileCallback="DeleteFile" ShowAddFileModal="ShowAddFileModal" + HasTesting="true" SaveFileCallback="SaveFileAsync" SaveDraftFileCallback="SaveDraftFileAsync"> diff --git a/Seenginx/Pages/Nginx.razor.cs b/Seenginx/Pages/Nginx.razor.cs index 68a4180..997754c 100644 --- a/Seenginx/Pages/Nginx.razor.cs +++ b/Seenginx/Pages/Nginx.razor.cs @@ -2,6 +2,7 @@ using Blazored.Modal.Services; using Blazorise; using Microsoft.AspNetCore.Components; +using Microsoft.JSInterop; using Seenginx.Models; using Seenginx.Services; using Seenginx.Shared; @@ -23,24 +24,15 @@ namespace Seenginx.Pages public List ConfigFiles { get; set; } = new List(); public ConfigFile SelectedFile { get; set; } - public List Filters { get; set; } = new List(); public List FilteredOutFiles { get; set; } = new List(); public NotificationSettings GeneralNotificationSettings { get; set; } = null; public List