From 494c5b26bb7b4c97e1411b285c7244cdfdab9fcb Mon Sep 17 00:00:00 2001 From: "jozsef.b@aycode.com" <9Rj@D}fVwBaN> Date: Fri, 31 May 2024 09:23:10 +0200 Subject: [PATCH 1/4] TiamGrid is in progress... --- TIAM.Services/SignalRTags.cs | 2 +- .../SysAdmins/ManageServiceProviders.razor | 4 +- .../User/SysAdmins/ManageTransfers.razor | 186 ++++++++++-------- .../TiamErrorBoundaryComponent.razor | 11 +- TIAMSharedUI/Shared/Components/TiamGrid.cs | 184 +++++++++++++++++ .../Shared/Components/TiamGrid2.razor | 19 ++ TIAMWebApp/Client/Program.cs | 2 +- .../Shared/Services/AcSignalRClientBase.cs | 5 +- .../Services/ServiceProviderDataService.cs | 14 +- 9 files changed, 323 insertions(+), 104 deletions(-) create mode 100644 TIAMSharedUI/Shared/Components/TiamGrid.cs create mode 100644 TIAMSharedUI/Shared/Components/TiamGrid2.razor diff --git a/TIAM.Services/SignalRTags.cs b/TIAM.Services/SignalRTags.cs index 6011991b..a42c93b4 100644 --- a/TIAM.Services/SignalRTags.cs +++ b/TIAM.Services/SignalRTags.cs @@ -13,7 +13,7 @@ public class SignalRTags : AcSignalRTags [SignalMessageTag(typeof(SignalPostJsonDataMessage), typeof(SignalResponseMessage), null, null)] public const int UpdateTransferAsync = 7; public const int AddTransferAsync = 8; - public const int DeleteTransferAsync = 9; + public const int RemoveTransferAsync = 9; public const int GetCompaniesAsync = 10; public const int UpdateCompanyAsync = 11; public const int CreateCompanyAsync = 12; diff --git a/TIAMSharedUI/Pages/User/SysAdmins/ManageServiceProviders.razor b/TIAMSharedUI/Pages/User/SysAdmins/ManageServiceProviders.razor index 1081b90a..3f0a9e80 100644 --- a/TIAMSharedUI/Pages/User/SysAdmins/ManageServiceProviders.razor +++ b/TIAMSharedUI/Pages/User/SysAdmins/ManageServiceProviders.razor @@ -27,7 +27,7 @@ @inject IServiceProviderDataService serviceProviderDataService @inject IUserDataService userDataService @inject ISessionService sessionService -@inject DevAdminSignalClient devAdminSignalClient; +@inject AdminSignalRClient AdminSignalRClient; Admin - Companies
@@ -333,7 +333,7 @@ //remove orderData from orderData array _logger.Info($"companyData deleting; companyId: {company.Id}"); - var response = await devAdminSignalClient.PostDataAsync(SignalRTags.DeleteCompanyAsync, company); + var response = await AdminSignalRClient.PostDataAsync(SignalRTags.DeleteCompanyAsync, company); //resultCompany = await serviceProviderDataService.DeleteServiceProviderAsync(company.Id); //await UpdateDataAsync(); diff --git a/TIAMSharedUI/Pages/User/SysAdmins/ManageTransfers.razor b/TIAMSharedUI/Pages/User/SysAdmins/ManageTransfers.razor index b3a96b9c..7726e97e 100644 --- a/TIAMSharedUI/Pages/User/SysAdmins/ManageTransfers.razor +++ b/TIAMSharedUI/Pages/User/SysAdmins/ManageTransfers.razor @@ -20,13 +20,14 @@ @using AyCode.Core.Helpers @using AyCode.Interfaces.Entities @using TIAM.Services +@using TIAMSharedUI.Shared.Components @layout AdminLayout @inject IEnumerable LogWriters @inject IStringLocalizer localizer @inject IWizardProcessor wizardProcessor @inject ITransferDataService transferDataService @inject ISessionService sessionService -@inject DevAdminSignalClient devAdminSignalClient; +@inject AdminSignalRClient AdminSignalRClient; Transfers
@@ -77,19 +78,29 @@ IconCssClass="btn-column-chooser" Click="ColumnChooserButton_Click" />
+ + + AutoCollapseDetailRow="AutoCollapseDetailRow" + KeyboardNavigationEnabled="true" + EditMode="GridEditMode.EditForm" + ColumnResizeMode="GridColumnResizeMode.NextColumn" + ShowFilterRow="true" + KeyFieldName="Id"> @@ -124,7 +135,7 @@ - + @{ @@ -144,7 +155,7 @@ @EditFormContext.GetEditor("FromAddress") - + @@ -163,8 +174,7 @@ - - +
@@ -188,7 +198,7 @@ - + @@ -208,13 +218,12 @@ //public Transfer myModel = new Transfer(); - public List TransferDataList { get; set; } + //public List TransferDataList { get; set; } bool PopupVisible { get; set; } - IGrid Grid2 { get; set; } - object MasterGridData { get; set; } + TiamGrid TransferGrid { get; set; } bool AutoCollapseDetailRow { get; set; } public List IgnoreList = @@ -231,14 +240,14 @@ public List Statuses { get; set; } = [ new(Convert.ToInt16(TransferStatusType.OrderSubmitted), "Order submitted"), - new(Convert.ToInt16(TransferStatusType.OrderConfirmed), "Order confirmed"), - new(Convert.ToInt16(TransferStatusType.AssignedToDriver), "Assigned to driver"), - new(Convert.ToInt16(TransferStatusType.DriverConfirmed), "Driver confirmed"), - new(Convert.ToInt16(TransferStatusType.DriverEnRoute), "Driver enroute"), - new(Convert.ToInt16(TransferStatusType.PassengerPickup), "Passenger in car"), - new(Convert.ToInt16(TransferStatusType.Finished), "Finished"), - new(Convert.ToInt16(TransferStatusType.UserCanceled), "User cancelled"), - new(Convert.ToInt16(TransferStatusType.AdminDenied), "Admin cancelled") + new(Convert.ToInt16(TransferStatusType.OrderConfirmed), "Order confirmed"), + new(Convert.ToInt16(TransferStatusType.AssignedToDriver), "Assigned to driver"), + new(Convert.ToInt16(TransferStatusType.DriverConfirmed), "Driver confirmed"), + new(Convert.ToInt16(TransferStatusType.DriverEnRoute), "Driver enroute"), + new(Convert.ToInt16(TransferStatusType.PassengerPickup), "Passenger in car"), + new(Convert.ToInt16(TransferStatusType.Finished), "Finished"), + new(Convert.ToInt16(TransferStatusType.UserCanceled), "User cancelled"), + new(Convert.ToInt16(TransferStatusType.AdminDenied), "Admin cancelled") ]; private MessageWizardModel _messageWizardModel = new(); @@ -283,7 +292,7 @@ { var messageModel = result as MessageWizardModel; messageModel.ContextId = _messageWizardModel.ContextId; - //messageModel.SenderId = sessionService.User.UserId; + //messageModel.SenderId = sessionService.User.UserId; string FormatEmailContent() { @@ -291,7 +300,7 @@

Dear {messageModel.SenderFullName},

-

{messageModel.Content}:

+

{messageModel.Content}:

Best regards,
Tour I Am team

"; @@ -306,19 +315,19 @@ void Grid_CustomizeElement(GridCustomizeElementEventArgs e) { - if (e.ElementType == GridElementType.DataRow && (System.Byte)e.Grid.GetRowValue(e.VisibleIndex, "TransferStatusType") == 5) + if (e.ElementType == GridElementType.DataRow && (byte)e.Grid.GetRowValue(e.VisibleIndex, "TransferStatusType") == 5) { e.CssClass = "bg-important"; } - else if (e.ElementType == GridElementType.DataRow && (System.Byte)e.Grid.GetRowValue(e.VisibleIndex, "TransferStatusType") > 5 && (System.Byte)e.Grid.GetRowValue(e.VisibleIndex, "TransferStatusType") < 35) + else if (e.ElementType == GridElementType.DataRow && (byte)e.Grid.GetRowValue(e.VisibleIndex, "TransferStatusType") > 5 && (byte)e.Grid.GetRowValue(e.VisibleIndex, "TransferStatusType") < 35) { e.CssClass = "bg-attention"; } - else if (e.ElementType == GridElementType.DataRow && (System.Byte)e.Grid.GetRowValue(e.VisibleIndex, "TransferStatusType") == 35) + else if (e.ElementType == GridElementType.DataRow && (byte)e.Grid.GetRowValue(e.VisibleIndex, "TransferStatusType") == 35) { e.CssClass = "bg-finished"; } - else if (e.ElementType == GridElementType.DataRow && (System.Byte)e.Grid.GetRowValue(e.VisibleIndex, "TransferStatusType") > 35) + else if (e.ElementType == GridElementType.DataRow && (byte)e.Grid.GetRowValue(e.VisibleIndex, "TransferStatusType") > 35) { e.CssClass = "bg-cancel"; } @@ -345,16 +354,14 @@ transferEditModel.ContactEmail = "your@email.address"; } - async Task Grid_DataItemDeleting(GridDataItemDeletingEventArgs e) + async Task DataItemDeleting(GridDataItemDeletingEventArgs e) { - var transfer = (Transfer)e.DataItem; + _logger.Info($"ManageTransfers OnItemDeleting"); - //await NwindDataService.RemoveEmployeeAsync((EditableEmployee)e.DataItem); - //remove orderData from orderData array - _logger.Info("transfer delete"); - - PostDataToServerAsync(transfer, SignalRTags.DeleteTransferAsync, true).Forget(); - //await UpdateDataAsync(); + // var transfer = (Transfer)e.DataItem; + // _logger.Info("ManageTransfers delete"); + // PostDataToServerAsync(transfer, SignalRTags.DeleteTransferAsync, true).Forget(); + // //await UpdateDataAsync(); } @@ -375,9 +382,9 @@ { _logger.Info("PostDataToServerAsync called; transferId " + transfer.Id); - RefreshDataSources(transfer, isDelete); //egyből látszódik a változás a grid-ben, nem csak a callback lefutásakor! felhasználóbarátabb... - J. + RefreshAppointments(transfer, isDelete); //egyből látszódik a változás a grid-ben, nem csak a callback lefutásakor! felhasználóbarátabb... - J. - return devAdminSignalClient.PostDataAsync(messageTag, transfer, repsonse => + return AdminSignalRClient.PostDataAsync(messageTag, transfer, repsonse => { if (repsonse.Status != SignalResponseStatus.Success || repsonse.ResponseData == null) { @@ -385,23 +392,23 @@ return; } - RefreshDataSources(repsonse.ResponseData, isDelete); + RefreshAppointments(repsonse.ResponseData, isDelete); StateHasChanged(); }); //transfer = await devAdminSignalClient.PostDataAsync(SignalRTags.UpdateTransferAsync, transfer); } - private void RefreshDataSources(Transfer transfer, bool isDelete) + private void RefreshAppointments(Transfer transfer, bool isDelete) { - var transferIndex = TransferDataList.FindIndex(x => x.Id == transfer.Id); + // var transferIndex = TransferDataList.FindIndex(x => x.Id == transfer.Id); - if (isDelete && transferIndex > -1) TransferDataList.RemoveAt(transferIndex); - else - { - if (transferIndex > -1) TransferDataList[transferIndex] = transfer; - else TransferDataList.Add(transfer); - } + // if (isDelete && transferIndex > -1) TransferDataList.RemoveAt(transferIndex); + // else + // { + // if (transferIndex > -1) TransferDataList[transferIndex] = transfer; + // else TransferDataList.Add(transfer); + // } var appointmentIndex = AppointmentModels.FindIndex(x => x.SourceId == transfer.Id); if (isDelete && appointmentIndex > -1) AppointmentModels.RemoveAt(appointmentIndex); @@ -418,12 +425,12 @@ { _logger.Info("UpdateAllDataAsync called"); - return devAdminSignalClient.GetAllAsync>(SignalRTags.GetTransfersAsync, response => + return AdminSignalRClient.GetAllAsync>(SignalRTags.GetTransfersAsync, response => { if (response.Status == SignalResponseStatus.Error) return; - InitializeDataSources(response.ResponseData ?? []); + InitializeAppointments(response.ResponseData ?? []); StateHasChanged(); }); } @@ -432,7 +439,7 @@ { _logger = new LoggerClient(LogWriters.ToArray()); - UpdateAllDataAsync().Forget(); + //UpdateAllDataAsync().Forget(); //var transfers = await devAdminSignalClient.GetAllAsync>(SignalRTags.GetTransfersAsync); //InitializeDataSources(transfers ?? []); @@ -443,12 +450,13 @@ return base.OnInitializedAsync(); } - private void InitializeDataSources(List transferDataList) + private void InitializeAppointments(ICollection transferDataList) { - TransferDataList = transferDataList; - AppointmentModels = new List(TransferDataList.Count); + _logger.Info("InitializeAppointments called"); - foreach (var transfer in TransferDataList) + AppointmentModels = new List(transferDataList.Count); + + foreach (var transfer in transferDataList) { // var bnm = DataStorage.CreateAppointmentItem(); // bnm.Start = transfer.Appointment; @@ -460,23 +468,23 @@ } _dataStorage = new DxSchedulerDataStorage - { - AppointmentMappings = new DxSchedulerAppointmentMappings() { - Type = "AppointmentType", - Start = "StartDate", - End = "EndDate", - Subject = "Caption", - AllDay = "AllDay", - Location = "Location", - Description = "Description", - LabelId = "Label", - StatusId = "Status", - RecurrenceInfo = "Recurrence" - }, + AppointmentMappings = new DxSchedulerAppointmentMappings() + { + Type = "AppointmentType", + Start = "StartDate", + End = "EndDate", + Subject = "Caption", + AllDay = "AllDay", + Location = "Location", + Description = "Description", + LabelId = "Label", + StatusId = "Status", + RecurrenceInfo = "Recurrence" + }, - AppointmentsSource = AppointmentModels - }; + AppointmentsSource = AppointmentModels + }; } public AppointmentModel CreateAppointmentModel(Transfer transfer) @@ -486,7 +494,7 @@ void ColumnChooserButton_Click() { - Grid2.ShowColumnChooser(); + TransferGrid.ShowColumnChooser(); } @@ -494,7 +502,7 @@ { if (firstRender) { - Grid2.ExpandDetailRow(0); + TransferGrid.ExpandDetailRow(0); } } void AutoCollapseDetailRow_Changed(bool newValue) @@ -502,16 +510,22 @@ AutoCollapseDetailRow = newValue; if (!newValue) return; - Grid2.BeginUpdate(); - Grid2.CollapseAllDetailRows(); - Grid2.ExpandDetailRow(0); - Grid2.EndUpdate(); + TransferGrid.BeginUpdate(); + TransferGrid.CollapseAllDetailRows(); + TransferGrid.ExpandDetailRow(0); + TransferGrid.EndUpdate(); } -} + private void DataSourceChanged(IList transfers) + { + _logger.Info("DataSourceChanged called"); + InitializeAppointments(transfers); + } + private void DataSourceItemChanged(Transfer transfer) + { + _logger.Info("DataSourceItemChanged called"); + } - - - } \ No newline at end of file +} \ No newline at end of file diff --git a/TIAMSharedUI/Shared/Components/TiamErrorBoundaryComponent.razor b/TIAMSharedUI/Shared/Components/TiamErrorBoundaryComponent.razor index c49e81d5..793f0002 100644 --- a/TIAMSharedUI/Shared/Components/TiamErrorBoundaryComponent.razor +++ b/TIAMSharedUI/Shared/Components/TiamErrorBoundaryComponent.razor @@ -28,15 +28,13 @@ else //public PopupMessageBox PopupMessageBox { get; private set; } = default!; - [Parameter] - public string LoggerCategory { get; set; } - [Parameter] - public EventCallback OnError { get; set; } + [Parameter] public string LoggerCategory { get; set; } + [Parameter] public EventCallback OnError { get; set; } protected override void OnInitialized() { _logger = new LoggerClient(LoggerCategory, LogWriters.ToArray()); - + base.OnInitialized(); } @@ -77,4 +75,5 @@ else { _currentError = null; } -} \ No newline at end of file +} + diff --git a/TIAMSharedUI/Shared/Components/TiamGrid.cs b/TIAMSharedUI/Shared/Components/TiamGrid.cs new file mode 100644 index 00000000..3a55e5a4 --- /dev/null +++ b/TIAMSharedUI/Shared/Components/TiamGrid.cs @@ -0,0 +1,184 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using AyCode.Core.Helpers; +using AyCode.Interfaces.Entities; +using AyCode.Services.Loggers; +using AyCode.Services.SignalRs; +using AyCode.Utils.Extensions; +using DevExpress.Blazor; +using DevExpress.Blazor.Internal; +using Microsoft.AspNetCore.Components; +using Newtonsoft.Json.Linq; +using TIAM.Entities.Transfers; +using TIAM.Services; +using TIAMWebApp.Shared.Application.Services; +using TIAMWebApp.Shared.Application.Utility; + +namespace TIAMSharedUI.Shared.Components +{ + public class TiamGrid : DxGrid where TDataItem : class, IEntityGuid + { + private bool _initialParametersSet; + private IList? _dataSource; + + + public TiamGrid() : base() + { } + + [Parameter] public LoggerClient Logger { get; set; } + [Parameter] public string GridName { get; set; } + [Parameter] public AcSignalRClientBase SignalRClient { get; set; } + + [Parameter] public int GetAllMessageTag { get; set; } + [Parameter] public int GetItemMessageTag { get; set; } + [Parameter] public int AddMessageTag { get; set; } + [Parameter] public int UpdateMessageTag { get; set; } + [Parameter] public int RemoveMessageTag { get; set; } + + [Parameter] + [DefaultValue(null)] + [System.Diagnostics.CodeAnalysis.SuppressMessage("Usage", "BL0007:Component parameters should be auto properties", Justification = "")] + public IList? DataSource + { + get + { + if (_dataSource == null && Data != null) + { + Logger.Error($"{GridName} Use the DataSource parameter instead of Data!"); + throw new NullReferenceException($"{GridName} Use the DataSource parameter instead of Data!"); + } + + return _dataSource; + + } + set + { + _dataSource = value; + Data = _dataSource; + + OnDataSourceChanged.InvokeAsync(_dataSource); + } + } + + protected override void OnInitialized() + { + base.OnInitialized(); + } + + protected override async Task OnAfterRenderAsync(bool firstRender) + { + await base.OnAfterRenderAsync(firstRender); + + if (firstRender) RefreshDataSourceAsync().Forget(); + } + + [Parameter] + public EventCallback OnDataItemDeleting{ get; set; } + protected new EventCallback DataItemDeleting { get; set; } + [Parameter] + public EventCallback OnDataItemDeleted { get; set; } + + [Parameter] + public EventCallback> OnDataSourceChanged { get; set; } + [Parameter] + public EventCallback OnDataSourceItemChanged { get; set; } + + private async Task OnItemDeleting(GridDataItemDeletingEventArgs e) + { + Logger.Info($"{GridName} OnItemDeleting"); + + await OnDataItemDeleting.InvokeAsync(e); + + if (e.Cancel) + { + Logger.Debug($"{GridName} OnItemDeleting canceled"); + return; + } + + var dataItem = e.DataItem as TDataItem; + //PostDataToServerAsync(transfer, SignalRTags.DeleteTransferAsync, true).Forget(); + //await UpdateDataAsync(); + + Logger.Info($"{GridName} OnDataItemDeleted"); + await OnDataItemDeleted.InvokeAsync(e); + } + + public Task RefreshDataSourceAsync() + { + Logger.Info($"{GridName} UpdateAllDataAsync called"); + + return SignalRClient.GetAllAsync>(GetAllMessageTag, response => + { + if (response.Status == SignalResponseStatus.Error) + return; + + BeginUpdate(); + DataSource = response.ResponseData ?? []; + EndUpdate(); + + InvokeAsync(StateHasChanged).Forget(); + }); + } + + private Task PostDataToServerAsync(TDataItem transfer, int messageTag, bool isDelete = false) + { + Logger.Info($"{GridName} PostDataToServerAsync called; transferId " + transfer.Id); + + RefreshDataSourceItem(transfer, isDelete); //egyből látszódik a változás a grid-ben, nem csak a callback lefutásakor! felhasználóbarátabb... - J. + + return SignalRClient.PostDataAsync(messageTag, transfer, repsonse => + { + if (repsonse.Status != SignalResponseStatus.Success || repsonse.ResponseData == null) + { + RefreshDataSourceAsync().Forget(); + return; + } + + RefreshDataSourceItem(repsonse.ResponseData, isDelete); + InvokeAsync(StateHasChanged).Forget(); + }); + + //transfer = await devAdminSignalClient.PostDataAsync(SignalRTags.UpdateTransferAsync, transfer); + } + + public void RefreshDataSourceItem(TDataItem dataItem, bool isDelete) + { + var transferIndex = _dataSource.FindIndex(x => x.Id == dataItem.Id); + + if (isDelete && transferIndex > -1) _dataSource.RemoveAt(transferIndex); + else + { + if (transferIndex > -1) _dataSource[transferIndex] = dataItem; + else _dataSource.Add(dataItem); + } + + OnDataSourceItemChanged.InvokeAsync(dataItem); + } + + protected override Task SetParametersAsyncCore(ParameterView parameters) + { + if (!_initialParametersSet) + { + base.DataItemDeleting = EventCallback.Factory.Create(this, OnItemDeleting); + //ShowFilterRow = true; + //PageSize = 4; + //ShowGroupPanel = true; + //AllowSort = false; + _initialParametersSet = true; + } + + return base.SetParametersAsyncCore(parameters); + } + + protected override void OnParametersSet() + { + base.OnParametersSet(); + + if (GridName.IsNullOrWhiteSpace()) GridName = $"[{typeof(TDataItem).Name}Grid]"; + } + } +} diff --git a/TIAMSharedUI/Shared/Components/TiamGrid2.razor b/TIAMSharedUI/Shared/Components/TiamGrid2.razor new file mode 100644 index 00000000..5c3cd839 --- /dev/null +++ b/TIAMSharedUI/Shared/Components/TiamGrid2.razor @@ -0,0 +1,19 @@ +@using TIAMWebApp.Shared.Application.Utility +@using AyCode.Core.Extensions +@using AyCode.Services.Loggers +@using AyCode.Utils.Extensions +@inject IJSRuntime jsRuntime +@inject IEnumerable LogWriters + +@inherits DxGrid +@* @implements IGrid *@ + +@* @typeparam TDataType *@ + +@*
+ @ChildContent +
+ *@ +@code { + +} \ No newline at end of file diff --git a/TIAMWebApp/Client/Program.cs b/TIAMWebApp/Client/Program.cs index b65e8d1a..28cda571 100644 --- a/TIAMWebApp/Client/Program.cs +++ b/TIAMWebApp/Client/Program.cs @@ -44,7 +44,7 @@ builder.Services.AddSingleton(x => new ResourceManager("TIAMWebApp.Client.Resour builder.Services.AddSingleton(); builder.Services.AddSingleton(); //builder.Services.AddSingleton(); -builder.Services.AddSingleton(); +builder.Services.AddSingleton(); builder.Services.AddSingleton(); builder.Services.AddSingleton(); builder.Services.AddScoped(); diff --git a/TIAMWebApp/Shared/Services/AcSignalRClientBase.cs b/TIAMWebApp/Shared/Services/AcSignalRClientBase.cs index 4620251b..416beca6 100644 --- a/TIAMWebApp/Shared/Services/AcSignalRClientBase.cs +++ b/TIAMWebApp/Shared/Services/AcSignalRClientBase.cs @@ -21,7 +21,7 @@ using TIAMWebApp.Shared.Application.Utility; namespace TIAMWebApp.Shared.Application.Services { - public class DevAdminSignalClient(IEnumerable logWriters) : AcSignalRClientBase("DevAdminHub", logWriters); + public class AdminSignalRClient(IEnumerable logWriters) : AcSignalRClientBase("DevAdminHub", logWriters); public abstract class AcSignalRClientBase : IAcSignalRHubClient { @@ -162,6 +162,9 @@ namespace TIAMWebApp.Shared.Application.Services public virtual Task SendMessageToServerAsync(int messageTag, ISignalRMessage? message, Action> responseCallback) { + if (messageTag == 0) + Logger.Error($"SendMessageToServerAsync; messageTag == 0"); + var requestId = AcDomain.NextUniqueInt32; _responseByRequestId[requestId] = new Action>(responseMessage => diff --git a/TIAMWebApp/Shared/Services/ServiceProviderDataService.cs b/TIAMWebApp/Shared/Services/ServiceProviderDataService.cs index c5647bfe..28fd9f22 100644 --- a/TIAMWebApp/Shared/Services/ServiceProviderDataService.cs +++ b/TIAMWebApp/Shared/Services/ServiceProviderDataService.cs @@ -29,14 +29,14 @@ namespace TIAMWebApp.Shared.Application.Services private readonly ISecureStorageHandler secureStorageHandler; private readonly LoggerClient _logger; - private DevAdminSignalClient _devAdminSignalClient; + private AdminSignalRClient _adminSignalRClient; - public ServiceProviderDataService(HttpClient http, ISecureStorageHandler secureStorageHandler, DevAdminSignalClient devAdminSignalClient, IEnumerable logWriters) + public ServiceProviderDataService(HttpClient http, ISecureStorageHandler secureStorageHandler, AdminSignalRClient adminSignalRClient, IEnumerable logWriters) { this.http = http; this.secureStorageHandler = secureStorageHandler; - _devAdminSignalClient = devAdminSignalClient; + _adminSignalRClient = adminSignalRClient; _logger = new LoggerClient(logWriters.ToArray()); } @@ -98,7 +98,7 @@ namespace TIAMWebApp.Shared.Application.Services //17. public Task GetPropertiesByOwnerIdAsync(Guid id, Action?> callback) { - return _devAdminSignalClient.GetByIdAsync>(SignalRTags.GetPropertiesByOwnerIdAsync, id, response => + return _adminSignalRClient.GetByIdAsync>(SignalRTags.GetPropertiesByOwnerIdAsync, id, response => { if (response.Status == SignalResponseStatus.Error) callback.Invoke(null); @@ -112,7 +112,7 @@ namespace TIAMWebApp.Shared.Application.Services //17. public async Task?> GetPropertiesByOwnerIdAsync(Guid id) { - var companyPropertiesByOwner = await _devAdminSignalClient.GetByIdAsync>(SignalRTags.GetPropertiesByOwnerIdAsync, id); + var companyPropertiesByOwner = await _adminSignalRClient.GetByIdAsync>(SignalRTags.GetPropertiesByOwnerIdAsync, id); if (companyPropertiesByOwner != null) _logger.DetailConditional($"companyPropertiesByOwner: {string.Join("; ", companyPropertiesByOwner.Values)}"); return companyPropertiesByOwner; @@ -146,7 +146,7 @@ namespace TIAMWebApp.Shared.Application.Services //16. public async Task> GetServiceProvidersAsync() { - var companies = await _devAdminSignalClient.GetAllAsync>(SignalRTags.GetCompaniesAsync); + var companies = await _adminSignalRClient.GetAllAsync>(SignalRTags.GetCompaniesAsync); if (companies != null) _logger.DetailConditional($"companies: {string.Join("; ", companies.Count)}"); return companies; @@ -167,7 +167,7 @@ namespace TIAMWebApp.Shared.Application.Services //14. public async Task UpdateServiceProviderAsync(Company company) { - var result = await _devAdminSignalClient.PostDataAsync(SignalRTags.UpdateCompanyAsync, company); + var result = await _adminSignalRClient.PostDataAsync(SignalRTags.UpdateCompanyAsync, company); return result; } From 7343f02d8a73627b4daa94cae095f05717e44815 Mon Sep 17 00:00:00 2001 From: "jozsef.b@aycode.com" <9Rj@D}fVwBaN> Date: Fri, 31 May 2024 14:57:29 +0200 Subject: [PATCH 2/4] implement TiamGrid, TransferGrid; improvements... --- TIAM.Services/SignalRTags.cs | 4 +- .../SysAdmins/ManageServiceProviders.razor | 2 +- .../User/SysAdmins/ManageTransfers.razor | 192 +++++------------- .../Shared/Components/Grids/CompanyGrid.cs | 17 ++ .../Shared/Components/{ => Grids}/TiamGrid.cs | 79 ++++--- .../Shared/Components/Grids/TransferGrid.cs | 17 ++ .../Shared/Components/TiamGrid2.razor | 19 -- .../Server/Services/DevAdminSignalRhub.cs | 4 +- 8 files changed, 142 insertions(+), 192 deletions(-) create mode 100644 TIAMSharedUI/Shared/Components/Grids/CompanyGrid.cs rename TIAMSharedUI/Shared/Components/{ => Grids}/TiamGrid.cs (65%) create mode 100644 TIAMSharedUI/Shared/Components/Grids/TransferGrid.cs delete mode 100644 TIAMSharedUI/Shared/Components/TiamGrid2.razor diff --git a/TIAM.Services/SignalRTags.cs b/TIAM.Services/SignalRTags.cs index a42c93b4..d55f0f33 100644 --- a/TIAM.Services/SignalRTags.cs +++ b/TIAM.Services/SignalRTags.cs @@ -16,6 +16,6 @@ public class SignalRTags : AcSignalRTags public const int RemoveTransferAsync = 9; public const int GetCompaniesAsync = 10; public const int UpdateCompanyAsync = 11; - public const int CreateCompanyAsync = 12; - public const int DeleteCompanyAsync = 13; + public const int AddCompanyAsync = 12; + public const int RemoveCompanyAsync = 13; } \ No newline at end of file diff --git a/TIAMSharedUI/Pages/User/SysAdmins/ManageServiceProviders.razor b/TIAMSharedUI/Pages/User/SysAdmins/ManageServiceProviders.razor index 3f0a9e80..0c71e4a9 100644 --- a/TIAMSharedUI/Pages/User/SysAdmins/ManageServiceProviders.razor +++ b/TIAMSharedUI/Pages/User/SysAdmins/ManageServiceProviders.razor @@ -333,7 +333,7 @@ //remove orderData from orderData array _logger.Info($"companyData deleting; companyId: {company.Id}"); - var response = await AdminSignalRClient.PostDataAsync(SignalRTags.DeleteCompanyAsync, company); + var response = await AdminSignalRClient.PostDataAsync(SignalRTags.RemoveCompanyAsync, company); //resultCompany = await serviceProviderDataService.DeleteServiceProviderAsync(company.Id); //await UpdateDataAsync(); diff --git a/TIAMSharedUI/Pages/User/SysAdmins/ManageTransfers.razor b/TIAMSharedUI/Pages/User/SysAdmins/ManageTransfers.razor index 7726e97e..25eb9128 100644 --- a/TIAMSharedUI/Pages/User/SysAdmins/ManageTransfers.razor +++ b/TIAMSharedUI/Pages/User/SysAdmins/ManageTransfers.razor @@ -11,16 +11,9 @@ @using TIAMWebApp.Shared.Application.Models.PageModels @using TIAMWebApp.Shared.Application.Utility @using AyCode.Services.Loggers -@using AyCode.Services.SignalRs @using TIAMWebApp.Shared.Application.Services -@using MessagePack -@using MessagePack.Resolvers -@using AyCode.Core.Extensions; -@using AyCode.Core -@using AyCode.Core.Helpers -@using AyCode.Interfaces.Entities -@using TIAM.Services @using TIAMSharedUI.Shared.Components +@using TIAMSharedUI.Shared.Components.Grids @layout AdminLayout @inject IEnumerable LogWriters @inject IStringLocalizer localizer @@ -37,7 +30,7 @@ - - + @@ -216,25 +203,19 @@ @code { private LoggerClient _logger; - //public Transfer myModel = new Transfer(); - - //public List TransferDataList { get; set; } - - bool PopupVisible { get; set; } - - - TiamGrid TransferGrid { get; set; } - bool AutoCollapseDetailRow { get; set; } + private bool _popupVisible; + private bool _autoCollapseDetailRow; + private TransferGrid _transferGrid; public List IgnoreList = [ "ReceiverEmailAddress", - "ReceiverFullName", - "ReceiverId", - "SenderEmailAddress", - "SenderFullName", - "SenderId", - "ContextId", + "ReceiverFullName", + "ReceiverId", + "SenderEmailAddress", + "SenderFullName", + "SenderId", + "ContextId", ]; public List Statuses { get; set; } = @@ -266,19 +247,21 @@ _messageWizardModel.SenderEmailAddress = "info@touriam.com"; _messageWizardModel.ReceiverEmailAddress = item.ContactEmail; _messageWizardModel.ReceiverFullName = item.FullName; - PopupVisible = true; + _popupVisible = true; } void CancelCreateClick() { - PopupVisible = false; + _popupVisible = false; } + void EulaPopupClosed() { //cancel clicked } + void EulaPopupClosing(PopupClosingEventArgs args) { //myModel = new TransferWizardModel(); @@ -305,6 +288,7 @@ "; } + messageModel.Content = FormatEmailContent(); _logger.Info(messageModel.Content); @@ -331,6 +315,7 @@ { e.CssClass = "bg-cancel"; } + if (e.ElementType == GridElementType.HeaderCell) { e.Style = "background-color: rgba(0, 0, 0, 0.08)"; @@ -354,62 +339,30 @@ transferEditModel.ContactEmail = "your@email.address"; } - async Task DataItemDeleting(GridDataItemDeletingEventArgs e) + private void DataItemSaving(GridEditModelSavingEventArgs e) { - _logger.Info($"ManageTransfers OnItemDeleting"); - - // var transfer = (Transfer)e.DataItem; - // _logger.Info("ManageTransfers delete"); - // PostDataToServerAsync(transfer, SignalRTags.DeleteTransferAsync, true).Forget(); - // //await UpdateDataAsync(); + _logger.Info("DataItemSaving called"); } - - async Task Grid_EditModelSaving(GridEditModelSavingEventArgs e) + private void DataItemDeleting(GridDataItemDeletingEventArgs e) { - var transfer = (Transfer)e.EditModel; - var logText = e.IsNew ? "add" : "update"; - - _logger.Info($"EditModelSaving, {logText} transfer; transferId " + transfer.Id); - - PostDataToServerAsync(transfer, e.IsNew ? SignalRTags.AddTransferAsync : SignalRTags.UpdateTransferAsync).Forget(); - - //await transferDataService.CreateTransfer((TransferWizardModel)e.EditModel); - //transfer = await transferDataService.UpdateTransferAsync(transfer); + _logger.Info($"DataItemDeleting OnItemDeleting"); } - private Task PostDataToServerAsync(T transfer, int messageTag, bool isDelete = false) where T : Transfer //IEntityGuid + private void DataSourceChanged(IList transfers) { - _logger.Info("PostDataToServerAsync called; transferId " + transfer.Id); + _logger.Info("DataSourceChanged called"); - RefreshAppointments(transfer, isDelete); //egyből látszódik a változás a grid-ben, nem csak a callback lefutásakor! felhasználóbarátabb... - J. + InitializeAppointments(transfers); + } - return AdminSignalRClient.PostDataAsync(messageTag, transfer, repsonse => - { - if (repsonse.Status != SignalResponseStatus.Success || repsonse.ResponseData == null) - { - UpdateAllDataAsync().Forget(); - return; - } - - RefreshAppointments(repsonse.ResponseData, isDelete); - StateHasChanged(); - }); - - //transfer = await devAdminSignalClient.PostDataAsync(SignalRTags.UpdateTransferAsync, transfer); + private void DataSourceItemChanged(Transfer transfer) + { + _logger.Info("DataSourceItemChanged called"); } private void RefreshAppointments(Transfer transfer, bool isDelete) { - // var transferIndex = TransferDataList.FindIndex(x => x.Id == transfer.Id); - - // if (isDelete && transferIndex > -1) TransferDataList.RemoveAt(transferIndex); - // else - // { - // if (transferIndex > -1) TransferDataList[transferIndex] = transfer; - // else TransferDataList.Add(transfer); - // } - var appointmentIndex = AppointmentModels.FindIndex(x => x.SourceId == transfer.Id); if (isDelete && appointmentIndex > -1) AppointmentModels.RemoveAt(appointmentIndex); else @@ -421,32 +374,10 @@ } } - public Task UpdateAllDataAsync() - { - _logger.Info("UpdateAllDataAsync called"); - - return AdminSignalRClient.GetAllAsync>(SignalRTags.GetTransfersAsync, response => - { - if (response.Status == SignalResponseStatus.Error) - return; - - InitializeAppointments(response.ResponseData ?? []); - StateHasChanged(); - }); - } - protected override Task OnInitializedAsync() { _logger = new LoggerClient(LogWriters.ToArray()); - //UpdateAllDataAsync().Forget(); - - //var transfers = await devAdminSignalClient.GetAllAsync>(SignalRTags.GetTransfersAsync); - //InitializeDataSources(transfers ?? []); - - - //InitializeDataSources(await transferDataService.GetTransfersAsync()); - return base.OnInitializedAsync(); } @@ -468,23 +399,23 @@ } _dataStorage = new DxSchedulerDataStorage + { + AppointmentMappings = new DxSchedulerAppointmentMappings() { - AppointmentMappings = new DxSchedulerAppointmentMappings() - { - Type = "AppointmentType", - Start = "StartDate", - End = "EndDate", - Subject = "Caption", - AllDay = "AllDay", - Location = "Location", - Description = "Description", - LabelId = "Label", - StatusId = "Status", - RecurrenceInfo = "Recurrence" - }, + Type = "AppointmentType", + Start = "StartDate", + End = "EndDate", + Subject = "Caption", + AllDay = "AllDay", + Location = "Location", + Description = "Description", + LabelId = "Label", + StatusId = "Status", + RecurrenceInfo = "Recurrence" + }, - AppointmentsSource = AppointmentModels - }; + AppointmentsSource = AppointmentModels + }; } public AppointmentModel CreateAppointmentModel(Transfer transfer) @@ -494,7 +425,7 @@ void ColumnChooserButton_Click() { - TransferGrid.ShowColumnChooser(); + _transferGrid.ShowColumnChooser(); } @@ -502,30 +433,19 @@ { if (firstRender) { - TransferGrid.ExpandDetailRow(0); + _transferGrid.ExpandDetailRow(0); } } + void AutoCollapseDetailRow_Changed(bool newValue) { - AutoCollapseDetailRow = newValue; + _autoCollapseDetailRow = newValue; if (!newValue) return; - TransferGrid.BeginUpdate(); - TransferGrid.CollapseAllDetailRows(); - TransferGrid.ExpandDetailRow(0); - TransferGrid.EndUpdate(); - } - - private void DataSourceChanged(IList transfers) - { - _logger.Info("DataSourceChanged called"); - - InitializeAppointments(transfers); - } - - private void DataSourceItemChanged(Transfer transfer) - { - _logger.Info("DataSourceItemChanged called"); + _transferGrid.BeginUpdate(); + _transferGrid.CollapseAllDetailRows(); + _transferGrid.ExpandDetailRow(0); + _transferGrid.EndUpdate(); } } \ No newline at end of file diff --git a/TIAMSharedUI/Shared/Components/Grids/CompanyGrid.cs b/TIAMSharedUI/Shared/Components/Grids/CompanyGrid.cs new file mode 100644 index 00000000..82a44694 --- /dev/null +++ b/TIAMSharedUI/Shared/Components/Grids/CompanyGrid.cs @@ -0,0 +1,17 @@ +using TIAM.Entities.ServiceProviders; +using TIAM.Services; + +namespace TIAMSharedUI.Shared.Components.Grids; + +public class CompanyGrid : TiamGrid +{ + public CompanyGrid() : base() + { + GridName = nameof(CompanyGrid); + + GetAllMessageTag = SignalRTags.GetCompaniesAsync; + AddMessageTag = SignalRTags.AddCompanyAsync; + UpdateMessageTag = SignalRTags.UpdateCompanyAsync; + RemoveMessageTag = SignalRTags.RemoveCompanyAsync; + } +} \ No newline at end of file diff --git a/TIAMSharedUI/Shared/Components/TiamGrid.cs b/TIAMSharedUI/Shared/Components/Grids/TiamGrid.cs similarity index 65% rename from TIAMSharedUI/Shared/Components/TiamGrid.cs rename to TIAMSharedUI/Shared/Components/Grids/TiamGrid.cs index 3a55e5a4..c4c50501 100644 --- a/TIAMSharedUI/Shared/Components/TiamGrid.cs +++ b/TIAMSharedUI/Shared/Components/Grids/TiamGrid.cs @@ -1,29 +1,21 @@ -using System; -using System.Collections.Generic; -using System.ComponentModel; -using System.Linq; -using System.Text; -using System.Threading.Tasks; +using System.ComponentModel; using AyCode.Core.Helpers; using AyCode.Interfaces.Entities; -using AyCode.Services.Loggers; using AyCode.Services.SignalRs; using AyCode.Utils.Extensions; using DevExpress.Blazor; using DevExpress.Blazor.Internal; using Microsoft.AspNetCore.Components; -using Newtonsoft.Json.Linq; -using TIAM.Entities.Transfers; -using TIAM.Services; using TIAMWebApp.Shared.Application.Services; using TIAMWebApp.Shared.Application.Utility; -namespace TIAMSharedUI.Shared.Components +namespace TIAMSharedUI.Shared.Components.Grids { public class TiamGrid : DxGrid where TDataItem : class, IEntityGuid { private bool _initialParametersSet; private IList? _dataSource; + private string _gridLogName; public TiamGrid() : base() @@ -48,12 +40,11 @@ namespace TIAMSharedUI.Shared.Components { if (_dataSource == null && Data != null) { - Logger.Error($"{GridName} Use the DataSource parameter instead of Data!"); - throw new NullReferenceException($"{GridName} Use the DataSource parameter instead of Data!"); + Logger.Error($"{_gridLogName} Use the DataSource parameter instead of Data!"); + throw new NullReferenceException($"{_gridLogName} Use the DataSource parameter instead of Data!"); } return _dataSource; - } set { @@ -76,40 +67,58 @@ namespace TIAMSharedUI.Shared.Components if (firstRender) RefreshDataSourceAsync().Forget(); } - [Parameter] - public EventCallback OnDataItemDeleting{ get; set; } protected new EventCallback DataItemDeleting { get; set; } - [Parameter] - public EventCallback OnDataItemDeleted { get; set; } + [Parameter] public EventCallback OnDataItemDeleting{ get; set; } + + protected new EventCallback EditModelSaving { get; set; } + [Parameter] public EventCallback OnDataItemSaving { get; set; } + [Parameter] public EventCallback> OnDataSourceChanged { get; set; } [Parameter] public EventCallback OnDataSourceItemChanged { get; set; } + private async Task OnItemSaving(GridEditModelSavingEventArgs e) + { + var dataItem = (e.EditModel as TDataItem)!; + var logText = e.IsNew ? "add" : "update"; + + Logger.Info($"{_gridLogName} OnItemSaving {logText}; Id: {dataItem.Id}"); + + await OnDataItemSaving.InvokeAsync(e); + + if (e.Cancel) + { + Logger.Debug($"{_gridLogName} OnItemSaving {logText} canceled; Id: {dataItem.Id}"); + return; + } + + PostDataToServerAsync(dataItem, e.IsNew ? AddMessageTag : UpdateMessageTag).Forget(); + + //await transferDataService.CreateTransfer((TransferWizardModel)e.EditModel); + //transfer = await transferDataService.UpdateTransferAsync(transfer); + } + private async Task OnItemDeleting(GridDataItemDeletingEventArgs e) { - Logger.Info($"{GridName} OnItemDeleting"); + Logger.Info($"{_gridLogName} OnItemDeleting"); await OnDataItemDeleting.InvokeAsync(e); if (e.Cancel) { - Logger.Debug($"{GridName} OnItemDeleting canceled"); + Logger.Debug($"{_gridLogName} OnItemDeleting canceled"); return; } - var dataItem = e.DataItem as TDataItem; - //PostDataToServerAsync(transfer, SignalRTags.DeleteTransferAsync, true).Forget(); - //await UpdateDataAsync(); - - Logger.Info($"{GridName} OnDataItemDeleted"); - await OnDataItemDeleted.InvokeAsync(e); + var dataItem = (e.DataItem as TDataItem)!; + PostDataToServerAsync(dataItem, RemoveMessageTag, true).Forget(); } public Task RefreshDataSourceAsync() { - Logger.Info($"{GridName} UpdateAllDataAsync called"); + Logger.Info($"{_gridLogName} UpdateAllDataAsync called"); return SignalRClient.GetAllAsync>(GetAllMessageTag, response => { @@ -126,9 +135,9 @@ namespace TIAMSharedUI.Shared.Components private Task PostDataToServerAsync(TDataItem transfer, int messageTag, bool isDelete = false) { - Logger.Info($"{GridName} PostDataToServerAsync called; transferId " + transfer.Id); + Logger.Info($"{_gridLogName} PostDataToServerAsync called; transferId " + transfer.Id); - RefreshDataSourceItem(transfer, isDelete); //egyből látszódik a változás a grid-ben, nem csak a callback lefutásakor! felhasználóbarátabb... - J. + 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. return SignalRClient.PostDataAsync(messageTag, transfer, repsonse => { @@ -145,7 +154,7 @@ namespace TIAMSharedUI.Shared.Components //transfer = await devAdminSignalClient.PostDataAsync(SignalRTags.UpdateTransferAsync, transfer); } - public void RefreshDataSourceItem(TDataItem dataItem, bool isDelete) + public Task RefreshDataSourceItem(TDataItem dataItem, bool isDelete, bool invokeItemChanged = true) { var transferIndex = _dataSource.FindIndex(x => x.Id == dataItem.Id); @@ -156,7 +165,7 @@ namespace TIAMSharedUI.Shared.Components else _dataSource.Add(dataItem); } - OnDataSourceItemChanged.InvokeAsync(dataItem); + return invokeItemChanged ? OnDataSourceItemChanged.InvokeAsync(dataItem) : Task.CompletedTask; } protected override Task SetParametersAsyncCore(ParameterView parameters) @@ -164,10 +173,13 @@ namespace TIAMSharedUI.Shared.Components if (!_initialParametersSet) { base.DataItemDeleting = EventCallback.Factory.Create(this, OnItemDeleting); + base.EditModelSaving = EventCallback.Factory.Create(this, OnItemSaving); + //ShowFilterRow = true; //PageSize = 4; //ShowGroupPanel = true; //AllowSort = false; + _initialParametersSet = true; } @@ -178,7 +190,10 @@ namespace TIAMSharedUI.Shared.Components { base.OnParametersSet(); - if (GridName.IsNullOrWhiteSpace()) GridName = $"[{typeof(TDataItem).Name}Grid]"; + if (GridName.IsNullOrWhiteSpace()) GridName = $"{typeof(TDataItem).Name}Grid"; + + _gridLogName = $"[{GridName}]"; + } } } diff --git a/TIAMSharedUI/Shared/Components/Grids/TransferGrid.cs b/TIAMSharedUI/Shared/Components/Grids/TransferGrid.cs new file mode 100644 index 00000000..d76f545d --- /dev/null +++ b/TIAMSharedUI/Shared/Components/Grids/TransferGrid.cs @@ -0,0 +1,17 @@ +using TIAM.Entities.Transfers; +using TIAM.Services; + +namespace TIAMSharedUI.Shared.Components.Grids; + +public class TransferGrid : TiamGrid +{ + public TransferGrid() : base() + { + GridName = nameof(TransferGrid); + + GetAllMessageTag = SignalRTags.GetTransfersAsync; + AddMessageTag = SignalRTags.AddTransferAsync; + UpdateMessageTag = SignalRTags.UpdateTransferAsync; + RemoveMessageTag = SignalRTags.RemoveTransferAsync; + } +} \ No newline at end of file diff --git a/TIAMSharedUI/Shared/Components/TiamGrid2.razor b/TIAMSharedUI/Shared/Components/TiamGrid2.razor deleted file mode 100644 index 5c3cd839..00000000 --- a/TIAMSharedUI/Shared/Components/TiamGrid2.razor +++ /dev/null @@ -1,19 +0,0 @@ -@using TIAMWebApp.Shared.Application.Utility -@using AyCode.Core.Extensions -@using AyCode.Services.Loggers -@using AyCode.Utils.Extensions -@inject IJSRuntime jsRuntime -@inject IEnumerable LogWriters - -@inherits DxGrid -@* @implements IGrid *@ - -@* @typeparam TDataType *@ - -@*
- @ChildContent -
- *@ -@code { - -} \ No newline at end of file diff --git a/TIAMWebApp/Server/Services/DevAdminSignalRhub.cs b/TIAMWebApp/Server/Services/DevAdminSignalRhub.cs index c3bc3e7c..42315714 100644 --- a/TIAMWebApp/Server/Services/DevAdminSignalRhub.cs +++ b/TIAMWebApp/Server/Services/DevAdminSignalRhub.cs @@ -92,7 +92,7 @@ public class DevAdminSignalRHub(AdminDal adminDal, ServiceProviderAPIController return; - case SignalRTags.CreateCompanyAsync: + case SignalRTags.AddCompanyAsync: //var createCompany = message!.MessagePackTo>().PostData; @@ -100,7 +100,7 @@ public class DevAdminSignalRHub(AdminDal adminDal, ServiceProviderAPIController //await ResponseToCaller(messageTag, new SignalResponseMessage(SignalResponseStatus.Success, createCompany), requestId); return; - case SignalRTags.DeleteCompanyAsync: + case SignalRTags.RemoveCompanyAsync: var deleteCompany = message!.MessagePackTo>().PostData; await adminDal.RemoveCompanyAsync(deleteCompany.Id); From 8506026599d6195ac957d8d8f40be44e87c3dc47 Mon Sep 17 00:00:00 2001 From: "jozsef.b@aycode.com" <9Rj@D}fVwBaN> Date: Fri, 31 May 2024 15:31:04 +0200 Subject: [PATCH 3/4] TiamErrorBoundaryComponent fixes; ManageCompanies improvements, fixes; MyCompany improvements, fixes; etc... --- .../Pages/User/MyServiceProviders.razor | 45 +---- .../SysAdmins/ManageServiceProviders.razor | 176 ++++++------------ .../User/SysAdmins/ManageTransfers.razor | 16 +- .../Shared/Components/Grids/CompanyGrid.cs | 17 +- .../Shared/Components/Grids/TiamGrid.cs | 12 +- .../Shared/Components/Grids/TransferGrid.cs | 17 +- .../TiamErrorBoundaryComponent.razor | 14 +- 7 files changed, 122 insertions(+), 175 deletions(-) diff --git a/TIAMSharedUI/Pages/User/MyServiceProviders.razor b/TIAMSharedUI/Pages/User/MyServiceProviders.razor index 65ec8a5b..801c282c 100644 --- a/TIAMSharedUI/Pages/User/MyServiceProviders.razor +++ b/TIAMSharedUI/Pages/User/MyServiceProviders.razor @@ -10,11 +10,13 @@ @using AyCode.Services.Loggers @using TIAMWebApp.Shared.Application.Services @using AyCode.Core.Helpers +@using TIAMSharedUI.Shared.Components.Grids @layout AdminLayout @inject IEnumerable LogWriters @inject IStringLocalizer localizer @inject ISessionService SessionService @inject IServiceProviderDataService ServiceProviderDataService +@inject AdminSignalRClient AdminSignalRClient;

Properties

@@ -62,14 +64,14 @@
*@ - @@ -83,7 +85,7 @@ - + @@ -107,8 +109,7 @@ @code { private LoggerClient _logger; - IGrid Grid { get; set; } - Company[]? ServiceProviderData { get; set; } + private CompanyGrid _gridCompany; public ServiceProviderWizardModel myModel = new ServiceProviderWizardModel(); @@ -145,7 +146,7 @@ protected override async Task OnAfterRenderAsync(bool firstRender) { if (firstRender) - await Grid.StartEditRowAsync(0); + await _gridCompany.StartEditRowAsync(0); } void Grid_CustomizeEditModel(GridCustomizeEditModelEventArgs e) @@ -158,34 +159,6 @@ } } - async Task Grid_EditModelSaving(GridEditModelSavingEventArgs e) - { - if (e.IsNew) - //add new orderData to orderData array - _logger.Info("New orderData added"); - //await NwindDataService.InsertEmployeeAsync((EditableEmployee)e.EditModel); - else - _logger.Info("orderData updated"); - //modify orderData where orderData.Name == e.EditModel.Name - - //await NwindDataService.UpdateEmployeeAsync((EditableEmployee)e.DataItem, (EditableEmployee)e.EditModel); - - await UpdateDataAsync(); - } - async Task Grid_DataItemDeleting(GridDataItemDeletingEventArgs e) - { - //await NwindDataService.RemoveEmployeeAsync((EditableEmployee)e.DataItem); - //remove orderData from orderData array - _logger.Info("orderData deleted"); - //await UpdateDataAsync(); - } - async Task UpdateDataAsync() - { - //DataSource = await NwindDataService.GetEmployeesEditableAsync(); - //refresh grid - _logger.Info("orderData grid refreshed"); - } - protected override Task OnInitializedAsync() { _logger = new LoggerClient(LogWriters.ToArray()); diff --git a/TIAMSharedUI/Pages/User/SysAdmins/ManageServiceProviders.razor b/TIAMSharedUI/Pages/User/SysAdmins/ManageServiceProviders.razor index 0c71e4a9..c28d8c4e 100644 --- a/TIAMSharedUI/Pages/User/SysAdmins/ManageServiceProviders.razor +++ b/TIAMSharedUI/Pages/User/SysAdmins/ManageServiceProviders.razor @@ -20,6 +20,7 @@ @using MessagePack.Resolvers @using AyCode.Core.Extensions; @using AyCode.Utils.Extensions +@using TIAMSharedUI.Shared.Components.Grids @layout AdminLayout @inject IEnumerable LogWriters @inject IStringLocalizer localizer @@ -35,11 +36,9 @@

Manage transfers here!

- + - + @* *@
- + @@ -113,8 +112,7 @@ if (keyField.IsNullOrEmpty()) { - string buttonText = "Set owner"; - + } else { @@ -122,17 +120,17 @@ } } - + @* - - *@ + + *@ @* - + *@ @@ -154,7 +152,7 @@ - +
@@ -174,28 +172,32 @@ //public Transfer myModel = new Transfer(); - public List ServiceProviderDataList { get; set; } + //public List ServiceProviderDataList { get; set; } + + private bool _sendMailPopupVisible; + private bool _setOwnerPopupVisible; + + private CompanyGrid _gridCompany; + private bool _autoCollapseDetailRow; - bool SendMailPopupVisible { get; set; } - bool SetOwnerPopupVisible { get; set; } public List IgnoreList = [ "ReceiverEmailAddress", - "ReceiverFullName", - "ReceiverId", - "SenderEmailAddress", - "SenderFullName", - "SenderId", - "ContextId", + "ReceiverFullName", + "ReceiverId", + "SenderEmailAddress", + "SenderFullName", + "SenderId", + "ContextId", ]; private MessageWizardModel _messageWizardModel = new(); private string Email { get; set; } = "email@email.com"; string EmailMask { get; set; } = @"(\w|[.-])+@(\w|-)+\.(\w|-){2,4}"; + DateTime StartDate { get; set; } = DateTime.Today; DxSchedulerDataStorage _dataStorage = new(); - - + void SendMail(Company item) { _logger.Info($"Sending mail to {item.OwnerId}, {item.Id}"); @@ -204,14 +206,14 @@ _messageWizardModel.SenderEmailAddress = ""; _messageWizardModel.ReceiverEmailAddress = ""; _messageWizardModel.ReceiverFullName = ""; - SendMailPopupVisible = true; + _sendMailPopupVisible = true; } void SetOwnerPopup(Company item) { _logger.Info($"Setting owner of {item.OwnerId}, {item.Id}"); - SetOwnerPopupVisible = true; + _setOwnerPopupVisible = true; } async Task SetOwner(Guid CompanyId) @@ -222,23 +224,22 @@ //overwrite ServiceProvider ownerid var target = await serviceProviderDataService.GetServiceProviderByIdAsync(CompanyId); if (target == null) - { + { return null; } else { target.OwnerId = userModelDto.Id; - var result = await serviceProviderDataService.UpdateServiceProviderAsync(target); + var result = await serviceProviderDataService.UpdateServiceProviderAsync(target); + return result; - } - } void CancelCreateClick() { - SendMailPopupVisible = false; + _sendMailPopupVisible = false; } void EulaPopupClosed() { @@ -300,102 +301,35 @@ companyEditModel.OwnerId = Guid.Empty; companyEditModel.ProfileId = Guid.NewGuid(); } - - } - - async Task Grid_EditModelSaving(GridEditModelSavingEventArgs e) - { - Company resultCompany = null; - if (e.IsNew) - { - _logger.Info("New company adding"); - resultCompany = await serviceProviderDataService.CreateServiceProviderAsync((Company)e.EditModel); - } - else - { - _logger.Info("company updating at id " + ((Company)e.EditModel).Id); - - resultCompany = await serviceProviderDataService.UpdateServiceProviderAsync((Company)e.EditModel); - - } - - if (resultCompany!=null) - { - //TODO: ne a teljes grid-et refresh-eljük, elég lenne csak az adott sort! - J. - await UpdateDataAsync(); - } - } - - async Task Grid_DataItemDeleting(GridDataItemDeletingEventArgs e) - { - var company = (Company)e.DataItem; - //await NwindDataService.RemoveEmployeeAsync((EditableEmployee)e.DataItem); - //remove orderData from orderData array - _logger.Info($"companyData deleting; companyId: {company.Id}"); - - var response = await AdminSignalRClient.PostDataAsync(SignalRTags.RemoveCompanyAsync, company); - - //resultCompany = await serviceProviderDataService.DeleteServiceProviderAsync(company.Id); - //await UpdateDataAsync(); - } - - async Task UpdateDataAsync() - { - ServiceProviderDataList = await serviceProviderDataService.GetServiceProvidersAsync(); - //StateHasChanged(); - _logger.Info("orderData grid refreshed"); } protected override async Task OnInitializedAsync() { _logger = new LoggerClient(LogWriters.ToArray()); - await UpdateDataAsync(); - - //var transfers = await devAdminSignalClient.GetAllAsync>(SignalRTags.GetTransfersAsync); - //InitializeDataSources(transfers ?? []); - - - //InitializeDataSources(await transferDataService.GetTransfersAsync()); - - base.OnInitializedAsync(); + await base.OnInitializedAsync(); } - - - - void ColumnChooserButton_Click() { - Grid2.ShowColumnChooser(); + _gridCompany.ShowColumnChooser(); } - IGrid Grid2 { get; set; } - object MasterGridData { get; set; } - bool AutoCollapseDetailRow { get; set; } - protected override void OnAfterRender(bool firstRender) { if (firstRender) { - Grid2.ExpandDetailRow(0); + _gridCompany.ExpandDetailRow(0); } } void AutoCollapseDetailRow_Changed(bool newValue) { - AutoCollapseDetailRow = newValue; + _autoCollapseDetailRow = newValue; if (!newValue) return; - Grid2.BeginUpdate(); - Grid2.CollapseAllDetailRows(); - Grid2.ExpandDetailRow(0); - Grid2.EndUpdate(); + _gridCompany.BeginUpdate(); + _gridCompany.CollapseAllDetailRows(); + _gridCompany.ExpandDetailRow(0); + _gridCompany.EndUpdate(); } -} - - - - - - - } \ No newline at end of file +} \ No newline at end of file diff --git a/TIAMSharedUI/Pages/User/SysAdmins/ManageTransfers.razor b/TIAMSharedUI/Pages/User/SysAdmins/ManageTransfers.razor index 25eb9128..7b0992f9 100644 --- a/TIAMSharedUI/Pages/User/SysAdmins/ManageTransfers.razor +++ b/TIAMSharedUI/Pages/User/SysAdmins/ManageTransfers.razor @@ -72,7 +72,7 @@ Click="ColumnChooserButton_Click" /> - IgnoreList = [ @@ -425,7 +425,7 @@ void ColumnChooserButton_Click() { - _transferGrid.ShowColumnChooser(); + _gridTransfer.ShowColumnChooser(); } @@ -433,7 +433,7 @@ { if (firstRender) { - _transferGrid.ExpandDetailRow(0); + _gridTransfer.ExpandDetailRow(0); } } @@ -442,10 +442,10 @@ _autoCollapseDetailRow = newValue; if (!newValue) return; - _transferGrid.BeginUpdate(); - _transferGrid.CollapseAllDetailRows(); - _transferGrid.ExpandDetailRow(0); - _transferGrid.EndUpdate(); + _gridTransfer.BeginUpdate(); + _gridTransfer.CollapseAllDetailRows(); + _gridTransfer.ExpandDetailRow(0); + _gridTransfer.EndUpdate(); } } \ No newline at end of file diff --git a/TIAMSharedUI/Shared/Components/Grids/CompanyGrid.cs b/TIAMSharedUI/Shared/Components/Grids/CompanyGrid.cs index 82a44694..6ec27080 100644 --- a/TIAMSharedUI/Shared/Components/Grids/CompanyGrid.cs +++ b/TIAMSharedUI/Shared/Components/Grids/CompanyGrid.cs @@ -1,4 +1,5 @@ -using TIAM.Entities.ServiceProviders; +using Microsoft.AspNetCore.Components; +using TIAM.Entities.ServiceProviders; using TIAM.Services; namespace TIAMSharedUI.Shared.Components.Grids; @@ -14,4 +15,18 @@ public class CompanyGrid : TiamGrid UpdateMessageTag = SignalRTags.UpdateCompanyAsync; RemoveMessageTag = SignalRTags.RemoveCompanyAsync; } + + protected override Task SetParametersAsyncCore(ParameterView parameters) + { + if (!IsInitializedParameters) + { + //ShowFilterRow = true; + //ShowGroupPanel = true; + //AllowSort = false; + + //etc... + } + + return base.SetParametersAsyncCore(parameters); + } } \ No newline at end of file diff --git a/TIAMSharedUI/Shared/Components/Grids/TiamGrid.cs b/TIAMSharedUI/Shared/Components/Grids/TiamGrid.cs index c4c50501..962edade 100644 --- a/TIAMSharedUI/Shared/Components/Grids/TiamGrid.cs +++ b/TIAMSharedUI/Shared/Components/Grids/TiamGrid.cs @@ -13,7 +13,7 @@ namespace TIAMSharedUI.Shared.Components.Grids { public class TiamGrid : DxGrid where TDataItem : class, IEntityGuid { - private bool _initialParametersSet; + protected bool IsInitializedParameters; private IList? _dataSource; private string _gridLogName; @@ -57,6 +57,12 @@ namespace TIAMSharedUI.Shared.Components.Grids protected override void OnInitialized() { + if (Logger == null) + throw new NullReferenceException($"[{GetType().Name}] Logger == null"); + + if (SignalRClient == null) + Logger.Error($"[{GetType().Name}] SignalRClient == null"); + base.OnInitialized(); } @@ -170,7 +176,7 @@ namespace TIAMSharedUI.Shared.Components.Grids protected override Task SetParametersAsyncCore(ParameterView parameters) { - if (!_initialParametersSet) + if (!IsInitializedParameters) { base.DataItemDeleting = EventCallback.Factory.Create(this, OnItemDeleting); base.EditModelSaving = EventCallback.Factory.Create(this, OnItemSaving); @@ -180,7 +186,7 @@ namespace TIAMSharedUI.Shared.Components.Grids //ShowGroupPanel = true; //AllowSort = false; - _initialParametersSet = true; + IsInitializedParameters = true; } return base.SetParametersAsyncCore(parameters); diff --git a/TIAMSharedUI/Shared/Components/Grids/TransferGrid.cs b/TIAMSharedUI/Shared/Components/Grids/TransferGrid.cs index d76f545d..c5772f70 100644 --- a/TIAMSharedUI/Shared/Components/Grids/TransferGrid.cs +++ b/TIAMSharedUI/Shared/Components/Grids/TransferGrid.cs @@ -1,4 +1,5 @@ -using TIAM.Entities.Transfers; +using Microsoft.AspNetCore.Components; +using TIAM.Entities.Transfers; using TIAM.Services; namespace TIAMSharedUI.Shared.Components.Grids; @@ -14,4 +15,18 @@ public class TransferGrid : TiamGrid UpdateMessageTag = SignalRTags.UpdateTransferAsync; RemoveMessageTag = SignalRTags.RemoveTransferAsync; } + + protected override Task SetParametersAsyncCore(ParameterView parameters) + { + if (!IsInitializedParameters) + { + //ShowFilterRow = true; + //ShowGroupPanel = true; + //AllowSort = false; + + //etc... + } + + return base.SetParametersAsyncCore(parameters); + } } \ No newline at end of file diff --git a/TIAMSharedUI/Shared/Components/TiamErrorBoundaryComponent.razor b/TIAMSharedUI/Shared/Components/TiamErrorBoundaryComponent.razor index 793f0002..d813cd0d 100644 --- a/TIAMSharedUI/Shared/Components/TiamErrorBoundaryComponent.razor +++ b/TIAMSharedUI/Shared/Components/TiamErrorBoundaryComponent.razor @@ -42,7 +42,7 @@ else // { // } - protected override Task OnErrorAsync(Exception exception) + protected override async Task OnErrorAsync(Exception exception) { _currentError = exception; @@ -52,18 +52,22 @@ else try { - _logger.Error($"An error occurred: {exception.Message}", exception, categoryName, memberName); + _logger.Writer()?.Error($"An error occurred: {exception.Message}", exception, categoryName, memberName); } catch (Exception loggerException) { - jsRuntime.InvokeVoidAsync("console.error", $"{nameof(TiamErrorBoundaryComponent)}->OnErrorAsync; Logger error! {loggerException}"); + await jsRuntime.InvokeVoidAsync("console.error", $"{nameof(TiamErrorBoundaryComponent)}->OnErrorAsync; Logger error! {loggerException}"); - jsRuntime.InvokeVoidAsync("console.error", $"{nameof(TiamErrorBoundaryComponent)}->{memberName}; An error occurred: {exception}"); + await jsRuntime.InvokeVoidAsync("console.error", $"{nameof(TiamErrorBoundaryComponent)}->{memberName}; An error occurred: {exception}"); //jsRuntime.InvokeVoidAsync("console.warn", $"{nameof(TiamErrorBoundaryComponent)}->{memberName}; Error details: {exception.StackTrace}"); } + await Task.Delay(500); //KELL IDE, KÜLÖNBEN NEM MEGY KI A LOG A SZERVERRE! - J. + //ShowErrorNotification("An unexpected error occurred. Please try again later."); - return OnError.HasDelegate ? OnError.InvokeAsync(exception) : base.OnErrorAsync(exception); + + if (OnError.HasDelegate) await OnError.InvokeAsync(exception); + else await base.OnErrorAsync(exception); } // private void ShowErrorNotification(string message) From 40d89376547687832fceeca9d3e636dd7c46179d Mon Sep 17 00:00:00 2001 From: "jozsef.b@aycode.com" <9Rj@D}fVwBaN> Date: Fri, 31 May 2024 16:42:37 +0200 Subject: [PATCH 4/4] TiamGrid improvements --- .../User/SysAdmins/ManageTransfers.razor | 44 +++++++++++++------ .../Components/Grids/CompanyDetailGrid.cs | 17 +++++++ .../Shared/Components/Grids/CompanyGrid.cs | 2 +- .../Shared/Components/Grids/TiamGrid.cs | 38 +++++++++------- .../Components/Grids/TransferDetailGrid.cs | 17 +++++++ .../Shared/Components/Grids/TransferGrid.cs | 2 +- 6 files changed, 87 insertions(+), 33 deletions(-) create mode 100644 TIAMSharedUI/Shared/Components/Grids/CompanyDetailGrid.cs create mode 100644 TIAMSharedUI/Shared/Components/Grids/TransferDetailGrid.cs diff --git a/TIAMSharedUI/Pages/User/SysAdmins/ManageTransfers.razor b/TIAMSharedUI/Pages/User/SysAdmins/ManageTransfers.razor index baaee0a3..517391f2 100644 --- a/TIAMSharedUI/Pages/User/SysAdmins/ManageTransfers.razor +++ b/TIAMSharedUI/Pages/User/SysAdmins/ManageTransfers.razor @@ -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" /> - + +@* + + *@ 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 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(); } - } \ No newline at end of file diff --git a/TIAMSharedUI/Shared/Components/Grids/CompanyDetailGrid.cs b/TIAMSharedUI/Shared/Components/Grids/CompanyDetailGrid.cs new file mode 100644 index 00000000..7e3d2de8 --- /dev/null +++ b/TIAMSharedUI/Shared/Components/Grids/CompanyDetailGrid.cs @@ -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) + { + } + } +} \ No newline at end of file diff --git a/TIAMSharedUI/Shared/Components/Grids/CompanyGrid.cs b/TIAMSharedUI/Shared/Components/Grids/CompanyGrid.cs index 6ec27080..b8cf1f58 100644 --- a/TIAMSharedUI/Shared/Components/Grids/CompanyGrid.cs +++ b/TIAMSharedUI/Shared/Components/Grids/CompanyGrid.cs @@ -18,7 +18,7 @@ public class CompanyGrid : TiamGrid protected override Task SetParametersAsyncCore(ParameterView parameters) { - if (!IsInitializedParameters) + if (!IsFirstInitializeParameters) { //ShowFilterRow = true; //ShowGroupPanel = true; diff --git a/TIAMSharedUI/Shared/Components/Grids/TiamGrid.cs b/TIAMSharedUI/Shared/Components/Grids/TiamGrid.cs index 962edade..f649de48 100644 --- a/TIAMSharedUI/Shared/Components/Grids/TiamGrid.cs +++ b/TIAMSharedUI/Shared/Components/Grids/TiamGrid.cs @@ -13,7 +13,7 @@ namespace TIAMSharedUI.Shared.Components.Grids { public class TiamGrid : DxGrid where TDataItem : class, IEntityGuid { - protected bool IsInitializedParameters; + protected bool IsFirstInitializeParameters; private IList? _dataSource; private string _gridLogName; @@ -80,10 +80,9 @@ namespace TIAMSharedUI.Shared.Components.Grids [Parameter] public EventCallback OnDataItemSaving { get; set; } - [Parameter] - public EventCallback> OnDataSourceChanged { get; set; } - [Parameter] - public EventCallback OnDataSourceItemChanged { get; set; } + [Parameter] public EventCallback> OnDataSourceChanged { get; set; } + [Parameter] public EventCallback OnDataSourceItemChanging { get; set; } + [Parameter] public EventCallback 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>(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(this, OnItemDeleting); base.EditModelSaving = EventCallback.Factory.Create(this, OnItemSaving); @@ -186,7 +190,7 @@ namespace TIAMSharedUI.Shared.Components.Grids //ShowGroupPanel = true; //AllowSort = false; - IsInitializedParameters = true; + IsFirstInitializeParameters = true; } return base.SetParametersAsyncCore(parameters); diff --git a/TIAMSharedUI/Shared/Components/Grids/TransferDetailGrid.cs b/TIAMSharedUI/Shared/Components/Grids/TransferDetailGrid.cs new file mode 100644 index 00000000..abd9f576 --- /dev/null +++ b/TIAMSharedUI/Shared/Components/Grids/TransferDetailGrid.cs @@ -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) + { + } + } +} \ No newline at end of file diff --git a/TIAMSharedUI/Shared/Components/Grids/TransferGrid.cs b/TIAMSharedUI/Shared/Components/Grids/TransferGrid.cs index c5772f70..8dfabc7d 100644 --- a/TIAMSharedUI/Shared/Components/Grids/TransferGrid.cs +++ b/TIAMSharedUI/Shared/Components/Grids/TransferGrid.cs @@ -18,7 +18,7 @@ public class TransferGrid : TiamGrid protected override Task SetParametersAsyncCore(ParameterView parameters) { - if (!IsInitializedParameters) + if (!IsFirstInitializeParameters) { //ShowFilterRow = true; //ShowGroupPanel = true;