TiamGrid improvements

This commit is contained in:
jozsef.b@aycode.com 2024-05-31 16:42:37 +02:00
parent 67520f8b62
commit 40d8937654
6 changed files with 87 additions and 33 deletions

View File

@ -11,6 +11,7 @@
@using TIAMWebApp.Shared.Application.Models.PageModels
@using TIAMWebApp.Shared.Application.Utility
@using AyCode.Services.Loggers
@using TIAM.Services
@using TIAMWebApp.Shared.Application.Services
@using TIAMSharedUI.Shared.Components
@using TIAMSharedUI.Shared.Components.Grids
@ -71,11 +72,22 @@
IconCssClass="btn-column-chooser"
Click="ColumnChooserButton_Click" />
</div>
@* <TiamGrid TDataItem="Transfer"
Logger="_logger"
SignalRClient="AdminSignalRClient"
GetAllMessageTag="SignalRTags.GetTransfersAsync"
AddMessageTag="SignalRTags.AddTransferAsync"
UpdateMessageTag="SignalRTags.UpdateTransferAsync"
RemoveMessageTag="SignalRTags.RemoveTransferAsync">
</TiamGrid>
*@
<TransferGrid @ref="_gridTransfer"
Logger="_logger"
SignalRClient="AdminSignalRClient"
OnDataSourceChanged="DataSourceChanged"
OnDataSourceItemChanging="DataSourceItemChanging"
OnDataSourceItemChanged="DataSourceItemChanged"
OnDataItemDeleting="DataItemDeleting"
OnDataItemSaving="DataItemSaving"
@ -348,6 +360,23 @@
transferEditModel.ContactEmail = "your@email.address";
}
private void DataSourceChanged(IList<Transfer> transfers)
{
_logger.Info("DataSourceChanged called");
InitializeAppointments(transfers);
}
private void DataSourceItemChanging(Transfer transfer)
{
_logger.Info("DataSourceItemChanging called");
}
private void DataSourceItemChanged(Transfer transfer)
{
_logger.Info("DataSourceItemChanged called");
}
private void DataItemSaving(GridEditModelSavingEventArgs e)
{
_logger.Info("DataItemSaving called");
@ -358,18 +387,6 @@
_logger.Info($"DataItemDeleting OnItemDeleting");
}
private void DataSourceChanged(IList<Transfer> transfers)
{
_logger.Info("DataSourceChanged called");
InitializeAppointments(transfers);
}
private void DataSourceItemChanged(Transfer transfer)
{
_logger.Info("DataSourceItemChanged called");
}
private void RefreshAppointments(Transfer transfer, bool isDelete)
{
var appointmentIndex = AppointmentModels.FindIndex(x => x.SourceId == transfer.Id);
@ -456,5 +473,4 @@
_gridTransfer.ExpandDetailRow(0);
_gridTransfer.EndUpdate();
}
}

View File

@ -0,0 +1,17 @@
using Microsoft.AspNetCore.Components;
namespace TIAMSharedUI.Shared.Components.Grids;
public class CompanyDetailGrid : CompanyGrid
{
protected override Task SetParametersAsyncCore(ParameterView parameters)
{
var isFirst = IsFirstInitializeParameters;
return base.SetParametersAsyncCore(parameters);
if (isFirst)
{
}
}
}

View File

