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
|
||||
{
|
||||
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 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) : [];
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
{
|
||||
|
|
|
|||
Loading…
Reference in New Issue