Merge branch 'release/TAB_FixDP_01'
This commit is contained in:
@@ -20,7 +20,7 @@
|
||||
}
|
||||
else
|
||||
{
|
||||
@if (RecMSE == null)
|
||||
@if (CRecMSE == null)
|
||||
{
|
||||
<div class="card text-white mapBlock shadow bg-secondary p-0 m-0">
|
||||
<div class="card-body">
|
||||
@@ -48,31 +48,31 @@ else
|
||||
if (Width > 640)
|
||||
{
|
||||
<div class="card bg-dark @cssClassBorder @cssClassOverlay rounded-4" @onclick="ShowDetail">
|
||||
<img src="@ImgUrlMacc(RecMSE.Url)" class="card-img-top imgFitToSize rounded-top-4" alt="@RecMSE.CodMacchina">
|
||||
<img src="@ImgUrlMacc(CRecMSE.Url)" class="card-img-top imgFitToSize rounded-top-4" alt="@CRecMSE.CodMacchina">
|
||||
<div class="bg-black">
|
||||
<div class="card-img-overlay p-0 d-flex flex-row-reverse align-items-start">
|
||||
<div class="labelTop px-2 w-100">
|
||||
<div class="text-center fs-2 fw-bold">
|
||||
@RecMSE.Nome
|
||||
@CRecMSE.Nome
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="card-body rounded-bottom-4 p-0 bg-dark">
|
||||
<div class="@RecMSE.Semaforo py-0 px-1">
|
||||
<div class="@CRecMSE.Semaforo py-0 px-1">
|
||||
<div class="d-flex justify-content-between fs-5">
|
||||
<div class="px-0 @cssClassTextDescr">
|
||||
<span>@RecMSE.DescrizioneStato </span>
|
||||
<span>@CRecMSE.DescrizioneStato </span>
|
||||
</div>
|
||||
<div class="px-0">
|
||||
<b>@(FormatDurata(RecMSE.Durata))</b>
|
||||
<b>@(FormatDurata(CRecMSE.Durata))</b>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="d-flex justify-content-around">
|
||||
<div class="text-center text-success d-flex justify-content-between">
|
||||
<div>
|
||||
<i class="fa-regular fa-circle-check"></i> @($" {RecMSE.PezziConf}")
|
||||
<i class="fa-regular fa-circle-check"></i> @($" {CRecMSE.PezziConf}")
|
||||
</div>
|
||||
<div class="text-danger">
|
||||
@if (datiProdAct != null && datiProdAct.PzConfScarto > 0)
|
||||
@@ -83,7 +83,7 @@ else
|
||||
</div>
|
||||
<div class="text-center text-warning ">
|
||||
<div>
|
||||
<i class="fa-solid fa-layer-group"></i> @($" {RecMSE.PezziProd}")
|
||||
<i class="fa-solid fa-layer-group"></i> @($" {CRecMSE.PezziProd}")
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -94,15 +94,15 @@ else
|
||||
<div class="col-8 py-1" style="line-height: 1.6rem;">
|
||||
<div class="text-center text-light d-flex justify-content-between">
|
||||
<div class="px-1"><span>ART:</span></div>
|
||||
<div class="px-1">@($"{RecMSE.CodArticolo}")</div>
|
||||
<div class="px-1">@($"{CRecMSE.CodArticolo}")</div>
|
||||
</div>
|
||||
<div class="text-center text-light d-flex justify-content-between small lh-sm">
|
||||
<div class="px-1">ODL:</div>
|
||||
<div class="px-1">@($"ODL{RecMSE.IdxOdl:00000000}")</div>
|
||||
<div class="px-1">@($"ODL{CRecMSE.IdxOdl:00000000}")</div>
|
||||
</div>
|
||||
<div class="text-center text-light d-flex justify-content-between small lh-sm">
|
||||
<div class="px-1">PODL:</div>
|
||||
<div class="px-1">@($"PODL{RecMSE.IdxPOdl:00000000}")</div>
|
||||
<div class="px-1">@($"PODL{CRecMSE.IdxPOdl:00000000}")</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -112,25 +112,25 @@ else
|
||||
else
|
||||
{
|
||||
<div class="card bg-dark shadow @cssClassBorder @cssClassOverlay rounded-4" @onclick="ShowDetail">
|
||||
<img src="@ImgUrlMacc(RecMSE.Url)" class="card-img-top imgFitToSize rounded-top-4" alt="@RecMSE.CodMacchina">
|
||||
<img src="@ImgUrlMacc(CRecMSE.Url)" class="card-img-top imgFitToSize rounded-top-4" alt="@CRecMSE.CodMacchina">
|
||||
<div class="bg-black">
|
||||
<div class="card-img-overlay p-0 d-flex flex-row-reverse align-items-start">
|
||||
<div class="labelTop px-2 py-0 w-100">
|
||||
<div class="text-center fs-2 fw-bold">
|
||||
@RecMSE.Nome
|
||||
@CRecMSE.Nome
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="card-body rounded-bottom-4 p-0 bg-dark">
|
||||
<div class="@RecMSE.Semaforo py-0 px-1">
|
||||
<div class="@CRecMSE.Semaforo py-0 px-1">
|
||||
<div class="d-flex justify-content-between fs-5">
|
||||
<div class="px-0 @cssClassTextDescr">
|
||||
<span>@RecMSE.DescrizioneStato</span>
|
||||
<span>@CRecMSE.DescrizioneStato</span>
|
||||
</div>
|
||||
<div class="px-0">
|
||||
<b>
|
||||
@(FormatDurata(RecMSE.Durata))
|
||||
@(FormatDurata(CRecMSE.Durata))
|
||||
</b>
|
||||
</div>
|
||||
</div>
|
||||
@@ -138,7 +138,7 @@ else
|
||||
<div class="d-flex justify-content-around">
|
||||
<div class="text-center text-success d-flex justify-content-between">
|
||||
<div>
|
||||
<i class="fa-regular fa-circle-check"></i> @($" {RecMSE.PezziConf}")
|
||||
<i class="fa-regular fa-circle-check"></i> @($" {CRecMSE.PezziConf}")
|
||||
</div>
|
||||
<div class="text-danger">
|
||||
@if (datiProdAct != null && datiProdAct.PzConfScarto > 0)
|
||||
@@ -149,7 +149,7 @@ else
|
||||
</div>
|
||||
<div class="text-center text-warning ">
|
||||
<div>
|
||||
<i class="fa-solid fa-layer-group"></i> @($" {RecMSE.PezziProd}")
|
||||
<i class="fa-solid fa-layer-group"></i> @($" {CRecMSE.PezziProd}")
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -161,15 +161,15 @@ else
|
||||
|
||||
<div class="text-center text-light d-flex justify-content-between">
|
||||
<div class="px-1"><span>ART:</span></div>
|
||||
<div class="px-1">@($"{RecMSE.CodArticolo}")</div>
|
||||
<div class="px-1">@($"{CRecMSE.CodArticolo}")</div>
|
||||
</div>
|
||||
<div class="text-center text-light d-flex justify-content-between small lh-sm">
|
||||
<div class="px-1">ODL:</div>
|
||||
<div class="px-1">@($"ODL{RecMSE.IdxOdl:00000000}")</div>
|
||||
<div class="px-1">@($"ODL{CRecMSE.IdxOdl:00000000}")</div>
|
||||
</div>
|
||||
<div class="text-center text-light d-flex justify-content-between small lh-sm">
|
||||
<div class="px-1">PODL:</div>
|
||||
<div class="px-1">@($"PODL{RecMSE.IdxPOdl:00000000}")</div>
|
||||
<div class="px-1">@($"PODL{CRecMSE.IdxPOdl:00000000}")</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -183,7 +183,7 @@ else
|
||||
<div class="text-center d-flex justify-content-between align-items-center row">
|
||||
<div class="col-12">
|
||||
<h4 class="text-center mb-0 fw-bold">
|
||||
@RecMSE.Nome
|
||||
@CRecMSE.Nome
|
||||
</h4>
|
||||
</div>
|
||||
<div class="col-4 fs-4">
|
||||
@@ -198,7 +198,7 @@ else
|
||||
}
|
||||
else
|
||||
{
|
||||
<div class="px-0">@($"{RecMSE.PezziProd}")</div>
|
||||
<div class="px-0">@($"{CRecMSE.PezziProd}")</div>
|
||||
}
|
||||
</div>
|
||||
@if (datiProdAct != null)
|
||||
@@ -256,13 +256,13 @@ else
|
||||
</div>
|
||||
</div>
|
||||
}
|
||||
@if (RecMSE.extraVal > 0)
|
||||
@if (CRecMSE.extraVal > 0)
|
||||
{
|
||||
<div class="text-end text-primary d-flex justify-content-between">
|
||||
<div class="px-0">
|
||||
Qta Extra
|
||||
</div>
|
||||
<div class="px-0">@($"{RecMSE.extraVal}")</div>
|
||||
<div class="px-0">@($"{CRecMSE.extraVal}")</div>
|
||||
</div>
|
||||
}
|
||||
</div>
|
||||
@@ -282,15 +282,15 @@ else
|
||||
<div class="w-100 fs-4">
|
||||
<div class="text-light d-flex justify-content-between small lh-sm">
|
||||
<div class="px-0">ART</div>
|
||||
<div class="px-0">@RecMSE.CodArticolo</div>
|
||||
<div class="px-0">@CRecMSE.CodArticolo</div>
|
||||
</div>
|
||||
<div class="text-end text-light d-flex justify-content-between small lh-sm">
|
||||
<div class="px-0">ODL</div>
|
||||
<div class="px-0">@RecMSE.IdxOdl</div>
|
||||
<div class="px-0">@CRecMSE.IdxOdl</div>
|
||||
</div>
|
||||
<div class="text-end text-light d-flex justify-content-between small lh-sm">
|
||||
<div class="px-0">PODL:</div>
|
||||
<div class="px-0">@RecMSE.IdxPOdl</div>
|
||||
<div class="px-0">@CRecMSE.IdxPOdl</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -308,13 +308,13 @@ else
|
||||
}
|
||||
</div>
|
||||
</div>
|
||||
<div class="col mb-2 mx-1 py-2 @RecMSE.Semaforo rounded" @onclick="ShowDetail">
|
||||
<div class="col mb-2 mx-1 py-2 @CRecMSE.Semaforo rounded" @onclick="ShowDetail">
|
||||
<div class="d-flex justify-content-center">
|
||||
<div class="p-0 mr-auto me-1">
|
||||
@RecMSE.DescrizioneStato
|
||||
@CRecMSE.DescrizioneStato
|
||||
</div>
|
||||
<div class="p-0">
|
||||
<b>@(FormatDurata(RecMSE.Durata))</b>
|
||||
<b>@(FormatDurata(CRecMSE.Durata))</b>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -346,7 +346,7 @@ else
|
||||
}
|
||||
@if (enableDisegno && showDraw)
|
||||
{
|
||||
string docUrl = string.IsNullOrEmpty(RecMSE.Disegno) ? $"disegni/{RecMSE.CodArticolo}.pdf" : $"disegni/{RecMSE.Disegno}.pdf";
|
||||
string docUrl = string.IsNullOrEmpty(CRecMSE.Disegno) ? $"disegni/{CRecMSE.CodArticolo}.pdf" : $"disegni/{CRecMSE.Disegno}.pdf";
|
||||
<div class="bg-light p-1">
|
||||
<PdfDisplay Width="100%" PdfUrl="@docUrl" HeightList="@heightList"></PdfDisplay>
|
||||
</div>
|
||||
|
||||
@@ -11,9 +11,43 @@ namespace MP_TAB3.Components
|
||||
{
|
||||
public partial class MachineBlock
|
||||
{
|
||||
#region Protected Fields
|
||||
|
||||
protected string baseCss = "sem";
|
||||
protected int currMaxVal = 1000;
|
||||
protected List<CircleGaugeMulti.CircSegm> innerCircleVals = new List<CircleGaugeMulti.CircSegm>();
|
||||
protected int kaFactor = 60 / 2;
|
||||
protected int maxVal = 1000;
|
||||
protected List<CircleGaugeMulti.CircSegm> outerCircleVals = new List<CircleGaugeMulti.CircSegm>();
|
||||
|
||||
#endregion Protected Fields
|
||||
|
||||
#region Private Fields
|
||||
|
||||
private static NLog.Logger Log = LogManager.GetCurrentClassLogger();
|
||||
private bool enableDisegno = false;
|
||||
private bool forceCloseOdl = true;
|
||||
private int IdxOdl = 0;
|
||||
private int IdxOdlAltra = 0;
|
||||
private string imgBasePath = "";
|
||||
private bool inAttr = false;
|
||||
private bool isLoading = false;
|
||||
private bool isMulti = false;
|
||||
private bool LastFullMode = true;
|
||||
private string LastIdxMacchSub = "";
|
||||
private int LastKeepAliveMin = 5;
|
||||
private MappaStatoExpl? LastRecMSE = null;
|
||||
private bool LastShowCard = true;
|
||||
private bool showOdlDetail = false;
|
||||
private bool showPodl = false;
|
||||
|
||||
#endregion Private Fields
|
||||
|
||||
#region Public Properties
|
||||
|
||||
public string currIpv4 { get; set; } = "";
|
||||
#if false
|
||||
public string currIpv4 { get; set; } = "";
|
||||
#endif
|
||||
|
||||
[Parameter]
|
||||
public bool doBlink { get; set; } = false;
|
||||
@@ -28,83 +62,19 @@ namespace MP_TAB3.Components
|
||||
public string IdxMacchSub { get; set; } = "";
|
||||
|
||||
[Parameter]
|
||||
public int keepAliveMin { get; set; } = 5;
|
||||
public int KeepAliveMin { get; set; } = 5;
|
||||
|
||||
[Parameter]
|
||||
public MappaStatoExpl? RecMSE { get; set; } = null;
|
||||
|
||||
[Parameter]
|
||||
public bool showCard { get; set; }
|
||||
public bool ShowCard { get; set; }
|
||||
|
||||
[Parameter]
|
||||
public int Width { get; set; } = 0;
|
||||
|
||||
#endregion Public Properties
|
||||
|
||||
#region Public Methods
|
||||
|
||||
/// <summary>
|
||||
/// formatta la durata in minuti in un modo "human readable" gg/ore/min
|
||||
/// </summary>
|
||||
/// <param name="minuti">minuti</param>
|
||||
/// <returns></returns>
|
||||
public static string FormatDurata(double? minuti)
|
||||
{
|
||||
string answ = "??";
|
||||
TimeSpan tempo = TimeSpan.FromMinutes(minuti ?? 0);
|
||||
if (tempo.TotalMinutes < 60)
|
||||
{
|
||||
answ = $"{tempo.Minutes:00}:{tempo.Seconds:00}";
|
||||
}
|
||||
else if (tempo.TotalHours < 24)
|
||||
{
|
||||
answ = $"{tempo.Hours}h {tempo.Minutes}m";
|
||||
}
|
||||
else
|
||||
{
|
||||
answ = $"{tempo.Days}g {tempo.Hours}h";
|
||||
}
|
||||
return answ;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// url completo immagine
|
||||
/// </summary>
|
||||
/// <param name="url"></param>
|
||||
/// <returns></returns>
|
||||
public string ImgUrlMacc(string url)
|
||||
{
|
||||
if (string.IsNullOrEmpty(url.ToString()))
|
||||
{
|
||||
url = "Steamware.png";
|
||||
}
|
||||
string fullPath = Path.Combine(imgBasePath, url);
|
||||
return fullPath;
|
||||
}
|
||||
|
||||
protected int NumScartiConf
|
||||
{
|
||||
get => datiProdAct != null ? datiProdAct.PzConfScarto - datiProdAct.PzConfRilav : 0;
|
||||
}
|
||||
|
||||
#endregion Public Methods
|
||||
|
||||
#region Protected Fields
|
||||
|
||||
protected string baseCss = "sem";
|
||||
|
||||
protected int currMaxVal = 1000;
|
||||
|
||||
protected List<CircleGaugeMulti.CircSegm> innerCircleVals = new List<CircleGaugeMulti.CircSegm>();
|
||||
|
||||
protected int kaFactor = 60 / 2;
|
||||
|
||||
protected int maxVal = 1000;
|
||||
|
||||
protected List<CircleGaugeMulti.CircSegm> outerCircleVals = new List<CircleGaugeMulti.CircSegm>();
|
||||
|
||||
#endregion Protected Fields
|
||||
|
||||
#region Protected Properties
|
||||
|
||||
[Inject]
|
||||
@@ -217,6 +187,11 @@ namespace MP_TAB3.Components
|
||||
[Inject]
|
||||
protected NavigationManager NavMan { get; set; } = null!;
|
||||
|
||||
protected int NumScartiConf
|
||||
{
|
||||
get => datiProdAct != null ? datiProdAct.PzConfScarto - datiProdAct.PzConfRilav : 0;
|
||||
}
|
||||
|
||||
[Inject]
|
||||
protected StatusData SDService { get; set; } = null!;
|
||||
|
||||
@@ -228,8 +203,136 @@ namespace MP_TAB3.Components
|
||||
|
||||
#endregion Protected Properties
|
||||
|
||||
#region Private Properties
|
||||
|
||||
/// <summary>
|
||||
/// Info correnti secondo tipo selezione
|
||||
/// </summary>
|
||||
private MappaStatoExpl? CRecMSE
|
||||
{
|
||||
get
|
||||
{
|
||||
MappaStatoExpl? answ = RecMSE;
|
||||
if (!string.IsNullOrEmpty(IdxMacchSub))
|
||||
{
|
||||
answ = RecMSESub;
|
||||
}
|
||||
return answ;
|
||||
}
|
||||
}
|
||||
|
||||
private ODLExpModel currOdl { get; set; } = new ODLExpModel();
|
||||
private PODLExpModel currPodl { get; set; } = new PODLExpModel();
|
||||
private Dictionary<string, string> heightList { get; set; } = new Dictionary<string, string>() { { "200", "200px" }, { "400", "400px" }, { "600", "600px" }, { "800", "800px" }, { "1000", "1000px" } };
|
||||
|
||||
/// <summary>
|
||||
/// Restituisce il codice IdxMacchina dell'altra tavola (se multi) altrimenti la stessa macchina...
|
||||
/// </summary>
|
||||
private string idxMaccAltraTav
|
||||
{
|
||||
get
|
||||
{
|
||||
string answ = "";
|
||||
if (RecMSE != null)
|
||||
{
|
||||
try
|
||||
{
|
||||
// verifico se SIA una tavola (ha char "#")
|
||||
int iSharp = IdxMaccMain.IndexOf('#');
|
||||
if (iSharp > 0)
|
||||
{
|
||||
// ora verifico SE ALTRA TAVOLA ha ODL...
|
||||
string nomeTav = IdxMaccMain.Substring(iSharp);
|
||||
string altraTav = nomeTav.Substring(0, nomeTav.Length - 1);
|
||||
altraTav += nomeTav.EndsWith("1") ? "2" : "1";
|
||||
// sistemo nome
|
||||
answ = IdxMaccMain.Replace(nomeTav, altraTav);
|
||||
}
|
||||
}
|
||||
catch
|
||||
{ }
|
||||
}
|
||||
return answ;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Macchina selezionata MAIN
|
||||
/// </summary>
|
||||
private string IdxMaccMain
|
||||
{
|
||||
get => CRecMSE != null ? CRecMSE.IdxMacchina : "";
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Macchina corrente (main oppure sub)
|
||||
/// </summary>
|
||||
private string IdxMaccCur
|
||||
{
|
||||
get => string.IsNullOrEmpty(IdxMacchSub) ? IdxMaccMain : IdxMacchSub;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Boolean Mobile vs Desktop
|
||||
/// </summary>
|
||||
private bool isMobile { get; set; }
|
||||
|
||||
private MappaStatoExpl? RecMSESub { get; set; } = null;
|
||||
|
||||
private bool showDraw { get; set; } = false;
|
||||
|
||||
#endregion Private Properties
|
||||
|
||||
#region Public Methods
|
||||
|
||||
/// <summary>
|
||||
/// formatta la durata in minuti in un modo "human readable" gg/ore/min
|
||||
/// </summary>
|
||||
/// <param name="minuti">minuti</param>
|
||||
/// <returns></returns>
|
||||
public static string FormatDurata(double? minuti)
|
||||
{
|
||||
string answ = "??";
|
||||
TimeSpan tempo = TimeSpan.FromMinutes(minuti ?? 0);
|
||||
if (tempo.TotalMinutes < 60)
|
||||
{
|
||||
answ = $"{tempo.Minutes:00}:{tempo.Seconds:00}";
|
||||
}
|
||||
else if (tempo.TotalHours < 24)
|
||||
{
|
||||
answ = $"{tempo.Hours}h {tempo.Minutes}m";
|
||||
}
|
||||
else
|
||||
{
|
||||
answ = $"{tempo.Days}g {tempo.Hours}h";
|
||||
}
|
||||
return answ;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// url completo immagine
|
||||
/// </summary>
|
||||
/// <param name="url"></param>
|
||||
/// <returns></returns>
|
||||
public string ImgUrlMacc(string url)
|
||||
{
|
||||
if (string.IsNullOrEmpty(url.ToString()))
|
||||
{
|
||||
url = "Steamware.png";
|
||||
}
|
||||
string fullPath = Path.Combine(imgBasePath, url);
|
||||
return fullPath;
|
||||
}
|
||||
|
||||
#endregion Public Methods
|
||||
|
||||
#region Protected Methods
|
||||
|
||||
protected string isDisabled(bool testCond)
|
||||
{
|
||||
return testCond ? $"disabled" : "";
|
||||
}
|
||||
|
||||
protected override async Task OnAfterRenderAsync(bool firstRender)
|
||||
{
|
||||
if (firstRender)
|
||||
@@ -244,6 +347,8 @@ namespace MP_TAB3.Components
|
||||
protected override async Task OnInitializedAsync()
|
||||
{
|
||||
isLoading = true;
|
||||
// salvo i parametri precedenti x calcolare variazioni...
|
||||
saveParams();
|
||||
// abilitazione disegni...
|
||||
TabDServ.ConfigGetVal("enableDisegno", ref enableDisegno);
|
||||
await ReloadXDL(true);
|
||||
@@ -262,33 +367,38 @@ namespace MP_TAB3.Components
|
||||
|
||||
protected override async Task OnParametersSetAsync()
|
||||
{
|
||||
DateTime adesso = DateTime.Now;
|
||||
isLoading = RecMSE == null;
|
||||
// controllo SE ho variazioni così rileggo
|
||||
if (RecMSE != null)
|
||||
// controllo variazione parametri...
|
||||
if (paramsChanged())
|
||||
{
|
||||
if (SDService.MachNumPzGet(RecMSE.IdxMacchina) != RecMSE.PezziProd || SDService.MachProdStGet(RecMSE.IdxMacchina).IdxOdl != RecMSE.IdxOdl || (datiProdAct != null && datiProdAct.PzTotODL != RecMSE.PezziProd))
|
||||
saveParams();
|
||||
DateTime adesso = DateTime.Now;
|
||||
isLoading = RecMSE == null;
|
||||
// controllo SE ho variazioni così rileggo
|
||||
if (!string.IsNullOrEmpty(IdxMacchSub) && RecMSE != null)
|
||||
{
|
||||
datiProdAct = await TabDServ.StatoProdMacchina(RecMSE.IdxMacchina, adesso);
|
||||
SDService.MachProdStSet(RecMSE.IdxMacchina, datiProdAct);
|
||||
SDService.MachNumPzSet(RecMSE.IdxMacchina, RecMSE.PezziProd);
|
||||
RecMSESub = TabDServ.MseGetSub(RecMSE.IdxMacchina, IdxMacchSub, true);
|
||||
}
|
||||
else
|
||||
{
|
||||
datiProdAct = SDService.MachProdStGet(RecMSE.IdxMacchina);
|
||||
RecMSESub = RecMSE;
|
||||
}
|
||||
|
||||
if (string.IsNullOrEmpty(IdxMaccSel))
|
||||
if (CRecMSE != null)
|
||||
{
|
||||
IdxMaccSel = RecMSE.IdxMacchina;
|
||||
if (SDService.MachNumPzGet(IdxMaccCur) != CRecMSE.PezziProd || SDService.MachProdStGet(IdxMaccCur).IdxOdl != CRecMSE.IdxOdl || (datiProdAct != null && datiProdAct.PzTotODL != CRecMSE.PezziProd))
|
||||
{
|
||||
datiProdAct = await TabDServ.StatoProdMacchina(IdxMaccCur, adesso);
|
||||
SDService.MachProdStSet(IdxMaccCur, datiProdAct);
|
||||
SDService.MachNumPzSet(IdxMaccCur, CRecMSE.PezziProd);
|
||||
}
|
||||
else
|
||||
{
|
||||
datiProdAct = SDService.MachProdStGet(IdxMaccCur);
|
||||
}
|
||||
isMulti = SMServ.DictMacchMulti[IdxMaccMain] == 1;
|
||||
await ReloadXDL(true);
|
||||
}
|
||||
isMulti = SMServ.DictMacchMulti[RecMSE.IdxMacchina] == 1;
|
||||
setGaugeVals();
|
||||
}
|
||||
if (!string.IsNullOrEmpty(IdxMacchSub) && RecMSE != null)
|
||||
{
|
||||
RecMSE = TabDServ.MseGetSub(RecMSE.IdxMacchina, IdxMacchSub, true);
|
||||
}
|
||||
setGaugeVals();
|
||||
}
|
||||
|
||||
protected void setGaugeVals()
|
||||
@@ -297,20 +407,20 @@ namespace MP_TAB3.Components
|
||||
{
|
||||
innerCircleVals.Clear();
|
||||
outerCircleVals.Clear();
|
||||
currMaxVal = int.Parse(RecMSE.NumPezzi.ToString()!);
|
||||
innerCircleVals.Add(new CircleGaugeMulti.CircSegm() { Color = "#FFC107", Value = RecMSE.PezziProd });
|
||||
if (RecMSE.PezziConf > 0)
|
||||
currMaxVal = int.Parse(CRecMSE.NumPezzi.ToString()!);
|
||||
innerCircleVals.Add(new CircleGaugeMulti.CircSegm() { Color = "#FFC107", Value = CRecMSE.PezziProd });
|
||||
if (CRecMSE.PezziConf > 0)
|
||||
{
|
||||
innerCircleVals.Add(new CircleGaugeMulti.CircSegm() { Color = "#198754", Value = RecMSE.PezziConf });
|
||||
innerCircleVals.Add(new CircleGaugeMulti.CircSegm() { Color = "#198754", Value = CRecMSE.PezziConf });
|
||||
// se ho scarti aggiungo all'inizio
|
||||
if (datiProdAct != null && datiProdAct.PzConfScarto > 0)
|
||||
{
|
||||
innerCircleVals.Add(new CircleGaugeMulti.CircSegm() { Color = "#CD1916", Value = datiProdAct.PzConfScarto });
|
||||
}
|
||||
}
|
||||
if (RecMSE.extraVal > 0)
|
||||
if (CRecMSE.extraVal > 0)
|
||||
{
|
||||
outerCircleVals.Add(new CircleGaugeMulti.CircSegm() { Color = "#1367FD", Value = RecMSE.extraVal });
|
||||
outerCircleVals.Add(new CircleGaugeMulti.CircSegm() { Color = "#1367FD", Value = CRecMSE.extraVal });
|
||||
}
|
||||
//Log.Trace($"MBlock | {RecMSE.IdxMacchina} | 03");
|
||||
}
|
||||
@@ -331,120 +441,38 @@ namespace MP_TAB3.Components
|
||||
|
||||
#endregion Protected Methods
|
||||
|
||||
#region Private Fields
|
||||
|
||||
private static NLog.Logger Log = LogManager.GetCurrentClassLogger();
|
||||
private bool enableDisegno = false;
|
||||
private bool forceCloseOdl = true;
|
||||
private int IdxOdl = 0;
|
||||
private int IdxOdlAltra = 0;
|
||||
private string imgBasePath = "";
|
||||
private bool inAttr = false;
|
||||
private bool isLoading = false;
|
||||
private bool isMulti = false;
|
||||
private bool showOdlDetail = false;
|
||||
private bool showPodl = false;
|
||||
|
||||
protected string isDisabled(bool testCond)
|
||||
{
|
||||
return testCond ? $"disabled" : "";
|
||||
}
|
||||
|
||||
#endregion Private Fields
|
||||
|
||||
#region Private Properties
|
||||
|
||||
private ODLExpModel currOdl { get; set; } = new ODLExpModel();
|
||||
private PODLExpModel currPodl { get; set; } = new PODLExpModel();
|
||||
private Dictionary<string, string> heightList { get; set; } = new Dictionary<string, string>() { { "200", "200px" }, { "400", "400px" }, { "600", "600px" }, { "800", "800px" }, { "1000", "1000px" } };
|
||||
|
||||
/// <summary>
|
||||
/// Restituisce il codice IdxMacchina dell'altra tavola (se multi) altrimenti la stessa macchina...
|
||||
/// </summary>
|
||||
private string idxMaccAltraTav
|
||||
{
|
||||
get
|
||||
{
|
||||
string answ = "";
|
||||
if (RecMSE != null)
|
||||
{
|
||||
try
|
||||
{
|
||||
// verifico se SIA una tavola (ha char "#")
|
||||
int iSharp = IdxMaccSel.IndexOf('#');
|
||||
if (iSharp > 0)
|
||||
{
|
||||
// ora verifico SE ALTRA TAVOLA ha ODL...
|
||||
string nomeTav = IdxMaccSel.Substring(iSharp);
|
||||
string altraTav = nomeTav.Substring(0, nomeTav.Length - 1);
|
||||
altraTav += nomeTav.EndsWith("1") ? "2" : "1";
|
||||
// sistemo nome
|
||||
answ = IdxMaccSel.Replace(nomeTav, altraTav);
|
||||
}
|
||||
}
|
||||
catch
|
||||
{ }
|
||||
}
|
||||
return answ;
|
||||
}
|
||||
}
|
||||
|
||||
private string IdxMaccSel { get; set; } = "";
|
||||
|
||||
/// <summary>
|
||||
/// Boolean Mobile vs Desktop
|
||||
/// </summary>
|
||||
private bool isMobile { get; set; }
|
||||
|
||||
private bool showDraw { get; set; } = false;
|
||||
|
||||
#endregion Private Properties
|
||||
|
||||
#region Private Methods
|
||||
|
||||
private string cssComStatus(string semaforo, DateTime? lastUpdateN)
|
||||
/// <summary>
|
||||
/// Verifica variazione parametri
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
private bool paramsChanged()
|
||||
{
|
||||
DateTime lastUpdate = lastUpdateN.HasValue ? (DateTime)lastUpdateN : DateTime.Now.AddHours(-1);
|
||||
string answ = cssStatus(semaforo);
|
||||
if (DateTime.Now.Subtract(lastUpdate).TotalSeconds > (keepAliveMin * kaFactor))
|
||||
{
|
||||
answ = $"{baseCss}Ro";
|
||||
// blink se secondo pari...
|
||||
DateTime adesso = DateTime.Now;
|
||||
int resto = 0;
|
||||
Math.DivRem(adesso.Second, 2, out resto);
|
||||
if (resto == 0)
|
||||
{
|
||||
answ += "_b";
|
||||
}
|
||||
}
|
||||
if (LastFullMode != FullMode)
|
||||
return true;
|
||||
if (LastKeepAliveMin != KeepAliveMin)
|
||||
return true;
|
||||
if (LastShowCard != ShowCard)
|
||||
return true;
|
||||
if (LastIdxMacchSub != IdxMacchSub)
|
||||
return true;
|
||||
if (LastRecMSE != RecMSE)
|
||||
return true;
|
||||
|
||||
return answ;
|
||||
}
|
||||
|
||||
private string cssStatus(string codSemaforo)
|
||||
{
|
||||
// se vuoto --> mostra nero!
|
||||
if (string.IsNullOrEmpty(codSemaforo))
|
||||
{
|
||||
codSemaforo = "sNe";
|
||||
}
|
||||
|
||||
string codColore = codSemaforo.Substring(1, 2);
|
||||
string answ = $"{baseCss}{codColore}";
|
||||
return answ;
|
||||
return false;
|
||||
}
|
||||
|
||||
private async Task ReloadXDL(bool reloadFromOdl)
|
||||
{
|
||||
if (RecMSE != null)
|
||||
if (CRecMSE != null)
|
||||
{
|
||||
int currIdxPOdl = RecMSE.IdxPOdl ?? 0;
|
||||
if (RecMSE != null)
|
||||
int currIdxPOdl = CRecMSE.IdxPOdl ?? 0;
|
||||
if (CRecMSE != null)
|
||||
{
|
||||
if (reloadFromOdl)
|
||||
{
|
||||
currIdxPOdl = RecMSE.IdxPOdl ?? 0;
|
||||
currIdxPOdl = CRecMSE.IdxPOdl ?? 0;
|
||||
}
|
||||
// se ho PODL valido...
|
||||
if (currIdxPOdl > 0)
|
||||
@@ -455,12 +483,12 @@ namespace MP_TAB3.Components
|
||||
{
|
||||
currPodl = new PODLExpModel()
|
||||
{
|
||||
IdxOdl = RecMSE.IdxOdl ?? 0,
|
||||
IdxOdl = CRecMSE.IdxOdl ?? 0,
|
||||
KeyRichiesta = "-",
|
||||
CodArticolo = RecMSE.CodArticolo,
|
||||
DescArticolo = RecMSE.CodArticolo,
|
||||
NumPezzi = RecMSE.NumPezzi,
|
||||
Tcassegnato = RecMSE.TCAssegnato
|
||||
CodArticolo = CRecMSE.CodArticolo,
|
||||
DescArticolo = CRecMSE.CodArticolo,
|
||||
NumPezzi = CRecMSE.NumPezzi,
|
||||
Tcassegnato = CRecMSE.TCAssegnato
|
||||
};
|
||||
}
|
||||
}
|
||||
@@ -473,6 +501,15 @@ namespace MP_TAB3.Components
|
||||
}
|
||||
}
|
||||
|
||||
private void saveParams()
|
||||
{
|
||||
LastIdxMacchSub = IdxMacchSub;
|
||||
LastRecMSE = RecMSE;
|
||||
LastFullMode = FullMode;
|
||||
LastShowCard = ShowCard;
|
||||
LastKeepAliveMin = KeepAliveMin;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Toggle visibilità button
|
||||
/// </summary>
|
||||
@@ -494,7 +531,7 @@ namespace MP_TAB3.Components
|
||||
if (RecMSE != null)
|
||||
{
|
||||
// sistemo idxOdl...
|
||||
var tabOdl = await TabDServ.OdlCurrByMacc(IdxMaccSel, false);
|
||||
var tabOdl = await TabDServ.OdlCurrByMacc(IdxMaccMain, false);
|
||||
IdxOdl = tabOdl.IdxOdl;
|
||||
if (isMulti)
|
||||
{
|
||||
|
||||
@@ -1242,7 +1242,7 @@ namespace MP_TAB3.Components
|
||||
// var pUpd = Task.Run(async () =>
|
||||
// {
|
||||
// // controllo ANCHE che la tav correntemente selezionata NON abbia pezzi da confermare
|
||||
// datiProdAct = await TabDServ.StatoProdMacchina(IdxMaccSel, adesso);
|
||||
// datiProdAct = await TabDServ.StatoProdMacchina(IdxMaccMain, adesso);
|
||||
// answ = datiProdAct.PzConfBuoni == 0 && datiProdAct.Pz2RecScarto == 0;
|
||||
// });
|
||||
// pUpd.Wait();
|
||||
|
||||
@@ -118,118 +118,123 @@
|
||||
</div>
|
||||
</div>
|
||||
}
|
||||
<div class="row textCondens mt-2 px-2">
|
||||
<div class="col-12 py-0 text-start text-uppercase lh-1 fw-bold">
|
||||
Dati Globali ODL
|
||||
</div>
|
||||
<div class="col-6 col-sm p-1">
|
||||
<div class="text-center text-light h-100 px-2 border border-light" style=" background-color: #363636; border-radius: .5rem;">
|
||||
<div class="text-truncate lh-sm pt-1">
|
||||
<span class="small">Cicli Prod <b>(ABCD)</b></span>
|
||||
</div>
|
||||
<div class="d-flex align-items-center text-center justify-content-center">
|
||||
@if (isProcessing)
|
||||
{
|
||||
<i class="fa-solid fa-spinner span"></i>
|
||||
}
|
||||
else
|
||||
{
|
||||
<span class="fw-bold fs-2">@numPzProdotti</span>
|
||||
}
|
||||
<div class="col-12">
|
||||
<div class="row textCondens mt-2 px-2">
|
||||
<div class="col-12 py-0 text-start text-uppercase lh-1 fw-bold">
|
||||
Dati Globali ODL
|
||||
</div>
|
||||
<div class="col-6 col-sm p-1">
|
||||
<div class="text-center text-light h-100 px-2 border border-light" style=" background-color: #363636; border-radius: .5rem;">
|
||||
<div class="text-truncate lh-sm pt-1">
|
||||
<span class="small">Cicli Prod <b>(ABCD)</b></span>
|
||||
</div>
|
||||
<div class="d-flex align-items-center text-center justify-content-center">
|
||||
@if (isProcessing)
|
||||
{
|
||||
<i class="fa-solid fa-spinner span"></i>
|
||||
}
|
||||
else
|
||||
{
|
||||
<span class="fw-bold fs-2">@numPzProdotti</span>
|
||||
}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-6 col-sm p-1">
|
||||
<div class="text-center h-100 px-2 shadows" style=" background-color: #fff3cd; border-radius: .5rem;">
|
||||
<div class="text-truncate lh-sm pt-1">
|
||||
<span class="text-dark small"><b>[A]</b> Da Conf.</span>
|
||||
</div>
|
||||
<div class="text-dark d-flex align-items-center text-center justify-content-center">
|
||||
@if (isProcessing)
|
||||
{
|
||||
<i class="fa-solid fa-spinner span"></i>
|
||||
}
|
||||
else
|
||||
{
|
||||
<span class="fw-bold fs-2">@numPzProdotti2Rec</span>
|
||||
}
|
||||
<div class="col-6 col-sm p-1">
|
||||
<div class="text-center h-100 px-2 shadows" style=" background-color: #fff3cd; border-radius: .5rem;">
|
||||
<div class="text-truncate lh-sm pt-1">
|
||||
<span class="text-dark small"><b>[A]</b> Da Conf.</span>
|
||||
</div>
|
||||
<div class="text-dark d-flex align-items-center text-center justify-content-center">
|
||||
@if (isProcessing)
|
||||
{
|
||||
<i class="fa-solid fa-spinner span"></i>
|
||||
}
|
||||
else
|
||||
{
|
||||
<span class="fw-bold fs-2">@numPzProdotti2Rec</span>
|
||||
}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-6 col-sm p-1">
|
||||
<div class="text-center h-100 px-2" style=" background-color: #f8abcd; border-radius: .5rem;">
|
||||
<div class="text-truncate lh-sm pt-1">
|
||||
<span class="text-dark small"><b>[B]</b> Scarti Vers.</span>
|
||||
</div>
|
||||
<div class="text-dark d-flex align-items-center text-center justify-content-center">
|
||||
@if (isProcessing)
|
||||
{
|
||||
<i class="fa-solid fa-spinner span"></i>
|
||||
}
|
||||
else
|
||||
{
|
||||
<span class="fw-bold fs-2">@numPzScaConf</span>
|
||||
}
|
||||
<div class="col-6 col-sm p-1">
|
||||
<div class="text-center h-100 px-2" style=" background-color: #f8abcd; border-radius: .5rem;">
|
||||
<div class="text-truncate lh-sm pt-1">
|
||||
<span class="text-dark small"><b>[B]</b> Scarti Vers.</span>
|
||||
</div>
|
||||
<div class="text-dark d-flex align-items-center text-center justify-content-center">
|
||||
@if (isProcessing)
|
||||
{
|
||||
<i class="fa-solid fa-spinner span"></i>
|
||||
}
|
||||
else
|
||||
{
|
||||
<span class="fw-bold fs-2">@numPzScaConf</span>
|
||||
}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-6 col-sm p-1">
|
||||
<div class="text-center h-100 px-2" style=" background-color: #cff4fc; border-radius: .5rem;">
|
||||
<div class="text-truncate lh-sm pt-1">
|
||||
<span class="text-dark small"><b>[C]</b> Rilav Vers.</span>
|
||||
</div>
|
||||
<div class="text-dark d-flex align-items-center text-center justify-content-center">
|
||||
@if (isProcessing)
|
||||
{
|
||||
<i class="fa-solid fa-spinner span"></i>
|
||||
}
|
||||
else
|
||||
{
|
||||
<span class="fw-bold fs-2">@numPzRilavConf</span>
|
||||
}
|
||||
<div class="col-6 col-sm p-1">
|
||||
<div class="text-center h-100 px-2" style=" background-color: #cff4fc; border-radius: .5rem;">
|
||||
<div class="text-truncate lh-sm pt-1">
|
||||
<span class="text-dark small"><b>[C]</b> Rilav Vers.</span>
|
||||
</div>
|
||||
<div class="text-dark d-flex align-items-center text-center justify-content-center">
|
||||
@if (isProcessing)
|
||||
{
|
||||
<i class="fa-solid fa-spinner span"></i>
|
||||
}
|
||||
else
|
||||
{
|
||||
<span class="fw-bold fs-2">@numPzRilavConf</span>
|
||||
}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-6 col-sm p-1">
|
||||
<div class="text-center h-100 px-2" style=" background-color: #d1e7dd; border-radius: .5rem;">
|
||||
<div class="text-truncate lh-sm pt-1">
|
||||
<span class="text-dark small"><b>[D]</b> Buoni Vers.</span>
|
||||
</div>
|
||||
<div class="text-dark d-flex align-items-center text-center justify-content-center">
|
||||
@if (isProcessing)
|
||||
{
|
||||
<i class="fa-solid fa-spinner span"></i>
|
||||
}
|
||||
else
|
||||
{
|
||||
<span class="fw-bold fs-2">@numPzBuoniConf</span>
|
||||
}
|
||||
<div class="col-6 col-sm p-1">
|
||||
<div class="text-center h-100 px-2" style=" background-color: #d1e7dd; border-radius: .5rem;">
|
||||
<div class="text-truncate lh-sm pt-1">
|
||||
<span class="text-dark small"><b>[D]</b> Buoni Vers.</span>
|
||||
</div>
|
||||
<div class="text-dark d-flex align-items-center text-center justify-content-center">
|
||||
@if (isProcessing)
|
||||
{
|
||||
<i class="fa-solid fa-spinner span"></i>
|
||||
}
|
||||
else
|
||||
{
|
||||
<span class="fw-bold fs-2">@numPzBuoniConf</span>
|
||||
}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@if (!confProdActive)
|
||||
{
|
||||
<div class="row textCondens mt-1 py-1">
|
||||
<div class="col-6 pe-1">
|
||||
<a class="btn btn-lg btn-primary w-100 py-2 px-1 " style="min-width: 6rem;" href="scrap"><i class="fa fa-bug pe-1"></i>SCARTI</a>
|
||||
</div>
|
||||
<div class=" col-6 ps-1">
|
||||
<a class="btn btn-lg btn-primary w-100 py-2 px-1" style="min-width: 6rem;" href="controls"><i class="fa fa-wrench pe-1"></i>CONTROLLI</a>
|
||||
<div class="col-12">
|
||||
<div class="row textCondens mt-1 py-1">
|
||||
<div class="col-6 pe-1">
|
||||
<a class="btn btn-lg btn-primary w-100 py-2 px-1 " style="min-width: 6rem;" href="scrap"><i class="fa fa-bug pe-1"></i>SCARTI</a>
|
||||
</div>
|
||||
<div class=" col-6 ps-1">
|
||||
<a class="btn btn-lg btn-primary w-100 py-2 px-1" style="min-width: 6rem;" href="controls"><i class="fa fa-wrench pe-1"></i>CONTROLLI</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
}
|
||||
else
|
||||
{
|
||||
<div class="row textCondens mt-1 py-1">
|
||||
<div class="col-6 pe-1">
|
||||
<a class="btn btn-lg btn-secondary w-100 py-2 px-1 disabled" style="min-width: 6rem;"><i class="fa fa-bug pe-1"></i> SCARTI</a>
|
||||
</div>
|
||||
<div class=" col-6 ps-1">
|
||||
<a class="btn btn-lg btn-secondary w-100 py-2 px-1 disabled" style="min-width: 6rem;"><i class="fa fa-wrench pe-1"></i> CONTROLLI</a>
|
||||
<div class="col-12">
|
||||
<div class="row textCondens mt-1 py-1">
|
||||
<div class="col-6 pe-1">
|
||||
<a class="btn btn-lg btn-secondary w-100 py-2 px-1 disabled" style="min-width: 6rem;"><i class="fa fa-bug pe-1"></i> SCARTI</a>
|
||||
</div>
|
||||
<div class=" col-6 ps-1">
|
||||
<a class="btn btn-lg btn-secondary w-100 py-2 px-1 disabled" style="min-width: 6rem;"><i class="fa fa-wrench pe-1"></i> CONTROLLI</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
}
|
||||
@if (!string.IsNullOrEmpty(lblOut))
|
||||
{
|
||||
|
||||
+12
-6
@@ -3,11 +3,22 @@
|
||||
<PropertyGroup>
|
||||
<TargetFramework>net6.0</TargetFramework>
|
||||
<Nullable>enable</Nullable>
|
||||
<Version>6.16.2502.2815</Version>
|
||||
<Version>6.16.2503.713</Version>
|
||||
<ImplicitUsings>enable</ImplicitUsings>
|
||||
<RootNamespace>MP_TAB3</RootNamespace>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<Compile Remove="Controllers\**" />
|
||||
<Compile Remove="Data\**" />
|
||||
<Content Remove="Controllers\**" />
|
||||
<Content Remove="Data\**" />
|
||||
<EmbeddedResource Remove="Controllers\**" />
|
||||
<EmbeddedResource Remove="Data\**" />
|
||||
<None Remove="Controllers\**" />
|
||||
<None Remove="Data\**" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<Compile Remove="Components\MseSampler.razor.cs" />
|
||||
</ItemGroup>
|
||||
@@ -34,11 +45,6 @@
|
||||
<PackageReference Include="System.Text.Encodings.Web" Version="6.0.0" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<Folder Include="Controllers\" />
|
||||
<Folder Include="Data\" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<None Include="compilerconfig.json" />
|
||||
<None Include="Properties\PublishProfiles\IIS01.pubxml.user" />
|
||||
|
||||
@@ -1,20 +1,20 @@
|
||||
@page "/force-reset"
|
||||
|
||||
<div class="card shadow mt-5">
|
||||
<div class="card-header">
|
||||
<img class="img-fluid" src="./images/LogoMapoFull.png" />
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<LoadingData DisplaySize="LoadingData.CtrlSize.Large" Title="Cleaning Up cache..." DisplayMode="LoadingData.SpinMode.Growl"></LoadingData>
|
||||
<div class="d-flex justify-content-around">
|
||||
<div class="col-12 col-md-10 col-lg-8 col-xl-6 ">
|
||||
|
||||
<div class="card shadow mt-5">
|
||||
<div class="card-header">
|
||||
<img class="img-fluid" src="./images/LogoMapoFull.png" />
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<ProgressDisplay RefreshInterval="50" Title="@title" MaxVal="100" CurrVal="@currVal" NextVal="@nextVal" ExpTimeMSec="@expTimeMsec" DisplaySize="ProgressDisplay.ModalSize.Medium"></ProgressDisplay>
|
||||
<LoadingData DisplaySize="LoadingData.CtrlSize.Large" Title="Cleaning Up cache..." DisplayMode="LoadingData.SpinMode.Growl"></LoadingData>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@* <ul class="list-group">
|
||||
<li class="list-group-item active">Reset and reload data</li>
|
||||
<li class="list-group-item">Redis Cache reset</li>
|
||||
<li class="list-group-item">Browser Local Data reset</li>
|
||||
<li class="list-group-item">Browser Session Data reset</li>
|
||||
</ul> *@
|
||||
|
||||
@code {
|
||||
|
||||
@@ -23,19 +23,50 @@
|
||||
[Inject]
|
||||
protected MessageService MsgServ { get; set; } = null!;
|
||||
|
||||
private int currVal = 0;
|
||||
private int nextVal = 0;
|
||||
private int expTimeMsec = 10;
|
||||
private int bDelay = 350;
|
||||
private string title = "...";
|
||||
/// <summary>
|
||||
/// Esecuzione task di reset...
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
protected override async Task OnInitializedAsync()
|
||||
{
|
||||
title = "Reset and Reload Data";
|
||||
currVal = 0;
|
||||
nextVal = 10;
|
||||
await InvokeAsync(StateHasChanged);
|
||||
// svuoto cache
|
||||
MsgServ.LastIdxMacchina = "";
|
||||
await Task.Delay(bDelay);
|
||||
title = "Clearing Local Browser Data";
|
||||
currVal = 10;
|
||||
nextVal = 30;
|
||||
await InvokeAsync(StateHasChanged);
|
||||
await MsgServ.ClearLocalStor();
|
||||
await Task.Delay(bDelay);
|
||||
title = "Clearing Session Browser Data";
|
||||
currVal = 30;
|
||||
nextVal = 50;
|
||||
await InvokeAsync(StateHasChanged);
|
||||
await MsgServ.ClearSessionStor();
|
||||
await Task.Delay(bDelay);
|
||||
title = "Final Cache cleanup...";
|
||||
currVal = 50;
|
||||
nextVal = 80;
|
||||
MsgServ.RigaOper = null;
|
||||
MsgServ.LastIdxMacchina = "";
|
||||
await InvokeAsync(StateHasChanged);
|
||||
await Task.Delay(2 * bDelay);
|
||||
// attendo
|
||||
await Task.Delay(1000);
|
||||
title = "Reload!";
|
||||
currVal = 80;
|
||||
nextVal = 100;
|
||||
await InvokeAsync(StateHasChanged);
|
||||
// rimando alla home...
|
||||
await Task.Delay(bDelay);
|
||||
navManager.NavigateTo("", true);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -36,7 +36,7 @@
|
||||
{
|
||||
currIdx++;
|
||||
<div class="col ps-0 pe-1">
|
||||
<MachineBlock RecMSE="@item" FullMode="true" Width="@Width" Height="@Height" showCard="@ShowCard" doBlink="@doBlink"></MachineBlock>
|
||||
<MachineBlock RecMSE="@item" FullMode="true" Width="@Width" Height="@Height" ShowCard="@ShowCard" doBlink="@doBlink"></MachineBlock>
|
||||
</div>
|
||||
@if (currIdx >= maxBlocks)
|
||||
{
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
<body>
|
||||
<i>Modulo MAPOSPEC </i>
|
||||
<h4>Versione: 6.16.2502.2815</h4>
|
||||
<h4>Versione: 6.16.2503.713</h4>
|
||||
<br /> Note di rilascio:
|
||||
<ul>
|
||||
<li>
|
||||
|
||||
@@ -1 +1 @@
|
||||
6.16.2502.2815
|
||||
6.16.2503.713
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<item>
|
||||
<version>6.16.2502.2815</version>
|
||||
<version>6.16.2503.713</version>
|
||||
<url>https://nexus.steamware.net/repository/SWS/MP-TAB3/stable/LAST/MP-TAB3.zip</url>
|
||||
<changelog>https://nexus.steamware.net/repository/SWS/MP-TAB3/stable/LAST/ChangeLog.html</changelog>
|
||||
<mandatory>false</mandatory>
|
||||
|
||||
@@ -29,7 +29,7 @@
|
||||
top: -1px;
|
||||
background-size: cover;
|
||||
}
|
||||
@media (max-width: 1024.98px) {
|
||||
@media (max-width: 1023.98px) {
|
||||
.slideMen:not(.auth) {
|
||||
display: none;
|
||||
}
|
||||
|
||||
@@ -35,7 +35,7 @@
|
||||
}
|
||||
|
||||
|
||||
@media (max-width: 1024.98px) {
|
||||
@media (max-width: 1023.98px) {
|
||||
.slideMen:not(.auth) {
|
||||
display: none;
|
||||
}
|
||||
|
||||
Vendored
+1
-1
@@ -1 +1 @@
|
||||
.navbar-toggler{appearance:none;cursor:pointer;width:3.5rem;height:2.5rem;color:#fff;position:absolute;top:.5rem;right:1rem;border:1px solid rgba(255,255,255,.1);background:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%28255, 255, 255, 0.55%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e") no-repeat center/1.75rem rgba(255,255,255,.1);}.navbar-toggler:checked{background-color:rgba(255,255,255,.5);}.top-row{height:3.5rem;background-color:rgba(0,0,0,.4);}.navbar-brand{font-size:1.1rem;}.bi{display:inline-block;position:relative;width:1.25rem;height:1.25rem;margin-right:.75rem;top:-1px;background-size:cover;}@media(max-width:1024.98px){.slideMen:not(.auth){display:none;}}.bi-house-door-fill{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='white' class='bi bi-house-door-fill' viewBox='0 0 16 16'%3E%3Cpath d='M6.5 14.5v-3.505c0-.245.25-.495.5-.495h2c.25 0 .5.25.5.5v3.5a.5.5 0 0 0 .5.5h4a.5.5 0 0 0 .5-.5v-7a.5.5 0 0 0-.146-.354L13 5.793V2.5a.5.5 0 0 0-.5-.5h-1a.5.5 0 0 0-.5.5v1.293L8.354 1.146a.5.5 0 0 0-.708 0l-6 6A.5.5 0 0 0 1.5 7.5v7a.5.5 0 0 0 .5.5h4a.5.5 0 0 0 .5-.5Z'/%3E%3C/svg%3E");}.bi-plus-square-fill{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='white' class='bi bi-plus-square-fill' viewBox='0 0 16 16'%3E%3Cpath d='M2 0a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2H2zm6.5 4.5v3h3a.5.5 0 0 1 0 1h-3v3a.5.5 0 0 1-1 0v-3h-3a.5.5 0 0 1 0-1h3v-3a.5.5 0 0 1 1 0z'/%3E%3C/svg%3E");}.bi-list-nested{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='white' class='bi bi-list-nested' viewBox='0 0 16 16'%3E%3Cpath fill-rule='evenodd' d='M4.5 11.5A.5.5 0 0 1 5 11h10a.5.5 0 0 1 0 1H5a.5.5 0 0 1-.5-.5zm-2-4A.5.5 0 0 1 3 7h10a.5.5 0 0 1 0 1H3a.5.5 0 0 1-.5-.5zm-2-4A.5.5 0 0 1 1 3h10a.5.5 0 0 1 0 1H1a.5.5 0 0 1-.5-.5z'/%3E%3C/svg%3E");}.nav-item{font-size:.9rem;padding-bottom:.5rem;}.nav-item:first-of-type{padding-top:1rem;}.nav-item:last-of-type{padding-bottom:1rem;}.nav-item ::deep a{color:#212427;border-radius:4px;height:3rem;display:flex;align-items:center;line-height:3rem;}.nav-item ::deep a.active{background-color:#212427;color:#fff;}.nav-item ::deep a:hover{background-color:rgba(33,36,39,.4);color:#fff;}.nav-scrollable{display:none;background-color:#f2f2f2;border-radius:.375rem;}.navbar-toggler:checked~.nav-scrollable{display:block;}@media(min-width:1024px){.navbar-toggler{display:none;}.nav-scrollable{display:block;overflow-y:auto;}}
|
||||
.navbar-toggler{appearance:none;cursor:pointer;width:3.5rem;height:2.5rem;color:#fff;position:absolute;top:.5rem;right:1rem;border:1px solid rgba(255,255,255,.1);background:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%28255, 255, 255, 0.55%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e") no-repeat center/1.75rem rgba(255,255,255,.1);}.navbar-toggler:checked{background-color:rgba(255,255,255,.5);}.top-row{height:3.5rem;background-color:rgba(0,0,0,.4);}.navbar-brand{font-size:1.1rem;}.bi{display:inline-block;position:relative;width:1.25rem;height:1.25rem;margin-right:.75rem;top:-1px;background-size:cover;}@media(max-width:1023.98px){.slideMen:not(.auth){display:none;}}.bi-house-door-fill{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='white' class='bi bi-house-door-fill' viewBox='0 0 16 16'%3E%3Cpath d='M6.5 14.5v-3.505c0-.245.25-.495.5-.495h2c.25 0 .5.25.5.5v3.5a.5.5 0 0 0 .5.5h4a.5.5 0 0 0 .5-.5v-7a.5.5 0 0 0-.146-.354L13 5.793V2.5a.5.5 0 0 0-.5-.5h-1a.5.5 0 0 0-.5.5v1.293L8.354 1.146a.5.5 0 0 0-.708 0l-6 6A.5.5 0 0 0 1.5 7.5v7a.5.5 0 0 0 .5.5h4a.5.5 0 0 0 .5-.5Z'/%3E%3C/svg%3E");}.bi-plus-square-fill{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='white' class='bi bi-plus-square-fill' viewBox='0 0 16 16'%3E%3Cpath d='M2 0a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2H2zm6.5 4.5v3h3a.5.5 0 0 1 0 1h-3v3a.5.5 0 0 1-1 0v-3h-3a.5.5 0 0 1 0-1h3v-3a.5.5 0 0 1 1 0z'/%3E%3C/svg%3E");}.bi-list-nested{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='white' class='bi bi-list-nested' viewBox='0 0 16 16'%3E%3Cpath fill-rule='evenodd' d='M4.5 11.5A.5.5 0 0 1 5 11h10a.5.5 0 0 1 0 1H5a.5.5 0 0 1-.5-.5zm-2-4A.5.5 0 0 1 3 7h10a.5.5 0 0 1 0 1H3a.5.5 0 0 1-.5-.5zm-2-4A.5.5 0 0 1 1 3h10a.5.5 0 0 1 0 1H1a.5.5 0 0 1-.5-.5z'/%3E%3C/svg%3E");}.nav-item{font-size:.9rem;padding-bottom:.5rem;}.nav-item:first-of-type{padding-top:1rem;}.nav-item:last-of-type{padding-bottom:1rem;}.nav-item ::deep a{color:#212427;border-radius:4px;height:3rem;display:flex;align-items:center;line-height:3rem;}.nav-item ::deep a.active{background-color:#212427;color:#fff;}.nav-item ::deep a:hover{background-color:rgba(33,36,39,.4);color:#fff;}.nav-scrollable{display:none;background-color:#f2f2f2;border-radius:.375rem;}.navbar-toggler:checked~.nav-scrollable{display:block;}@media(min-width:1024px){.navbar-toggler{display:none;}.nav-scrollable{display:block;overflow-y:auto;}}
|
||||
@@ -32,7 +32,7 @@ body {
|
||||
.longStopListNotes {
|
||||
height: 100%;
|
||||
}
|
||||
@media (max-width: 640.98px) {
|
||||
@media (max-width: 639.98px) {
|
||||
.longStopListNotes {
|
||||
max-height: 120px;
|
||||
}
|
||||
@@ -124,7 +124,7 @@ a,
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
}
|
||||
@media (max-width: 640.98px) {
|
||||
@media (max-width: 800px) {
|
||||
.top-row:not(.auth) {
|
||||
display: none;
|
||||
}
|
||||
|
||||
@@ -32,7 +32,7 @@ html, body {
|
||||
height: 100%;
|
||||
}
|
||||
|
||||
@media (max-width: 640.98px) {
|
||||
@media (max-width: 639.98px) {
|
||||
.longStopListNotes{
|
||||
max-height: 120px;
|
||||
}
|
||||
@@ -140,7 +140,7 @@ html, body {
|
||||
}
|
||||
|
||||
|
||||
@media (max-width: 640.98px) {
|
||||
@media (max-width: 800px) {
|
||||
.top-row:not(.auth) {
|
||||
display: none;
|
||||
}
|
||||
|
||||
Vendored
+1
-1
@@ -1 +1 @@
|
||||
@import url('open-iconic/font/css/open-iconic-bootstrap.min.css');html,body{font-family:'Open Sans Condensed',sans-serif;background-color:#151321;color:#ededed;}.cardObj{border-radius:.375rem;background:linear-gradient(121deg,rgba(255,255,255,.2) -.71%,rgba(255,255,255,.05) 97.66%);box-shadow:0 4px 24px -1px rgba(0,0,0,.25);flex-shrink:0;}.cardObjNoBL{border-radius:.375rem 0 0 .375rem;background:linear-gradient(121deg,rgba(255,255,255,.2) -.71%,rgba(255,255,255,.05) 97.66%);box-shadow:0 4px 24px -1px rgba(0,0,0,.25);flex-shrink:0;}.cardFullHeight{border-radius:.375rem;background:linear-gradient(121deg,rgba(255,255,255,.2) -.71%,rgba(255,255,255,.05) 97.66%);box-shadow:0 4px 24px -1px rgba(0,0,0,.25);flex-shrink:0;height:100%;}.longStopListNotes{height:100%;}@media(max-width:640.98px){.longStopListNotes{max-height:120px;}}.borderStd{border-radius:.375rem;}.table-dark{--bs-table-color:#fff;--bs-table-bg:transparent;--bs-table-border-color:#4d5154;--bs-table-striped-bg:#2c3034;--bs-table-striped-color:#fff;--bs-table-active-bg:#373b3e;--bs-table-active-color:#fff;--bs-table-hover-bg:#323539;--bs-table-hover-color:#fff;color:var(--bs-table-color);border-color:var(--bs-table-border-color);}h1:focus{outline:0;}a,.btn-link{color:#0071c1;}.btn-primary{color:#fff;background-color:#1b6ec2;border-color:#1861ac;}.content{padding-top:1.1rem;}.valid.modified:not([type=checkbox]){outline:1px solid #26b050;}.invalid{outline:1px solid #f00;}.validation-message{color:#f00;}#blazor-error-ui{background:#ffffe0;bottom:0;box-shadow:0 -1px 2px rgba(0,0,0,.2);display:none;left:0;padding:.6rem 1.25rem .7rem 1.25rem;position:fixed;width:100%;z-index:1000;}#blazor-error-ui .dismiss{cursor:pointer;position:absolute;right:.75rem;top:.5rem;}.blazor-error-boundary{background:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTYiIGhlaWdodD0iNDkiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIG92ZXJmbG93PSJoaWRkZW4iPjxkZWZzPjxjbGlwUGF0aCBpZD0iY2xpcDAiPjxyZWN0IHg9IjIzNSIgeT0iNTEiIHdpZHRoPSI1NiIgaGVpZ2h0PSI0OSIvPjwvY2xpcFBhdGg+PC9kZWZzPjxnIGNsaXAtcGF0aD0idXJsKCNjbGlwMCkiIHRyYW5zZm9ybT0idHJhbnNsYXRlKC0yMzUgLTUxKSI+PHBhdGggZD0iTTI2My41MDYgNTFDMjY0LjcxNyA1MSAyNjUuODEzIDUxLjQ4MzcgMjY2LjYwNiA1Mi4yNjU4TDI2Ny4wNTIgNTIuNzk4NyAyNjcuNTM5IDUzLjYyODMgMjkwLjE4NSA5Mi4xODMxIDI5MC41NDUgOTIuNzk1IDI5MC42NTYgOTIuOTk2QzI5MC44NzcgOTMuNTEzIDI5MSA5NC4wODE1IDI5MSA5NC42NzgyIDI5MSA5Ny4wNjUxIDI4OS4wMzggOTkgMjg2LjYxNyA5OUwyNDAuMzgzIDk5QzIzNy45NjMgOTkgMjM2IDk3LjA2NTEgMjM2IDk0LjY3ODIgMjM2IDk0LjM3OTkgMjM2LjAzMSA5NC4wODg2IDIzNi4wODkgOTMuODA3MkwyMzYuMzM4IDkzLjAxNjIgMjM2Ljg1OCA5Mi4xMzE0IDI1OS40NzMgNTMuNjI5NCAyNTkuOTYxIDUyLjc5ODUgMjYwLjQwNyA1Mi4yNjU4QzI2MS4yIDUxLjQ4MzcgMjYyLjI5NiA1MSAyNjMuNTA2IDUxWk0yNjMuNTg2IDY2LjAxODNDMjYwLjczNyA2Ni4wMTgzIDI1OS4zMTMgNjcuMTI0NSAyNTkuMzEzIDY5LjMzNyAyNTkuMzEzIDY5LjYxMDIgMjU5LjMzMiA2OS44NjA4IDI1OS4zNzEgNzAuMDg4N0wyNjEuNzk1IDg0LjAxNjEgMjY1LjM4IDg0LjAxNjEgMjY3LjgyMSA2OS43NDc1QzI2Ny44NiA2OS43MzA5IDI2Ny44NzkgNjkuNTg3NyAyNjcuODc5IDY5LjMxNzkgMjY3Ljg3OSA2Ny4xMTgyIDI2Ni40NDggNjYuMDE4MyAyNjMuNTg2IDY2LjAxODNaTTI2My41NzYgODYuMDU0N0MyNjEuMDQ5IDg2LjA1NDcgMjU5Ljc4NiA4Ny4zMDA1IDI1OS43ODYgODkuNzkyMSAyNTkuNzg2IDkyLjI4MzcgMjYxLjA0OSA5My41Mjk1IDI2My41NzYgOTMuNTI5NSAyNjYuMTE2IDkzLjUyOTUgMjY3LjM4NyA5Mi4yODM3IDI2Ny4zODcgODkuNzkyMSAyNjcuMzg3IDg3LjMwMDUgMjY2LjExNiA4Ni4wNTQ3IDI2My41NzYgODYuMDU0N1oiIGZpbGw9IiNGRkU1MDAiIGZpbGwtcnVsZT0iZXZlbm9kZCIvPjwvZz48L3N2Zz4=) no-repeat 1rem/1.8rem,#b32121;padding:1rem 1rem 1rem 3.7rem;color:#fff;}.blazor-error-boundary::after{content:"An error has occurred.";}.top-row{background-color:#05173d;justify-content:flex-end;height:3.5rem;display:flex;align-items:center;}.top-row ::deep a,.top-row ::deep .btn-link{white-space:nowrap;text-decoration:none;}.top-row ::deep a:hover,.top-row ::deep .btn-link:hover{text-decoration:underline;}.top-row ::deep a:first-child{overflow:hidden;text-overflow:ellipsis;}@media(max-width:640.98px){.top-row:not(.auth){display:none;}#mainBody{width:100%;}.top-row.auth{justify-content:space-between;}.top-row ::deep a,.top-row ::deep .btn-link{margin-left:0;}}.top-row{position:sticky;top:0;z-index:1;}.top-row.auth ::deep a:first-child{flex:1;text-align:right;width:0;}.top-row,article{padding-left:1rem!important;padding-right:.5rem!important;}
|
||||
@import url('open-iconic/font/css/open-iconic-bootstrap.min.css');html,body{font-family:'Open Sans Condensed',sans-serif;background-color:#151321;color:#ededed;}.cardObj{border-radius:.375rem;background:linear-gradient(121deg,rgba(255,255,255,.2) -.71%,rgba(255,255,255,.05) 97.66%);box-shadow:0 4px 24px -1px rgba(0,0,0,.25);flex-shrink:0;}.cardObjNoBL{border-radius:.375rem 0 0 .375rem;background:linear-gradient(121deg,rgba(255,255,255,.2) -.71%,rgba(255,255,255,.05) 97.66%);box-shadow:0 4px 24px -1px rgba(0,0,0,.25);flex-shrink:0;}.cardFullHeight{border-radius:.375rem;background:linear-gradient(121deg,rgba(255,255,255,.2) -.71%,rgba(255,255,255,.05) 97.66%);box-shadow:0 4px 24px -1px rgba(0,0,0,.25);flex-shrink:0;height:100%;}.longStopListNotes{height:100%;}@media(max-width:639.98px){.longStopListNotes{max-height:120px;}}.borderStd{border-radius:.375rem;}.table-dark{--bs-table-color:#fff;--bs-table-bg:transparent;--bs-table-border-color:#4d5154;--bs-table-striped-bg:#2c3034;--bs-table-striped-color:#fff;--bs-table-active-bg:#373b3e;--bs-table-active-color:#fff;--bs-table-hover-bg:#323539;--bs-table-hover-color:#fff;color:var(--bs-table-color);border-color:var(--bs-table-border-color);}h1:focus{outline:0;}a,.btn-link{color:#0071c1;}.btn-primary{color:#fff;background-color:#1b6ec2;border-color:#1861ac;}.content{padding-top:1.1rem;}.valid.modified:not([type=checkbox]){outline:1px solid #26b050;}.invalid{outline:1px solid #f00;}.validation-message{color:#f00;}#blazor-error-ui{background:#ffffe0;bottom:0;box-shadow:0 -1px 2px rgba(0,0,0,.2);display:none;left:0;padding:.6rem 1.25rem .7rem 1.25rem;position:fixed;width:100%;z-index:1000;}#blazor-error-ui .dismiss{cursor:pointer;position:absolute;right:.75rem;top:.5rem;}.blazor-error-boundary{background:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTYiIGhlaWdodD0iNDkiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIG92ZXJmbG93PSJoaWRkZW4iPjxkZWZzPjxjbGlwUGF0aCBpZD0iY2xpcDAiPjxyZWN0IHg9IjIzNSIgeT0iNTEiIHdpZHRoPSI1NiIgaGVpZ2h0PSI0OSIvPjwvY2xpcFBhdGg+PC9kZWZzPjxnIGNsaXAtcGF0aD0idXJsKCNjbGlwMCkiIHRyYW5zZm9ybT0idHJhbnNsYXRlKC0yMzUgLTUxKSI+PHBhdGggZD0iTTI2My41MDYgNTFDMjY0LjcxNyA1MSAyNjUuODEzIDUxLjQ4MzcgMjY2LjYwNiA1Mi4yNjU4TDI2Ny4wNTIgNTIuNzk4NyAyNjcuNTM5IDUzLjYyODMgMjkwLjE4NSA5Mi4xODMxIDI5MC41NDUgOTIuNzk1IDI5MC42NTYgOTIuOTk2QzI5MC44NzcgOTMuNTEzIDI5MSA5NC4wODE1IDI5MSA5NC42NzgyIDI5MSA5Ny4wNjUxIDI4OS4wMzggOTkgMjg2LjYxNyA5OUwyNDAuMzgzIDk5QzIzNy45NjMgOTkgMjM2IDk3LjA2NTEgMjM2IDk0LjY3ODIgMjM2IDk0LjM3OTkgMjM2LjAzMSA5NC4wODg2IDIzNi4wODkgOTMuODA3MkwyMzYuMzM4IDkzLjAxNjIgMjM2Ljg1OCA5Mi4xMzE0IDI1OS40NzMgNTMuNjI5NCAyNTkuOTYxIDUyLjc5ODUgMjYwLjQwNyA1Mi4yNjU4QzI2MS4yIDUxLjQ4MzcgMjYyLjI5NiA1MSAyNjMuNTA2IDUxWk0yNjMuNTg2IDY2LjAxODNDMjYwLjczNyA2Ni4wMTgzIDI1OS4zMTMgNjcuMTI0NSAyNTkuMzEzIDY5LjMzNyAyNTkuMzEzIDY5LjYxMDIgMjU5LjMzMiA2OS44NjA4IDI1OS4zNzEgNzAuMDg4N0wyNjEuNzk1IDg0LjAxNjEgMjY1LjM4IDg0LjAxNjEgMjY3LjgyMSA2OS43NDc1QzI2Ny44NiA2OS43MzA5IDI2Ny44NzkgNjkuNTg3NyAyNjcuODc5IDY5LjMxNzkgMjY3Ljg3OSA2Ny4xMTgyIDI2Ni40NDggNjYuMDE4MyAyNjMuNTg2IDY2LjAxODNaTTI2My41NzYgODYuMDU0N0MyNjEuMDQ5IDg2LjA1NDcgMjU5Ljc4NiA4Ny4zMDA1IDI1OS43ODYgODkuNzkyMSAyNTkuNzg2IDkyLjI4MzcgMjYxLjA0OSA5My41Mjk1IDI2My41NzYgOTMuNTI5NSAyNjYuMTE2IDkzLjUyOTUgMjY3LjM4NyA5Mi4yODM3IDI2Ny4zODcgODkuNzkyMSAyNjcuMzg3IDg3LjMwMDUgMjY2LjExNiA4Ni4wNTQ3IDI2My41NzYgODYuMDU0N1oiIGZpbGw9IiNGRkU1MDAiIGZpbGwtcnVsZT0iZXZlbm9kZCIvPjwvZz48L3N2Zz4=) no-repeat 1rem/1.8rem,#b32121;padding:1rem 1rem 1rem 3.7rem;color:#fff;}.blazor-error-boundary::after{content:"An error has occurred.";}.top-row{background-color:#05173d;justify-content:flex-end;height:3.5rem;display:flex;align-items:center;}.top-row ::deep a,.top-row ::deep .btn-link{white-space:nowrap;text-decoration:none;}.top-row ::deep a:hover,.top-row ::deep .btn-link:hover{text-decoration:underline;}.top-row ::deep a:first-child{overflow:hidden;text-overflow:ellipsis;}@media(max-width:800px){.top-row:not(.auth){display:none;}#mainBody{width:100%;}.top-row.auth{justify-content:space-between;}.top-row ::deep a,.top-row ::deep .btn-link{margin-left:0;}}.top-row{position:sticky;top:0;z-index:1;}.top-row.auth ::deep a:first-child{flex:1;text-align:right;width:0;}.top-row,article{padding-left:1rem!important;padding-right:.5rem!important;}
|
||||
@@ -84,30 +84,37 @@ namespace MP.Data.Services
|
||||
|
||||
private void ElapsedFastTimer(object? source, System.Timers.ElapsedEventArgs e)
|
||||
{
|
||||
var pUpd = Task.Run(async () =>
|
||||
try
|
||||
{
|
||||
// secondi pari --> blink, secondi dispari --> ricarica
|
||||
DateTime adesso = DateTime.Now;
|
||||
int resto = 0;
|
||||
Math.DivRem(adesso.Second, 2, out resto);
|
||||
if (resto == 0)
|
||||
var pUpd = Task.Run(async () =>
|
||||
{
|
||||
// invio in channel blink il segnale
|
||||
blinkPipe.sendMessage("true");
|
||||
Log.Debug("Elapsed Fast Timer Blink");
|
||||
}
|
||||
else
|
||||
{
|
||||
// invio in channel blink segnale false
|
||||
blinkPipe.sendMessage("false");
|
||||
// rileggo dati...
|
||||
var newData = await MseGetAll();
|
||||
// invio tramite la pipe...
|
||||
dataPipe.sendMessage(JsonConvert.SerializeObject(newData));
|
||||
Log.Debug("Elapsed Fast Timer reload");
|
||||
}
|
||||
});
|
||||
pUpd.Wait();
|
||||
// secondi pari --> blink, secondi dispari --> ricarica
|
||||
DateTime adesso = DateTime.Now;
|
||||
int resto = 0;
|
||||
Math.DivRem(adesso.Second, 2, out resto);
|
||||
if (resto == 0)
|
||||
{
|
||||
// invio in channel blink il segnale
|
||||
blinkPipe.sendMessage("true");
|
||||
Log.Debug("Elapsed Fast Timer Blink");
|
||||
}
|
||||
else
|
||||
{
|
||||
// invio in channel blink segnale false
|
||||
blinkPipe.sendMessage("false");
|
||||
// rileggo dati...
|
||||
var newData = await MseGetAll();
|
||||
// invio tramite la pipe...
|
||||
dataPipe.sendMessage(JsonConvert.SerializeObject(newData));
|
||||
Log.Debug("Elapsed Fast Timer reload");
|
||||
}
|
||||
});
|
||||
pUpd.Wait();
|
||||
}
|
||||
catch (Exception exc)
|
||||
{
|
||||
Log.Error($"Errore in ElapsedFastTimer{Environment.NewLine}{exc}");
|
||||
}
|
||||
}
|
||||
|
||||
#endregion Private Methods
|
||||
|
||||
Reference in New Issue
Block a user