Improvements, fixes, etc...

This commit is contained in:
Loretta 2025-11-05 14:56:07 +01:00
parent 955d7ec963
commit c1f8dcbf5d
24 changed files with 131 additions and 52 deletions

View File

@ -43,9 +43,6 @@
<Reference Include="Mango.Nop.Core"> <Reference Include="Mango.Nop.Core">
<HintPath>..\..\NopCommerce.Common\4.70\Libraries\Mango.Nop.Core\bin\FruitBank\Debug\net9.0\Mango.Nop.Core.dll</HintPath> <HintPath>..\..\NopCommerce.Common\4.70\Libraries\Mango.Nop.Core\bin\FruitBank\Debug\net9.0\Mango.Nop.Core.dll</HintPath>
</Reference> </Reference>
<Reference Include="Nop.Core">
<HintPath>..\..\NopCommerce.Common\4.70\Libraries\Mango.Nop.Core\bin\FruitBank\Debug\net9.0\Nop.Core.dll</HintPath>
</Reference>
</ItemGroup> </ItemGroup>

View File

@ -1,6 +1,6 @@
using FruitBank.Common.Interfaces; using FruitBank.Common.Interfaces;
using Mango.Nop.Core.Dtos; using Mango.Nop.Core.Dtos;
using Nop.Core.Domain.Catalog; //using Nop.Core.Domain.Catalog;
namespace FruitBank.Common.Dtos; namespace FruitBank.Common.Dtos;

View File

@ -10,7 +10,7 @@ using Mango.Nop.Core.Extensions;
using Mango.Nop.Core.Interfaces; using Mango.Nop.Core.Interfaces;
using Newtonsoft.Json; using Newtonsoft.Json;
using Nop.Core; using Nop.Core;
using Nop.Core.Domain.Catalog; //using Nop.Core.Domain.Catalog;
using Nop.Core.Domain.Common; using Nop.Core.Domain.Common;
using Nop.Core.Domain.Orders; using Nop.Core.Domain.Orders;
using System.Diagnostics.CodeAnalysis; using System.Diagnostics.CodeAnalysis;

View File

