diff --git a/MP-TAB3/Components/IobInfoMan.razor b/MP-TAB3/Components/IobInfoMan.razor index 1c68b7f6..e4c887e8 100644 --- a/MP-TAB3/Components/IobInfoMan.razor +++ b/MP-TAB3/Components/IobInfoMan.razor @@ -6,11 +6,15 @@
@if(infosIob.iType == MP.Data.Objects.Enums.IobType.rPi) { - + } - else if (infosIob.iType == MP.Data.Objects.Enums.IobType.WIN || infosIob.iType == MP.Data.Objects.Enums.IobType.ND) + else if (infosIob.iType == MP.Data.Objects.Enums.IobType.WIN) { - + + } + else if (infosIob.iType == MP.Data.Objects.Enums.IobType.ND) + { + }
diff --git a/MP-TAB3/Components/MachineBlock.razor b/MP-TAB3/Components/MachineBlock.razor index b52071b3..9db94763 100644 --- a/MP-TAB3/Components/MachineBlock.razor +++ b/MP-TAB3/Components/MachineBlock.razor @@ -7,13 +7,11 @@ - - - + - - - + + + @@ -32,13 +30,11 @@ else - - - + - - - + + + diff --git a/MP-TAB3/MP-TAB3.csproj b/MP-TAB3/MP-TAB3.csproj index 0012844d..b9b8d4f5 100644 --- a/MP-TAB3/MP-TAB3.csproj +++ b/MP-TAB3/MP-TAB3.csproj @@ -3,7 +3,7 @@ net6.0 enable - 6.16.2402.2618 + 6.16.2402.2620 enable MP_TAB3 diff --git a/MP-TAB3/Pages/BasePage.razor b/MP-TAB3/Pages/BasePage.razor new file mode 100644 index 00000000..c65238fb --- /dev/null +++ b/MP-TAB3/Pages/BasePage.razor @@ -0,0 +1,2 @@ + + diff --git a/MP-TAB3/Pages/BasePage.razor.cs b/MP-TAB3/Pages/BasePage.razor.cs new file mode 100644 index 00000000..6045369a --- /dev/null +++ b/MP-TAB3/Pages/BasePage.razor.cs @@ -0,0 +1,160 @@ +using Microsoft.AspNetCore.Components; +using MP.Data.DatabaseModels; +using MP.Data; +using MP.Data.Services; +using Newtonsoft.Json; +using NLog.Fluent; + +namespace MP_TAB3.Pages +{ + /// + /// Pagina base da cui ereditare metodi x refresh dati da RedisChannel (MessagePipe) + /// + public partial class BasePage : IDisposable + { + #region Public Properties + + /// + /// Dato di dettaglio MSE per macchina + /// + public MappaStatoExpl? CurrMSE { get; set; } = null; + + /// + /// Macchina selezionata + /// + public string IdxMacc { get; set; } = ""; + + [Inject] + public MessageService MsgServ { get; set; } = null!; + + [Inject] + public TabDataFeeder TDFeeder { get; set; } = null!; + + #endregion Public Properties + + #region Public Methods + + /// + /// Metodo dispose + /// + public virtual void Dispose() + { + IdxMacc = ""; + CurrMSE = null; + TDFeeder.dataPipe.EA_NewMessage -= DataPipe_EA_NewMessage; + } + + #endregion Public Methods + + #region Protected Methods + + /// + /// Override Oninit x aggancio evento update da MessagePipe + /// + /// + protected override async Task OnInitializedAsync() + { + await base.OnInitializedAsync(); + await ReloadData(); + TDFeeder.dataPipe.EA_NewMessage += DataPipe_EA_NewMessage; + } + + /// + /// Metodo refresh con controllo salvataggio in LocalStorage ogni 5 sec + /// + /// + /// + protected async Task RefreshData(List ListMSE) + { + // se vecchio salvo sul browser... + if (DateTime.Now.Subtract(lastSave).TotalSeconds > 5) + { + // salvo in LocalStorage... + await MsgServ.SaveMse(ListMSE); + lastSave = DateTime.Now; + } + if (!string.IsNullOrEmpty(IdxMacc)) + { + var rawData = ListMSE.Find(x => x.IdxMacchina == IdxMacc); + if (rawData != null) + { + CurrMSE = rawData; + } + else + { + await RefreshMBlock(); + } + } + } + + /// + /// Refresh con rilettura da LocalStorage + /// + /// + protected async Task RefreshMBlock() + { + // recupero MSE macchina.... + if (!string.IsNullOrEmpty(IdxMacc)) + { + CurrMSE = await MsgServ.GetMachineMse(IdxMacc); + } + } + + #endregion Protected Methods + + #region Private Fields + + /// + /// DateTime ultimo salvataggio in LocalStorage + /// + private DateTime lastSave = DateTime.Now; + + #endregion Private Fields + + #region Private Methods + + /// + /// Ricevuto nuovi dati da mostrare! + /// + /// + /// + /// + private void DataPipe_EA_NewMessage(object? sender, EventArgs e) + { + PubSubEventArgs currArgs = (PubSubEventArgs)e; + // conversione on-the-fly List --> allarmi + if (!string.IsNullOrEmpty(currArgs.newMessage)) + { + try + { + List? dataList = JsonConvert.DeserializeObject>(currArgs.newMessage); + if (dataList != null) + { + InvokeAsync(() => RefreshData(dataList)); + } + } + catch + { } + } + InvokeAsync(() => + { + StateHasChanged(); + }); + } + + protected virtual async Task ReloadData() + { + if (string.IsNullOrEmpty(IdxMacc)) + { + IdxMacc = await MsgServ.IdxMaccGet(); + } + // recupero MSE macchina.... + if (!string.IsNullOrEmpty(IdxMacc)) + { + CurrMSE = await MsgServ.GetMachineMse(IdxMacc); + } + } + + #endregion Private Methods + } +} \ No newline at end of file diff --git a/MP-TAB3/Pages/MachineDetail.razor b/MP-TAB3/Pages/MachineDetail.razor index 594b3b6c..4f85bf6d 100644 --- a/MP-TAB3/Pages/MachineDetail.razor +++ b/MP-TAB3/Pages/MachineDetail.razor @@ -1,5 +1,7 @@ @page "/machine-detail" +@inherits BasePage + @if (string.IsNullOrEmpty(IdxMacc) || CurrMSE == null) { diff --git a/MP-TAB3/Pages/MachineDetail.razor.cs b/MP-TAB3/Pages/MachineDetail.razor.cs index 54b1a59a..54518220 100644 --- a/MP-TAB3/Pages/MachineDetail.razor.cs +++ b/MP-TAB3/Pages/MachineDetail.razor.cs @@ -7,77 +7,31 @@ using NLog; namespace MP_TAB3.Pages { - public partial class MachineDetail : IDisposable + public partial class MachineDetail { - #region Public Methods - - public void Dispose() - { - IdxMacc = ""; - CurrMSE = null; - TDFeeder.dataPipe.EA_NewMessage -= DataPipe_EA_NewMessage; - } - - #endregion Public Methods - #region Protected Properties - protected MappaStatoExpl? CurrMSE { get; set; } = null; - - protected string IdxMacc { get; set; } = ""; - - [Inject] - protected MessageService MsgServ { get; set; } = null!; - [Inject] protected SharedMemService MStor { get; set; } = null!; [Inject] protected TabDataService TabServ { get; set; } = null!; - [Inject] - protected TabDataFeeder TDFeeder { get; set; } = null!; - #endregion Protected Properties #region Protected Methods protected override async Task OnInitializedAsync() { - await ReloadData(); - TDFeeder.dataPipe.EA_NewMessage += DataPipe_EA_NewMessage; + await base.OnInitializedAsync(); + // recupero parametri configurazione... + await setupConf(); if (enableSchedaTecnica) { checkLottiOdl(); } } - protected async Task RefreshData(List newList) - { - var ListMSE = newList; - if (!string.IsNullOrEmpty(IdxMacc)) - { - var rawData = ListMSE.Find(x => x.IdxMacchina == IdxMacc); - if (rawData != null) - { - CurrMSE = rawData; - } - else - { - await RefreshMBlock(); - } - } - } - - protected async Task RefreshMBlock() - { - // recupero MSE macchina.... - if (!string.IsNullOrEmpty(IdxMacc)) - { - CurrMSE = await MsgServ.GetMachineMse(IdxMacc); - } - } - protected void SetMacc(string selIdxMacc) { IdxMaccSubSel = selIdxMacc; @@ -88,12 +42,10 @@ namespace MP_TAB3.Pages #region Private Fields private static Logger Log = LogManager.GetCurrentClassLogger(); - private bool enableMagLotti = false; - private bool enableSchedaTecnica = false; - private string IdxMaccSubSel = ""; + private DateTime lastSave = DateTime.Now; #endregion Private Fields @@ -123,56 +75,7 @@ namespace MP_TAB3.Pages #endif } - /// - /// Ricevuto nuovi dati da mostrare! - /// - /// - /// - /// - private void DataPipe_EA_NewMessage(object? sender, EventArgs e) - { - PubSubEventArgs currArgs = (PubSubEventArgs)e; - // conversione on-the-fly List --> allarmi - if (!string.IsNullOrEmpty(currArgs.newMessage)) - { - try - { - List? dataList = JsonConvert.DeserializeObject>(currArgs.newMessage); - if (dataList != null) - { - InvokeAsync(() => RefreshData(dataList)); - } - } - catch - { } - } - InvokeAsync(() => - { - StateHasChanged(); - }); - } - - private async Task ReloadData() - { - try - { - if (string.IsNullOrEmpty(IdxMacc)) - { - IdxMacc = await MsgServ.IdxMaccGet(); - } - // recupero MSE macchina.... - if (!string.IsNullOrEmpty(IdxMacc)) - { - CurrMSE = await MsgServ.GetMachineMse(IdxMacc); - } - } - catch (Exception exc) - { - Log.Error($"Eccezione in ReloadData{Environment.NewLine}{exc}"); - } - // recupero parametri configurazione... - await setupConf(); - } + private async Task setupConf() { diff --git a/MP-TAB3/Pages/ODL.razor b/MP-TAB3/Pages/ODL.razor index 0ea5c0ad..daf48433 100644 --- a/MP-TAB3/Pages/ODL.razor +++ b/MP-TAB3/Pages/ODL.razor @@ -1,4 +1,5 @@ @page "/odl" +@inherits BasePage @if (string.IsNullOrEmpty(IdxMacc) || CurrMSE == null) { diff --git a/MP-TAB3/Pages/ODL.razor.cs b/MP-TAB3/Pages/ODL.razor.cs index e1cdeb48..21eecc75 100644 --- a/MP-TAB3/Pages/ODL.razor.cs +++ b/MP-TAB3/Pages/ODL.razor.cs @@ -7,65 +7,13 @@ using NLog; namespace MP_TAB3.Pages { - public partial class ODL : IDisposable + public partial class ODL { - #region Public Methods - - public void Dispose() - { - IdxMacc = ""; - CurrMSE = null; - TDFeeder.dataPipe.EA_NewMessage -= DataPipe_EA_NewMessage; - } - - #endregion Public Methods - - #region Protected Properties - - protected MappaStatoExpl? CurrMSE { get; set; } = null; - - protected string IdxMacc { get; set; } = ""; - - [Inject] - protected MessageService MsgServ { get; set; } = null!; - - [Inject] - protected TabDataFeeder TDFeeder { get; set; } = null!; - - #endregion Protected Properties - #region Protected Methods protected override async Task OnInitializedAsync() { - await ReloadData(); - TDFeeder.dataPipe.EA_NewMessage += DataPipe_EA_NewMessage; - } - - protected async Task RefreshData(List newList) - { - var ListMSE = newList; - if (!string.IsNullOrEmpty(IdxMacc)) - { - var rawData = ListMSE.Find(x => x.IdxMacchina == IdxMacc); - if (rawData != null) - { - CurrMSE = rawData; - } - else - { - await RefreshMBlock(); - } - } - } - - protected async Task RefreshMBlock() - { - // recupero MSE macchina.... - if (!string.IsNullOrEmpty(IdxMacc)) - { - CurrMSE = await MsgServ.GetMachineMse(IdxMacc); - } + await base.OnInitializedAsync(); } protected void SetMacc(string selIdxMacc) @@ -77,63 +25,8 @@ namespace MP_TAB3.Pages #region Private Fields - private static Logger Log = LogManager.GetCurrentClassLogger(); - private string IdxMaccSubSel = ""; #endregion Private Fields - - #region Private Methods - - /// - /// Ricevuto nuovi dati da mostrare! - /// - /// - /// - /// - private void DataPipe_EA_NewMessage(object? sender, EventArgs e) - { - PubSubEventArgs currArgs = (PubSubEventArgs)e; - // conversione on-the-fly List --> allarmi - if (!string.IsNullOrEmpty(currArgs.newMessage)) - { - try - { - List? dataList = JsonConvert.DeserializeObject>(currArgs.newMessage); - if (dataList != null) - { - InvokeAsync(() => RefreshData(dataList)); - } - } - catch - { } - } - InvokeAsync(() => - { - StateHasChanged(); - }); - } - - private async Task ReloadData() - { - try - { - if (string.IsNullOrEmpty(IdxMacc)) - { - IdxMacc = await MsgServ.IdxMaccGet(); - } - // recupero MSE macchina.... - if (!string.IsNullOrEmpty(IdxMacc)) - { - CurrMSE = await MsgServ.GetMachineMse(IdxMacc); - } - } - catch (Exception exc) - { - Log.Error($"Eccezione in ReloadData{Environment.NewLine}{exc}"); - } - } - - #endregion Private Methods } } \ No newline at end of file diff --git a/MP-TAB3/Pages/Parameters.razor b/MP-TAB3/Pages/Parameters.razor index 0d437754..92671371 100644 --- a/MP-TAB3/Pages/Parameters.razor +++ b/MP-TAB3/Pages/Parameters.razor @@ -1,4 +1,5 @@ @page "/parameters" +@inherits BasePage @if (string.IsNullOrEmpty(IdxMacc) || CurrMSE == null) { diff --git a/MP-TAB3/Pages/Parameters.razor.cs b/MP-TAB3/Pages/Parameters.razor.cs index 8c65a789..f26fc545 100644 --- a/MP-TAB3/Pages/Parameters.razor.cs +++ b/MP-TAB3/Pages/Parameters.razor.cs @@ -4,108 +4,17 @@ using MP.Data.DatabaseModels; using MP.Data.Services; using Newtonsoft.Json; - namespace MP_TAB3.Pages { - public partial class Parameters : IDisposable + public partial class Parameters { - #region Public Methods - - public void Dispose() - { - IdxMacc = ""; - CurrMSE = null; - TDFeeder.dataPipe.EA_NewMessage -= DataPipe_EA_NewMessage; - } - - #endregion Public Methods - - #region Protected Properties - - protected MappaStatoExpl? CurrMSE { get; set; } = null; - - protected string IdxMacc { get; set; } = ""; - - [Inject] - protected MessageService MsgServ { get; set; } = null!; - - [Inject] - protected TabDataFeeder TDFeeder { get; set; } = null!; - - #endregion Protected Properties - #region Protected Methods protected override async Task OnInitializedAsync() { - await ReloadData(); - TDFeeder.dataPipe.EA_NewMessage += DataPipe_EA_NewMessage; - } - - protected async Task RefreshData(List 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); + await base.OnInitializedAsync(); } #endregion Protected Methods - - #region Private Methods - - /// - /// Ricevuto nuovi dati da mostrare! - /// - /// - /// - /// - private void DataPipe_EA_NewMessage(object? sender, EventArgs e) - { - PubSubEventArgs currArgs = (PubSubEventArgs)e; - // conversione on-the-fly List --> allarmi - if (!string.IsNullOrEmpty(currArgs.newMessage)) - { - try - { - List? dataList = JsonConvert.DeserializeObject>(currArgs.newMessage); - if (dataList != null) - { - InvokeAsync(() => RefreshData(dataList)); - } - } - catch - { } - } - InvokeAsync(() => - { - StateHasChanged(); - }); - } - - private async Task ReloadData() - { - if (string.IsNullOrEmpty(IdxMacc)) - { - IdxMacc = await MsgServ.IdxMaccGet(); - // recupero MSE macchina.... - if (!string.IsNullOrEmpty(IdxMacc)) - { - CurrMSE = await MsgServ.GetMachineMse(IdxMacc); - } - } - } - - #endregion Private Methods } } \ No newline at end of file diff --git a/MP-TAB3/Pages/ProdStop.razor b/MP-TAB3/Pages/ProdStop.razor index 60ddaeef..e7f1d040 100644 --- a/MP-TAB3/Pages/ProdStop.razor +++ b/MP-TAB3/Pages/ProdStop.razor @@ -1,4 +1,5 @@ @page "/prod-stop" +@inherits BasePage @if (string.IsNullOrEmpty(IdxMacc) || CurrMSE == null) { diff --git a/MP-TAB3/Pages/ProdStop.razor.cs b/MP-TAB3/Pages/ProdStop.razor.cs index e4a9f1ec..9a384968 100644 --- a/MP-TAB3/Pages/ProdStop.razor.cs +++ b/MP-TAB3/Pages/ProdStop.razor.cs @@ -8,17 +8,10 @@ using NLog; namespace MP_TAB3.Pages { - public partial class ProdStop : IDisposable + public partial class ProdStop { #region Public Methods - public void Dispose() - { - IdxMacc = ""; - CurrMSE = null; - TDFeeder.dataPipe.EA_NewMessage -= DataPipe_EA_NewMessage; - } - #endregion Public Methods #region Protected Fields @@ -41,13 +34,11 @@ namespace MP_TAB3.Pages protected string alertCss { get; set; } = "alert-danger"; - protected MappaStatoExpl? CurrMSE { get; set; } = null; protected DateTime DtRif { get; set; } = DateTime.Now; protected List events2show { get; set; } = new List(); - protected string IdxMacc { get; set; } = ""; /// /// Determina se insert sia Realtime o batch con DataOra (in base a diff tra DataOra @@ -85,9 +76,6 @@ namespace MP_TAB3.Pages [Inject] protected TabDataService TabDServ { get; set; } = null!; - [Inject] - protected TabDataFeeder TDFeeder { get; set; } = null!; - #endregion Protected Properties #region Protected Methods @@ -233,6 +221,7 @@ namespace MP_TAB3.Pages protected override async Task OnInitializedAsync() { + await base.OnInitializedAsync(); dltMinRealtime = SMServ.GetConfInt("dltMinRealtime"); minAnticipoRicalcolo = SMServ.GetConfInt("minAnticipoRicalcolo"); rdm_nEvStep = SMServ.GetConfInt("rdm_nEvStep"); @@ -240,25 +229,9 @@ namespace MP_TAB3.Pages rdm_ChkOnly = SMServ.GetConfBool("rdm_ChkOnly"); // leggo gli altri dati await ReloadData(); - TDFeeder.dataPipe.EA_NewMessage += DataPipe_EA_NewMessage; } - protected async Task RefreshData(List newList) - { - var ListMSE = newList; - if (!string.IsNullOrEmpty(IdxMacc)) - { - var rawData = ListMSE.Find(x => x.IdxMacchina == IdxMacc); - if (rawData != null) - { - CurrMSE = rawData; - } - else - { - await ReloadData(); - } - } - } + protected void SetDate(DateTime newDate) { @@ -284,47 +257,16 @@ namespace MP_TAB3.Pages #region Private Methods - /// - /// Ricevuto nuovi dati da mostrare! - /// - /// - /// - /// - private void DataPipe_EA_NewMessage(object? sender, EventArgs e) - { - PubSubEventArgs currArgs = (PubSubEventArgs)e; - // conversione on-the-fly List --> allarmi - if (!string.IsNullOrEmpty(currArgs.newMessage)) - { - try - { - List? dataList = JsonConvert.DeserializeObject>(currArgs.newMessage); - if (dataList != null) - { - InvokeAsync(() => RefreshData(dataList)); - } - } - catch - { } - } - InvokeAsync(() => - { - StateHasChanged(); - }); - } - private async Task ReloadData() + + protected override async Task ReloadData() { if (string.IsNullOrEmpty(IdxMacc)) { try { - IdxMacc = await MServ.IdxMaccGet(); - // recupero MSE macchina.... - if (!string.IsNullOrEmpty(IdxMacc)) - { - CurrMSE = await MServ.GetMachineMse(IdxMacc); - } + await base.ReloadData(); + // recupero eventi var eventsAll = await TabDServ.AnagEventiGetByMacch(IdxMacc); if (eventsAll != null) { diff --git a/MP-TAB3/Pages/TechSheet.razor b/MP-TAB3/Pages/TechSheet.razor index 0ef96f07..5f8d6233 100644 --- a/MP-TAB3/Pages/TechSheet.razor +++ b/MP-TAB3/Pages/TechSheet.razor @@ -1,4 +1,5 @@ @page "/tech-sheet" +@inherits BasePage @if (string.IsNullOrEmpty(IdxMacc) || CurrMSE == null) { diff --git a/MP-TAB3/Pages/TechSheet.razor.cs b/MP-TAB3/Pages/TechSheet.razor.cs index 7ea742a9..12d248e1 100644 --- a/MP-TAB3/Pages/TechSheet.razor.cs +++ b/MP-TAB3/Pages/TechSheet.razor.cs @@ -6,65 +6,30 @@ using Newtonsoft.Json; namespace MP_TAB3.Pages { - public partial class TechSheet : IDisposable + public partial class TechSheet { - #region Public Methods - - public void Dispose() - { - IdxMacc = ""; - CurrMSE = null; - TDFeeder.dataPipe.EA_NewMessage -= DataPipe_EA_NewMessage; - } - - #endregion Public Methods - #region Protected Properties - protected MappaStatoExpl? CurrMSE { get; set; } = null; - protected string IdxMacc { get; set; } = ""; - - [Inject] - protected MessageService MsgServ { get; set; } = null!; - [Inject] protected TabDataService TabDServ { get; set; } = null!; - [Inject] - protected TabDataFeeder TDFeeder { get; set; } = null!; - #endregion Protected Properties #region Protected Methods protected override async Task OnInitializedAsync() { - await ReloadData(); - TDFeeder.dataPipe.EA_NewMessage += DataPipe_EA_NewMessage; + await base.OnInitializedAsync(); SetupConf(); } - protected async Task RefreshData(List newList) - { - var ListMSE = newList; - if (!string.IsNullOrEmpty(IdxMacc)) - { - var rawData = ListMSE.Find(x => x.IdxMacchina == IdxMacc); - if (rawData != null) - { - CurrMSE = rawData; - } - } - await InvokeAsync(StateHasChanged); - } - #endregion Protected Methods #region Private Fields - private string disMessage = "Gestione schede tecniche di attrezzaggio, collaudo e verifica procedure di setup. Il modulo opzionale � attivabile su richiesta."; + private string disMessage = "Gestione schede tecniche di attrezzaggio, collaudo e verifica procedure di setup. Il modulo opzionale ` attivabile su richiesta."; - private string disSubtitle = "Funzionalit� disattivata"; + private string disSubtitle = "Funzionalità disattivata"; private string disTitle = "Scheda Tecnica"; @@ -74,48 +39,6 @@ namespace MP_TAB3.Pages #region Private Methods - /// - /// Ricevuto nuovi dati da mostrare! - /// - /// - /// - /// - private void DataPipe_EA_NewMessage(object? sender, EventArgs e) - { - PubSubEventArgs currArgs = (PubSubEventArgs)e; - // conversione on-the-fly List --> allarmi - if (!string.IsNullOrEmpty(currArgs.newMessage)) - { - try - { - List? dataList = JsonConvert.DeserializeObject>(currArgs.newMessage); - if (dataList != null) - { - InvokeAsync(() => RefreshData(dataList)); - } - } - catch - { } - } - InvokeAsync(() => - { - StateHasChanged(); - }); - } - - private async Task ReloadData() - { - if (string.IsNullOrEmpty(IdxMacc)) - { - IdxMacc = await MsgServ.IdxMaccGet(); - // recupero MSE macchina.... - if (!string.IsNullOrEmpty(IdxMacc)) - { - CurrMSE = await MsgServ.GetMachineMse(IdxMacc); - } - } - } - private void SetupConf() { TabDServ.ConfigGetVal("enableSchedaTecnica", ref enableSchedaTecnica); diff --git a/MP-TAB3/Resources/ChangeLog.html b/MP-TAB3/Resources/ChangeLog.html index 1bd4c4f9..1df8a689 100644 --- a/MP-TAB3/Resources/ChangeLog.html +++ b/MP-TAB3/Resources/ChangeLog.html @@ -1,6 +1,6 @@ Modulo MAPOSPEC -

Versione: 6.16.2402.2618

+

Versione: 6.16.2402.2620


Note di rilascio:
  • diff --git a/MP-TAB3/Resources/VersNum.txt b/MP-TAB3/Resources/VersNum.txt index 502eda9e..9fdb0fad 100644 --- a/MP-TAB3/Resources/VersNum.txt +++ b/MP-TAB3/Resources/VersNum.txt @@ -1 +1 @@ -6.16.2402.2618 +6.16.2402.2620 diff --git a/MP-TAB3/Resources/manifest.xml b/MP-TAB3/Resources/manifest.xml index 9889819e..ccf0e254 100644 --- a/MP-TAB3/Resources/manifest.xml +++ b/MP-TAB3/Resources/manifest.xml @@ -1,6 +1,6 @@ - 6.16.2402.2618 + 6.16.2402.2620 https://nexus.steamware.net/repository/SWS/MP-TAB3/stable/LAST/MP-TAB3.zip https://nexus.steamware.net/repository/SWS/MP-TAB3/stable/LAST/ChangeLog.html false diff --git a/MP-TAB3/wwwroot/images/pythonLogo.png b/MP-TAB3/wwwroot/images/pythonLogo.png new file mode 100644 index 00000000..2a550798 Binary files /dev/null and b/MP-TAB3/wwwroot/images/pythonLogo.png differ