Completato inclusione MseSampler in pagine dettaglio

This commit is contained in:
Samuele Locatelli
2023-10-27 10:57:02 +02:00
parent 60085b2510
commit e402ed32ee
34 changed files with 442 additions and 169 deletions
+2 -1
View File
@@ -22,6 +22,7 @@ namespace MP_TAB_SERV.Components
{
await Task.Delay(1);
await InvokeAsync(() => StateHasChanged());
//Log.Trace("CmpFooter Timer elapsed");
});
pUpd.Wait();
}
@@ -29,7 +30,6 @@ namespace MP_TAB_SERV.Components
public void StartTimer()
{
int tOutPeriod = 5000;
//int.TryParse(Configuration["ReloadStatusTimer"], out tOutPeriod);
aTimer = new System.Timers.Timer(tOutPeriod);
aTimer.Elapsed += ElapsedTimer;
aTimer.Enabled = true;
@@ -44,6 +44,7 @@ namespace MP_TAB_SERV.Components
{
var rawVers = typeof(Program).Assembly.GetName().Version; ;
version = rawVers != null ? rawVers : new Version("0.0.0.0");
StartTimer();
}
#endregion Protected Methods
@@ -3,8 +3,10 @@ using global::Microsoft.AspNetCore.Components;
using Microsoft.JSInterop;
using MP.Data.DatabaseModels;
using MP.Data.Services;
using NLog;
using NLog.Fluent;
using static MP_TAB_SERV.Pages.User;
using static Org.BouncyCastle.Math.EC.ECCurve;
namespace MP_TAB_SERV.Components
{
@@ -74,6 +76,9 @@ namespace MP_TAB_SERV.Components
}
}
#region Public Methods
+1
View File
@@ -0,0 +1 @@