@ -18,7 +18,7 @@ public class CompanyGrid : TiamGrid<Company>
protected override Task SetParametersAsyncCore(ParameterView parameters)
{
if (!IsInitializedParameters)
if (!IsFirstInitializeParameters)
{
//ShowFilterRow = true;
//ShowGroupPanel = true;

View File

@ -13,7 +13,7 @@ namespace TIAMSharedUI.Shared.Components.Grids
{
public class TiamGrid<TDataItem> : DxGrid where TDataItem : class, IEntityGuid
{
protected bool IsInitializedParameters;
protected bool IsFirstInitializeParameters;
private IList<TDataItem>? _dataSource;
private string _gridLogName;
@ -80,10 +80,9 @@ namespace TIAMSharedUI.Shared.Components.Grids
[Parameter] public EventCallback<GridEditModelSavingEventArgs> OnDataItemSaving { get; set; }
[Parameter]
public EventCallback<IList<TDataItem>> OnDataSourceChanged { get; set; }
[Parameter]
public EventCallback<TDataItem> OnDataSourceItemChanged { get; set; }
[Parameter] public EventCallback<IList<TDataItem>> OnDataSourceChanged { get; set; }
[Parameter] public EventCallback<TDataItem> OnDataSourceItemChanging { get; set; }
[Parameter] public EventCallback<TDataItem> OnDataSourceItemChanged { get; set; }
private async Task OnItemSaving(GridEditModelSavingEventArgs e)
{
@ -122,10 +121,12 @@ namespace TIAMSharedUI.Shared.Components.Grids
PostDataToServerAsync(dataItem, RemoveMessageTag, true).Forget();
}
public Task RefreshDataSourceAsync()
public virtual Task RefreshDataSourceAsync()
{
Logger.Info($"{_gridLogName} UpdateAllDataAsync called");
//if (GetAllMessageTag == 0) return Task.CompletedTask;
return SignalRClient.GetAllAsync<IList<TDataItem>>(GetAllMessageTag, response =>
{
if (response.Status == SignalResponseStatus.Error)
@ -139,13 +140,16 @@ namespace TIAMSharedUI.Shared.Components.Grids
});
}
private Task PostDataToServerAsync(TDataItem transfer, int messageTag, bool isDelete = false)
public virtual async Task PostDataToServerAsync(TDataItem dataItem, int messageTag, bool isDelete = false)
{
Logger.Info($"{_gridLogName} PostDataToServerAsync called; transferId " + transfer.Id);
Logger.Info($"{_gridLogName} PostDataToServerAsync called; transferId " + dataItem.Id);
RefreshDataSourceItem(transfer, isDelete, false); //egyből látszódik a változás a grid-ben, nem csak a callback lefutásakor! felhasználóbarátabb... - J.
//if (messageTag == 0) return;
return SignalRClient.PostDataAsync(messageTag, transfer, repsonse =>
await OnDataSourceItemChanging.InvokeAsync(dataItem);
RefreshDataSourceItem(dataItem, isDelete, false); //egyből látszódik a változás a grid-ben, nem csak a callback lefutásakor! felhasználóbarátabb... - J.
SignalRClient.PostDataAsync(messageTag, dataItem, async repsonse =>
{
if (repsonse.Status != SignalResponseStatus.Success || repsonse.ResponseData == null)
{
@ -154,13 +158,15 @@ namespace TIAMSharedUI.Shared.Components.Grids
}
RefreshDataSourceItem(repsonse.ResponseData, isDelete);
InvokeAsync(StateHasChanged).Forget();
});
await OnDataSourceItemChanged.InvokeAsync(dataItem);
await InvokeAsync(StateHasChanged);
}).Forget();
//transfer = await devAdminSignalClient.PostDataAsync(SignalRTags.UpdateTransferAsync, transfer);
}
public Task RefreshDataSourceItem(TDataItem dataItem, bool isDelete, bool invokeItemChanged = true)
public void RefreshDataSourceItem(TDataItem dataItem, bool isDelete, bool invokeItemChanged = true)
{
var transferIndex = _dataSource.FindIndex(x => x.Id == dataItem.Id);
@ -170,13 +176,11 @@ namespace TIAMSharedUI.Shared.Components.Grids
if (transferIndex > -1) _dataSource[transferIndex] = dataItem;
else _dataSource.Add(dataItem);
}
return invokeItemChanged ? OnDataSourceItemChanged.InvokeAsync(dataItem) : Task.CompletedTask;
}
protected override Task SetParametersAsyncCore(ParameterView parameters)
{
if (!IsInitializedParameters)
if (!IsFirstInitializeParameters)
{
base.DataItemDeleting = EventCallback.Factory.Create<GridDataItemDeletingEventArgs>(this, OnItemDeleting);
base.EditModelSaving = EventCallback.Factory.Create<GridEditModelSavingEventArgs>(this, OnItemSaving);
@ -186,7 +190,7 @@ namespace TIAMSharedUI.Shared.Components.Grids
//ShowGroupPanel = true;
//AllowSort = false;
IsInitializedParameters = true;
IsFirstInitializeParameters = true;
}
return base.SetParametersAsyncCore(parameters);

View File

@ -0,0 +1,17 @@
using Microsoft.AspNetCore.Components;
namespace TIAMSharedUI.Shared.Components.Grids;
public class TransferDetailGrid : TransferGrid
{
protected override Task SetParametersAsyncCore(ParameterView parameters)
{
var isFirst = IsFirstInitializeParameters;
return base.SetParametersAsyncCore(parameters);
if (isFirst)
{
}
}
}

View File

@ -18,7 +18,7 @@ public class TransferGrid : TiamGrid<Transfer>
protected override Task SetParametersAsyncCore(ParameterView parameters)
{
if (!IsInitializedParameters)
if (!IsFirstInitializeParameters)
{
//ShowFilterRow = true;
//ShowGroupPanel = true;