Files
mapo-mono/MP.MONO.UI/Components/AlarmsOverview.razor.cs
2023-07-06 15:35:08 +02:00

156 lines
4.3 KiB
C#

using Microsoft.AspNetCore.Components;
using MP.MONO.Core.DTO;
using MP.MONO.Data;
using MP.MONO.UI.Data;
using Newtonsoft.Json;
using System.Collections.Immutable;
namespace MP.MONO.UI.Components
{
public partial class AlarmsOverview : IDisposable
{
#region Public Properties
[Parameter]
public EventCallback<int> messageReceived { get; set; }
[Parameter]
public bool compMode { get; set; } = false;
#endregion Public Properties
#region Public Methods
public void Dispose()
{
MMDataService.alarmPipe.EA_NewMessage -= AlarmPipe_EA_NewMessage;
}
private string css()
{
string answ = "";
if (ListRecords != null)
{
if (ListRecords.Count == 0)
{
answ = "text-dark";
}
else
{
answ = "pulse-warning text-warning bg-danger ";
}
}
return answ;
}
private void showAalarms()
{
compMode = !compMode;
}
#endregion Public Methods
#region Protected Methods
protected override async Task OnInitializedAsync()
{
await ReloadData();
MMDataService.alarmPipe.EA_NewMessage += AlarmPipe_EA_NewMessage;
}
protected async Task ReloadData()
{
var alarmList = await MMDataService.getAlarms();
ListRecords = alarmList.Select(x => new DisplayDataDTO()
{
IsNumeric = false,
Title = $"{DateTime.Now:yyyy-MM-dd HH:mm:ss}",
Value = x,
Order = ListRecords == null ? 0 : ListRecords.Count
}).ToList();
}
#endregion Protected Methods
#region Private Properties
private List<DisplayDataDTO>? ListRecords { get; set; } = new List<DisplayDataDTO>();
private selectGlobalToggle currFilter { get; set; } = new selectGlobalToggle();
private int numAlarm
{
get => currFilter.numAlarms;
set
{
if (ListRecords != null)
{
currFilter.numAlarms = value;
}
}
}
#endregion Private Properties
#region Private Methods
private void AlarmPipe_EA_NewMessage(object? sender, EventArgs e)
{
PubSubEventArgs currArgs = (PubSubEventArgs)e;
// conversione on-the-fly List<string> --> allarmi
if (!string.IsNullOrEmpty(currArgs.newMessage))
{
try
{
var alarmList = JsonConvert.DeserializeObject<List<string>>(currArgs.newMessage);
if (alarmList != null)
{
ListRecords = alarmList.Select(x => new DisplayDataDTO()
{
IsNumeric = false,
Title = $"{DateTime.Now:yyyy-MM-dd HH:mm:ss}",
Value = x,
Order = ListRecords == null ? 0 : ListRecords.Count
}).ToList();
messageReceived.InvokeAsync(alarmList.Count);
}
if (ListRecords == null || ListRecords.Count != 0)
{
//compMode = false;
trigger.show = false;
}
else
{
//compMode = true;
trigger.show = true;
}
}
catch
{ }
}
InvokeAsync(() =>
{
StateHasChanged();
});
if (ListRecords == null)
{
ListRecords = new List<DisplayDataDTO>();
}
if (ListRecords != null)
{
numAlarm = ListRecords.Count;
}
}
toolsTrigger trigger = new toolsTrigger();
protected string cardHeight
{
get => compMode ? "height: 30rem" : "";
}
#endregion Private Methods
}
}