From 21548376baa61903583c48e67d435848a80833b6 Mon Sep 17 00:00:00 2001 From: Loretta Date: Wed, 17 Dec 2025 18:31:59 +0100 Subject: [PATCH] Refactor grid toolbar and InfoPanel for reusability Introduce reusable MgGridToolbarBase and MgGridToolbarTemplate components, replacing old toolbar implementations. InfoPanel now displays grid captions and includes a toolbar for quick actions. Refactor InfoPanel value rendering for improved DevExpress-like appearance. Update IMgGridBase and related classes to support captions and use new abstractions. Update usings and project structure accordingly. --- .../Components/GridDetailOrderDto.razor | 4 +- .../Components/GridDetailOrderItemDto.razor | 4 +- .../GridDetailOrderItemPallets.razor | 4 +- .../Components/GridProductDtoTemplate.razor | 2 +- .../Components/GridShippingDocument.razor | 4 +- .../Components/GridShippingItemTemplate.razor | 4 +- .../GridGenericAttribute.razor | 2 +- .../Grids/Partners/GridPartner.razor | 2 +- .../GridStockQuantityHistoryDtoTemplate.razor | 4 +- .../Grids/Shippings/GridShipping.razor | 2 +- .../GridStockTakingItem.razor | 2 +- .../Components/MgGridBase.cs | 1 + .../Toolbars/MgGridToolbarTemplate.razor | 162 ------------------ .../Components/Toolbars/ToolbarBase.cs | 17 -- .../FruitBankHybrid.Shared.csproj | 4 + 15 files changed, 22 insertions(+), 196 deletions(-) delete mode 100644 FruitBankHybrid.Shared/Components/Toolbars/MgGridToolbarTemplate.razor delete mode 100644 FruitBankHybrid.Shared/Components/Toolbars/ToolbarBase.cs diff --git a/FruitBankHybrid.Shared/Components/GridDetailOrderDto.razor b/FruitBankHybrid.Shared/Components/GridDetailOrderDto.razor index d85ff89..42f68b0 100644 --- a/FruitBankHybrid.Shared/Components/GridDetailOrderDto.razor +++ b/FruitBankHybrid.Shared/Components/GridDetailOrderDto.razor @@ -1,9 +1,9 @@ -@using AyCode.Core.Helpers +@using AyCode.Blazor.Components.Components.Grids +@using AyCode.Core.Helpers @using AyCode.Utils.Extensions @using FruitBank.Common.Dtos @using FruitBank.Common.Models @using FruitBankHybrid.Shared.Components.Grids.GenericAttributes -@using FruitBankHybrid.Shared.Components.Toolbars @using FruitBankHybrid.Shared.Databases @using FruitBankHybrid.Shared.Services.SignalRs diff --git a/FruitBankHybrid.Shared/Components/GridDetailOrderItemDto.razor b/FruitBankHybrid.Shared/Components/GridDetailOrderItemDto.razor index 2089179..97a9668 100644 --- a/FruitBankHybrid.Shared/Components/GridDetailOrderItemDto.razor +++ b/FruitBankHybrid.Shared/Components/GridDetailOrderItemDto.razor @@ -1,9 +1,9 @@ -@using AyCode.Core.Helpers +@using AyCode.Blazor.Components.Components.Grids +@using AyCode.Core.Helpers @using AyCode.Utils.Extensions @using FruitBank.Common.Dtos @using FruitBank.Common.Models @using FruitBankHybrid.Shared.Components.Grids.GenericAttributes -@using FruitBankHybrid.Shared.Components.Toolbars @using FruitBankHybrid.Shared.Databases @using FruitBankHybrid.Shared.Services.SignalRs diff --git a/FruitBankHybrid.Shared/Components/GridDetailOrderItemPallets.razor b/FruitBankHybrid.Shared/Components/GridDetailOrderItemPallets.razor index b2c7d21..4eff31b 100644 --- a/FruitBankHybrid.Shared/Components/GridDetailOrderItemPallets.razor +++ b/FruitBankHybrid.Shared/Components/GridDetailOrderItemPallets.razor @@ -1,8 +1,8 @@ -@using AyCode.Utils.Extensions +@using AyCode.Blazor.Components.Components.Grids +@using AyCode.Utils.Extensions @using FruitBank.Common.Dtos @using FruitBank.Common.Entities @using FruitBank.Common.Models -@using FruitBankHybrid.Shared.Components.Toolbars @using FruitBankHybrid.Shared.Databases @using FruitBankHybrid.Shared.Services.SignalRs diff --git a/FruitBankHybrid.Shared/Components/GridProductDtoTemplate.razor b/FruitBankHybrid.Shared/Components/GridProductDtoTemplate.razor index 217d1c2..a595ebf 100644 --- a/FruitBankHybrid.Shared/Components/GridProductDtoTemplate.razor +++ b/FruitBankHybrid.Shared/Components/GridProductDtoTemplate.razor @@ -1,4 +1,5 @@ @using System.Threading +@using AyCode.Blazor.Components.Components.Grids @using AyCode.Core.Helpers @using AyCode.Utils.Extensions @using DevExpress.Internal.About @@ -6,7 +7,6 @@ @using FruitBank.Common.Models @using FruitBankHybrid.Shared.Components.Grids.GenericAttributes @using FruitBankHybrid.Shared.Components.Grids.Products -@using FruitBankHybrid.Shared.Components.Toolbars @using FruitBankHybrid.Shared.Databases @using FruitBankHybrid.Shared.Services.SignalRs diff --git a/FruitBankHybrid.Shared/Components/GridShippingDocument.razor b/FruitBankHybrid.Shared/Components/GridShippingDocument.razor index b3b59a0..3740237 100644 --- a/FruitBankHybrid.Shared/Components/GridShippingDocument.razor +++ b/FruitBankHybrid.Shared/Components/GridShippingDocument.razor @@ -1,8 +1,8 @@ -@using AyCode.Utils.Extensions +@using AyCode.Blazor.Components.Components.Grids +@using AyCode.Utils.Extensions @using FruitBank.Common.Dtos @using FruitBank.Common.Entities @using FruitBankHybrid.Shared.Components.Grids.ShippingDocuments -@using FruitBankHybrid.Shared.Components.Toolbars @using FruitBankHybrid.Shared.Databases @using FruitBankHybrid.Shared.Services.SignalRs @using System.Text diff --git a/FruitBankHybrid.Shared/Components/GridShippingItemTemplate.razor b/FruitBankHybrid.Shared/Components/GridShippingItemTemplate.razor index 4ffa195..cf52ee1 100644 --- a/FruitBankHybrid.Shared/Components/GridShippingItemTemplate.razor +++ b/FruitBankHybrid.Shared/Components/GridShippingItemTemplate.razor @@ -1,4 +1,5 @@ -@using AyCode.Core.Loggers; +@using AyCode.Blazor.Components.Components.Grids +@using AyCode.Core.Loggers; @using AyCode.Core.Extensions @using AyCode.Core.Helpers @using AyCode.Core.Interfaces @@ -7,7 +8,6 @@ @using FruitBank.Common.Entities @using FruitBank.Common.Interfaces @using FruitBankHybrid.Shared.Components.Grids.ShippingItems -@using FruitBankHybrid.Shared.Components.Toolbars @using FruitBankHybrid.Shared.Databases @using FruitBankHybrid.Shared.Services.Loggers; @using FruitBankHybrid.Shared.Services.SignalRs diff --git a/FruitBankHybrid.Shared/Components/Grids/GenericAttributes/GridGenericAttribute.razor b/FruitBankHybrid.Shared/Components/Grids/GenericAttributes/GridGenericAttribute.razor index 70cae11..37556c4 100644 --- a/FruitBankHybrid.Shared/Components/Grids/GenericAttributes/GridGenericAttribute.razor +++ b/FruitBankHybrid.Shared/Components/Grids/GenericAttributes/GridGenericAttribute.razor @@ -1,4 +1,5 @@ @using System.Collections.ObjectModel +@using AyCode.Blazor.Components.Components.Grids @using AyCode.Core.Helpers @using AyCode.Core.Interfaces @using AyCode.Core.Loggers @@ -6,7 +7,6 @@ @using FruitBank.Common.Dtos @using FruitBank.Common.Entities @using FruitBankHybrid.Shared.Components.Grids.Shippings -@using FruitBankHybrid.Shared.Components.Toolbars @using FruitBankHybrid.Shared.Databases @using FruitBankHybrid.Shared.Services.Loggers @using FruitBankHybrid.Shared.Services.SignalRs diff --git a/FruitBankHybrid.Shared/Components/Grids/Partners/GridPartner.razor b/FruitBankHybrid.Shared/Components/Grids/Partners/GridPartner.razor index 2f64c4b..843861e 100644 --- a/FruitBankHybrid.Shared/Components/Grids/Partners/GridPartner.razor +++ b/FruitBankHybrid.Shared/Components/Grids/Partners/GridPartner.razor @@ -1,11 +1,11 @@ @using System.Collections.ObjectModel +@using AyCode.Blazor.Components.Components.Grids @using AyCode.Core.Helpers @using AyCode.Core.Loggers @using AyCode.Utils.Extensions @using FruitBank.Common.Dtos @using FruitBank.Common.Entities @using FruitBankHybrid.Shared.Components.Grids.Shippings -@using FruitBankHybrid.Shared.Components.Toolbars @using FruitBankHybrid.Shared.Databases @using FruitBankHybrid.Shared.Services.Loggers @using FruitBankHybrid.Shared.Services.SignalRs diff --git a/FruitBankHybrid.Shared/Components/Grids/Products/GridStockQuantityHistoryDtoTemplate.razor b/FruitBankHybrid.Shared/Components/Grids/Products/GridStockQuantityHistoryDtoTemplate.razor index 698ba74..6abbf4b 100644 --- a/FruitBankHybrid.Shared/Components/Grids/Products/GridStockQuantityHistoryDtoTemplate.razor +++ b/FruitBankHybrid.Shared/Components/Grids/Products/GridStockQuantityHistoryDtoTemplate.razor @@ -1,9 +1,9 @@ -@using AyCode.Core.Interfaces +@using AyCode.Blazor.Components.Components.Grids +@using AyCode.Core.Interfaces @using AyCode.Core.Loggers; @using AyCode.Utils.Extensions @using FruitBank.Common.Dtos @using FruitBankHybrid.Shared.Components.Grids.ShippingItems -@using FruitBankHybrid.Shared.Components.Toolbars @using FruitBankHybrid.Shared.Databases @using FruitBankHybrid.Shared.Services.Loggers; @using FruitBankHybrid.Shared.Services.SignalRs diff --git a/FruitBankHybrid.Shared/Components/Grids/Shippings/GridShipping.razor b/FruitBankHybrid.Shared/Components/Grids/Shippings/GridShipping.razor index 1a7cb55..e94a2bc 100644 --- a/FruitBankHybrid.Shared/Components/Grids/Shippings/GridShipping.razor +++ b/FruitBankHybrid.Shared/Components/Grids/Shippings/GridShipping.razor @@ -1,11 +1,11 @@ @using System.Collections.ObjectModel +@using AyCode.Blazor.Components.Components.Grids @using AyCode.Core.Helpers @using AyCode.Core.Loggers @using AyCode.Utils.Extensions @using FruitBank.Common.Dtos @using FruitBank.Common.Entities @using FruitBankHybrid.Shared.Components.Grids.Shippings -@using FruitBankHybrid.Shared.Components.Toolbars @using FruitBankHybrid.Shared.Databases @using FruitBankHybrid.Shared.Services.Loggers @using FruitBankHybrid.Shared.Services.SignalRs diff --git a/FruitBankHybrid.Shared/Components/Grids/StockTakingItems/GridStockTakingItem.razor b/FruitBankHybrid.Shared/Components/Grids/StockTakingItems/GridStockTakingItem.razor index 3a42004..abf834d 100644 --- a/FruitBankHybrid.Shared/Components/Grids/StockTakingItems/GridStockTakingItem.razor +++ b/FruitBankHybrid.Shared/Components/Grids/StockTakingItems/GridStockTakingItem.razor @@ -1,11 +1,11 @@ @using System.Collections.ObjectModel +@using AyCode.Blazor.Components.Components.Grids @using AyCode.Core.Helpers @using AyCode.Core.Loggers @using AyCode.Utils.Extensions @using FruitBank.Common.Dtos @using FruitBank.Common.Entities @using FruitBankHybrid.Shared.Components.Grids.Shippings -@using FruitBankHybrid.Shared.Components.Toolbars @using FruitBankHybrid.Shared.Databases @using FruitBankHybrid.Shared.Services.Loggers @using FruitBankHybrid.Shared.Services.SignalRs diff --git a/FruitBankHybrid.Shared/Components/MgGridBase.cs b/FruitBankHybrid.Shared/Components/MgGridBase.cs index 8d776fa..3b67308 100644 --- a/FruitBankHybrid.Shared/Components/MgGridBase.cs +++ b/FruitBankHybrid.Shared/Components/MgGridBase.cs @@ -189,6 +189,7 @@ public class MgGridBase : DxGrid, IMgGridBase } public bool ShowInfoPanel { get; set; } = false; + public string Caption { get => throw new NotImplementedException(); set => throw new NotImplementedException(); } async Task Grid_LayoutAutoLoading(GridPersistentLayoutEventArgs e) { diff --git a/FruitBankHybrid.Shared/Components/Toolbars/MgGridToolbarTemplate.razor b/FruitBankHybrid.Shared/Components/Toolbars/MgGridToolbarTemplate.razor deleted file mode 100644 index a4208e0..0000000 --- a/FruitBankHybrid.Shared/Components/Toolbars/MgGridToolbarTemplate.razor +++ /dev/null @@ -1,162 +0,0 @@ -@using AyCode.Blazor.Components.Components.Grids -@using AyCode.Core.Loggers; -@using AyCode.Core.Extensions -@using AyCode.Core.Helpers -@using AyCode.Utils.Extensions -@using FruitBank.Common.Dtos -@using FruitBank.Common.Entities -@using FruitBank.Common.Models -@using FruitBankHybrid.Shared.Components.Grids.ShippingItems -@using FruitBankHybrid.Shared.Databases -@using FruitBankHybrid.Shared.Services.Loggers; -@using FruitBankHybrid.Shared.Services.SignalRs - -@inject IEnumerable LogWriters -@inject LoggedInModel LoggedInModel; - - - - - - - - - - @if (!OnlyGridEditTools) - { - - - - - - - - - - - - - - - - - @ToolbarItemsExtended - } - - -@code { - [Parameter] public bool OnlyGridEditTools { get; set; } = false; - [Parameter] public IMgGridBase Grid { get; set; } = null!; - [Parameter] public RenderFragment? ToolbarItemsExtended { get; set; } - [Parameter] public EventCallback OnReloadDataClick { get; set; } - - public ToolbarBase Toolbar { get; set; } = null!; - const string ExportFileName = "ExportResult"; - - private bool _isReloadInProgress; - - /// - /// Whether the grid is currently in edit mode (New or Edit) - /// - private bool IsEditing => Grid?.GridEditState != MgGridEditState.None; - - /// - /// Whether the grid is currently syncing data - /// - private bool IsSyncing => Grid?.IsSyncing ?? false; - - /// - /// Whether there is a focused row in the grid - /// - private bool HasFocusedRow => Grid?.GetFocusedRowIndex() >= 0; - - private LoggerClient _logger = null!; - - protected override void OnInitialized() - { - _logger = new LoggerClient(LogWriters.ToArray()); - } - - async Task ReloadData_Click(ToolbarItemClickEventArgs e) - { - _isReloadInProgress = true; - try - { - await OnReloadDataClick.InvokeAsync(e); - } - finally - { - _isReloadInProgress = false; - } - } - - async Task NewItem_Click() - { - await Grid.StartEditNewRowAsync(); - } - - async Task EditItem_Click() - { - await Grid.StartEditRowAsync(Grid.GetFocusedRowIndex()); - } - - void DeleteItem_Click() - { - Grid.ShowRowDeleteConfirmation(Grid.GetFocusedRowIndex()); - } - - async Task SaveItem_Click() - { - await Grid.SaveChangesAsync(); - } - - async Task CancelEdit_Click() - { - await Grid.CancelEditAsync(); - } - - void PrevRow_Click() - { - Grid.StepPrevRow(); - } - - void NextRow_Click() - { - Grid.StepNextRow(); - } - - void ColumnChooserItem_Click(ToolbarItemClickEventArgs e) - { - Grid.ShowColumnChooser(); - } - - async Task ExportXlsxItem_Click() - { - await Grid.ExportToXlsxAsync(ExportFileName); - } - - async Task ExportXlsItem_Click() - { - await Grid.ExportToXlsAsync(ExportFileName); - } - - async Task ExportCsvItem_Click() - { - await Grid.ExportToCsvAsync(ExportFileName); - } - - async Task ExportPdfItem_Click() - { - await Grid.ExportToPdfAsync(ExportFileName); - } -} \ No newline at end of file diff --git a/FruitBankHybrid.Shared/Components/Toolbars/ToolbarBase.cs b/FruitBankHybrid.Shared/Components/Toolbars/ToolbarBase.cs deleted file mode 100644 index 2b76633..0000000 --- a/FruitBankHybrid.Shared/Components/Toolbars/ToolbarBase.cs +++ /dev/null @@ -1,17 +0,0 @@ -using DevExpress.Blazor; -using DevExpress.Blazor.Navigation.Internal; -using Microsoft.AspNetCore.Components; -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; - -namespace FruitBankHybrid.Shared.Components.Toolbars -{ - public class ToolbarBase : DxToolbar - { - [Parameter] public IGrid Grid { get; set; } - [Parameter] public Func RefreshClick { get; set; } - } -} diff --git a/FruitBankHybrid.Shared/FruitBankHybrid.Shared.csproj b/FruitBankHybrid.Shared/FruitBankHybrid.Shared.csproj index 80524fe..7aaf210 100644 --- a/FruitBankHybrid.Shared/FruitBankHybrid.Shared.csproj +++ b/FruitBankHybrid.Shared/FruitBankHybrid.Shared.csproj @@ -68,4 +68,8 @@ ..\..\NopCommerce.Common\4.70\Libraries\Mango.Nop.Core\bin\FruitBank\Debug\net9.0\Mango.Nop.Core.dll + + + + \ No newline at end of file