265 lines
7.7 KiB
C#
265 lines
7.7 KiB
C#
using IOB_MAN.Core.DTO;
|
|
using IOB_MAN.Core.SDK;
|
|
using IOB_MAN.Core.Services;
|
|
using Microsoft.AspNetCore.Components;
|
|
using Newtonsoft.Json;
|
|
using System.Globalization;
|
|
|
|
namespace IOB_MAN.Components.Pages
|
|
{
|
|
public partial class FlogDetail : IDisposable
|
|
{
|
|
#region Public Properties
|
|
|
|
[Parameter]
|
|
public string CodIob
|
|
{
|
|
get => codIob;
|
|
set => codIob = value;
|
|
}
|
|
|
|
#endregion Public Properties
|
|
|
|
#region Public Methods
|
|
|
|
public void Dispose()
|
|
{
|
|
currMem = new plcMemMapExt();
|
|
AllFluxList = new List<FluxLogStatsDTO.ParetoVals>();
|
|
FluxDetailList = new List<FluxLogStatsDTO.ParetoVals>();
|
|
DataLogList = new List<FluxLogStatsDTO.DataLog>();
|
|
IobList = new List<string>();
|
|
MemAreaEdit = new dataConfTSVC();
|
|
MemAreaOrig = new dataConfTSVC();
|
|
CodFluxSel = "";
|
|
currConfFile = "";
|
|
numChanges = 0;
|
|
codIob = "";
|
|
}
|
|
|
|
#endregion Public Methods
|
|
|
|
#region Protected Properties
|
|
|
|
protected string CodIobSel
|
|
{
|
|
get => codIob;
|
|
set
|
|
{
|
|
if (codIob != value)
|
|
{
|
|
CodFluxSel = "";
|
|
codIob = value;
|
|
ReloadConfig();
|
|
ReloadData();
|
|
}
|
|
}
|
|
}
|
|
|
|
protected DateTime DtRif
|
|
{
|
|
get => dtRif;
|
|
set
|
|
{
|
|
if (dtRif != value)
|
|
{
|
|
CodFluxSel = "";
|
|
dtRif = value;
|
|
ReloadData();
|
|
}
|
|
}
|
|
}
|
|
|
|
[Inject]
|
|
protected FluxLogManService FLMService { get; set; } = null!;
|
|
|
|
[Inject]
|
|
protected NavigationManager NavMan { get; set; } = null!;
|
|
|
|
#endregion Protected Properties
|
|
|
|
#region Protected Methods
|
|
|
|
protected override void OnInitialized()
|
|
{
|
|
IobList = FLMService.CurrIobConf.ListIOB.Select(x => x.Key).ToList();
|
|
}
|
|
|
|
protected override void OnParametersSet()
|
|
{
|
|
ReloadData();
|
|
ReloadConfig();
|
|
}
|
|
|
|
#endregion Protected Methods
|
|
|
|
#region Private Fields
|
|
|
|
private string CodFluxSel = "";
|
|
private string currConfFile = "";
|
|
private DateTime dtRif = DateTime.Today;
|
|
private dataConfTSVC MemAreaOrig = new dataConfTSVC();
|
|
private int numChanges = 0;
|
|
|
|
#endregion Private Fields
|
|
|
|
#region Private Properties
|
|
|
|
private List<FluxLogStatsDTO.ParetoVals> AllFluxList { get; set; } = new List<FluxLogStatsDTO.ParetoVals>();
|
|
|
|
private string codIob { get; set; } = "";
|
|
|
|
private string ComputerName
|
|
{
|
|
get => Environment.MachineName;
|
|
}
|
|
|
|
/// <summary>
|
|
/// Conf memoria IOB
|
|
/// </summary>
|
|
private plcMemMapExt currMem { get; set; } = new plcMemMapExt();
|
|
|
|
private List<FluxLogStatsDTO.DataLog> DataLogList { get; set; } = new List<FluxLogStatsDTO.DataLog>();
|
|
|
|
private string DomainName
|
|
{
|
|
get => Environment.UserDomainName;
|
|
}
|
|
|
|
private List<FluxLogStatsDTO.ParetoVals> FluxDetailList { get; set; } = new List<FluxLogStatsDTO.ParetoVals>();
|
|
|
|
private List<string> IobList { get; set; } = new List<string>();
|
|
|
|
private dataConfTSVC MemAreaEdit { get; set; } = new dataConfTSVC();
|
|
|
|
private bool showDetail
|
|
{
|
|
get => !string.IsNullOrEmpty(CodFluxSel);
|
|
}
|
|
|
|
private bool showSave
|
|
{
|
|
get => numChanges > 0;
|
|
}
|
|
|
|
private string UserName
|
|
{
|
|
get => Environment.UserName;
|
|
}
|
|
|
|
#endregion Private Properties
|
|
|
|
#region Private Methods
|
|
|
|
/// <summary>
|
|
/// Processing del ritorno editing memArea
|
|
/// </summary>
|
|
/// <param name="memAreaEdit"></param>
|
|
private void DoSave()
|
|
{
|
|
SaveConfig();
|
|
// rilettura finale conf
|
|
ReloadConfig();
|
|
}
|
|
|
|
private void DoShowDetail(string codFlux)
|
|
{
|
|
CodFluxSel = codFlux;
|
|
if (showDetail)
|
|
{
|
|
FluxDetailList = FLMService.FluxLogDetailPareto(CodIobSel, DtRif, CodFluxSel);
|
|
DataLogList = FLMService.FluxLogDataLog(CodIobSel, DtRif, CodFluxSel);
|
|
//ReloadConfig();
|
|
// recupero area UM...
|
|
if (currMem.mMapRead.ContainsKey(CodFluxSel))
|
|
{
|
|
MemAreaEdit = currMem.mMapRead[CodFluxSel];
|
|
MemAreaOrig = (dataConfTSVC)MemAreaEdit.Clone();
|
|
}
|
|
}
|
|
else
|
|
{
|
|
FluxDetailList = new List<FluxLogStatsDTO.ParetoVals>();
|
|
DataLogList = new List<FluxLogStatsDTO.DataLog>();
|
|
MemAreaEdit = new dataConfTSVC();
|
|
MemAreaOrig = new dataConfTSVC();
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// Legge elenco conf parametri da file json dell'IOB corrente
|
|
/// </summary>
|
|
private void ReloadConfig()
|
|
{
|
|
// cerco IOB
|
|
string tipoIob = FLMService.IobType(CodIobSel);
|
|
if (!string.IsNullOrEmpty(tipoIob))
|
|
{
|
|
var iobData = FLMService.GetTargetConf(tipoIob);
|
|
// calcolo percorso file di conf
|
|
currConfFile = Path.Combine(iobData.ConfDir, $"{CodIobSel}.json");
|
|
if (File.Exists(currConfFile))
|
|
{
|
|
string rawData = File.ReadAllText(currConfFile);
|
|
if (rawData != null)
|
|
{
|
|
try
|
|
{
|
|
currMem = JsonConvert.DeserializeObject<plcMemMapExt>(rawData) ?? new plcMemMapExt();
|
|
numChanges = 0;
|
|
}
|
|
catch { }
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// Rilettura dati
|
|
/// </summary>
|
|
private void ReloadData()
|
|
{
|
|
AllFluxList = FLMService.FluxLogDailyPareto(CodIobSel, DtRif);
|
|
}
|
|
|
|
private void SaveConfig()
|
|
{
|
|
// scrivo file!
|
|
if (File.Exists(currConfFile))
|
|
{
|
|
DateTime adesso = DateTime.Now;
|
|
// faccio backup
|
|
string fileNameOnly = Path.GetFileName(currConfFile);
|
|
string baseDir = Path.GetDirectoryName(currConfFile) ?? "";
|
|
if (!string.IsNullOrEmpty(baseDir))
|
|
{
|
|
string bcfFile = Path.Combine(baseDir, $"{fileNameOnly}_{adesso:yyMMdd-HHmmss}.bck");
|
|
File.Copy(currConfFile, bcfFile);
|
|
// serializzo e salvo...
|
|
JsonSerializerSettings jsSet = new JsonSerializerSettings()
|
|
{
|
|
Formatting = Formatting.Indented,
|
|
NullValueHandling = NullValueHandling.Ignore,
|
|
Culture = CultureInfo.InvariantCulture
|
|
};
|
|
string rawData = JsonConvert.SerializeObject(currMem, jsSet);
|
|
File.WriteAllText(currConfFile, rawData);
|
|
}
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// Salva evento modifica x gestione pulsante save
|
|
/// </summary>
|
|
/// <param name="memAreaEdit"></param>
|
|
private void SetUpdated(bool? changed)
|
|
{
|
|
if (changed ?? false)
|
|
{
|
|
numChanges++;
|
|
}
|
|
}
|
|
|
|
#endregion Private Methods
|
|
}
|
|
} |