+124
View File
@@ -0,0 +1,124 @@
using global::Microsoft.AspNetCore.Components;
using MP.Data.DatabaseModels;
using MP.Data.Services;
using NLog;
namespace MP_TAB_SERV.Components
{
public partial class MseSampler : IDisposable
{
#region Public Properties
[Parameter]
public EventCallback<List<MappaStatoExpl>> E_Updated { get; set; }
/// <summary> Moltiplicatore campionamento:
/// HF: se > 1 (mappa)
/// LF: se < 1 (dettaglio) </summary>
[Parameter]
public double SampleMult { get; set; } = 1;
#endregion Public Properties
#region Public Methods
public void Dispose()
{
if (aTimer != null)
{
aTimer.Elapsed -= ElapsedTimer;
aTimer.Stop();
aTimer.Dispose();
Log.Info("MseSampler Timer Disposed!");
}
}
#endregion Public Methods
#region Protected Fields
protected int fastTimerMSec = 3000;
#endregion Protected Fields
#region Protected Properties
[Inject]
protected IConfiguration config { get; set; } = null!;
protected int fastRefreshMs
{
get
{
// tempo variabile tra +/- 10% del target (SampleMult) della freq standard di update MSE
int answ = ((int)(fastTimerMSec / SampleMult * rnd.Next(900, 1100))) / 1000;
return answ;
}
}
[Inject]
protected StatusData MDataService { get; set; } = null!;
[Inject]
protected MessageService MServ { get; set; } = null!;
#endregion Protected Properties
#region Protected Methods
protected void ElapsedTimer(object? source, System.Timers.ElapsedEventArgs e)
{
var pUpd = Task.Run(async () =>
{
aTimer.Interval = fastRefreshMs;
await RefreshData();
//Log.Trace("MseSampler Timer elapsed");
});
pUpd.Wait();
}
protected override void OnInitialized()
{
SetupConf();
StartTimer();
}
protected void StartTimer()
{
aTimer = new System.Timers.Timer(fastRefreshMs);
aTimer.Elapsed += ElapsedTimer;
aTimer.Enabled = true;
aTimer.Start();
Log.Info("MseSampler Timer started!");
}
#endregion Protected Methods
#region Private Fields
private static NLog.Logger Log = LogManager.GetCurrentClassLogger();
private System.Timers.Timer aTimer = null!;
private Random rnd = new Random();
#endregion Private Fields
#region Private Methods
private async Task RefreshData()
{
List<MappaStatoExpl> ListMSE = await MDataService.MseGetAll();
await MServ.SaveMse(ListMSE);
await E_Updated.InvokeAsync(ListMSE);
}
private void SetupConf()
{
// sistemo i parametri opzionali...
int.TryParse(config.GetValue<string>("ServerConf:maxAge"), out fastTimerMSec);
Log.Trace($"MseSampler setupConf | Effettuato setup parametri | fastRefreshMSec: {fastTimerMSec}");
}
#endregion Private Methods
}
}
+1 -1
View File
@@ -3,7 +3,7 @@
<PropertyGroup>
<TargetFramework>net6.0</TargetFramework>
<Nullable>enable</Nullable>
<Version>6.16.2310.2708</Version>
<Version>6.16.2310.2710</Version>
<ImplicitUsings>enable</ImplicitUsings>
<RootNamespace>MP_TAB_SERV</RootNamespace>
</PropertyGroup>
+1
View File
@@ -1,5 +1,6 @@
@page "/alarms"
<MseSampler SampleMult="0.5" E_Updated="RefreshData"></MseSampler>
@if (string.IsNullOrEmpty(IdxMacc) || CurrMSE == null)
{
<EgwCoreLib.Razor.LoadingData></EgwCoreLib.Razor.LoadingData>
+18
View File
@@ -23,6 +23,24 @@ namespace MP_TAB_SERV.Pages
await ReloadData();
}
protected async Task RefreshData(List<MappaStatoExpl> newList)
{
var ListMSE = newList;
if (!string.IsNullOrEmpty(IdxMacc))
{
var rawData = ListMSE.Find(x => x.IdxMacchina == IdxMacc);
if (rawData != null)
{
CurrMSE = rawData;
}
else
{
await ReloadData();
}
}
await InvokeAsync(StateHasChanged);
}
#endregion Protected Methods
#region Private Methods
+1
View File
@@ -1,5 +1,6 @@
@page "/controls"
<MseSampler SampleMult="0.5" E_Updated="RefreshData"></MseSampler>
@if (string.IsNullOrEmpty(IdxMacc) || CurrMSE == null)
{
<EgwCoreLib.Razor.LoadingData></EgwCoreLib.Razor.LoadingData>
+18
View File
@@ -23,6 +23,24 @@ namespace MP_TAB_SERV.Pages
await ReloadData();
}
protected async Task RefreshData(List<MappaStatoExpl> newList)
{
var ListMSE = newList;
if (!string.IsNullOrEmpty(IdxMacc))
{
var rawData = ListMSE.Find(x => x.IdxMacchina == IdxMacc);
if (rawData != null)
{
CurrMSE = rawData;
}
else
{
await ReloadData();
}
}
await InvokeAsync(StateHasChanged);
}
#endregion Protected Methods
#region Private Methods
+1
View File
@@ -1,5 +1,6 @@
@page "/declarations"
<MseSampler SampleMult="0.5" E_Updated="RefreshData"></MseSampler>
@if (string.IsNullOrEmpty(IdxMacc) || CurrMSE == null)
{
<EgwCoreLib.Razor.LoadingData></EgwCoreLib.Razor.LoadingData>
+18
View File
@@ -23,6 +23,24 @@ namespace MP_TAB_SERV.Pages
await ReloadData();
}
protected async Task RefreshData(List<MappaStatoExpl> newList)
{
var ListMSE = newList;
if (!string.IsNullOrEmpty(IdxMacc))
{
var rawData = ListMSE.Find(x => x.IdxMacchina == IdxMacc);
if (rawData != null)
{
CurrMSE = rawData;
}
else
{
await ReloadData();
}
}
await InvokeAsync(StateHasChanged);
}
#endregion Protected Methods
#region Private Methods
+1
View File
@@ -1,5 +1,6 @@
@page "/iob-info"
<MseSampler SampleMult="0.5" E_Updated="RefreshData"></MseSampler>
@if (string.IsNullOrEmpty(IdxMacc) || CurrMSE == null)
{
<EgwCoreLib.Razor.LoadingData></EgwCoreLib.Razor.LoadingData>
+18 -18
View File
@@ -1,24 +1,6 @@
using global::System;
using global::System.Collections.Generic;
using global::System.Linq;
using global::System.Threading.Tasks;
using global::Microsoft.AspNetCore.Components;
using System.Net.Http;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Components.Authorization;
using Microsoft.AspNetCore.Components.Forms;
using Microsoft.AspNetCore.Components.Routing;
using Microsoft.AspNetCore.Components.Web;
using Microsoft.AspNetCore.Components.Web.Virtualization;
using Microsoft.JSInterop;
using MP_TAB_SERV;
using MP_TAB_SERV.Shared;
using MP_TAB_SERV.Components;
using MP.Data;
using MP.Data.DatabaseModels;
using MP.Data.DTO;
using MP.Data.Services;
using NLog;
namespace MP_TAB_SERV.Pages
{
@@ -41,6 +23,24 @@ namespace MP_TAB_SERV.Pages
await ReloadData();
}
protected async Task RefreshData(List<MappaStatoExpl> newList)
{
var ListMSE = newList;
if (!string.IsNullOrEmpty(IdxMacc))
{
var rawData = ListMSE.Find(x => x.IdxMacchina == IdxMacc);
if (rawData != null)
{
CurrMSE = rawData;
}
else
{
await ReloadData();
}
}
await InvokeAsync(StateHasChanged);
}
#endregion Protected Methods
#region Private Methods
+2 -1
View File
@@ -1,5 +1,7 @@
@page "/machine-detail"
<MseSampler SampleMult="0.5" E_Updated="RefreshData"></MseSampler>
@if (string.IsNullOrEmpty(IdxMacc) || CurrMSE == null)
{
<EgwCoreLib.Razor.LoadingData></EgwCoreLib.Razor.LoadingData>
@@ -10,4 +12,3 @@ else
<ProdConfirm RecMSE="CurrMSE" E_newVal="RefreshMBlock"></ProdConfirm>
<ProdStat RecMSE="CurrMSE"></ProdStat>
}
+18 -1
View File
@@ -34,6 +34,24 @@ namespace MP_TAB_SERV.Pages
}
}
protected async Task RefreshData(List<MappaStatoExpl> newList)
{
var ListMSE = newList;
if (!string.IsNullOrEmpty(IdxMacc))
{
var rawData = ListMSE.Find(x => x.IdxMacchina == IdxMacc);
if (rawData != null)
{
CurrMSE = rawData;
}
else
{
await RefreshMBlock();
}
}
await InvokeAsync(StateHasChanged);
}
protected async Task RefreshMBlock()
{
// recupero MSE macchina....
@@ -41,7 +59,6 @@ namespace MP_TAB_SERV.Pages
{
CurrMSE = await MsgServ.GetMachineMse(IdxMacc);
}
await Task.Delay(1);
}
#endregion Protected Methods
+1
View File
@@ -1,5 +1,6 @@
@page "/notes"
<MseSampler SampleMult="0.5" E_Updated="RefreshData"></MseSampler>
@if (string.IsNullOrEmpty(IdxMacc) || CurrMSE == null)
{
<EgwCoreLib.Razor.LoadingData></EgwCoreLib.Razor.LoadingData>
+18
View File
@@ -23,6 +23,24 @@ namespace MP_TAB_SERV.Pages
await ReloadData();
}
protected async Task RefreshData(List<MappaStatoExpl> newList)
{
var ListMSE = newList;
if (!string.IsNullOrEmpty(IdxMacc))
{
var rawData = ListMSE.Find(x => x.IdxMacchina == IdxMacc);
if (rawData != null)
{
CurrMSE = rawData;
}
else
{
await ReloadData();
}
}
await InvokeAsync(StateHasChanged);
}
#endregion Protected Methods
#region Private Methods
+2
View File
@@ -1,5 +1,7 @@
@page "/parameters"
<MseSampler SampleMult="0.5" E_Updated="RefreshData"></MseSampler>
@if (string.IsNullOrEmpty(IdxMacc) || CurrMSE == null)
{
<EgwCoreLib.Razor.LoadingData></EgwCoreLib.Razor.LoadingData>
+18 -18
View File
@@ -1,24 +1,6 @@
using global::System;
using global::System.Collections.Generic;
using global::System.Linq;
using global::System.Threading.Tasks;
using global::Microsoft.AspNetCore.Components;
using System.Net.Http;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Components.Authorization;
using Microsoft.AspNetCore.Components.Forms;
using Microsoft.AspNetCore.Components.Routing;
using Microsoft.AspNetCore.Components.Web;
using Microsoft.AspNetCore.Components.Web.Virtualization;
using Microsoft.JSInterop;
using MP_TAB_SERV;
using MP_TAB_SERV.Shared;
using MP_TAB_SERV.Components;
using MP.Data;
using MP.Data.DatabaseModels;
using MP.Data.DTO;
using MP.Data.Services;
using NLog;
namespace MP_TAB_SERV.Pages
{
@@ -41,6 +23,24 @@ namespace MP_TAB_SERV.Pages
await ReloadData();
}
protected async Task RefreshData(List<MappaStatoExpl> newList)
{
var ListMSE = newList;
if (!string.IsNullOrEmpty(IdxMacc))
{
var rawData = ListMSE.Find(x => x.IdxMacchina == IdxMacc);
if (rawData != null)
{
CurrMSE = rawData;
}
else
{
await ReloadData();
}
}
await InvokeAsync(StateHasChanged);
}
#endregion Protected Methods
#region Private Methods
+1
View File
@@ -1,5 +1,6 @@
@page "/prod-plan"
<MseSampler SampleMult="0.5" E_Updated="RefreshData"></MseSampler>
@if (string.IsNullOrEmpty(IdxMacc) || CurrMSE == null)
{
<EgwCoreLib.Razor.LoadingData></EgwCoreLib.Razor.LoadingData>
+18
View File
@@ -23,6 +23,24 @@ namespace MP_TAB_SERV.Pages
await ReloadData();
}
protected async Task RefreshData(List<MappaStatoExpl> newList)
{
var ListMSE = newList;
if (!string.IsNullOrEmpty(IdxMacc))
{
var rawData = ListMSE.Find(x => x.IdxMacchina == IdxMacc);
if (rawData != null)
{
CurrMSE = rawData;
}
else
{
await ReloadData();
}
}
await InvokeAsync(StateHasChanged);
}
#endregion Protected Methods
#region Private Methods
+2
View File
@@ -1,5 +1,7 @@
@page "/prod-stop"
<MseSampler SampleMult="0.5" E_Updated="RefreshData"></MseSampler>
@if (string.IsNullOrEmpty(IdxMacc) || CurrMSE == null)
{
<EgwCoreLib.Razor.LoadingData></EgwCoreLib.Razor.LoadingData>
+18
View File
@@ -214,6 +214,24 @@ namespace MP_TAB_SERV.Pages
await ReloadData();
}
protected async Task RefreshData(List<MappaStatoExpl> newList)
{
var ListMSE = newList;
if (!string.IsNullOrEmpty(IdxMacc))
{
var rawData = ListMSE.Find(x => x.IdxMacchina == IdxMacc);
if (rawData != null)
{
CurrMSE = rawData;
}
else
{
await ReloadData();
}
}
await InvokeAsync(StateHasChanged);
}
protected void SetDate(DateTime newDate)
{
DtRif = newDate;
+1
View File
@@ -1,5 +1,6 @@
@page "/scrap"
<MseSampler SampleMult="0.5" E_Updated="RefreshData"></MseSampler>
@if (string.IsNullOrEmpty(IdxMacc) || CurrMSE == null)
{
<EgwCoreLib.Razor.LoadingData></EgwCoreLib.Razor.LoadingData>
+18
View File
@@ -23,6 +23,24 @@ namespace MP_TAB_SERV.Pages
await ReloadData();
}
protected async Task RefreshData(List<MappaStatoExpl> newList)
{
var ListMSE = newList;
if (!string.IsNullOrEmpty(IdxMacc))
{
var rawData = ListMSE.Find(x => x.IdxMacchina == IdxMacc);
if (rawData != null)
{
CurrMSE = rawData;
}
else
{
await ReloadData();
}
}
await InvokeAsync(StateHasChanged);
}
#endregion Protected Methods
#region Private Methods
+1 -1
View File
@@ -2,7 +2,7 @@
@page "/home"
@page "/status-map"
<MseSampler SampleMult="2" E_Updated="RefreshData"></MseSampler>
<div class="row">
@if (ListMSE == null || ListMSE.Count == 0)
{
+14 -71
View File
@@ -6,61 +6,23 @@ using NLog;
namespace MP_TAB_SERV.Pages
{
public partial class StatusMap : IDisposable
public partial class StatusMap
{
#region Public Methods
public void Dispose()
{
if (aTimer != null)
{
aTimer.Elapsed -= ElapsedTimer;
aTimer.Stop();
aTimer.Dispose();
Log.Info("Timer Disposed!");
}
}
public void ElapsedTimer(object? source, System.Timers.ElapsedEventArgs e)
{
var pUpd = Task.Run(async () =>
{
await ReloadData();
await MServ.SaveMse(ListMSE);
await InvokeAsync(StateHasChanged);
Log.Debug("Timer elapsed");
});
pUpd.Wait();
}
public void StartTimer()
{
int tOutPeriod = 3000;
//int.TryParse(Configuration["ReloadStatusTimer"], out tOutPeriod);
aTimer = new System.Timers.Timer(tOutPeriod);
aTimer.Elapsed += ElapsedTimer;
aTimer.Enabled = true;
aTimer.Start();
Log.Info("Timer started!");
}
#endregion Public Methods
#region Protected Fields
//protected bool ShowCard { get; set; } = false;
protected bool _showCard = false;
protected bool doAnimate = true;
protected int keepAliveMin = 1;
protected int maxCol = 6;
protected string showArt = "";
protected int slowRefreshSec = 300;
#endregion Protected Fields
#region Protected Properties
[Inject]
protected IConfiguration config { get; set; } = null!;
[Inject]
protected StatusData MDataService { get; set; } = null!;
@@ -77,16 +39,6 @@ namespace MP_TAB_SERV.Pages
}
}
protected int slowRefreshMs
{
get
{
// tempo variabile tra +/- 10% del target
int answ = rnd.Next(900, 1100) * slowRefreshSec;
return answ;
}
}
[Inject]
protected TabDataService TabDServ { get; set; } = null!;
@@ -141,12 +93,17 @@ namespace MP_TAB_SERV.Pages
}
}
protected override async Task OnInitializedAsync()
protected override void OnInitialized()
{
ListMSE = null;
SetupConf();
StartTimer();
await ReloadData();
}
protected async Task RefreshData(List<MappaStatoExpl> newList)
{
ListMSE = newList;
await InvokeAsync(StateHasChanged);
//Log.Trace("StatusMap | RefreshData");
}
#endregion Protected Methods
@@ -157,10 +114,6 @@ namespace MP_TAB_SERV.Pages
private static System.Timers.Timer slowTimer = new System.Timers.Timer(300000);
private System.Timers.Timer aTimer = null!;
private Random rnd = new Random();
#endregion Private Fields
#region Private Properties
@@ -171,22 +124,12 @@ namespace MP_TAB_SERV.Pages
#region Private Methods
private async Task ReloadData()
{
ListMSE = await MDataService.MseGetAll();
}
private void SetupConf()
{
// sistemo i parametri opzionali...
TabDServ.ConfigGetVal("keepAliveMin", ref keepAliveMin);
TabDServ.ConfigGetVal("MON_maxCol", ref maxCol);
int intDoAnim = 0;
TabDServ.ConfigGetVal("doAnimate", ref intDoAnim);
doAnimate = intDoAnim == 1;
TabDServ.ConfigGetVal("pageRefreshSec", ref slowRefreshSec);
TabDServ.ConfigGetVal("sART", ref showArt);
Log.Info($"setupConf | Effettuato setup parametri | keepAlive: {keepAliveMin} | MaxCol: {maxCol} | doAnimate: {doAnimate} | slowRefreshSec: {slowRefreshSec}");
Log.Info($"setupConf | Effettuato setup parametri | MaxCol: {maxCol}");
}
#endregion Private Methods
+2
View File
@@ -1,5 +1,7 @@
@page "/tech-sheet"
<MseSampler SampleMult="0.5" E_Updated="RefreshData"></MseSampler>
@if (string.IsNullOrEmpty(IdxMacc) || CurrMSE == null)
{
<EgwCoreLib.Razor.LoadingData></EgwCoreLib.Razor.LoadingData>
+29 -8
View File
@@ -14,6 +14,9 @@ namespace MP_TAB_SERV.Pages
[Inject]
protected MessageService MsgServ { get; set; } = null!;
[Inject]
protected TabDataService TabDServ { get; set; } = null!;
#endregion Protected Properties
#region Protected Methods
@@ -24,20 +27,33 @@ namespace MP_TAB_SERV.Pages
SetupConf();
}
private void SetupConf()
protected async Task RefreshData(List<MappaStatoExpl> newList)
{
TabDServ.ConfigGetVal("enableSchedaTecnica", ref enableSchedaTecnica);
var ListMSE = newList;
if (!string.IsNullOrEmpty(IdxMacc))
{
var rawData = ListMSE.Find(x => x.IdxMacchina == IdxMacc);
if (rawData != null)
{
CurrMSE = rawData;
}
}
await InvokeAsync(StateHasChanged);
}
[Inject]
protected TabDataService TabDServ { get; set; } = null!;
private bool enableSchedaTecnica = false;
#endregion Protected Methods
#region Private Fields
private string disTitle = "Scheda Tecnica";
private string disSubtitle = "Funzionalità disattivata";
private string disMessage = "Gestione schede tecniche di attrezzaggio, collaudo e verifica procedure di setup. Il modulo opzionale è attivabile su richiesta.";
#endregion Protected Methods
private string disSubtitle = "Funzionalità disattivata";
private string disTitle = "Scheda Tecnica";
private bool enableSchedaTecnica = false;
#endregion Private Fields
#region Private Methods
@@ -54,6 +70,11 @@ namespace MP_TAB_SERV.Pages
}
}
private void SetupConf()
{
TabDServ.ConfigGetVal("enableSchedaTecnica", ref enableSchedaTecnica);
}
#endregion Private Methods
}
}
+1
View File
@@ -1,5 +1,6 @@
@page "/workshift"
<MseSampler SampleMult="0.5" E_Updated="RefreshData"></MseSampler>
@if (string.IsNullOrEmpty(IdxMacc) || CurrMSE == null)
{
<EgwCoreLib.Razor.LoadingData></EgwCoreLib.Razor.LoadingData>
+66 -46
View File
@@ -9,20 +9,86 @@ namespace MP_TAB_SERV.Pages
#region Protected Properties
protected MappaStatoExpl? CurrMSE { get; set; } = null;
protected TurniMaccModel currTurni { get; set; } = new TurniMaccModel();
protected string IdxMacc { get; set; } = "";
[Inject]
protected MessageService MsgServ { get; set; } = null!;
protected bool T1
{
get => currTurni.T1;
set
{
if (currTurni.T1 != value)
{
currTurni.T1 = value;
TabServ.TurnoMacchinaToggle(IdxMacc, 1);
}
}
}
protected bool T2
{
get => currTurni.T2;
set
{
if (currTurni.T2 != value)
{
currTurni.T2 = value;
TabServ.TurnoMacchinaToggle(IdxMacc, 2);
}
}
}
protected bool T3
{
get => currTurni.T3;
set
{
if (currTurni.T3 != value)
{
currTurni.T3 = value;
TabServ.TurnoMacchinaToggle(IdxMacc, 3);
}
}
}
[Inject]
protected TabDataService TabServ { get; set; } = null!;
#endregion Protected Properties
#region Protected Methods
protected string cssByState(bool isActive)
{
return isActive ? "bg-success text-warning" : "bg-secondary";
}
protected override async Task OnInitializedAsync()
{
await ReloadData();
}
protected async Task RefreshData(List<MappaStatoExpl> newList)
{
var ListMSE = newList;
if (!string.IsNullOrEmpty(IdxMacc))
{
var rawData = ListMSE.Find(x => x.IdxMacchina == IdxMacc);
if (rawData != null)
{
CurrMSE = rawData;
}
else
{
await ReloadData();
}
}
await InvokeAsync(StateHasChanged);
}
#endregion Protected Methods
#region Private Methods
@@ -42,52 +108,6 @@ namespace MP_TAB_SERV.Pages
}
}
protected bool T1
{
get => currTurni.T1;
set
{
if (currTurni.T1 != value)
{
currTurni.T1 = value;
TabServ.TurnoMacchinaToggle(IdxMacc, 1);
}
}
}
protected bool T2
{
get => currTurni.T2;
set
{
if (currTurni.T2 != value)
{
currTurni.T2 = value;
TabServ.TurnoMacchinaToggle(IdxMacc, 2);
}
}
}
protected bool T3
{
get => currTurni.T3;
set
{
if (currTurni.T3 != value)
{
currTurni.T3 = value;
TabServ.TurnoMacchinaToggle(IdxMacc, 3);
}
}
}
protected string cssByState(bool isActive)
{
return isActive ? "bg-success text-warning" : "bg-secondary";
}
[Inject]
protected TabDataService TabServ { get; set; } = null!;
protected TurniMaccModel currTurni { get; set; } = new TurniMaccModel();
#endregion Private Methods
}
}
+1 -1
View File
@@ -1,6 +1,6 @@
<body>
<i>Modulo MAPOSPEC </i>
<h4>Versione: 6.16.2310.2708</h4>
<h4>Versione: 6.16.2310.2710</h4>
<br /> Note di rilascio:
<ul>
<li>
+1 -1
View File
@@ -1 +1 @@
6.16.2310.2708
6.16.2310.2710
+1 -1
View File
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<item>
<version>6.16.2310.2708</version>
<version>6.16.2310.2710</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>