@ -4,7 +4,7 @@ using Mango.Nop.Core.Dtos;
using Mango.Nop.Core.Extensions; using Mango.Nop.Core.Extensions;
using Newtonsoft.Json; using Newtonsoft.Json;
using Nop.Core; using Nop.Core;
using Nop.Core.Domain.Catalog; //using Nop.Core.Domain.Catalog;
using Nop.Core.Domain.Common; using Nop.Core.Domain.Common;
using Nop.Core.Domain.Orders; using Nop.Core.Domain.Orders;
using System.Globalization; using System.Globalization;
@ -16,7 +16,7 @@ public class ProductDto : MgProductDto, IProductDto
{ {
[NotColumn, JsonIgnore, System.Text.Json.Serialization.JsonIgnore] [NotColumn, JsonIgnore, System.Text.Json.Serialization.JsonIgnore]
private static Expression<Func<ProductDto, GenericAttribute, bool>> RelationWithGenericAttribute => (orderItemDto, genericAttribute) => private static Expression<Func<ProductDto, GenericAttribute, bool>> 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)] [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(int productId) : base(productId)
{ } { }
public ProductDto(Product product) : base(product) //public ProductDto(Product product) : base(product)
{ } //{ }
[NotColumn, JsonIgnore, System.Text.Json.Serialization.JsonIgnore] [NotColumn, JsonIgnore, System.Text.Json.Serialization.JsonIgnore]
public bool IsMeasurable public bool IsMeasurable

View File

@ -6,7 +6,7 @@ using Mango.Nop.Core.Entities;
using Nop.Core.Domain.Customers; using Nop.Core.Domain.Customers;
using Nop.Core.Domain.Orders; using Nop.Core.Domain.Orders;
using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations;
using Nop.Core.Domain.Catalog; //using Nop.Core.Domain.Catalog;
using DataType = LinqToDB.DataType; using DataType = LinqToDB.DataType;
using FruitBank.Common.Dtos; using FruitBank.Common.Dtos;
using FruitBank.Common.Enums; using FruitBank.Common.Enums;

View File

@ -37,9 +37,6 @@
<Reference Include="Mango.Nop.Core"> <Reference Include="Mango.Nop.Core">
<HintPath>..\..\NopCommerce.Common\4.70\Libraries\Mango.Nop.Core\bin\FruitBank\Debug\net9.0\Mango.Nop.Core.dll</HintPath> <HintPath>..\..\NopCommerce.Common\4.70\Libraries\Mango.Nop.Core\bin\FruitBank\Debug\net9.0\Mango.Nop.Core.dll</HintPath>
</Reference> </Reference>
<Reference Include="Nop.Core">
<HintPath>..\..\NopCommerce.Common\4.70\Libraries\Mango.Nop.Core\bin\FruitBank\Debug\net9.0\Nop.Core.dll</HintPath>
</Reference>
</ItemGroup> </ItemGroup>
</Project> </Project>

View File

@ -3,7 +3,7 @@ using FruitBank.Common.Entities;
using FruitBank.Common.Enums; using FruitBank.Common.Enums;
using Mango.Nop.Core.Dtos; using Mango.Nop.Core.Dtos;
using Mango.Nop.Core.Interfaces; using Mango.Nop.Core.Interfaces;
using Nop.Core.Domain.Catalog; //using Nop.Core.Domain.Catalog;
namespace FruitBank.Common.Interfaces; namespace FruitBank.Common.Interfaces;

View File

@ -2,7 +2,7 @@
using AyCode.Interfaces.TimeStampInfo; using AyCode.Interfaces.TimeStampInfo;
using FruitBank.Common.Dtos; using FruitBank.Common.Dtos;
using FruitBank.Common.Entities; using FruitBank.Common.Entities;
using Nop.Core.Domain.Catalog; //using Nop.Core.Domain.Catalog;
namespace FruitBank.Common.Interfaces; namespace FruitBank.Common.Interfaces;

View File

@ -37,9 +37,6 @@
<Reference Include="Mango.Nop.Services"> <Reference Include="Mango.Nop.Services">
<HintPath>..\..\NopCommerce.Common\4.70\Libraries\Mango.Nop.Services\bin\FruitBank\Debug\net9.0\Mango.Nop.Services.dll</HintPath> <HintPath>..\..\NopCommerce.Common\4.70\Libraries\Mango.Nop.Services\bin\FruitBank\Debug\net9.0\Mango.Nop.Services.dll</HintPath>
</Reference> </Reference>
<Reference Include="Nop.Core">
<HintPath>..\..\NopCommerce.Common\4.70\Libraries\Mango.Nop.Core\bin\FruitBank\Debug\net9.0\Nop.Core.dll</HintPath>
</Reference>
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>

View File

@ -3,7 +3,7 @@
@inject FruitBankSignalRClient FruitBankSignalRClient @inject FruitBankSignalRClient FruitBankSignalRClient
<MgGridBase Data="OrderDtos" IsMasterGrid="IsMasterGrid" <MgGridBase Data="OrderDtos" IsMasterGrid="IsMasterGrid" AutoSaveLayoutName="GridDetailOrderDto"
ShowFilterRow="IsMasterGrid" ShowGroupPanel="IsMasterGrid" ShowFilterRow="IsMasterGrid" ShowGroupPanel="IsMasterGrid"
AutoExpandAllGroupRows="false" AutoExpandAllGroupRows="false"
ColumnResizeMode="GridColumnResizeMode.NextColumn" VirtualScrollingEnabled="IsMasterGrid" ColumnResizeMode="GridColumnResizeMode.NextColumn" VirtualScrollingEnabled="IsMasterGrid"

View File

@ -9,7 +9,7 @@
<MgGridBase Data="OrderItemDtos" IsMasterGrid="IsMasterGrid" <MgGridBase Data="OrderItemDtos" IsMasterGrid="IsMasterGrid"
PageSize="@(IsMasterGrid ? 15 : 50)" ShowFilterRow="IsMasterGrid" ShowGroupPanel="IsMasterGrid" PageSize="@(IsMasterGrid ? 15 : 50)" ShowFilterRow="IsMasterGrid" ShowGroupPanel="IsMasterGrid"
AutoExpandAllGroupRows="false" AutoExpandAllGroupRows="false" AutoSaveLayoutName="GridDetailOrderItemDto"
ColumnResizeMode="GridColumnResizeMode.NextColumn" ColumnResizeMode="GridColumnResizeMode.NextColumn"
FilterMenuButtonDisplayMode="@(IsMasterGrid ? GridFilterMenuButtonDisplayMode.Never : GridFilterMenuButtonDisplayMode.Always)"> FilterMenuButtonDisplayMode="@(IsMasterGrid ? GridFilterMenuButtonDisplayMode.Never : GridFilterMenuButtonDisplayMode.Always)">
<Columns> <Columns>

View File

@ -4,7 +4,7 @@
@inject FruitBankSignalRClient FruitBankSignalRClient @inject FruitBankSignalRClient FruitBankSignalRClient
<MgGridBase @ref="gridOrderItemPallet" Data="OrderItemPallets" IsMasterGrid="IsMasterGrid" <MgGridBase @ref="gridOrderItemPallet" Data="OrderItemPallets" IsMasterGrid="IsMasterGrid" AutoSaveLayoutName="GridDetailOrderItemPallets"
PageSize="@(IsMasterGrid ? 15 : 50)" ShowFilterRow="IsMasterGrid" ShowGroupPanel="IsMasterGrid" PageSize="@(IsMasterGrid ? 15 : 50)" ShowFilterRow="IsMasterGrid" ShowGroupPanel="IsMasterGrid"
AutoExpandAllGroupRows="false" AutoExpandAllGroupRows="false"
ColumnResizeMode="GridColumnResizeMode.NextColumn" ColumnResizeMode="GridColumnResizeMode.NextColumn"

View File

@ -6,7 +6,7 @@
@inject FruitBankSignalRClient FruitBankSignalRClient @inject FruitBankSignalRClient FruitBankSignalRClient
<GridProductDto Data="ProductDtos" IsMasterGrid="IsMasterGrid" FocusedRowChanged="OnFocusedRowChanged"> <GridProductDto Data="ProductDtos" IsMasterGrid="IsMasterGrid" FocusedRowChanged="OnFocusedRowChanged" AutoSaveLayoutName="GridProductDtoTemplate">
<Columns> <Columns>
<DxGridDataColumn FieldName="Id" SortIndex="0" SortOrder="GridColumnSortOrder.Ascending" /> <DxGridDataColumn FieldName="Id" SortIndex="0" SortOrder="GridColumnSortOrder.Ascending" />
<DxGridDataColumn FieldName="Name" /> <DxGridDataColumn FieldName="Name" />

View File

@ -4,7 +4,7 @@
@inject FruitBankSignalRClient FruitBankSignalRClient @inject FruitBankSignalRClient FruitBankSignalRClient
<MgGridBase @ref="Grid" Data="Shippings" IsMasterGrid="IsMasterGrid" <MgGridBase @ref="Grid" Data="Shippings" IsMasterGrid="IsMasterGrid" AutoSaveLayoutName="GridShipping"
EditOnKeyPress="true" EditOnKeyPress="true"
ValidationEnabled="false" ValidationEnabled="false"
EditModelSaving="Grid_EditModelSaving"> EditModelSaving="Grid_EditModelSaving">

View File

@ -9,7 +9,7 @@
@inject FruitBankSignalRClient FruitBankSignalRClient @inject FruitBankSignalRClient FruitBankSignalRClient
<MgGridBase @ref="Grid" CssClass="@GridCss" Data="@ShippingDocuments" IsMasterGrid="@IsMasterGrid" <MgGridBase @ref="Grid" CssClass="@GridCss" Data="@ShippingDocuments" IsMasterGrid="@IsMasterGrid" AutoSaveLayoutName="GridShippingDocument"
ValidationEnabled="false" EditMode="GridEditMode.EditRow" ValidationEnabled="false" EditMode="GridEditMode.EditRow"
EditModelSaving="Grid_EditModelSaving" EditModelSaving="Grid_EditModelSaving"
FocusedRowChanged="Grid_FocusedRowChanged"> FocusedRowChanged="Grid_FocusedRowChanged">

View File

@ -10,7 +10,7 @@
Contact Phone: @OrderDto.Email Contact Phone: @OrderDto.Email
</div> *@ </div> *@
<MgGridBase @ref="Grid" Data="ShippingItems" IsMasterGrid="IsMasterGrid" CssClass="@GridCss" <MgGridBase @ref="Grid" Data="ShippingItems" IsMasterGrid="IsMasterGrid" CssClass="@GridCss" AutoSaveLayoutName="GridShippingItem"
ValidationEnabled="false" EditMode="GridEditMode.EditRow" ValidationEnabled="false" EditMode="GridEditMode.EditRow"
EditModelSaving="Grid_EditModelSaving" EditModelSaving="Grid_EditModelSaving"
FocusedRowChanged="Grid_FocusedRowChanged"> FocusedRowChanged="Grid_FocusedRowChanged">

View File

@ -4,7 +4,7 @@
@inject FruitBankSignalRClient FruitBankSignalRClient @inject FruitBankSignalRClient FruitBankSignalRClient
<MgGridBase @ref="gridOrderItemPallet" Data="ShippingItemPallets" IsMasterGrid="IsMasterGrid" <MgGridBase @ref="gridOrderItemPallet" Data="ShippingItemPallets" IsMasterGrid="IsMasterGrid" AutoSaveLayoutName="GridShippingItemPallets"
PageSize="@(IsMasterGrid ? 15 : 50)" ShowFilterRow="IsMasterGrid" ShowGroupPanel="IsMasterGrid" PageSize="@(IsMasterGrid ? 15 : 50)" ShowFilterRow="IsMasterGrid" ShowGroupPanel="IsMasterGrid"
AutoExpandAllGroupRows="false" AutoExpandAllGroupRows="false"
ColumnResizeMode="GridColumnResizeMode.NextColumn" ColumnResizeMode="GridColumnResizeMode.NextColumn"
@ -12,7 +12,7 @@
<Columns> <Columns>
<DxGridDataColumn FieldName="Id" Width="125" /> <DxGridDataColumn FieldName="Id" Width="125" />
<DxGridDataColumn FieldName="ShippingItemId" Caption="siId" Width="125" /> <DxGridDataColumn FieldName="ShippingItemId" Caption="siId" Width="125" />
<DxGridDataColumn FieldName="ShippingItem.ShippingId" Caption="aId" Width="125" /> <DxGridDataColumn FieldName="ShippingItem.ShippingId" Caption="sId" Width="125" />
<DxGridDataColumn Name="ProductId" FieldName="ShippingItem.ProductId" Caption="pId" Width="125" Visible="false" /> <DxGridDataColumn Name="ProductId" FieldName="ShippingItem.ProductId" Caption="pId" Width="125" Visible="false" />
<DxGridDataColumn Name="ProductName" FieldName="ShippingItem.ProductDto.Name" Caption="ProductName" Visible="false" /> <DxGridDataColumn Name="ProductName" FieldName="ShippingItem.ProductDto.Name" Caption="ProductName" Visible="false" />

View File

@ -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.Blazor;
using DevExpress.Data.Helpers; using DevExpress.Data.Helpers;
using DevExpress.Utils.Filtering.Internal; using DevExpress.Utils.Filtering.Internal;
using FruitBank.Common.Models;
using FruitBankHybrid.Shared.Services.SignalRs; using FruitBankHybrid.Shared.Services.SignalRs;
using Microsoft.AspNetCore.Components; using Microsoft.AspNetCore.Components;
using Microsoft.JSInterop;
using System.Collections.ObjectModel;
using System.Reflection; using System.Reflection;
namespace FruitBankHybrid.Shared.Components; namespace FruitBankHybrid.Shared.Components;
@ -12,11 +17,15 @@ public class MgGridBase : DxGrid
{ {
private bool _isFirstInitializeParameterCore; private bool _isFirstInitializeParameterCore;
private bool _isFirstInitializeParameters; private bool _isFirstInitializeParameters;
public bool PreRendered { get; set; }
[Inject] public required IEnumerable<IAcLogWriterClientBase> LogWriters { get; set; } [Inject] public required IEnumerable<IAcLogWriterClientBase> LogWriters { get; set; }
[Inject] public required FruitBankSignalRClient FruitBankSignalRClient { 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 bool IsMasterGrid { get; set; } = false;
[Parameter] public string AutoSaveLayoutName { get; set; }
[Parameter] [Parameter]
public required object DataSource public required object DataSource
@ -25,6 +34,13 @@ public class MgGridBase : DxGrid
set => Data = value; set => Data = value;
} }
protected override async Task OnInitializedAsync()
{
//var json = await GetLocalStorageItemAsync(LocalStorageItemsKey);
//if (!string.IsNullOrEmpty(json))
// Layouts = JsonSerializer.Deserialize<ObservableCollection<UserLayout>>(json);
}
protected void OnCustomizeElement(GridCustomizeElementEventArgs e) protected void OnCustomizeElement(GridCustomizeElementEventArgs e)
{ {
//if (!IsMasterGrid) e.CssClass = "hideDetailButton"; //if (!IsMasterGrid) e.CssClass = "hideDetailButton";
@ -34,7 +50,8 @@ public class MgGridBase : DxGrid
e.CssClass = " alt-item"; e.CssClass = " alt-item";
} }
if(e.ElementType == GridElementType.HeaderCell) { if (e.ElementType == GridElementType.HeaderCell)
{
e.Style = "background-color: #E6E6E6;"; e.Style = "background-color: #E6E6E6;";
//e.CssClass = "header-bold"; //e.CssClass = "header-bold";
} }
@ -91,12 +108,83 @@ public class MgGridBase : DxGrid
//VirtualScrollingEnabled = IsMasterGrid; //VirtualScrollingEnabled = IsMasterGrid;
PageSizeSelectorVisible = true; PageSizeSelectorVisible = true;
if (IsMasterGrid && !AutoSaveLayoutName.IsNullOrWhiteSpace())
{
LayoutAutoLoading = Grid_LayoutAutoLoading;
LayoutAutoSaving = Grid_LayoutAutoSaving;
}
_isFirstInitializeParameters = true; _isFirstInitializeParameters = true;
} }
base.OnParametersSet(); 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<GridPersistentLayout?> LoadLayoutFromLocalStorageAsync(string localStorageKey)
{
try
{
var json = await JSRuntime.InvokeAsync<string>("localStorage.getItem", localStorageKey);
if (!json.IsNullOrWhiteSpace()) return json.JsonTo<GridPersistentLayout>();
}
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() //public RenderFragment AddCommandColumn()
//{ //{
// RenderFragment columns = b => // RenderFragment columns = b =>

View File

@ -63,8 +63,5 @@
<Reference Include="Mango.Nop.Core"> <Reference Include="Mango.Nop.Core">
<HintPath>..\..\NopCommerce.Common\4.70\Libraries\Mango.Nop.Core\bin\FruitBank\Debug\net9.0\Mango.Nop.Core.dll</HintPath> <HintPath>..\..\NopCommerce.Common\4.70\Libraries\Mango.Nop.Core\bin\FruitBank\Debug\net9.0\Mango.Nop.Core.dll</HintPath>
</Reference> </Reference>
<Reference Include="Nop.Core">
<HintPath>..\..\NopCommerce.Common\4.70\Libraries\Mango.Nop.Core\bin\FruitBank\Debug\net9.0\Nop.Core.dll</HintPath>
</Reference>
</ItemGroup> </ItemGroup>
</Project> </Project>

View File

@ -16,7 +16,7 @@
Text="Adatok szinkronizálása folyamatban..."> Text="Adatok szinkronizálása folyamatban...">
@* @bind-ActiveTabIndex="@ActiveTabIndex" *@ @* @bind-ActiveTabIndex="@ActiveTabIndex" *@
<DxTabs ActiveTabIndexChanged="(i) => OnActiveTabChanged(i)"> <DxTabs ActiveTabIndexChanged="(i) => OnActiveTabChanged(i)" RenderMode="TabsRenderMode.AllTabs" AllowTabReorder="true">
<DxTabPage Text="Termékek"> <DxTabPage Text="Termékek">
<GridProductDtoTemplate ProductDtos="ProductDtos" IsMasterGrid="true"></GridProductDtoTemplate> <GridProductDtoTemplate ProductDtos="ProductDtos" IsMasterGrid="true"></GridProductDtoTemplate>
</DxTabPage> </DxTabPage>

View File

@ -16,7 +16,7 @@
Text="Adatok szinkronizálása folyamatban..."> Text="Adatok szinkronizálása folyamatban...">
@* @bind-ActiveTabIndex="@ActiveTabIndex" *@ @* @bind-ActiveTabIndex="@ActiveTabIndex" *@
<DxTabs ActiveTabIndexChanged="(i) => OnActiveTabChanged(i)"> <DxTabs ActiveTabIndexChanged="(i) => OnActiveTabChanged(i)" RenderMode="TabsRenderMode.AllTabs" AllowTabReorder="true">
<DxTabPage Text="Termékek"> <DxTabPage Text="Termékek">
<GridProductDtoTemplate IsMasterGrid="true"></GridProductDtoTemplate> <GridProductDtoTemplate IsMasterGrid="true"></GridProductDtoTemplate>
</DxTabPage> </DxTabPage>

View File

@ -1,6 +1,7 @@
using AyCode.Core.Loggers; using AyCode.Core.Loggers;
using FruitBank.Common.Loggers; using FruitBank.Common.Loggers;
using FruitBank.Common.Models; using FruitBank.Common.Models;
using FruitBankHybrid.Shared.Databases;
using FruitBankHybrid.Shared.Services; using FruitBankHybrid.Shared.Services;
using FruitBankHybrid.Shared.Services.SignalRs; using FruitBankHybrid.Shared.Services.SignalRs;
using FruitBankHybrid.Web.Client.Services; 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 // Add device-specific services used by the FruitBankHybrid.Shared project
builder.Services.AddSingleton<IFormFactor, FormFactor>(); builder.Services.AddSingleton<IFormFactor, FormFactor>();
//builder.Services.AddScoped<ISignalRService, SignalRService>();
builder.Services.AddSingleton<LoggedInModel>();
builder.Services.AddScoped<FruitBankSignalRClient>();
#if DEBUG #if DEBUG
builder.Services.AddScoped<IAcLogWriterClientBase, BrowserConsoleLogWriter>(); builder.Services.AddSingleton<IAcLogWriterClientBase, BrowserConsoleLogWriter>();
#endif #endif
builder.Services.AddScoped<IAcLogWriterClientBase, SignaRClientLogItemWriter>(); builder.Services.AddSingleton<LoggedInModel>();
builder.Services.AddSingleton<FruitBankSignalRClient>();
builder.Services.AddSingleton<DatabaseClient>();
builder.Services.AddSingleton<IAcLogWriterClientBase, SignaRClientLogItemWriter>();
await builder.Build().RunAsync(); await builder.Build().RunAsync();

View File

@ -3,6 +3,7 @@ using FruitBank.Common;
using FruitBank.Common.Models; using FruitBank.Common.Models;
using FruitBank.Common.Server.Services.Loggers; using FruitBank.Common.Server.Services.Loggers;
using FruitBank.Common.Server.Services.SignalRs; using FruitBank.Common.Server.Services.SignalRs;
using FruitBankHybrid.Shared.Databases;
using FruitBankHybrid.Shared.Services; using FruitBankHybrid.Shared.Services;
using FruitBankHybrid.Shared.Services.SignalRs; using FruitBankHybrid.Shared.Services.SignalRs;
using FruitBankHybrid.Web.Components; 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.AddDevExpressBlazor(configure => configure.SizeMode = DevExpress.Blazor.SizeMode.Medium);
builder.Services.AddMvc(); builder.Services.AddMvc();
builder.Services.AddSignalR(options => options.MaximumReceiveMessageSize = 256 * 1024);
builder.Services.AddSingleton<IFormFactor, FormFactor>(); builder.Services.AddSingleton<IFormFactor, FormFactor>();
builder.Services.AddSingleton<IAcLogWriterBase, ConsoleLogWriter>();
builder.Services.AddSingleton<LoggedInModel>(); builder.Services.AddSingleton<LoggedInModel>();
builder.Services.AddScoped<IAcLogWriterBase, ConsoleLogWriter>();
builder.Services.AddSingleton<FruitBankSignalRClient>();
builder.Services.AddSingleton<DatabaseClient>();
//builder.Services.AddScoped<LoggerToLoggerApiController>(); //builder.Services.AddScoped<LoggerToLoggerApiController>();
//builder.Services.AddSingleton<SessionService>(); //builder.Services.AddSingleton<SessionService>();
//builder.Services.AddScoped<IFruitBankDataControllerServer, FruitBankDataController>(); //builder.Services.AddScoped<IFruitBankDataControllerServer, FruitBankDataController>();
builder.Services.AddSignalR(options => options.MaximumReceiveMessageSize = 256 * 1024);
builder.Services.AddScoped<FruitBankSignalRClient>();
var app = builder.Build(); var app = builder.Build();
// Configure the HTTP request pipeline. // Configure the HTTP request pipeline.

View File

@ -29,16 +29,14 @@ namespace FruitBankHybrid
// Add device-specific services used by the FruitBankHybrid.Shared project // Add device-specific services used by the FruitBankHybrid.Shared project
builder.Services.AddSingleton<IFormFactor, FormFactor>(); builder.Services.AddSingleton<IFormFactor, FormFactor>();
#if DEBUG
builder.Services.AddSingleton<IAcLogWriterClientBase, BrowserConsoleLogWriter>();
#endif
builder.Services.AddSingleton<LoggedInModel>(); builder.Services.AddSingleton<LoggedInModel>();
builder.Services.AddScoped<FruitBankSignalRClient>(); builder.Services.AddScoped<FruitBankSignalRClient>();
builder.Services.AddSingleton<DatabaseClient>(); builder.Services.AddSingleton<DatabaseClient>();
#if DEBUG
builder.Services.AddSingleton<IAcLogWriterClientBase, BrowserConsoleLogWriter>();
#endif
builder.Services.AddSingleton<IAcLogWriterClientBase, SignaRClientLogItemWriter>(); builder.Services.AddSingleton<IAcLogWriterClientBase, SignaRClientLogItemWriter>();