Fix refresh display status

This commit is contained in:
Samuele Locatelli
2023-11-09 15:41:10 +01:00
parent e61a512647
commit e32600f6d3
13 changed files with 135 additions and 73 deletions
+4 -8
View File
@@ -158,20 +158,16 @@ namespace MP_TAB_SERV.Components
}
}
protected override async Task OnParametersSetAsync()
protected override void OnParametersSet()
{
isLoading = RecMSE == null;
await setGaugeVals();
await Task.Delay(1);
setGaugeVals();
}
protected async Task setGaugeVals()
protected void setGaugeVals()
{
await Task.Delay(1);
Log.Info("MBlock 01");
if (RecMSE != null)
{
Log.Info("MBlock 02");
innerCircleVals.Clear();
outerCircleVals.Clear();
currMaxVal = int.Parse(RecMSE.NumPezzi.ToString()!);
@@ -184,7 +180,7 @@ namespace MP_TAB_SERV.Components
{
outerCircleVals.Add(new CircleGaugeMulti.CircSegm() { Color = "#1367FD", Value = RecMSE.extraVal });
}
Log.Info("MBlock 03");
//Log.Trace($"MBlock | {RecMSE.IdxMacchina} | 03");
}
else
{
+38 -28
View File
@@ -33,7 +33,7 @@
</div>
@if (cancelSetupEnabled)
{
<div class="col-12 col-sm-12 col-md-6 p-2">
<div class="col-12 col-md-6 p-2">
<button class="btn btn-lg btn-danger w-100">Annulla Setup ODL <i class="fa-solid fa-ban me-1"></i></button>
</div>
}
@@ -54,9 +54,9 @@
<h4>@titleOdlDetail</h4>
</div>
<div>
@if (idxPOdlSel == 0)
@if (idxPOdlSel == 0 && !inAttr)
{
<button class="btn btn-lg btn-dark w-100" disabled="@inAttr" @onclick="ToggleOdlDetail"><i class="fa-solid fa-chevron-up"></i> @txtBtnOdlDetail</button>
<button class="btn btn-lg btn-dark w-100" @onclick="ToggleOdlDetail"><i class="fa-solid fa-chevron-up"></i> @txtBtnOdlDetail</button>
}
</div>
</div>
@@ -111,7 +111,14 @@
TCiclo:
</div>
<div class="px-0 text-end fw-bold">
@currPodl.Tcassegnato.ToString("N2")
@if (currOdl != null && currOdl.Tcassegnato > 0)
{
@currOdl.Tcassegnato.ToString("N2")
}
else
{
@currPodl.Tcassegnato.ToString("N2")
}
</div>
</div>
<div class="col d-flex justify-content-between">
@@ -153,6 +160,16 @@
@if (!inAttr)
{
<div class="col-12 col-md-6">
@if (idxPOdlSel > 0)
{
<button class="btn btn-lg btn-primary w-100" @onclick="OdlSetupStart"><i class="fa-solid fa-check me-1"></i> INIZIO Attrezzaggio</button>
}
else
{
<button class="btn btn-lg btn-primary w-100" disabled="@endProdDisabled" @onclick="ProdEnd"><i class="fa-solid fa-ban me-1"></i>FINE Produzione</button>
}
</div>
<div class="col-12 col-md-6 mb-2">
<div class="input-group input-group-lg">
<input type="text" class="form-control w-25" placeholder="Cerca" aria-label="Cerca">
@@ -170,21 +187,14 @@
</div>
</div>
</div>
<div class="col-12 col-md-6">
@if (idxPOdlSel > 0)
{
<button class="btn btn-lg btn-primary w-100" @onclick="OdlSetupStart"><i class="fa-solid fa-check me-1"></i> INIZIO Attrezzaggio</button>
}
else
{
}
</div>
}
@if (idxPOdlSel > 0 || inAttr)
{
<div class="col-12 col-sm-6">
<label class="form-label">note Attrezzaggio</label>
<textarea class="form-control" rows="3" @bind="@noteAttr"></textarea>
<div class="form-floating">
<textarea type="text" class="form-control" style="height: 7rem;" @bind="@noteAttr"></textarea>
<label for="floatingComm">Note Attrezzaggio (opzionale)</label>
</div>
</div>
<div class="col-12 col-sm-6">
<SelTempoMSMC TempoMC="@tcRichAttr" modoControllo="SelTempoMSMC.timeControlMode.selettori" E_TCRich="SaveTCRich"></SelTempoMSMC>
@@ -204,26 +214,26 @@
@if (inAttr)
{
<div class="col-12 col-sm-12 col-md-6 p-2">
<div class="col-12 col-md-6 p-2">
<button class="btn btn-lg btn-warning w-100" disabled="@needConfProd" @onclick="OdlSetupEnd"><i class="fa-solid fa-check me-1"></i> FINE Attr / INIZIO Prod.</button>
</div>
}
<div class="col-12 col-sm-12 col-md-6 p-2">
<button class="btn btn-lg btn-primary w-100" disabled="@needConfProd" @onclick="ProdEnd"><i class="fa-solid fa-ban me-1"></i>FINE Produzione</button>
</div>
<div class="col-12 col-sm-12 col-md-6 p-2">
<div class="form-check form-switch fs-3">
<input class="form-check-input" type="checkbox" @bind="@forceCloseOdl">
<label class="form-check-label">@Traduci("ForceCloseODL")</label>
else
{
<div class="col-12 col-md-6 p-2">
<div class="form-check form-switch fs-3">
<input class="form-check-input" type="checkbox" @bind="@forceCloseOdl">
<label class="form-check-label">@Traduci("ForceCloseODL")</label>
</div>
</div>
}
<div class="col-12 col-md-6 p-2">
<button class="btn btn-lg btn-success w-100" @onclick="() => SendFixEndSetup()"><i class="fa-solid fa-wrench me-1"></i> Fix Chiusura Arttrezzaggio (PLC)</button>
</div>
<div class="col-12 col-sm-12 col-md-6 p-2">
<div class="col-12 col-md-6 p-2">
<button class="btn btn-lg btn-info w-100" disabled="@needConfProd"><i class="fa-solid fa-triangle-exclamation me-1"></i> Mostra Riattrezzaggio</button>
</div>
<div class="col-12 col-sm-12 col-md-6 p-2">
<button class="btn btn-lg btn-success w-100" disabled="@needConfProd"><i class="fa-solid fa-wrench me-1"></i> Fix Chiusura Arttrezzaggio (PLC)</button>
</div>
<div class="col-12 col-sm-12 col-md-6 p-2">
<div class="col-12 col-md-6 p-2">
<button class="btn btn-lg btn-danger w-100" disabled="@needConfProd"><i class="fa-solid fa-circle-exclamation me-1"></i> Creazione ODL Provvisorio</button>
@* <div class="col-sm-12" runat="server" id="divOdlProvv">
<div class="card">
+67 -14
View File
@@ -152,8 +152,7 @@ namespace MP_TAB_SERV.Components
// se in attr --> carico podlCurr...
if (inAttr && RecMSE != null)
{
int currIdxPOdl = RecMSE != null ? RecMSE.IdxPOdl ?? 0 : 0;
currPodl = await TabDServ.PODLExp_getByKey(currIdxPOdl);
await ReloadXDL(false);
}
}
@@ -284,7 +283,7 @@ namespace MP_TAB_SERV.Components
idxOdl = idxODLStart;
await advStep(currStep++);
// faccio refresh e riporto
await refreshData();
await RefreshData();
await CheckAttr();
// chiudo update...
isProcessing = false;
@@ -296,8 +295,13 @@ namespace MP_TAB_SERV.Components
/// <returns></returns>
protected async Task OdlSetupStart()
{
if (!await JSRuntime.InvokeAsync<bool>("confirm", $"Confermi inizio della fase di attrezzaggio per l'articolo [{currPodl.CodArticolo}] {currPodl.DescArticolo}?"))
TimeSpan estDur = TimeSpan.FromMinutes((double)tcRichAttr * currPodl.NumPezzi);
string stima = estDur.TotalHours > 1 ? $"{estDur.TotalHours:N1} ore" : $"{estDur.TotalMinutes:N1} min";
if (!await JSRuntime.InvokeAsync<bool>("confirm", $"PODL: {currPodl.IdxPromessa}{Environment.NewLine}Art: [{currPodl.CodArticolo}] {currPodl.DescArticolo}{Environment.NewLine}Pezzi: {currPodl.NumPezzi:N0} * TCiclo: {tcRichAttr:N3}min{Environment.NewLine}Tempo stimato: {stima}{Environment.NewLine}{Environment.NewLine}Confermi inizio della fase di attrezzaggio?"))
return;
//if (!await JSRuntime.InvokeAsync<bool>("confirm", $"Confermi inizio della fase di attrezzaggio per l'articolo [{currPodl.CodArticolo}] {currPodl.DescArticolo}?"))
// return;
/***************************************************
* comprende gestione machineSlave x fix ODL master --> slave
*
@@ -489,7 +493,7 @@ namespace MP_TAB_SERV.Components
checkBtnStatus();
fixSplitBtn(false);
// faccio refresh e riporto
await refreshData();
await RefreshData();
await CheckAttr();
isProcessing = false;
}
@@ -622,13 +626,13 @@ namespace MP_TAB_SERV.Components
}
await advStep(currStep++);
// faccio refresh e riporto
await refreshData();
await RefreshData();
await CheckAttr();
await advStep(currStep++);
isProcessing = false;
}
protected async Task refreshData()
protected async Task RefreshData()
{
// refresh tabella dati tablet...
TabDServ.RicalcMse(IdxMaccSel, 0);
@@ -638,10 +642,8 @@ namespace MP_TAB_SERV.Components
{
// salvo in LocalStorage...
await MServ.SaveMse(ListMSE);
#if false
// aggiorno MSE attuale
RecMSE = ListMSE.Find(x => x.IdxMacchina == IdxMaccSel);
#endif
await E_Updated.InvokeAsync(ListMSE);
}
// update dati liste ODL
@@ -662,7 +664,7 @@ namespace MP_TAB_SERV.Components
string baseUrlAdmin = SMServ.GetConf("baseUrlAdmin");
string pageUrlApprODL = SMServ.GetConf("pageUrlApprODL");
string pageUrl = $"{baseUrlAdmin}{pageUrlApprODL}";
string corpo = $"<b>ODL: {idxOdl} | TC Assegnato: {tcAss} | TC Rich: {tcRich}</b>{Environment.NewLine}{Environment.NewLine}";
string corpo = $"<b>ODL: {idxOdl} | TC Assegnato: {tcAss:N3} | TC Rich: {tcRich}</b>{Environment.NewLine}{Environment.NewLine}";
corpo += string.Format(corpoChgTc, Environment.NewLine, pageUrl);
corpo = corpo.Replace($"{Environment.NewLine}", "<br/>");
MailKitMailData mData = new MailKitMailData()
@@ -699,8 +701,22 @@ namespace MP_TAB_SERV.Components
// se devo mostrare, carico dati ODL!
if (showOdlDetail && RecMSE != null)
{
int currIdxPOdl = RecMSE != null ? RecMSE.IdxPOdl ?? 0 : 0;
currPodl = await TabDServ.PODLExp_getByKey(currIdxPOdl);
await ReloadXDL(true);
}
}
private async Task ReloadXDL(bool reloadFromOdl)
{
int currIdxPOdl = IdxPOdlSel;
if (reloadFromOdl)
{
currIdxPOdl = RecMSE != null ? RecMSE.IdxPOdl ?? 0 : 0;
}
currPodl = await TabDServ.PODLExp_getByKey(currIdxPOdl);
// update a runtime dati ODL se assegnato
if (currPodl.IdxOdl > 0)
{
currOdl = await TabDServ.OdlByIdx(currPodl.IdxOdl, false);
}
}
@@ -709,6 +725,32 @@ namespace MP_TAB_SERV.Components
return SMServ.Traduci($"{baseLang}_{lemma}".ToUpper());
}
protected async Task SendFixEndSetup()
{
if (!await JSRuntime.InvokeAsync<bool>("confirm", $"Confermi invio FIX chiusura atrtezzaggio ad impianto?"))
return;
string ts = string.Format("{0:yyMMdd}T{0:HHmmss.fff}Z", DateTime.Now);
string outData = $"TS:{ts}|MATR:{MatrOpr}|ODL:{IdxOdl}";
TabDServ.addTask4Machine(IdxMaccSel, taskType.fixStopSetup, outData);
outData = "Inserita richiesta invio Fix chiusura attrezzaggio " + outData;
lblOut = outData;
// se è master --> chiamo update child!
if (isMaster)
{
// invio eventi ad IOB slave...
var slaveList = SMServ.ListM2S
.Where(x => x.IdxMacchina.Equals(IdxMaccSel, StringComparison.InvariantCultureIgnoreCase))
.ToList();
foreach (var machine in slaveList)
{
// invio chiusura attrezzaggio
outData = $"TS:{ts}|MATR:{MatrOpr}|ODL:{idxOdl}|master machine:{IdxMaccSel}";
TabDServ.addTask4Machine(machine.IdxMacchinaSlave, taskType.fixStopSetup, outData);
}
}
}
#endregion Protected Methods
#region Private Fields
@@ -786,6 +828,7 @@ namespace MP_TAB_SERV.Components
}
private PODLExpModel currPodl { get; set; } = new PODLExpModel();
private ODLExpModel currOdl { get; set; } = new ODLExpModel();
/// <summary>
/// Variabile idxMacc parent x selezione ODL
@@ -825,6 +868,11 @@ namespace MP_TAB_SERV.Components
}
}
private bool endProdDisabled
{
get => !odlOk || needConfProd;
}
private int numPz2Conf
{
get
@@ -848,7 +896,7 @@ namespace MP_TAB_SERV.Components
}
private string titleOdlDetail
{
get => IdxPOdlSel > 0 ? "Verifica parametri attrezzaggio NUOVO PODL" : "Parametri ODL Corrente";
get => IdxPOdlSel > 0 ? "Verifica parametri attrezzaggio NUOVO PODL" : inAttr ? "Parametri PODL in Attrezzaggio" : "Parametri ODL Corrente";
}
private string cssDetailOdl
@@ -1174,13 +1222,18 @@ namespace MP_TAB_SERV.Components
prodMacchina = rawData.FirstOrDefault() ?? new PzProdModel();
}
}
// imposto tcRichAttr in base allo stato...
if (odlOk)
{
tcRichAttr = currPodl.Tcassegnato; ;
}
}
private async Task ReloadPOdlDetailData()
{
if (IdxPOdlSel > 0)
{
currPodl = await TabDServ.PODLExp_getByKey(IdxPOdlSel);
await ReloadXDL(false);
// controllo se cambiato PODL
if (IdxPOdlSel != lastIdxPOdl)
{
+1 -1
View File
@@ -23,6 +23,6 @@
}
</div>
<div class="col-4">
@lblTempo
&rarr; @lblTempo
</div>
</div>
+1 -1
View File
@@ -218,7 +218,7 @@ namespace MP_TAB_SERV.Components
{
get
{
string answ = tcMode == "mc" ? $"--> {TempoMS.TotalMinutes:N0}:{TempoMS:ss} (min:sec)" : $"--> {TempoMC:0.000} (min.cent)";
string answ = tcMode == "mc" ? $"{TempoMS.TotalMinutes:N0}:{TempoMS:ss} (min:sec)" : $"{TempoMC:0.000} (min.cent)";
return answ;
}
}
+1 -1
View File
@@ -3,7 +3,7 @@
<PropertyGroup>
<TargetFramework>net6.0</TargetFramework>
<Nullable>enable</Nullable>
<Version>6.16.2311.909</Version>
<Version>6.16.2311.915</Version>
<ImplicitUsings>enable</ImplicitUsings>
<RootNamespace>MP_TAB_SERV</RootNamespace>
</PropertyGroup>
+2 -8
View File
@@ -2,17 +2,11 @@
@page "/home"
@page "/status-map"
<MseSampler SampleMult="2" E_Updated="RefreshData"></MseSampler>
<MseSampler SampleMult="1.5" E_Updated="SaveData"></MseSampler>
<div class="row">
@if (ListMSE == null || ListMSE.Count == 0 || isCalcSize)
{
@*@for (int i = 0; i < 10; i++)
{
<div class="col-6 col-sm-6 col-md-4 col-lg-3 col-xl-2 mb-2 px-1 bloccoMacc">
@*<MachineBlock></MachineBlock>
</div>
}*@
<EgwCoreLib.Razor.LoadingData></EgwCoreLib.Razor.LoadingData>
<EgwCoreLib.Razor.LoadingData></EgwCoreLib.Razor.LoadingData>
}
else
{
+6 -5
View File
@@ -96,6 +96,8 @@ namespace MP_TAB_SERV.Pages
{
await getWDim();
isCalcSize = false;
ListMSE = await MDataService.MseGetAll();
await InvokeAsync(StateHasChanged);
}
if (ListMSE != null)
{
@@ -104,21 +106,20 @@ namespace MP_TAB_SERV.Pages
}
}
protected override async Task OnInitializedAsync()
protected override void OnInitialized()
{
var df = MServ.UserPrefGet("DefCardMode");
ShowCard = df == "shrink" ? false : true;
isCalcSize = true;
ListMSE = null;
SetupConf();
ListMSE = await MDataService.MseGetAll();
}
protected async Task RefreshData(List<MappaStatoExpl> newList)
protected void SaveData(List<MappaStatoExpl> newList)
{
//await Task.Delay(1);
ListMSE = newList;
await InvokeAsync(StateHasChanged);
//Log.Trace("StatusMap | RefreshData");
//await InvokeAsync(StateHasChanged);
}
#endregion Protected Methods
+1 -1
View File
@@ -1,6 +1,6 @@
<body>
<i>Modulo MAPOSPEC </i>
<h4>Versione: 6.16.2311.909</h4>
<h4>Versione: 6.16.2311.915</h4>
<br /> Note di rilascio:
<ul>
<li>
+1 -1
View File
@@ -1 +1 @@
6.16.2311.909
6.16.2311.915
+1 -1
View File
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<item>
<version>6.16.2311.909</version>
<version>6.16.2311.915</version>
<url>https://nexus.steamware.net/repository/SWS/MP-TAB-SERV/stable/LAST/MP-TAB-SERV.zip</url>
<changelog>https://nexus.steamware.net/repository/SWS/MP-TAB-SERV/stable/LAST/ChangeLog.html</changelog>
<mandatory>false</mandatory>
+1 -1
View File
@@ -782,7 +782,7 @@ namespace MP.Data.Controllers
var OnlyUnused = new SqlParameter("@onlyUnused", onlyUnused);
dbResult = dbCtx
.DbSetODLExp
.FromSqlRaw("EXEC stp_ODL_getByIdx @IdxOdl, @onlyUnused", IdxOdl, onlyUnused)
.FromSqlRaw("EXEC stp_ODL_getByIdx @IdxOdl, @onlyUnused", IdxOdl, OnlyUnused)
.AsNoTracking()
.ToList();
}
+11 -3
View File
@@ -47,10 +47,18 @@ namespace MP.Data.DatabaseModels
get
{
string answ = "*";
var allData = KeyRichiesta.Split('_');
if (allData.Length > 0)
if (!string.IsNullOrEmpty(KeyRichiesta))
{
answ = allData[0];
try
{
var allData = KeyRichiesta.Split('_');
if (allData.Length > 0)
{
answ = allData[0];
}
}
catch
{ }
}
return answ;
}