From c1f8dcbf5d6797f1d1beafa6a0112dcc4008e574 Mon Sep 17 00:00:00 2001 From: Loretta Date: Wed, 5 Nov 2025 14:56:07 +0100 Subject: [PATCH 1/4] Improvements, fixes, etc... --- .../FruitBank.Common.Server.csproj | 3 - FruitBank.Common/Dtos/MeasuringProductDto.cs | 2 +- FruitBank.Common/Dtos/OrderDto.cs | 2 +- FruitBank.Common/Dtos/ProductDto.cs | 8 +- FruitBank.Common/Entities/ShippingItem.cs | 2 +- FruitBank.Common/FruitBank.Common.csproj | 3 - FruitBank.Common/Interfaces/IOrderItemDto.cs | 2 +- FruitBank.Common/Interfaces/IShippingItem.cs | 2 +- .../FruitBankHybrid.Shared.Tests.csproj | 3 - .../Components/GridDetailOrderDto.razor | 2 +- .../Components/GridDetailOrderItemDto.razor | 2 +- .../GridDetailOrderItemPallets.razor | 2 +- .../Components/GridProductDtoTemplate.razor | 2 +- .../Components/GridShipping.razor | 2 +- .../Components/GridShippingDocument.razor | 2 +- .../Components/GridShippingItem.razor | 2 +- .../Components/GridShippingItemPallets.razor | 4 +- .../Components/MgGridBase.cs | 98 ++++++++++++++++++- .../FruitBankHybrid.Shared.csproj | 3 - .../Pages/OrdersAdmin.razor | 2 +- .../Pages/ShippingsAdmin.razor | 2 +- FruitBankHybrid.Web.Client/Program.cs | 13 +-- FruitBankHybrid.Web/Program.cs | 10 +- FruitBankHybrid/MauiProgram.cs | 10 +- 24 files changed, 131 insertions(+), 52 deletions(-) diff --git a/FruitBank.Common.Server/FruitBank.Common.Server.csproj b/FruitBank.Common.Server/FruitBank.Common.Server.csproj index a14e5ec2..4d7a8d11 100644 --- a/FruitBank.Common.Server/FruitBank.Common.Server.csproj +++ b/FruitBank.Common.Server/FruitBank.Common.Server.csproj @@ -43,9 +43,6 @@ ..\..\NopCommerce.Common\4.70\Libraries\Mango.Nop.Core\bin\FruitBank\Debug\net9.0\Mango.Nop.Core.dll - - ..\..\NopCommerce.Common\4.70\Libraries\Mango.Nop.Core\bin\FruitBank\Debug\net9.0\Nop.Core.dll - diff --git a/FruitBank.Common/Dtos/MeasuringProductDto.cs b/FruitBank.Common/Dtos/MeasuringProductDto.cs index 2fd1dd3f..10b7f902 100644 --- a/FruitBank.Common/Dtos/MeasuringProductDto.cs +++ b/FruitBank.Common/Dtos/MeasuringProductDto.cs @@ -1,6 +1,6 @@ using FruitBank.Common.Interfaces; using Mango.Nop.Core.Dtos; -using Nop.Core.Domain.Catalog; +//using Nop.Core.Domain.Catalog; namespace FruitBank.Common.Dtos; diff --git a/FruitBank.Common/Dtos/OrderDto.cs b/FruitBank.Common/Dtos/OrderDto.cs index 568c54b1..c5a45179 100644 --- a/FruitBank.Common/Dtos/OrderDto.cs +++ b/FruitBank.Common/Dtos/OrderDto.cs @@ -10,7 +10,7 @@ using Mango.Nop.Core.Extensions; using Mango.Nop.Core.Interfaces; using Newtonsoft.Json; using Nop.Core; -using Nop.Core.Domain.Catalog; +//using Nop.Core.Domain.Catalog; using Nop.Core.Domain.Common; using Nop.Core.Domain.Orders; using System.Diagnostics.CodeAnalysis; diff --git a/FruitBank.Common/Dtos/ProductDto.cs b/FruitBank.Common/Dtos/ProductDto.cs index 81d857fc..fa27e674 100644 --- a/FruitBank.Common/Dtos/ProductDto.cs +++ b/FruitBank.Common/Dtos/ProductDto.cs @@ -4,7 +4,7 @@ using Mango.Nop.Core.Dtos; using Mango.Nop.Core.Extensions; using Newtonsoft.Json; using Nop.Core; -using Nop.Core.Domain.Catalog; +//using Nop.Core.Domain.Catalog; using Nop.Core.Domain.Common; using Nop.Core.Domain.Orders; using System.Globalization; @@ -16,7 +16,7 @@ public class ProductDto : MgProductDto, IProductDto { [NotColumn, JsonIgnore, System.Text.Json.Serialization.JsonIgnore] private static Expression> RelationWithGenericAttribute => (orderItemDto, genericAttribute) => - orderItemDto.Id == genericAttribute.EntityId && genericAttribute.KeyGroup == nameof(Product); + orderItemDto.Id == genericAttribute.EntityId && genericAttribute.KeyGroup == "Product";// nameof(Product); [Association(ThisKey = nameof(Id), OtherKey = nameof(GenericAttribute.EntityId), ExpressionPredicate = nameof(RelationWithGenericAttribute), CanBeNull = false)] @@ -26,8 +26,8 @@ public class ProductDto : MgProductDto, IProductDto { } public ProductDto(int productId) : base(productId) { } - public ProductDto(Product product) : base(product) - { } + //public ProductDto(Product product) : base(product) + //{ } [NotColumn, JsonIgnore, System.Text.Json.Serialization.JsonIgnore] public bool IsMeasurable diff --git a/FruitBank.Common/Entities/ShippingItem.cs b/FruitBank.Common/Entities/ShippingItem.cs index f84566a7..004bd3f1 100644 --- a/FruitBank.Common/Entities/ShippingItem.cs +++ b/FruitBank.Common/Entities/ShippingItem.cs @@ -6,7 +6,7 @@ using Mango.Nop.Core.Entities; using Nop.Core.Domain.Customers; using Nop.Core.Domain.Orders; using System.ComponentModel.DataAnnotations; -using Nop.Core.Domain.Catalog; +//using Nop.Core.Domain.Catalog; using DataType = LinqToDB.DataType; using FruitBank.Common.Dtos; using FruitBank.Common.Enums; diff --git a/FruitBank.Common/FruitBank.Common.csproj b/FruitBank.Common/FruitBank.Common.csproj index 22e67881..f0239eca 100644 --- a/FruitBank.Common/FruitBank.Common.csproj +++ b/FruitBank.Common/FruitBank.Common.csproj @@ -37,9 +37,6 @@ ..\..\NopCommerce.Common\4.70\Libraries\Mango.Nop.Core\bin\FruitBank\Debug\net9.0\Mango.Nop.Core.dll - - ..\..\NopCommerce.Common\4.70\Libraries\Mango.Nop.Core\bin\FruitBank\Debug\net9.0\Nop.Core.dll - diff --git a/FruitBank.Common/Interfaces/IOrderItemDto.cs b/FruitBank.Common/Interfaces/IOrderItemDto.cs index 1faa504f..a1b2a51f 100644 --- a/FruitBank.Common/Interfaces/IOrderItemDto.cs +++ b/FruitBank.Common/Interfaces/IOrderItemDto.cs @@ -3,7 +3,7 @@ using FruitBank.Common.Entities; using FruitBank.Common.Enums; using Mango.Nop.Core.Dtos; using Mango.Nop.Core.Interfaces; -using Nop.Core.Domain.Catalog; +//using Nop.Core.Domain.Catalog; namespace FruitBank.Common.Interfaces; diff --git a/FruitBank.Common/Interfaces/IShippingItem.cs b/FruitBank.Common/Interfaces/IShippingItem.cs index 2c4e29a7..cd51e1b1 100644 --- a/FruitBank.Common/Interfaces/IShippingItem.cs +++ b/FruitBank.Common/Interfaces/IShippingItem.cs @@ -2,7 +2,7 @@ using AyCode.Interfaces.TimeStampInfo; using FruitBank.Common.Dtos; using FruitBank.Common.Entities; -using Nop.Core.Domain.Catalog; +//using Nop.Core.Domain.Catalog; namespace FruitBank.Common.Interfaces; diff --git a/FruitBankHybrid.Shared.Tests/FruitBankHybrid.Shared.Tests.csproj b/FruitBankHybrid.Shared.Tests/FruitBankHybrid.Shared.Tests.csproj index 2b6f845e..5117819d 100644 --- a/FruitBankHybrid.Shared.Tests/FruitBankHybrid.Shared.Tests.csproj +++ b/FruitBankHybrid.Shared.Tests/FruitBankHybrid.Shared.Tests.csproj @@ -37,9 +37,6 @@ ..\..\NopCommerce.Common\4.70\Libraries\Mango.Nop.Services\bin\FruitBank\Debug\net9.0\Mango.Nop.Services.dll - - ..\..\NopCommerce.Common\4.70\Libraries\Mango.Nop.Core\bin\FruitBank\Debug\net9.0\Nop.Core.dll - diff --git a/FruitBankHybrid.Shared/Components/GridDetailOrderDto.razor b/FruitBankHybrid.Shared/Components/GridDetailOrderDto.razor index d6cd3d6c..796f8e2a 100644 --- a/FruitBankHybrid.Shared/Components/GridDetailOrderDto.razor +++ b/FruitBankHybrid.Shared/Components/GridDetailOrderDto.razor @@ -3,7 +3,7 @@ @inject FruitBankSignalRClient FruitBankSignalRClient - diff --git a/FruitBankHybrid.Shared/Components/GridDetailOrderItemPallets.razor b/FruitBankHybrid.Shared/Components/GridDetailOrderItemPallets.razor index b5f000fa..a455a38d 100644 --- a/FruitBankHybrid.Shared/Components/GridDetailOrderItemPallets.razor +++ b/FruitBankHybrid.Shared/Components/GridDetailOrderItemPallets.razor @@ -4,7 +4,7 @@ @inject FruitBankSignalRClient FruitBankSignalRClient - + diff --git a/FruitBankHybrid.Shared/Components/GridShipping.razor b/FruitBankHybrid.Shared/Components/GridShipping.razor index b992710e..065c6058 100644 --- a/FruitBankHybrid.Shared/Components/GridShipping.razor +++ b/FruitBankHybrid.Shared/Components/GridShipping.razor @@ -4,7 +4,7 @@ @inject FruitBankSignalRClient FruitBankSignalRClient - diff --git a/FruitBankHybrid.Shared/Components/GridShippingDocument.razor b/FruitBankHybrid.Shared/Components/GridShippingDocument.razor index 5fd28533..a3746fb2 100644 --- a/FruitBankHybrid.Shared/Components/GridShippingDocument.razor +++ b/FruitBankHybrid.Shared/Components/GridShippingDocument.razor @@ -9,7 +9,7 @@ @inject FruitBankSignalRClient FruitBankSignalRClient - diff --git a/FruitBankHybrid.Shared/Components/GridShippingItem.razor b/FruitBankHybrid.Shared/Components/GridShippingItem.razor index 0d51a990..3a121f1e 100644 --- a/FruitBankHybrid.Shared/Components/GridShippingItem.razor +++ b/FruitBankHybrid.Shared/Components/GridShippingItem.razor @@ -10,7 +10,7 @@ Contact Phone: @OrderDto.Email *@ - diff --git a/FruitBankHybrid.Shared/Components/GridShippingItemPallets.razor b/FruitBankHybrid.Shared/Components/GridShippingItemPallets.razor index c56a2634..9c1a7359 100644 --- a/FruitBankHybrid.Shared/Components/GridShippingItemPallets.razor +++ b/FruitBankHybrid.Shared/Components/GridShippingItemPallets.razor @@ -4,7 +4,7 @@ @inject FruitBankSignalRClient FruitBankSignalRClient - - + diff --git a/FruitBankHybrid.Shared/Components/MgGridBase.cs b/FruitBankHybrid.Shared/Components/MgGridBase.cs index 06c098e4..e4c38280 100644 --- a/FruitBankHybrid.Shared/Components/MgGridBase.cs +++ b/FruitBankHybrid.Shared/Components/MgGridBase.cs @@ -1,9 +1,14 @@ -using AyCode.Core.Loggers; +using AyCode.Core.Extensions; +using AyCode.Core.Loggers; +using AyCode.Utils.Extensions; using DevExpress.Blazor; using DevExpress.Data.Helpers; using DevExpress.Utils.Filtering.Internal; +using FruitBank.Common.Models; using FruitBankHybrid.Shared.Services.SignalRs; using Microsoft.AspNetCore.Components; +using Microsoft.JSInterop; +using System.Collections.ObjectModel; using System.Reflection; namespace FruitBankHybrid.Shared.Components; @@ -12,11 +17,15 @@ public class MgGridBase : DxGrid { private bool _isFirstInitializeParameterCore; private bool _isFirstInitializeParameters; + public bool PreRendered { get; set; } [Inject] public required IEnumerable LogWriters { get; set; } [Inject] public required FruitBankSignalRClient FruitBankSignalRClient { get; set; } - + [Inject] public required LoggedInModel LoggedInModel { get; set; } + [Inject] public required IJSRuntime JSRuntime { get; set; } + [Parameter] public bool IsMasterGrid { get; set; } = false; + [Parameter] public string AutoSaveLayoutName { get; set; } [Parameter] public required object DataSource @@ -25,6 +34,13 @@ public class MgGridBase : DxGrid set => Data = value; } + protected override async Task OnInitializedAsync() + { + //var json = await GetLocalStorageItemAsync(LocalStorageItemsKey); + //if (!string.IsNullOrEmpty(json)) + // Layouts = JsonSerializer.Deserialize>(json); + } + protected void OnCustomizeElement(GridCustomizeElementEventArgs e) { //if (!IsMasterGrid) e.CssClass = "hideDetailButton"; @@ -34,7 +50,8 @@ public class MgGridBase : DxGrid e.CssClass = " alt-item"; } - if(e.ElementType == GridElementType.HeaderCell) { + if (e.ElementType == GridElementType.HeaderCell) + { e.Style = "background-color: #E6E6E6;"; //e.CssClass = "header-bold"; } @@ -66,8 +83,8 @@ public class MgGridBase : DxGrid ShowGroupPanel = IsMasterGrid; ShowSearchBox = IsMasterGrid; ShowFilterRow = IsMasterGrid; - - FilterMenuButtonDisplayMode=(IsMasterGrid ? GridFilterMenuButtonDisplayMode.Never : GridFilterMenuButtonDisplayMode.Always); + + FilterMenuButtonDisplayMode = (IsMasterGrid ? GridFilterMenuButtonDisplayMode.Never : GridFilterMenuButtonDisplayMode.Always); DetailRowDisplayMode = IsMasterGrid ? GridDetailRowDisplayMode.Auto : GridDetailRowDisplayMode.Never; DetailExpandButtonDisplayMode = IsMasterGrid ? GridDetailExpandButtonDisplayMode.Auto : GridDetailExpandButtonDisplayMode.Never; @@ -91,12 +108,83 @@ public class MgGridBase : DxGrid //VirtualScrollingEnabled = IsMasterGrid; PageSizeSelectorVisible = true; + if (IsMasterGrid && !AutoSaveLayoutName.IsNullOrWhiteSpace()) + { + LayoutAutoLoading = Grid_LayoutAutoLoading; + LayoutAutoSaving = Grid_LayoutAutoSaving; + } + _isFirstInitializeParameters = true; } base.OnParametersSet(); } + protected override void OnAfterRender(bool firstRender) + { + if (firstRender) + { + PreRendered = true; + //StateHasChanged(); + } + } + + async Task Grid_LayoutAutoLoading(GridPersistentLayoutEventArgs e) + { + e.Layout = await LoadLayoutFromLocalStorageAsync($"{AutoSaveLayoutName}_AutoSave_{LoggedInModel.CustomerDto?.Id ?? 0}"); + } + async Task Grid_LayoutAutoSaving(GridPersistentLayoutEventArgs e) + { + await SaveLayoutToLocalStorageAsync(e.Layout, $"{AutoSaveLayoutName}_AutoSave_{LoggedInModel.CustomerDto?.Id ?? 0}"); + } + + async Task LoadLayoutFromLocalStorageAsync(string localStorageKey) + { + try + { + var json = await JSRuntime.InvokeAsync("localStorage.getItem", localStorageKey); + + if (!json.IsNullOrWhiteSpace()) return json.JsonTo(); + } + catch + { + // Mute exceptions for the server prerender stage + } + + return null; + } + async Task SaveLayoutToLocalStorageAsync(GridPersistentLayout layout, string localStorageKey) + { + try + { + var json = layout.ToJson(); + await JSRuntime.InvokeVoidAsync("localStorage.setItem", localStorageKey, json); + } + catch + { + // Mute exceptions for the server prerender stage + } + } + async Task RemoveLayoutFromLocalStorageAsync() + { + try + { + await JSRuntime.InvokeVoidAsync("localStorage.removeItem", AutoSaveLayoutName); + } + catch + { + // Mute exceptions for the server prerender stage + } + } + async Task ReloadPageButton_ClickAsync() + { + await JSRuntime.InvokeVoidAsync("location.reload"); + } + async Task ResetLayoutButton_ClickAsync() + { + await RemoveLayoutFromLocalStorageAsync(); + await JSRuntime.InvokeVoidAsync("location.reload"); + } //public RenderFragment AddCommandColumn() //{ // RenderFragment columns = b => diff --git a/FruitBankHybrid.Shared/FruitBankHybrid.Shared.csproj b/FruitBankHybrid.Shared/FruitBankHybrid.Shared.csproj index fd82e457..37bc466f 100644 --- a/FruitBankHybrid.Shared/FruitBankHybrid.Shared.csproj +++ b/FruitBankHybrid.Shared/FruitBankHybrid.Shared.csproj @@ -63,8 +63,5 @@ ..\..\NopCommerce.Common\4.70\Libraries\Mango.Nop.Core\bin\FruitBank\Debug\net9.0\Mango.Nop.Core.dll - - ..\..\NopCommerce.Common\4.70\Libraries\Mango.Nop.Core\bin\FruitBank\Debug\net9.0\Nop.Core.dll - \ No newline at end of file diff --git a/FruitBankHybrid.Shared/Pages/OrdersAdmin.razor b/FruitBankHybrid.Shared/Pages/OrdersAdmin.razor index 414b9e33..ac1d0d12 100644 --- a/FruitBankHybrid.Shared/Pages/OrdersAdmin.razor +++ b/FruitBankHybrid.Shared/Pages/OrdersAdmin.razor @@ -16,7 +16,7 @@ Text="Adatok szinkronizálása folyamatban..."> @* @bind-ActiveTabIndex="@ActiveTabIndex" *@ - + diff --git a/FruitBankHybrid.Shared/Pages/ShippingsAdmin.razor b/FruitBankHybrid.Shared/Pages/ShippingsAdmin.razor index 80cb3eb0..b24582cf 100644 --- a/FruitBankHybrid.Shared/Pages/ShippingsAdmin.razor +++ b/FruitBankHybrid.Shared/Pages/ShippingsAdmin.razor @@ -16,7 +16,7 @@ Text="Adatok szinkronizálása folyamatban..."> @* @bind-ActiveTabIndex="@ActiveTabIndex" *@ - + diff --git a/FruitBankHybrid.Web.Client/Program.cs b/FruitBankHybrid.Web.Client/Program.cs index 0cecf6af..f03d9fb8 100644 --- a/FruitBankHybrid.Web.Client/Program.cs +++ b/FruitBankHybrid.Web.Client/Program.cs @@ -1,6 +1,7 @@ using AyCode.Core.Loggers; using FruitBank.Common.Loggers; using FruitBank.Common.Models; +using FruitBankHybrid.Shared.Databases; using FruitBankHybrid.Shared.Services; using FruitBankHybrid.Shared.Services.SignalRs; using FruitBankHybrid.Web.Client.Services; @@ -13,15 +14,15 @@ builder.Services.AddDevExpressBlazor(configure => configure.SizeMode = DevExpres // Add device-specific services used by the FruitBankHybrid.Shared project builder.Services.AddSingleton(); -//builder.Services.AddScoped(); - -builder.Services.AddSingleton(); -builder.Services.AddScoped(); #if DEBUG -builder.Services.AddScoped(); +builder.Services.AddSingleton(); #endif -builder.Services.AddScoped(); +builder.Services.AddSingleton(); +builder.Services.AddSingleton(); +builder.Services.AddSingleton(); + +builder.Services.AddSingleton(); await builder.Build().RunAsync(); diff --git a/FruitBankHybrid.Web/Program.cs b/FruitBankHybrid.Web/Program.cs index 05b22b2f..52d6b0f7 100644 --- a/FruitBankHybrid.Web/Program.cs +++ b/FruitBankHybrid.Web/Program.cs @@ -3,6 +3,7 @@ using FruitBank.Common; using FruitBank.Common.Models; using FruitBank.Common.Server.Services.Loggers; using FruitBank.Common.Server.Services.SignalRs; +using FruitBankHybrid.Shared.Databases; using FruitBankHybrid.Shared.Services; using FruitBankHybrid.Shared.Services.SignalRs; using FruitBankHybrid.Web.Components; @@ -14,16 +15,19 @@ builder.Services.AddRazorComponents().AddInteractiveServerComponents().AddIntera builder.Services.AddDevExpressBlazor(configure => configure.SizeMode = DevExpress.Blazor.SizeMode.Medium); builder.Services.AddMvc(); +builder.Services.AddSignalR(options => options.MaximumReceiveMessageSize = 256 * 1024); builder.Services.AddSingleton(); +builder.Services.AddSingleton(); builder.Services.AddSingleton(); -builder.Services.AddScoped(); + +builder.Services.AddSingleton(); +builder.Services.AddSingleton(); + //builder.Services.AddScoped(); //builder.Services.AddSingleton(); //builder.Services.AddScoped(); -builder.Services.AddSignalR(options => options.MaximumReceiveMessageSize = 256 * 1024); -builder.Services.AddScoped(); var app = builder.Build(); // Configure the HTTP request pipeline. diff --git a/FruitBankHybrid/MauiProgram.cs b/FruitBankHybrid/MauiProgram.cs index 5753b372..ada3e32f 100644 --- a/FruitBankHybrid/MauiProgram.cs +++ b/FruitBankHybrid/MauiProgram.cs @@ -29,16 +29,14 @@ namespace FruitBankHybrid // Add device-specific services used by the FruitBankHybrid.Shared project builder.Services.AddSingleton(); + #if DEBUG + builder.Services.AddSingleton(); + #endif + builder.Services.AddSingleton(); builder.Services.AddScoped(); builder.Services.AddSingleton(); - -#if DEBUG - builder.Services.AddSingleton(); - -#endif - builder.Services.AddSingleton(); From c178c72a3d55492b098c2d88bb36ad51927936f5 Mon Sep 17 00:00:00 2001 From: Loretta Date: Wed, 5 Nov 2025 15:09:47 +0100 Subject: [PATCH 2/4] Add AyCode.Blazor projects; --- FruitBankHybrid.sln | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/FruitBankHybrid.sln b/FruitBankHybrid.sln index fa3513bb..0a21e449 100644 --- a/FruitBankHybrid.sln +++ b/FruitBankHybrid.sln @@ -19,6 +19,16 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "FruitBankHybrid.Shared.Comm EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "FruitBankHybrid.Shared.Tests", "FruitBankHybrid.Shared.Tests\FruitBankHybrid.Shared.Tests.csproj", "{4E4E4917-1CA3-A7D7-40A8-A24A08673EC1}" EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "AyCode.Blazor.Components", "..\..\..\Aycode\Source\AyCode.Blazor\AyCode.Blazor.Components\AyCode.Blazor.Components.csproj", "{5CE8B5A7-5390-61E4-33B3-FA5F0B75A168}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "AyCode.Blazor.Controllers", "..\..\..\Aycode\Source\AyCode.Blazor\AyCode.Blazor.Controllers\AyCode.Blazor.Controllers.csproj", "{CC74D48F-375E-6C8A-5DFD-F77860996A74}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "AyCode.Blazor.Models", "..\..\..\Aycode\Source\AyCode.Blazor\AyCode.Blazor.Models\AyCode.Blazor.Models.csproj", "{1A0941CC-BBF3-361F-669B-13F7749C1082}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "AyCode.Blazor.Models.Server", "..\..\..\Aycode\Source\AyCode.Blazor\AyCode.Blazor.Models.Server\AyCode.Blazor.Models.Server.csproj", "{B5B3A879-3F16-E125-B942-CBFE55D3B3E2}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "AyCode.Maui.Core", "..\..\..\Aycode\Source\AyCode.Blazor\AyCode.Maui.Core\AyCode.Maui.Core.csproj", "{F7C67754-A59C-C355-2A10-C614F0585627}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -59,6 +69,26 @@ Global {4E4E4917-1CA3-A7D7-40A8-A24A08673EC1}.Debug|Any CPU.Build.0 = Debug|Any CPU {4E4E4917-1CA3-A7D7-40A8-A24A08673EC1}.Release|Any CPU.ActiveCfg = Release|Any CPU {4E4E4917-1CA3-A7D7-40A8-A24A08673EC1}.Release|Any CPU.Build.0 = Release|Any CPU + {5CE8B5A7-5390-61E4-33B3-FA5F0B75A168}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {5CE8B5A7-5390-61E4-33B3-FA5F0B75A168}.Debug|Any CPU.Build.0 = Debug|Any CPU + {5CE8B5A7-5390-61E4-33B3-FA5F0B75A168}.Release|Any CPU.ActiveCfg = Release|Any CPU + {5CE8B5A7-5390-61E4-33B3-FA5F0B75A168}.Release|Any CPU.Build.0 = Release|Any CPU + {CC74D48F-375E-6C8A-5DFD-F77860996A74}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {CC74D48F-375E-6C8A-5DFD-F77860996A74}.Debug|Any CPU.Build.0 = Debug|Any CPU + {CC74D48F-375E-6C8A-5DFD-F77860996A74}.Release|Any CPU.ActiveCfg = Release|Any CPU + {CC74D48F-375E-6C8A-5DFD-F77860996A74}.Release|Any CPU.Build.0 = Release|Any CPU + {1A0941CC-BBF3-361F-669B-13F7749C1082}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {1A0941CC-BBF3-361F-669B-13F7749C1082}.Debug|Any CPU.Build.0 = Debug|Any CPU + {1A0941CC-BBF3-361F-669B-13F7749C1082}.Release|Any CPU.ActiveCfg = Release|Any CPU + {1A0941CC-BBF3-361F-669B-13F7749C1082}.Release|Any CPU.Build.0 = Release|Any CPU + {B5B3A879-3F16-E125-B942-CBFE55D3B3E2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {B5B3A879-3F16-E125-B942-CBFE55D3B3E2}.Debug|Any CPU.Build.0 = Debug|Any CPU + {B5B3A879-3F16-E125-B942-CBFE55D3B3E2}.Release|Any CPU.ActiveCfg = Release|Any CPU + {B5B3A879-3F16-E125-B942-CBFE55D3B3E2}.Release|Any CPU.Build.0 = Release|Any CPU + {F7C67754-A59C-C355-2A10-C614F0585627}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {F7C67754-A59C-C355-2A10-C614F0585627}.Debug|Any CPU.Build.0 = Debug|Any CPU + {F7C67754-A59C-C355-2A10-C614F0585627}.Release|Any CPU.ActiveCfg = Release|Any CPU + {F7C67754-A59C-C355-2A10-C614F0585627}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE From 7c370251c646429466ebfc0445e8b489c3e6f8b4 Mon Sep 17 00:00:00 2001 From: Loretta Date: Thu, 6 Nov 2025 15:09:12 +0100 Subject: [PATCH 3/4] MgGridBase... --- FruitBankHybrid.Shared/Components/MgGridBase.cs | 3 ++- FruitBankHybrid.Shared/Pages/Login.razor.cs | 5 +---- FruitBankHybrid.Shared/Pages/MeasuringOut.razor.cs | 14 +------------- FruitBankHybrid.Shared/Pages/OrdersAdmin.razor.cs | 2 +- 4 files changed, 5 insertions(+), 19 deletions(-) diff --git a/FruitBankHybrid.Shared/Components/MgGridBase.cs b/FruitBankHybrid.Shared/Components/MgGridBase.cs index e4c38280..7a1c9fa5 100644 --- a/FruitBankHybrid.Shared/Components/MgGridBase.cs +++ b/FruitBankHybrid.Shared/Components/MgGridBase.cs @@ -133,7 +133,8 @@ public class MgGridBase : DxGrid { e.Layout = await LoadLayoutFromLocalStorageAsync($"{AutoSaveLayoutName}_AutoSave_{LoggedInModel.CustomerDto?.Id ?? 0}"); } - async Task Grid_LayoutAutoSaving(GridPersistentLayoutEventArgs e) + + private async Task Grid_LayoutAutoSaving(GridPersistentLayoutEventArgs e) { await SaveLayoutToLocalStorageAsync(e.Layout, $"{AutoSaveLayoutName}_AutoSave_{LoggedInModel.CustomerDto?.Id ?? 0}"); } diff --git a/FruitBankHybrid.Shared/Pages/Login.razor.cs b/FruitBankHybrid.Shared/Pages/Login.razor.cs index d0c03240..87bbeacf 100644 --- a/FruitBankHybrid.Shared/Pages/Login.razor.cs +++ b/FruitBankHybrid.Shared/Pages/Login.razor.cs @@ -1,8 +1,5 @@ -using AyCode.Core.Helpers; -using AyCode.Core.Loggers; -using AyCode.Interfaces.Users; +using AyCode.Core.Loggers; using AyCode.Utils.Extensions; -using FruitBank.Common.Loggers; using FruitBank.Common.Models; using FruitBankHybrid.Shared.Services.Loggers; using FruitBankHybrid.Shared.Services.SignalRs; diff --git a/FruitBankHybrid.Shared/Pages/MeasuringOut.razor.cs b/FruitBankHybrid.Shared/Pages/MeasuringOut.razor.cs index 13adfae6..6b7641c3 100644 --- a/FruitBankHybrid.Shared/Pages/MeasuringOut.razor.cs +++ b/FruitBankHybrid.Shared/Pages/MeasuringOut.razor.cs @@ -1,14 +1,9 @@ using AyCode.Core.Extensions; using AyCode.Core.Loggers; -using AyCode.Services.SignalRs; using DevExpress.Blazor; -using DevExpress.Xpo.DB; using FruitBank.Common.Dtos; using FruitBank.Common.Entities; -using FruitBank.Common.Helpers; -using FruitBank.Common.Interfaces; using FruitBank.Common.Models; -using FruitBank.Common.Models.SignalRs; using FruitBank.Common.SignalRs; using FruitBankHybrid.Shared.Extensions; using FruitBankHybrid.Shared.Models; @@ -16,21 +11,14 @@ using FruitBankHybrid.Shared.Services; using FruitBankHybrid.Shared.Services.Loggers; using FruitBankHybrid.Shared.Services.SignalRs; using Mango.Nop.Core.Extensions; -using Mango.Nop.Core.Loggers; -using MessagePack.Resolvers; using Microsoft.AspNetCore.Components; using Nop.Core.Domain.Orders; -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; namespace FruitBankHybrid.Shared.Pages { public partial class MeasuringOut : ComponentBase { - private readonly object _lock = new object(); + private readonly Lock _lock = new Lock(); [Inject] public required IEnumerable LogWriters { get; set; } [Inject] public required FruitBankSignalRClient FruitBankSignalRClient { get; set; } [Inject] public required NavigationManager NavManager{ get; set; } diff --git a/FruitBankHybrid.Shared/Pages/OrdersAdmin.razor.cs b/FruitBankHybrid.Shared/Pages/OrdersAdmin.razor.cs index e3821141..3a458a44 100644 --- a/FruitBankHybrid.Shared/Pages/OrdersAdmin.razor.cs +++ b/FruitBankHybrid.Shared/Pages/OrdersAdmin.razor.cs @@ -17,7 +17,7 @@ public partial class OrdersAdmin : ComponentBase [Inject] private IDialogService DialogService { get; set; } = null!; [Inject] public required LoggedInModel LoggedInModel { get; set; } - public IGrid gridOrder; + public required IGrid gridOrder; private List? ProductDtos { get; set; } = null!; private List? OrderDtos { get; set; } = null!; private List? OrderItemDtos { get; set; } = null!; From 51a9b3ae4bb32934c0420a8fd866b8c2d37ee1f1 Mon Sep 17 00:00:00 2001 From: Loretta Date: Thu, 6 Nov 2025 21:11:46 +0100 Subject: [PATCH 4/4] improvements --- .../Components/GridShippingDocument.razor | 22 ++++++++----- .../Components/GridShippingItem.razor | 22 +++++++++++-- .../Components/Grids/FruitBankGrid.cs | 10 ++++++ .../Grids/OrderItems/GridOrderItem.cs | 32 +++++++++++++++++++ .../Grids/ShippingItems/GridShippingItem.cs | 32 +++++++++++++++++++ .../FruitBankHybrid.Shared.csproj | 1 + .../Pages/OrdersAdmin.razor.cs | 7 +++- .../Services/SignalRs/SignalRDataSource.cs | 11 +++++++ 8 files changed, 125 insertions(+), 12 deletions(-) create mode 100644 FruitBankHybrid.Shared/Components/Grids/FruitBankGrid.cs create mode 100644 FruitBankHybrid.Shared/Components/Grids/OrderItems/GridOrderItem.cs create mode 100644 FruitBankHybrid.Shared/Components/Grids/ShippingItems/GridShippingItem.cs create mode 100644 FruitBankHybrid.Shared/Services/SignalRs/SignalRDataSource.cs diff --git a/FruitBankHybrid.Shared/Components/GridShippingDocument.razor b/FruitBankHybrid.Shared/Components/GridShippingDocument.razor index a3746fb2..0fbd887a 100644 --- a/FruitBankHybrid.Shared/Components/GridShippingDocument.razor +++ b/FruitBankHybrid.Shared/Components/GridShippingDocument.razor @@ -18,13 +18,13 @@ + ValueFieldName="Id" + TextFieldName="Name" + DropDownBodyCssClass="dd-body-class" + ListRenderMode="ListRenderMode.Entire" + SearchMode="ListSearchMode.AutoSearch" + SearchFilterCondition="ListSearchFilterCondition.Contains" + ClearButtonDisplayMode="DataEditorClearButtonDisplayMode.Auto"/> @@ -36,7 +36,13 @@ ListRenderMode="ListRenderMode.Entire" SearchMode="ListSearchMode.AutoSearch" SearchFilterCondition="ListSearchFilterCondition.Contains" - ClearButtonDisplayMode="DataEditorClearButtonDisplayMode.Auto" /> + ClearButtonDisplayMode="DataEditorClearButtonDisplayMode.Auto"> + + + + + + diff --git a/FruitBankHybrid.Shared/Components/GridShippingItem.razor b/FruitBankHybrid.Shared/Components/GridShippingItem.razor index 3a121f1e..1a66737a 100644 --- a/FruitBankHybrid.Shared/Components/GridShippingItem.razor +++ b/FruitBankHybrid.Shared/Components/GridShippingItem.razor @@ -25,7 +25,13 @@ ListRenderMode="ListRenderMode.Entire" SearchMode="ListSearchMode.AutoSearch" SearchFilterCondition="ListSearchFilterCondition.Contains" - ClearButtonDisplayMode="DataEditorClearButtonDisplayMode.Auto" /> + ClearButtonDisplayMode="DataEditorClearButtonDisplayMode.Auto"> + + + + + + @@ -39,11 +45,21 @@ ListRenderMode="ListRenderMode.Entire" SearchMode="ListSearchMode.AutoSearch" SearchFilterCondition="ListSearchFilterCondition.Contains" - ClearButtonDisplayMode="DataEditorClearButtonDisplayMode.Auto" /> + ClearButtonDisplayMode="DataEditorClearButtonDisplayMode.Auto" > + + + + + + + + + + - + diff --git a/FruitBankHybrid.Shared/Components/Grids/FruitBankGrid.cs b/FruitBankHybrid.Shared/Components/Grids/FruitBankGrid.cs new file mode 100644 index 00000000..17e9a814 --- /dev/null +++ b/FruitBankHybrid.Shared/Components/Grids/FruitBankGrid.cs @@ -0,0 +1,10 @@ +//using AyCode.Blazor.Components.Components.Grids; +//using AyCode.Core.Interfaces; +//using AyCode.Interfaces.Entities; +//using FruitBankHybrid.Shared.Services.Loggers; +//using FruitBankHybrid.Shared.Services.SignalRs; + +//namespace FruitBankHybrid.Shared.Components.Grids; + +//public class FruitBankGrid : MgGridBase, TDataItem, LoggerClient> where TDataItem : class, IId +//{} \ No newline at end of file diff --git a/FruitBankHybrid.Shared/Components/Grids/OrderItems/GridOrderItem.cs b/FruitBankHybrid.Shared/Components/Grids/OrderItems/GridOrderItem.cs new file mode 100644 index 00000000..122fd948 --- /dev/null +++ b/FruitBankHybrid.Shared/Components/Grids/OrderItems/GridOrderItem.cs @@ -0,0 +1,32 @@ +using AyCode.Core.Interfaces; +using FruitBank.Common.Entities; +using FruitBank.Common.SignalRs; +using FruitBankHybrid.Shared.Pages; +using Microsoft.AspNetCore.Components; + +namespace FruitBankHybrid.Shared.Components.Grids.OrderItem; + +//public class GridOrderItem : FruitBankGrid +//{ +// public GridOrderItem() : base() +// { +// GetAllMessageTag = SignalRTags.GetAllTransferDestinations; +// AddMessageTag = SignalRTags.CreateTransferDestination; +// UpdateMessageTag = SignalRTags.UpdateTransferDestination; +// RemoveMessageTag = SignalRTags.RemoveTransferDestination; +// } + +// protected override Task SetParametersAsyncCore(ParameterView parameters) +// { +// if (!IsFirstInitializeParameters) +// { +// //ShowFilterRow = true; +// //ShowGroupPanel = true; +// //AllowSort = false; + +// //etc... +// } + +// return base.SetParametersAsyncCore(parameters); +// } +//} \ No newline at end of file diff --git a/FruitBankHybrid.Shared/Components/Grids/ShippingItems/GridShippingItem.cs b/FruitBankHybrid.Shared/Components/Grids/ShippingItems/GridShippingItem.cs new file mode 100644 index 00000000..c8206ff4 --- /dev/null +++ b/FruitBankHybrid.Shared/Components/Grids/ShippingItems/GridShippingItem.cs @@ -0,0 +1,32 @@ +//using AyCode.Core.Interfaces; +//using FruitBank.Common.Entities; +//using FruitBank.Common.SignalRs; +//using FruitBankHybrid.Shared.Pages; +//using Microsoft.AspNetCore.Components; + +//namespace FruitBankHybrid.Shared.Components.Grids.ShippingItems; + +//public class GridShippingItem : FruitBankGrid +//{ +// public GridShippingItem() : base() +// { +// GetAllMessageTag = SignalRTags.GetShippingItems; +// AddMessageTag = SignalRTags.AddShippingItem; +// UpdateMessageTag = SignalRTags.UpdateShippingItem; +// //RemoveMessageTag = SignalRTags.; +// } + +// protected override Task SetParametersAsyncCore(ParameterView parameters) +// { +// if (!IsFirstInitializeParameters) +// { +// //ShowFilterRow = true; +// //ShowGroupPanel = true; +// //AllowSort = false; + +// //etc... +// } + +// return base.SetParametersAsyncCore(parameters); +// } +//} \ No newline at end of file diff --git a/FruitBankHybrid.Shared/FruitBankHybrid.Shared.csproj b/FruitBankHybrid.Shared/FruitBankHybrid.Shared.csproj index 37bc466f..99c21673 100644 --- a/FruitBankHybrid.Shared/FruitBankHybrid.Shared.csproj +++ b/FruitBankHybrid.Shared/FruitBankHybrid.Shared.csproj @@ -20,6 +20,7 @@ + diff --git a/FruitBankHybrid.Shared/Pages/OrdersAdmin.razor.cs b/FruitBankHybrid.Shared/Pages/OrdersAdmin.razor.cs index 3a458a44..b956d28c 100644 --- a/FruitBankHybrid.Shared/Pages/OrdersAdmin.razor.cs +++ b/FruitBankHybrid.Shared/Pages/OrdersAdmin.razor.cs @@ -1,11 +1,16 @@ -using AyCode.Core.Loggers; +using AyCode.Core.Interfaces; +using AyCode.Core.Loggers; +using AyCode.Services.Server.SignalRs; +using AyCode.Services.SignalRs; using DevExpress.Blazor; using FruitBank.Common.Dtos; using FruitBank.Common.Models; +using FruitBank.Common.SignalRs; using FruitBankHybrid.Shared.Services.Loggers; using FruitBankHybrid.Shared.Services.SignalRs; using Mango.Nop.Core.Loggers; using Microsoft.AspNetCore.Components; +using System.Diagnostics; namespace FruitBankHybrid.Shared.Pages; diff --git a/FruitBankHybrid.Shared/Services/SignalRs/SignalRDataSource.cs b/FruitBankHybrid.Shared/Services/SignalRs/SignalRDataSource.cs new file mode 100644 index 00000000..4ab24295 --- /dev/null +++ b/FruitBankHybrid.Shared/Services/SignalRs/SignalRDataSource.cs @@ -0,0 +1,11 @@ +//using AyCode.Core.Interfaces; +//using AyCode.Services.Server.SignalRs; +//using AyCode.Services.SignalRs; +//using System.Diagnostics; + +//namespace FruitBankHybrid.Shared.Services.SignalRs; + +//[Serializable] +//[DebuggerDisplay("Count = {Count}")] +//public class SignalRDataSource(AcSignalRClientBase signalRClient, SignalRCrudTags signalRCrudTags, params object[]? contextIds) +// : AcSignalRDataSource(signalRClient, signalRCrudTags, contextIds) where T : class, IId; \ No newline at end of file