improvements, fixes

This commit is contained in:
Loretta 2025-11-15 15:42:43 +01:00
parent 5e574cd19e
commit d2d4ea56c5
3 changed files with 42 additions and 18 deletions

View File

@ -1,5 +1,12 @@
namespace FruitBankHybrid.Shared.Components;
using DevExpress.Blazor;
namespace FruitBankHybrid.Shared.Components;
public class GridProductDto : MgGridBase
{
protected override void CustomizeElementHideDetailButton(GridCustomizeElementEventArgs e)
{
//Felülírjuk, h ne adja hozzá a "hideDetailButton" css class-t!
return;
}
}

View File

@ -1,4 +1,5 @@
@using AyCode.Core.Helpers
@using System.Threading
@using AyCode.Core.Helpers
@using AyCode.Utils.Extensions
@using DevExpress.Internal.About
@using FruitBank.Common.Dtos
@ -27,19 +28,19 @@
<DxGridCommandColumn Visible="!IsMasterGrid" Width="120"></DxGridCommandColumn>
</Columns>
<DetailRowTemplate>
@if (IsMasterGrid && LoggedInModel.IsDeveloper)
@if (IsMasterGrid)
{
var productId = ((ProductDto)context.DataItem).Id;
<DxTabs ActiveTabIndexChanged="(i) => OnActiveTabChanged(i, productId)">
<DxTabPage Text="Rendelések melyben megtalálható">
<DxTabPage Text="Rendelések melyben megtalálható" Visible="@LoggedInModel.IsDeveloper">
@{
//GetOrderDtosFromDbAsync(productId).Forget();
//var orderDtos = _orderDtos?.Where(o => o.OrderItemDtos.Any(oi => oi.ProductId == productId)).ToList() ?? [];
<GridDetailOrderDto OrderDtos="_currentOrderDtos" IsMasterGrid="false"></GridDetailOrderDto>
}
</DxTabPage>
<DxTabPage Text="Rendelés tételek">
<DxTabPage Text="Rendelés tételek" Visible="@LoggedInModel.IsDeveloper">
@{
//GetOrderItemDtosFromDbAsync(productId).Forget();
//var orderItemDtos = _orderItemDtos?.Where(oi => oi.ProductId == productId).ToList() ?? [];
@ -77,6 +78,9 @@
private List<OrderDto>? _currentOrderDtos;
private List<OrderItemDto>? _currentOrderItemDtos;
private readonly SemaphoreSlim _lockOrderDtosByProductId = new(1);
private readonly SemaphoreSlim _lockOrderItemDtosByProductId = new(1);
private readonly Dictionary<int, List<OrderDto>> _orderDtosByProductId = new();
private readonly Dictionary<int, List<OrderItemDto>> _orderItemDtosByProductId = new();
@ -125,29 +129,37 @@
private async Task<List<OrderDto>> GetOrderDtosFromDbAsync(int productId)
{
if (_orderDtosByProductId.TryGetValue(productId, out var orderDtos)) return orderDtos;
using(await _lockOrderDtosByProductId.UseWaitAsync())
{
if (_orderDtosByProductId.TryGetValue(productId, out var orderDtos)) return orderDtos;
orderDtos = await FruitBankSignalRClient.GetAllOrderDtoByProductId(productId) ?? [];
_orderDtosByProductId[productId] = orderDtos;
orderDtos = await FruitBankSignalRClient.GetAllOrderDtoByProductId(productId) ?? [];
_orderDtosByProductId[productId] = orderDtos;
return _currentOrderDtos = orderDtos;
return _currentOrderDtos = orderDtos;
}
}
private async Task<List<OrderItemDto>> GetOrderItemDtosFromDbAsync(int productId)
{
if (_orderItemDtosByProductId.TryGetValue(productId, out var orderItemDtos)) return orderItemDtos;
using (await _lockOrderItemDtosByProductId.UseWaitAsync())
{
if (_orderItemDtosByProductId.TryGetValue(productId, out var orderItemDtos)) return orderItemDtos;
orderItemDtos = await FruitBankSignalRClient.GetAllOrderItemDtoByProductId(productId) ?? [];
_orderItemDtosByProductId[productId] = orderItemDtos;
orderItemDtos = await FruitBankSignalRClient.GetAllOrderItemDtoByProductId(productId) ?? [];
_orderItemDtosByProductId[productId] = orderItemDtos;
return _currentOrderItemDtos = orderItemDtos;
return _currentOrderItemDtos = orderItemDtos;
}
}
protected async Task OnFocusedRowChanged(GridFocusedRowChangedEventArgs e)
{
if (!LoggedInModel.IsDeveloper) return;
var productDto = (ProductDto)e.DataItem;
//if (e.Grid.IsDetailRowExpanded(e.VisibleIndex))
if (e.Grid.IsDetailRowExpanded(e.VisibleIndex))
{
_currentOrderDtos = null;
_currentOrderDtos = productDto != null ? await GetOrderDtosFromDbAsync(productDto.Id) : [];

View File

@ -41,6 +41,14 @@ public class MgGridBase : DxGrid
// Layouts = JsonSerializer.Deserialize<ObservableCollection<UserLayout>>(json);
}
protected virtual void CustomizeElementHideDetailButton(GridCustomizeElementEventArgs e)
{
if (e.ElementType == GridElementType.DataRow && !LoggedInModel.IsDeveloper)
{
e.CssClass = "hideDetailButton";
}
}
protected void OnCustomizeElement(GridCustomizeElementEventArgs e)
{
//if (!IsMasterGrid) e.CssClass = "hideDetailButton";
@ -50,10 +58,7 @@ public class MgGridBase : DxGrid
e.CssClass = " alt-item";
}
if(e.ElementType == GridElementType.DataRow && !LoggedInModel.IsDeveloper)
{
e.CssClass = "hideDetailButton";
}
CustomizeElementHideDetailButton(e);
if (e.ElementType == GridElementType.HeaderCell)
{