diff --git a/FruitBank.Common.Server/FruitBank.Common.Server.csproj b/FruitBank.Common.Server/FruitBank.Common.Server.csproj index a14e5ec..4d7a8d1 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 2fd1dd3..10b7f90 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 568c54b..c5a4517 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 81d857f..fa27e67 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 f84566a..004bd3f 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 22e6788..f0239ec 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 1faa504..a1b2a51 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 2c4e29a..cd51e1b 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 2b6f845..5117819 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 d6cd3d6..796f8e2 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 b5f000f..a455a38 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 b992710..065c605 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 5fd2853..a3746fb 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 0d51a99..3a121f1 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 c56a263..9c1a735 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 06c098e..e4c3828 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 fd82e45..37bc466 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 414b9e3..ac1d0d1 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 80cb3eb..b24582c 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 0cecf6a..f03d9fb 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 05b22b2..52d6b0f 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 5753b37..ada3e32 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();