Files
samuele fc23036770 Pulizia codice inutilizzato:
- test debounce preliminari
- pag + componente
2023-08-25 14:29:31 +02:00

119 lines
2.8 KiB
C#

using Microsoft.AspNetCore.Components;
using SHERPA.BBM.UI.Data;
namespace SHERPA.BBM.UI.Components
{
/// <summary>
/// Pagina gestione ricerca con deounce basato su timer:
/// https://blog.jeremylikness.com/blog/an-easier-blazor-debounce/
/// </summary>
public partial class SearchMod : IDisposable
{
#region Public Properties
[Parameter]
public int DebounceTimer { get; set; } = 200;
[Parameter]
public string searchVal
{
get
{
return lastSearch;
}
set
{
lastSearch = value;
DisposeTimer();
aTimer = new System.Timers.Timer(DebounceTimer);
aTimer.Elapsed += TimerElapsed_TickAsync;
aTimer.Enabled = true;
aTimer.Start();
}
}
#endregion Public Properties
#region Public Methods
public void Dispose()
{
DisposeTimer();
MService.EA_SearchUpdated -= OnSeachUpdated;
MService.HeadChanged -= MService_HeadChanged;
}
public async void OnSeachUpdated()
{
await InvokeAsync(() =>
{
lastSearch = MService.SearchVal;
StateHasChanged();
});
}
#endregion Public Methods
#region Protected Properties
[Inject]
protected MessageService MService { get; set; } = null!;
#endregion Protected Properties
#region Protected Methods
protected override async Task OnInitializedAsync()
{
await Task.Delay(1);
MService.EA_SearchUpdated += OnSeachUpdated;
MService.HeadChanged += MService_HeadChanged;
}
#endregion Protected Methods
#region Private Fields
private static System.Timers.Timer? aTimer = null;
#endregion Private Fields
#region Private Properties
private string lastSearch { get; set; } = "";
#endregion Private Properties
#region Private Methods
private void DisposeTimer()
{
if (aTimer != null)
{
aTimer.Stop();
aTimer.Dispose();
}
}
private void MService_HeadChanged()
{
lastSearch = MService.SearchVal;
}
private void reset()
{
MService.SearchVal = "";
searchVal = "";
}
private async void TimerElapsed_TickAsync(object? sender, EventArgs e)
{
DisposeTimer();
await Task.Delay(1);
MService.SearchVal = lastSearch;
}
#endregion Private Methods
}
}