improvements, fixes
This commit is contained in:
parent
5e574cd19e
commit
d2d4ea56c5
|
|
@ -1,5 +1,12 @@
|
||||||
namespace FruitBankHybrid.Shared.Components;
|
using DevExpress.Blazor;
|
||||||
|
|
||||||
|
namespace FruitBankHybrid.Shared.Components;
|
||||||
|
|
||||||
public class GridProductDto : MgGridBase
|
public class GridProductDto : MgGridBase
|
||||||
{
|
{
|
||||||
|
protected override void CustomizeElementHideDetailButton(GridCustomizeElementEventArgs e)
|
||||||
|
{
|
||||||
|
//Felülírjuk, h ne adja hozzá a "hideDetailButton" css class-t!
|
||||||
|
return;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -1,4 +1,5 @@
|
||||||
@using AyCode.Core.Helpers
|
@using System.Threading
|
||||||
|
@using AyCode.Core.Helpers
|
||||||
@using AyCode.Utils.Extensions
|
@using AyCode.Utils.Extensions
|
||||||
@using DevExpress.Internal.About
|
@using DevExpress.Internal.About
|
||||||
@using FruitBank.Common.Dtos
|
@using FruitBank.Common.Dtos
|
||||||
|
|
@ -27,19 +28,19 @@
|
||||||
<DxGridCommandColumn Visible="!IsMasterGrid" Width="120"></DxGridCommandColumn>
|
<DxGridCommandColumn Visible="!IsMasterGrid" Width="120"></DxGridCommandColumn>
|
||||||
</Columns>
|
</Columns>
|
||||||
<DetailRowTemplate>
|
<DetailRowTemplate>
|
||||||
@if (IsMasterGrid && LoggedInModel.IsDeveloper)
|
@if (IsMasterGrid)
|
||||||
{
|
{
|
||||||
var productId = ((ProductDto)context.DataItem).Id;
|
var productId = ((ProductDto)context.DataItem).Id;
|
||||||
|
|
||||||
<DxTabs ActiveTabIndexChanged="(i) => OnActiveTabChanged(i, productId)">
|
<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();
|
//GetOrderDtosFromDbAsync(productId).Forget();
|
||||||
//var orderDtos = _orderDtos?.Where(o => o.OrderItemDtos.Any(oi => oi.ProductId == productId)).ToList() ?? [];
|
//var orderDtos = _orderDtos?.Where(o => o.OrderItemDtos.Any(oi => oi.ProductId == productId)).ToList() ?? [];
|
||||||
<GridDetailOrderDto OrderDtos="_currentOrderDtos" IsMasterGrid="false"></GridDetailOrderDto>
|
<GridDetailOrderDto OrderDtos="_currentOrderDtos" IsMasterGrid="false"></GridDetailOrderDto>
|
||||||
}
|
}
|
||||||
</DxTabPage>
|
</DxTabPage>
|
||||||
<DxTabPage Text="Rendelés tételek">
|
<DxTabPage Text="Rendelés tételek" Visible="@LoggedInModel.IsDeveloper">
|
||||||
@{
|
@{
|
||||||
//GetOrderItemDtosFromDbAsync(productId).Forget();
|
//GetOrderItemDtosFromDbAsync(productId).Forget();
|
||||||
//var orderItemDtos = _orderItemDtos?.Where(oi => oi.ProductId == productId).ToList() ?? [];
|
//var orderItemDtos = _orderItemDtos?.Where(oi => oi.ProductId == productId).ToList() ?? [];
|
||||||
|
|
@ -77,6 +78,9 @@
|
||||||
private List<OrderDto>? _currentOrderDtos;
|
private List<OrderDto>? _currentOrderDtos;
|
||||||
private List<OrderItemDto>? _currentOrderItemDtos;
|
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<OrderDto>> _orderDtosByProductId = new();
|
||||||
private readonly Dictionary<int, List<OrderItemDto>> _orderItemDtosByProductId = new();
|
private readonly Dictionary<int, List<OrderItemDto>> _orderItemDtosByProductId = new();
|
||||||
|
|
||||||
|
|
@ -125,29 +129,37 @@
|
||||||
|
|
||||||
private async Task<List<OrderDto>> GetOrderDtosFromDbAsync(int productId)
|
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) ?? [];
|
orderDtos = await FruitBankSignalRClient.GetAllOrderDtoByProductId(productId) ?? [];
|
||||||
_orderDtosByProductId[productId] = orderDtos;
|
_orderDtosByProductId[productId] = orderDtos;
|
||||||
|
|
||||||
return _currentOrderDtos = orderDtos;
|
return _currentOrderDtos = orderDtos;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private async Task<List<OrderItemDto>> GetOrderItemDtosFromDbAsync(int productId)
|
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) ?? [];
|
orderItemDtos = await FruitBankSignalRClient.GetAllOrderItemDtoByProductId(productId) ?? [];
|
||||||
_orderItemDtosByProductId[productId] = orderItemDtos;
|
_orderItemDtosByProductId[productId] = orderItemDtos;
|
||||||
|
|
||||||
return _currentOrderItemDtos = orderItemDtos;
|
return _currentOrderItemDtos = orderItemDtos;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
protected async Task OnFocusedRowChanged(GridFocusedRowChangedEventArgs e)
|
protected async Task OnFocusedRowChanged(GridFocusedRowChangedEventArgs e)
|
||||||
{
|
{
|
||||||
|
if (!LoggedInModel.IsDeveloper) return;
|
||||||
|
|
||||||
var productDto = (ProductDto)e.DataItem;
|
var productDto = (ProductDto)e.DataItem;
|
||||||
|
|
||||||
//if (e.Grid.IsDetailRowExpanded(e.VisibleIndex))
|
if (e.Grid.IsDetailRowExpanded(e.VisibleIndex))
|
||||||
{
|
{
|
||||||
_currentOrderDtos = null;
|
_currentOrderDtos = null;
|
||||||
_currentOrderDtos = productDto != null ? await GetOrderDtosFromDbAsync(productDto.Id) : [];
|
_currentOrderDtos = productDto != null ? await GetOrderDtosFromDbAsync(productDto.Id) : [];
|
||||||
|
|
|
||||||
|
|
@ -41,6 +41,14 @@ public class MgGridBase : DxGrid
|
||||||
// Layouts = JsonSerializer.Deserialize<ObservableCollection<UserLayout>>(json);
|
// 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)
|
protected void OnCustomizeElement(GridCustomizeElementEventArgs e)
|
||||||
{
|
{
|
||||||
//if (!IsMasterGrid) e.CssClass = "hideDetailButton";
|
//if (!IsMasterGrid) e.CssClass = "hideDetailButton";
|
||||||
|
|
@ -50,10 +58,7 @@ public class MgGridBase : DxGrid
|
||||||
e.CssClass = " alt-item";
|
e.CssClass = " alt-item";
|
||||||
}
|
}
|
||||||
|
|
||||||
if(e.ElementType == GridElementType.DataRow && !LoggedInModel.IsDeveloper)
|
CustomizeElementHideDetailButton(e);
|
||||||
{
|
|
||||||
e.CssClass = "hideDetailButton";
|
|
||||||
}
|
|
||||||
|
|
||||||
if (e.ElementType == GridElementType.HeaderCell)
|
if (e.ElementType == GridElementType.HeaderCell)
|
||||||
{
|
{
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue