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

View File

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