From 572a35fd3f1ced9b1fdfe968cf8e4a4bf17992ac Mon Sep 17 00:00:00 2001 From: Andre Beging Date: Thu, 27 Mar 2025 16:16:48 +0100 Subject: [PATCH] Data loading update, prospect container styling --- .../BaseClasses/FsBase.cs | 34 ++++++++++++++++++ .../Controls/InteractionRow.razor | 28 ++++++++------- .../Controls/InteractionRow.razor.cs | 2 +- .../Controls/ProspectContainer.razor | 28 ++++++++++----- .../Pages/AuditView.razor.cs | 23 ++++++------ .../Pages/Profile.razor.cs | 36 +++++++++---------- .../Pages/Prospects.razor.cs | 36 ++++++------------- .../Pages/ProspectsDone.razor.cs | 19 ++++------ .../Pages/ProspectsTodo.razor.cs | 35 +++++++----------- FoodsharingSiegen.Server/Pages/Users.razor.cs | 17 ++++----- FoodsharingSiegen.Server/wwwroot/css/site.css | 4 +++ 11 files changed, 137 insertions(+), 125 deletions(-) diff --git a/FoodsharingSiegen.Server/BaseClasses/FsBase.cs b/FoodsharingSiegen.Server/BaseClasses/FsBase.cs index c7f8462..66ff561 100644 --- a/FoodsharingSiegen.Server/BaseClasses/FsBase.cs +++ b/FoodsharingSiegen.Server/BaseClasses/FsBase.cs @@ -64,6 +64,12 @@ namespace FoodsharingSiegen.Server.BaseClasses #endregion + #region Private Fields + + private bool _dataInitialized; + + #endregion + #region Override OnInitializedAsync /// @@ -77,6 +83,34 @@ namespace FoodsharingSiegen.Server.BaseClasses #endregion + #region Override SetParametersAsync + + /// + public override async Task SetParametersAsync(ParameterView parameters) + { + parameters.SetParameterProperties(this); + + if (!_dataInitialized) + { + _dataInitialized = true; + await InitializeDataAsync(); + } + + // Da die Parameter bereits gesetzt wurden, kann die Basisklasse am Ende aufgerufen werden. + await base.SetParametersAsync(ParameterView.Empty); + } + + #endregion + + #region Protected Method InitializeDataAsync + + /// + /// Initialize data here, Database Actions belong here + /// + protected virtual async Task InitializeDataAsync() => await Task.CompletedTask; + + #endregion + #region Protected Method RefreshState /// diff --git a/FoodsharingSiegen.Server/Controls/InteractionRow.razor b/FoodsharingSiegen.Server/Controls/InteractionRow.razor index e709c6a..143148d 100644 --- a/FoodsharingSiegen.Server/Controls/InteractionRow.razor +++ b/FoodsharingSiegen.Server/Controls/InteractionRow.razor @@ -11,32 +11,36 @@ - @Caption: - + @Caption: + @if (Interactions.Count > 0) { foreach (var interaction in Interactions) { -
- @interaction.User.Name (@interaction.Date.ToShortDateString()) +
+
+ @interaction.User.Name (@interaction.Date.ToShortDateString()) + + @if ((Prospect is not { Complete: true } || interaction.Type == InteractionType.Complete) && AllowAddInteraction) + { +   + } +
+ @if (!string.IsNullOrWhiteSpace(interaction.Info)) { (@interaction.Info) } - - @if ((Prospect is not {Complete: true } || interaction.Type == InteractionType.Complete) && AllowAddInteraction) - { -   - } -
} } @if (Prospect is not {Complete: true } && (Interactions.Count == 0 || Multiple) && AllowAddInteraction) { - if (Multiple) ButtonText = "+"; - + if (Multiple) ButtonIconClass = "fa-solid fa-plus"; +
+ +
} \ No newline at end of file diff --git a/FoodsharingSiegen.Server/Controls/InteractionRow.razor.cs b/FoodsharingSiegen.Server/Controls/InteractionRow.razor.cs index d12aa5f..b5b6d07 100644 --- a/FoodsharingSiegen.Server/Controls/InteractionRow.razor.cs +++ b/FoodsharingSiegen.Server/Controls/InteractionRow.razor.cs @@ -26,7 +26,7 @@ namespace FoodsharingSiegen.Server.Controls /// Gets or sets the value of the button text (ab) ///
[Parameter] - public string? ButtonText { get; set; } + public string? ButtonIconClass { get; set; } /// /// Gets or sets the value of the caption (ab) diff --git a/FoodsharingSiegen.Server/Controls/ProspectContainer.razor b/FoodsharingSiegen.Server/Controls/ProspectContainer.razor index b4b64d2..6adea54 100644 --- a/FoodsharingSiegen.Server/Controls/ProspectContainer.razor +++ b/FoodsharingSiegen.Server/Controls/ProspectContainer.razor @@ -32,7 +32,7 @@ } - +
@@ -54,18 +54,24 @@ Caption="Einführungen" Multiple="true" Minimum="3" - ButtonText="Hinzufügen" + ButtonIconClass="fa-solid fa-plus" IconClass="fa-solid fa-basket-shopping"> + + + + @@ -76,7 +82,7 @@ AddClick="() => AddInteraction(InteractionType.PrintPass)" RemoveClick="@RemoveInteraction" Caption="FS-Ausweis (print)" - ButtonText="Abhaken" + ButtonIconClass="fa-solid fa-check" IconClass="fa-solid fa-id-card"> @@ -87,10 +93,16 @@ AddClick="() => AddInteraction(InteractionType.Verify)" RemoveClick="@RemoveInteraction" Caption="Verifizieren" - ButtonText="Abhaken" + ButtonIconClass="fa-solid fa-check" IconClass="fa-solid fa-user-check"> + + + + diff --git a/FoodsharingSiegen.Server/Pages/AuditView.razor.cs b/FoodsharingSiegen.Server/Pages/AuditView.razor.cs index 2b9a1b9..bc60999 100644 --- a/FoodsharingSiegen.Server/Pages/AuditView.razor.cs +++ b/FoodsharingSiegen.Server/Pages/AuditView.razor.cs @@ -5,40 +5,37 @@ using Microsoft.AspNetCore.Components; namespace FoodsharingSiegen.Server.Pages { /// - /// The audit view class (a. beging, 23.05.2022) + /// The audit view class (a. beging, 23.05.2022) /// public partial class AuditView { - #region Dependencies (Injected) + #region Dependencies /// - /// Gets or sets the value of the audit service (ab) + /// Gets or sets the value of the audit service (ab) /// - [Inject] public AuditService? AuditService { get; set; } + [Inject] + public AuditService? AuditService { get; set; } #endregion - #region Public Properties + #region Private Properties /// - /// Gets or sets the value of the audits (ab) + /// Gets or sets the value of the audits (ab) /// private List? Audits { get; set; } #endregion - #region Override OnInitializedAsync + #region Override InitializeDataAsync - /// - /// Ons the initialized (a. beging, 23.05.2022) - /// - protected override async Task OnInitializedAsync() + /// + protected override async Task InitializeDataAsync() { var loadR = await AuditService?.Load(100)!; if (loadR.Success) Audits = loadR.Data; - - await base.OnInitializedAsync(); } #endregion diff --git a/FoodsharingSiegen.Server/Pages/Profile.razor.cs b/FoodsharingSiegen.Server/Pages/Profile.razor.cs index b42ad28..34445b0 100644 --- a/FoodsharingSiegen.Server/Pages/Profile.razor.cs +++ b/FoodsharingSiegen.Server/Pages/Profile.razor.cs @@ -7,37 +7,34 @@ using Microsoft.AspNetCore.Components; namespace FoodsharingSiegen.Server.Pages { /// - /// The profile class (a. beging, 21.05.2022) + /// The profile class (a. beging, 21.05.2022) /// public partial class Profile { - #region Dependencies (Injected) - - #region Dependencies (Injected) + #region Dependencies /// - /// Gets or sets the value of the user service (ab) + /// Gets or sets the value of the user service (ab) /// - [Inject] public UserService? UserService { get; set; } - - #endregion + [Inject] + public UserService? UserService { get; set; } #endregion #region Private Properties /// - /// Gets or sets the value of the password modal (ab) + /// Gets or sets the value of the password modal (ab) /// private SetPasswordModal? PasswordModal { get; set; } /// - /// Gets or sets the value of the user (ab) + /// Gets or sets the value of the user (ab) /// private User User { get; set; } = new(); /// - /// Gets or sets the value of the validations ref (ab) + /// Gets or sets the value of the validations ref (ab) /// private Validations? ValidationsRef { get; set; } @@ -46,12 +43,12 @@ namespace FoodsharingSiegen.Server.Pages #region Override OnAfterRenderAsync /// - /// Ons the after render using the specified first render (a. beging, 21.05.2022) + /// Ons the after render using the specified first render (a. beging, 21.05.2022) /// /// The first render protected override async Task OnAfterRenderAsync(bool firstRender) { - if(firstRender) await ValidationsRef?.ValidateAll()!; + if (firstRender) await ValidationsRef?.ValidateAll()!; await base.OnAfterRenderAsync(firstRender); } @@ -60,13 +57,12 @@ namespace FoodsharingSiegen.Server.Pages #region Override OnInitializedAsync /// - /// Ons the initialized (a. beging, 21.05.2022) + /// Ons the initialized (a. beging, 21.05.2022) /// protected override async Task OnInitializedAsync() { await base.OnInitializedAsync(); User = CurrentUser.Clone(); - } #endregion @@ -74,7 +70,7 @@ namespace FoodsharingSiegen.Server.Pages #region Private Method ChangePassword /// - /// Changes the password (a. beging, 23.05.2022) + /// Changes the password (a. beging, 23.05.2022) /// private async Task ChangePassword() { @@ -86,7 +82,7 @@ namespace FoodsharingSiegen.Server.Pages #region Private Method OnPasswordSet /// - /// Ons the password set using the specified arg (a. beging, 23.05.2022) + /// Ons the password set using the specified arg (a. beging, 23.05.2022) /// /// The arg private async Task OnPasswordSet(User arg) @@ -94,7 +90,7 @@ namespace FoodsharingSiegen.Server.Pages var setPasswordR = await UserService?.SetPassword(arg)!; if (setPasswordR.Success) NavigationManager?.NavigateTo("/logout"); - else + else await Notification?.Success(setPasswordR.ErrorMessage)!; } @@ -103,7 +99,7 @@ namespace FoodsharingSiegen.Server.Pages #region Private Method RemoveAccount /// - /// Removes the account (a. beging, 23.05.2022) + /// Removes the account (a. beging, 23.05.2022) /// private async Task RemoveAccount() { @@ -115,7 +111,7 @@ namespace FoodsharingSiegen.Server.Pages #region Private Method SaveProfile /// - /// Saves the profile (a. beging, 21.05.2022) + /// Saves the profile (a. beging, 21.05.2022) /// private async Task SaveProfile() { diff --git a/FoodsharingSiegen.Server/Pages/Prospects.razor.cs b/FoodsharingSiegen.Server/Pages/Prospects.razor.cs index c65d42b..df7524c 100644 --- a/FoodsharingSiegen.Server/Pages/Prospects.razor.cs +++ b/FoodsharingSiegen.Server/Pages/Prospects.razor.cs @@ -16,12 +16,14 @@ namespace FoodsharingSiegen.Server.Pages /// /// Gets or sets the value of the prospect service (ab) /// - [Inject] public ProspectService ProspectService { get; set; } = null!; + [Inject] + public ProspectService ProspectService { get; set; } = null!; /// /// Gets or sets the value of the user service (ab) /// - [Inject] public UserService UserService { get; set; } = null!; + [Inject] + public UserService UserService { get; set; } = null!; #endregion @@ -54,34 +56,18 @@ namespace FoodsharingSiegen.Server.Pages #endregion - #region Override OnAfterRenderAsync + #region Override InitializeDataAsync - /// - /// Ons the after render using the specified first render (a. beging, 11.04.2022) - /// - /// The first render - protected override async Task OnAfterRenderAsync(bool firstRender) + /// + protected override async Task InitializeDataAsync() { - if (firstRender) - await LoadProspects(); + // Load prospects + await LoadProspects(); - await base.OnAfterRenderAsync(firstRender); - } - - #endregion - - #region Override OnInitializedAsync - - /// - /// Ons the initialized (a. beging, 11.04.2022) - /// - protected override async Task OnInitializedAsync() - { + // Load users var getUsersR = await UserService.GetUsersAsync(); if (getUsersR.Success) Users = getUsersR.Data; - - await base.OnInitializedAsync(); } #endregion @@ -108,7 +94,7 @@ namespace FoodsharingSiegen.Server.Pages { var parameter = new GetProspectsParameter { - CannotHaveInteractions = new List { InteractionType.Complete, InteractionType.Verify } + CannotHaveInteractions = [InteractionType.Complete, InteractionType.Verify] }; var prospectsR = await ProspectService.GetProspectsAsync(parameter); if (prospectsR.Success) ProspectList = prospectsR.Data; diff --git a/FoodsharingSiegen.Server/Pages/ProspectsDone.razor.cs b/FoodsharingSiegen.Server/Pages/ProspectsDone.razor.cs index 03788c9..088b02d 100644 --- a/FoodsharingSiegen.Server/Pages/ProspectsDone.razor.cs +++ b/FoodsharingSiegen.Server/Pages/ProspectsDone.razor.cs @@ -15,7 +15,8 @@ namespace FoodsharingSiegen.Server.Pages /// /// Gets or sets the value of the prospect service (ab) /// - [Inject] public ProspectService ProspectService { get; set; } = null!; + [Inject] + public ProspectService ProspectService { get; set; } = null!; #endregion @@ -33,18 +34,12 @@ namespace FoodsharingSiegen.Server.Pages #endregion - #region Override OnAfterRenderAsync + #region Override InitializeDataAsync - /// - /// Ons the after render using the specified first render (a. beging, 11.04.2022) - /// - /// The first render - protected override async Task OnAfterRenderAsync(bool firstRender) + /// + protected override async Task InitializeDataAsync() { - if (firstRender) - await LoadProspects(); - - await base.OnAfterRenderAsync(firstRender); + await LoadProspects(); } #endregion @@ -69,7 +64,7 @@ namespace FoodsharingSiegen.Server.Pages /// private async Task LoadProspects() { - var parameter = new GetProspectsParameter { MustHaveInteractions = new List { InteractionType.Complete } }; + var parameter = new GetProspectsParameter { MustHaveInteractions = new() { InteractionType.Complete } }; var prospectsR = await ProspectService.GetProspectsAsync(parameter); if (prospectsR.Success) ProspectList = prospectsR.Data; diff --git a/FoodsharingSiegen.Server/Pages/ProspectsTodo.razor.cs b/FoodsharingSiegen.Server/Pages/ProspectsTodo.razor.cs index c7ca438..4e4f631 100644 --- a/FoodsharingSiegen.Server/Pages/ProspectsTodo.razor.cs +++ b/FoodsharingSiegen.Server/Pages/ProspectsTodo.razor.cs @@ -16,12 +16,14 @@ namespace FoodsharingSiegen.Server.Pages /// /// Gets or sets the value of the prospect service (ab) /// - [Inject] public ProspectService ProspectService { get; set; } = null!; + [Inject] + public ProspectService ProspectService { get; set; } = null!; /// /// Gets or sets the value of the user service (ab) /// - [Inject] public UserService UserService { get; set; } = null!; + [Inject] + public UserService UserService { get; set; } = null!; #endregion @@ -51,31 +53,18 @@ namespace FoodsharingSiegen.Server.Pages #endregion - #region Override OnAfterRenderAsync + #region Override InitializeDataAsync - /// - /// Ons the after render using the specified first render (a. beging, 11.04.2022) - /// - /// The first render - protected override async Task OnAfterRenderAsync(bool firstRender) + /// + protected override async Task InitializeDataAsync() { - if (firstRender) - await LoadProspects(); + // Load prospects + await LoadProspects(); - await base.OnAfterRenderAsync(firstRender); - } - - #endregion - - #region Override OnInitializedAsync - - protected override async Task OnInitializedAsync() - { + // Load users var getUsersR = await UserService.GetUsersAsync(); if (getUsersR.Success) Users = getUsersR.Data; - - await base.OnInitializedAsync(); } #endregion @@ -102,8 +91,8 @@ namespace FoodsharingSiegen.Server.Pages { var parameter = new GetProspectsParameter { - CannotHaveInteractions = new List { InteractionType.Complete }, - MustHaveInteractions = new List { InteractionType.Verify } + CannotHaveInteractions = [InteractionType.Complete], + MustHaveInteractions = [InteractionType.Verify] }; var prospectsR = await ProspectService.GetProspectsAsync(parameter); if (prospectsR.Success) ProspectList = prospectsR.Data; diff --git a/FoodsharingSiegen.Server/Pages/Users.razor.cs b/FoodsharingSiegen.Server/Pages/Users.razor.cs index 0e1bd9d..e54ba0d 100644 --- a/FoodsharingSiegen.Server/Pages/Users.razor.cs +++ b/FoodsharingSiegen.Server/Pages/Users.razor.cs @@ -19,7 +19,8 @@ namespace FoodsharingSiegen.Server.Pages /// Gets or sets the user service. /// The user service. //////////////////////////////////////////////////////////////////////////////////////////////////// - [Inject] public UserService UserService { get; set; } = null!; + [Inject] + public UserService UserService { get; set; } = null!; #endregion @@ -57,18 +58,12 @@ namespace FoodsharingSiegen.Server.Pages #endregion - #region Override OnAfterRenderAsync + #region Override InitializeDataAsync - /// - /// Ons the after render using the specified first render (a. beging, 01.04.2022) - /// - /// The first render - protected override async Task OnAfterRenderAsync(bool firstRender) + /// + protected override async Task InitializeDataAsync() { - if (firstRender) - await LoadUsers(); - - await base.OnAfterRenderAsync(firstRender); + await LoadUsers(); } #endregion diff --git a/FoodsharingSiegen.Server/wwwroot/css/site.css b/FoodsharingSiegen.Server/wwwroot/css/site.css index 18ff75c..04eed88 100644 --- a/FoodsharingSiegen.Server/wwwroot/css/site.css +++ b/FoodsharingSiegen.Server/wwwroot/css/site.css @@ -8,6 +8,10 @@ h1:focus { outline: none; } +hr { + height: initial !important; +} + a, .btn-link { color: green; }
+
+
+
+