diff --git a/MP-TAB3/Components/ControlsMan.razor.cs b/MP-TAB3/Components/ControlsMan.razor.cs index 0386e08c..0035f2aa 100644 --- a/MP-TAB3/Components/ControlsMan.razor.cs +++ b/MP-TAB3/Components/ControlsMan.razor.cs @@ -78,8 +78,30 @@ namespace MP_TAB3.Components #endregion Protected Properties + private bool isMulti = false; + #region Protected Methods + /// + /// Restituisce il codice IdxMacchina dell'impianto PARENT (se multi) altrimenti la stessa macchina... + /// + protected string getIdxMaccParent() + { + string answ = IdxMaccSel; + // se fosse multi controllo + if (isMulti) + { + // verifico se SIA una tavola (ha char "#") + int iSharp = IdxMaccSel.IndexOf('#'); + if (iSharp > 0) + { + // sistemo nome + answ = IdxMaccSel.Substring(0, iSharp); + } + } + return answ; + } + protected override async Task OnInitializedAsync() { await Task.Delay(1); @@ -87,7 +109,7 @@ namespace MP_TAB3.Components { enableControlli = SMServ.GetConfBool("enableControlli"); IdxMaccSel = RecMSE.IdxMacchina; - bool isMulti = SMServ.DictMacchMulti[IdxMaccSel] == 1; + isMulti = SMServ.DictMacchMulti[IdxMaccSel] == 1; if (isMulti) { var idxMSel = MServ.UserPrefGet(IdxMaccSel); @@ -103,7 +125,44 @@ namespace MP_TAB3.Components await doUpdate(); } } + /// + /// Macchina selezionata MAIN + /// + private string IdxMaccMain + { + get => RecMSE != null ? RecMSE.IdxMacchina : ""; + } + /// + /// Restituisce il codice IdxMacchina dell'altra tavola (se multi) altrimenti la stessa macchina... + /// + 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; + } + } protected async Task SaveKo() { isProcessing = true; @@ -112,6 +171,17 @@ namespace MP_TAB3.Components showNote = false; await doUpdate(); await E_Updated.InvokeAsync(false); + if (isMulti) + { + await E_MachSel.InvokeAsync(idxMaccAltraTav); + await Task.Delay(100); + } + else + { + TabDServ.NotifyDataInvalidated(IdxMaccSel); + } + await E_MachSel.InvokeAsync(IdxMaccSel); + Log.Info("Registrazione SaveKo x controllo pezzo"); isProcessing = false; } @@ -129,6 +199,17 @@ namespace MP_TAB3.Components showNote = false; await doUpdate(); await E_Updated.InvokeAsync(true); + if (isMulti) + { + await E_MachSel.InvokeAsync(idxMaccAltraTav); + await Task.Delay(100); + } + else + { + TabDServ.NotifyDataInvalidated(IdxMaccSel); + } + await E_MachSel.InvokeAsync(IdxMaccSel); + Log.Info("Registrazione SaveOk x controllo pezzo"); isProcessing = false; } @@ -144,8 +225,8 @@ namespace MP_TAB3.Components await Task.Delay(1); IdxMaccSel = selIdxMacc; await doUpdate(); - isProcessing = false; await Task.Delay(1); + isProcessing = false; await E_MachSel.InvokeAsync(selIdxMacc); } @@ -222,6 +303,7 @@ namespace MP_TAB3.Components private Periodo CurrPeriodo { get; set; } = new Periodo(); private string IdxMaccSel { get; set; } = ""; + private string IdxMaccAltra { get; set; } = ""; private int IdxOdl { get; set; } = 0; diff --git a/MP-TAB3/Components/MachineBlock.razor b/MP-TAB3/Components/MachineBlock.razor index 5044d5ae..5a3f2e8a 100644 --- a/MP-TAB3/Components/MachineBlock.razor +++ b/MP-TAB3/Components/MachineBlock.razor @@ -66,11 +66,11 @@ else
ODL:
-
@($"ODL{CRecMSE.IdxOdl:00000000}")
+
@($"{CRecMSE.IdxOdl:00000000}")
PODL:
-
@($"PODL{CRecMSE.IdxPOdl:00000000}")
+
@($"{CRecMSE.IdxPOdl:00000000}")
@@ -122,22 +122,21 @@ else
-
+
-
- +
-
ART:
+
ART:
@($"{CRecMSE.CodArticolo}")
-
-
ODL:
-
@($"ODL{CRecMSE.IdxOdl:00000000}")
+
+
ODL:
+
@($"{CRecMSE.IdxOdl:00000000}")
-
-
PODL:
-
@($"PODL{CRecMSE.IdxPOdl:00000000}")
+
+
PODL:
+
@($"{CRecMSE.IdxPOdl:00000000}")
diff --git a/MP-TAB3/Components/MachineBlock.razor.cs b/MP-TAB3/Components/MachineBlock.razor.cs index 4273816a..184ad592 100644 --- a/MP-TAB3/Components/MachineBlock.razor.cs +++ b/MP-TAB3/Components/MachineBlock.razor.cs @@ -402,9 +402,11 @@ namespace MP_TAB3.Components { // se riceve evento relativo a questo impianto --> ricarico dati prod... detailLoaded = false; + Log.Info("TabDServ_DataInvalidated: Reload Data"); // carico dettagli await loadDetails(); setGaugeVals(); + //await InvokeAsync(StateHasChanged); } } diff --git a/MP-TAB3/Components/OdlMan.razor.cs b/MP-TAB3/Components/OdlMan.razor.cs index ad194674..a3c1352d 100644 --- a/MP-TAB3/Components/OdlMan.razor.cs +++ b/MP-TAB3/Components/OdlMan.razor.cs @@ -12,82 +12,6 @@ namespace MP_TAB3.Components { public partial class OdlMan { - #region Private Fields - - private static Logger Log = LogManager.GetCurrentClassLogger(); - - private bool approvTCEnabled = false; - - private bool confRett = true; - - private double currVal = 0; - - private List emailAdmDest = new List(); - - private bool enableAnnullaSetup = false; - - private bool enableFixSetup = false; - - private bool enableRiattrezzaggio = false; - - private bool enableRPO = true; - - private bool enableSchedaTecnica = false; - - private bool enableSplitODL = false; - - private int expTimeMsec = 500; - - private bool forceCloseOdl = true; - - private int gPeriodReopenOdlTav = 1; - - private int idxPOdlSel = 0; - - private bool isMaster = false; - - private bool isMulti = false; - - private bool isProcessing = false; - - private bool isSlave = false; - - private int lastIdxPOdl = 0; - - private string lblOut = ""; - - private int MaxVal = 10; - - private int modoConfProd = 0; - - private double nextVal = 0; - - private string noteAttr = ""; - - private int numDayOdl = 5; - - private int PzPallet = 0; - - private string searchPodl = ""; - - private bool showAll = false; - - private bool showChkCloseOdlVal = false; - - private bool showOdlDetail = false; - - private bool showOdlProvv = false; - - private bool showPOdlData = true; - - private bool showReopenOdlTav = false; - - private bool showSplitOdlOnTav = false; - - private bool showSplitOdlRiattr = false; - - #endregion Private Fields - #region Public Properties [Parameter] @@ -106,7 +30,7 @@ namespace MP_TAB3.Components set { // salvo SOLO SE non sono in conferma - if (!setupActive) + if (!setupActive && !isProcessing) { currRecMSE = value; } @@ -256,248 +180,6 @@ namespace MP_TAB3.Components #endregion Protected Properties - #region Private Properties - - private bool annullaSetupVisible - { - get - { - bool answ = inAttr && enableAnnullaSetup && RecMSE != null && RecMSE.PezziConf == 0; - // forzato: se è doppia tavola è SEMPRE false... - if (isMulti) - { - answ = false; - } - // 2024.04.15 deciso con Gian di togliere la possibilità di annullare su doppia tavola (problema di doppio reset con conferme aperte su altra tavola) - //DateTime adesso = DateTime.Now; - //if (isMulti) - //{ - // var pUpd = Task.Run(async () => - // { - // // controllo ANCHE che la tav correntemente selezionata NON abbia pezzi da confermare - // datiProdAct = await TabDServ.StatoProdMacchina(IdxMaccMain, adesso); - // answ = datiProdAct.PzConfBuoni == 0 && datiProdAct.Pz2RecScarto == 0; - // }); - // pUpd.Wait(); - //} - return answ; - } - } - - private string baseLang - { - get => MsgServ.UserPrefGet("Lang"); - } - - private bool cancelSetupEnabled - { - //get => InAttr && enableSchedaTecnica && enableAnnullaSetup; - get => inAttr && enableAnnullaSetup; - } - - private ODLExpModel currOdl { get; set; } = new ODLExpModel(); - - private PODLExpModel currPodl { get; set; } = new PODLExpModel(); - - private MappaStatoExpl? currRecMSE { get; set; } = null; - - /// - /// Verifica se l'ALTRA macchina NON abbia ODL valido (== 0) - /// - private bool emptyOdlAltraMacc - { - get => IdxOdlAltra == 0; - } - - /// - /// Verifica se la macchina NON abbia ODL valido (== 0) - /// - private bool emptyOdlMacc - { - get => IdxOdl == 0; - } - - private bool endProdDisabled - { - get => !odlOk || needConfProd; - } - - /// - /// Variabile idxMacc parent x selezione ODL - /// - private string IdxMaccParent { get; set; } = ""; - - private string IdxMaccSel { get; set; } = ""; - - /// - /// Valore calcolato key ODL corrente... - /// - private int IdxOdl { get; set; } = 0; - - /// - /// Valore calcolato key ODL altra tavola attivo... - /// - private int IdxOdlAltra { get; set; } = 0; - - private bool inAttr { get; set; } = false; - - private bool isLoading { get; set; } = false; - - private MappaStatoExpl? lastRecMSE { get; set; } = null; - - private string lblWarnBody - { - get => odlOk ? Traduci("ConfProdBeforeContinueBody") : Traduci("setOdlBeforeContinueBody"); - } - - private string lblWarnHead - { - get => odlOk ? Traduci("ConfProdBeforeContinueHead") : Traduci("setOdlBeforeContinueHead"); - } - - private int MatrOpr - { - get => MsgServ.MatrOpr; - } - - private bool needConfProd { get; set; } = false; - - private int numPz2Conf - { - get - { - int answ = -1; - if (datiProdAct != null) - { - answ = datiProdAct.Pz2RecTot; - } - else - { - answ = RecMSE != null ? RecMSE.PezziProd - RecMSE.PezziConf : 0; - } - return answ; - } - } - - private int numRil2Conf - { - get - { - int answ = -1; - if (datiProdAct != null) - { - answ = datiProdAct.Pz2RecRilav; - } - return answ; - } - } - - private int numSca2Conf - { - get - { - int answ = -1; - if (datiProdAct != null) - { - answ = datiProdAct.Pz2RecScarto; - } - return answ; - } - } - - private bool setupActive { get; set; } = false; - - /// - /// Verifica visibilità btn riprendi ODL su 2° tavola SE: - /// - sia un impianto MULTI (= con + tavole) - /// - sia disattrezzata la tavola - /// - in tab congif: se sia abilitato la ripresa ODL sulla seconda tavola - /// - in tab config: sia il grace period - /// - NON SIANO passati i minuti indicati dalla chiusura - /// - private bool showReopOdlTav - { - get - { - bool answ = false; - // se è multi controllo - if (isMulti) - { - // verifico se NON HA ODL... - if (emptyOdlMacc) - { - if (!emptyOdlAltraMacc) - { - // verifico SE siamo nel gracePeriod... chiuso da meno di 1h - DateTime adesso = DateTime.Now; - DateTime dtChiusura = DateTime.Now.AddHours(-1); - try - { - var lastOdl = TabDServ.OdlLastByMacc(IdxMaccSel, true); - if (lastOdl != null) - { - dtChiusura = lastOdl.DataFine ?? DateTime.Now.AddHours(-1); - } - } - catch - { } - - // ora verifico SE E SOLO SE è ANCORA in attrezzaggio ora verifico SE - // ALTRA TAVOLA ha ODL... - if (dtChiusura.AddMinutes(gPeriodReopenOdlTav) > adesso) - { - answ = showReopenOdlTav; - } - } - } - } - return answ; - } - } - - /// - /// Verifica visibilità btn split ODL su 2° tavola SE: - /// - sia un impianto MULTI (= con + tavole) - /// - sia già attrezzata la prima tavola - /// - in tab Congif: se sia abilitato lo split ODL sulla seconda tavola - /// - la macchina SIA ANCORA in attrezzaggio (2019.07.08) = 2 - /// - private bool showSplitOdlOnTavVal - { - get - { - bool answ = false; - // se è multi controllo - if (isMulti) - { - // verifico se NON HA ODL ma ce l'ha altra tavola... - if (emptyOdlMacc) - { - // ora verifico SE ALTRA TAVOLA ha ODL... - if (!emptyOdlAltraMacc) - { - answ = showSplitOdlOnTav; - } - } - } - return answ; - } - } - - private decimal tcRichAttr { get; set; } = 0; - - private string txtBtnOdlDetail - { - get => showOdlDetail ? "Nascondi Dettaglio PODL" : "MOSTRA Dettaglio ODL Corrente"; - } - - private string txtForceCloseOdl - { - get => forceCloseOdl ? Traduci("ForceCloseODL") : Traduci("SplitCurrODL"); - } - - #endregion Private Properties - #region Protected Methods /// @@ -574,11 +256,11 @@ namespace MP_TAB3.Components return; // prima di tutto svuoto dati prod + isProcessing = true; SDService.MachProdStRem(IdxMaccSel); // preparo gestione progress display MaxVal = 10; - isProcessing = true; int currStep = 0; await advStep(currStep); @@ -661,12 +343,12 @@ namespace MP_TAB3.Components return; // prima di tutto svuoto dati prod + isProcessing = true; SDService.MachProdStRem(IdxMaccSel); MaxVal = 3; int currStep = 0; await advStep(currStep); - isProcessing = true; // chiamo stored x riprendere ODL (toglie data chiusura...) var rowRes = await TabDServ.OdlReopenOdlMacc(IdxMaccSel); if (rowRes != null && rowRes.IdxOdl > 0) @@ -689,6 +371,7 @@ namespace MP_TAB3.Components await FlushMpIoOdlCache(); // chiudo update... isProcessing = false; + await InvokeAsync(StateHasChanged); } /// @@ -702,12 +385,12 @@ namespace MP_TAB3.Components return; // prima di tutto svuoto dati prod + isProcessing = true; SDService.MachProdStRem(IdxMaccSel); MaxVal = 3; int currStep = 0; await advStep(currStep); - isProcessing = true; // se ho ODL su altra macchina... if (IdxOdlAltra > 0) { @@ -729,6 +412,7 @@ namespace MP_TAB3.Components await advStep(currStep++); // chiudo update... isProcessing = false; + await InvokeAsync(StateHasChanged); } /// @@ -744,13 +428,13 @@ namespace MP_TAB3.Components return; // prima di tutto svuoto dati prod + isProcessing = true; SDService.MachProdStRem(IdxMaccSel); // preparo gestione progress display MaxVal = 8; int currStep = 0; await advStep(currStep); - isProcessing = true; await confermaProdOdl(true); await advStep(currStep++); // se vedesse TCRich a zero lo reimposta a quello assegnato... @@ -865,6 +549,7 @@ namespace MP_TAB3.Components MaxVal = 11; int currStep = 0; // elimino dati status... + isProcessing = true; SDService.MachProdStRem(IdxMaccSel); SDService.MachProdStRem(IdxMaccParent); @@ -880,7 +565,6 @@ namespace MP_TAB3.Components { } } await advStep(currStep); - isProcessing = true; DateTime adesso = DateTime.Now; await advStep(currStep++); // proseguo @@ -1085,7 +769,7 @@ namespace MP_TAB3.Components protected override async Task OnParametersSetAsync() { - if (!setupActive) + if (!setupActive && !isProcessing) { if (RecMSE != null && !RecMSE.MostlyEquals(lastRecMSE)) { @@ -1122,11 +806,11 @@ namespace MP_TAB3.Components return; // prima di tutto svuoto dati prod + isProcessing = true; SDService.MachProdStRem(IdxMaccSel); // preparo gestione progress display MaxVal = 7; - isProcessing = true; int currStep = 0; await advStep(currStep); // leggo idxOdl da ultimo odl attivo x macchina @@ -1387,13 +1071,13 @@ namespace MP_TAB3.Components return; // prima di tutto svuoto dati prod + isProcessing = true; SDService.MachProdStRem(IdxMaccSel); // preparo gestione progress display MaxVal = 9; int currStep = 0; await advStep(currStep); - isProcessing = true; // se vedesse TCRich a zero lo reimposta a quello assegnato... if (tcRichAttr == 0) @@ -1461,6 +1145,324 @@ namespace MP_TAB3.Components #endregion Protected Methods + #region Private Fields + + private static Logger Log = LogManager.GetCurrentClassLogger(); + + private bool approvTCEnabled = false; + + private bool confRett = true; + + private double currVal = 0; + + private List emailAdmDest = new List(); + + private bool enableAnnullaSetup = false; + + private bool enableFixSetup = false; + + private bool enableRiattrezzaggio = false; + + private bool enableRPO = true; + + private bool enableSchedaTecnica = false; + + private bool enableSplitODL = false; + + private int expTimeMsec = 500; + + private bool forceCloseOdl = true; + + private int gPeriodReopenOdlTav = 1; + + private int idxPOdlSel = 0; + + private bool isMaster = false; + + private bool isMulti = false; + + private bool isProcessing = false; + + private bool isSlave = false; + + private int lastIdxPOdl = 0; + + private string lblOut = ""; + + private int MaxVal = 10; + + private int modoConfProd = 0; + + private double nextVal = 0; + + private string noteAttr = ""; + + private int numDayOdl = 5; + + private int PzPallet = 0; + + private string searchPodl = ""; + + private bool showAll = false; + + private bool showChkCloseOdlVal = false; + + private bool showOdlDetail = false; + + private bool showOdlProvv = false; + + private bool showPOdlData = true; + + private bool showReopenOdlTav = false; + + private bool showSplitOdlOnTav = false; + + private bool showSplitOdlRiattr = false; + + #endregion Private Fields + + #region Private Properties + + private bool annullaSetupVisible + { + get + { + bool answ = inAttr && enableAnnullaSetup && RecMSE != null && RecMSE.PezziConf == 0; + // forzato: se è doppia tavola è SEMPRE false... + if (isMulti) + { + answ = false; + } + // 2024.04.15 deciso con Gian di togliere la possibilità di annullare su doppia tavola (problema di doppio reset con conferme aperte su altra tavola) + //DateTime adesso = DateTime.Now; + //if (isMulti) + //{ + // var pUpd = Task.Run(async () => + // { + // // controllo ANCHE che la tav correntemente selezionata NON abbia pezzi da confermare + // datiProdAct = await TabDServ.StatoProdMacchina(IdxMaccMain, adesso); + // answ = datiProdAct.PzConfBuoni == 0 && datiProdAct.Pz2RecScarto == 0; + // }); + // pUpd.Wait(); + //} + return answ; + } + } + + private string baseLang + { + get => MsgServ.UserPrefGet("Lang"); + } + + private bool cancelSetupEnabled + { + //get => InAttr && enableSchedaTecnica && enableAnnullaSetup; + get => inAttr && enableAnnullaSetup; + } + + private ODLExpModel currOdl { get; set; } = new ODLExpModel(); + + private PODLExpModel currPodl { get; set; } = new PODLExpModel(); + + private MappaStatoExpl? currRecMSE { get; set; } = null; + + /// + /// Verifica se l'ALTRA macchina NON abbia ODL valido (== 0) + /// + private bool emptyOdlAltraMacc + { + get => IdxOdlAltra == 0; + } + + /// + /// Verifica se la macchina NON abbia ODL valido (== 0) + /// + private bool emptyOdlMacc + { + get => IdxOdl == 0; + } + + private bool endProdDisabled + { + get => !odlOk || needConfProd; + } + + /// + /// Variabile idxMacc parent x selezione ODL + /// + private string IdxMaccParent { get; set; } = ""; + + private string IdxMaccSel { get; set; } = ""; + + /// + /// Valore calcolato key ODL corrente... + /// + private int IdxOdl { get; set; } = 0; + + /// + /// Valore calcolato key ODL altra tavola attivo... + /// + private int IdxOdlAltra { get; set; } = 0; + + private bool inAttr { get; set; } = false; + + private bool isLoading { get; set; } = false; + + private MappaStatoExpl? lastRecMSE { get; set; } = null; + + private string lblWarnBody + { + get => odlOk ? Traduci("ConfProdBeforeContinueBody") : Traduci("setOdlBeforeContinueBody"); + } + + private string lblWarnHead + { + get => odlOk ? Traduci("ConfProdBeforeContinueHead") : Traduci("setOdlBeforeContinueHead"); + } + + private int MatrOpr + { + get => MsgServ.MatrOpr; + } + + private bool needConfProd { get; set; } = false; + + private int numPz2Conf + { + get + { + int answ = -1; + if (datiProdAct != null) + { + answ = datiProdAct.Pz2RecTot; + } + else + { + answ = RecMSE != null ? RecMSE.PezziProd - RecMSE.PezziConf : 0; + } + return answ; + } + } + + private int numRil2Conf + { + get + { + int answ = -1; + if (datiProdAct != null) + { + answ = datiProdAct.Pz2RecRilav; + } + return answ; + } + } + + private int numSca2Conf + { + get + { + int answ = -1; + if (datiProdAct != null) + { + answ = datiProdAct.Pz2RecScarto; + } + return answ; + } + } + + private bool setupActive { get; set; } = false; + + /// + /// Verifica visibilità btn riprendi ODL su 2° tavola SE: + /// - sia un impianto MULTI (= con + tavole) + /// - sia disattrezzata la tavola + /// - in tab congif: se sia abilitato la ripresa ODL sulla seconda tavola + /// - in tab config: sia il grace period + /// - NON SIANO passati i minuti indicati dalla chiusura + /// + private bool showReopOdlTav + { + get + { + bool answ = false; + // se è multi controllo + if (isMulti) + { + // verifico se NON HA ODL... + if (emptyOdlMacc) + { + if (!emptyOdlAltraMacc) + { + // verifico SE siamo nel gracePeriod... chiuso da meno di 1h + DateTime adesso = DateTime.Now; + DateTime dtChiusura = DateTime.Now.AddHours(-1); + try + { + var lastOdl = TabDServ.OdlLastByMacc(IdxMaccSel, true); + if (lastOdl != null) + { + dtChiusura = lastOdl.DataFine ?? DateTime.Now.AddHours(-1); + } + } + catch + { } + + // ora verifico SE E SOLO SE è ANCORA in attrezzaggio ora verifico SE + // ALTRA TAVOLA ha ODL... + if (dtChiusura.AddMinutes(gPeriodReopenOdlTav) > adesso) + { + answ = showReopenOdlTav; + } + } + } + } + return answ; + } + } + + /// + /// Verifica visibilità btn split ODL su 2° tavola SE: + /// - sia un impianto MULTI (= con + tavole) + /// - sia già attrezzata la prima tavola + /// - in tab Congif: se sia abilitato lo split ODL sulla seconda tavola + /// - la macchina SIA ANCORA in attrezzaggio (2019.07.08) = 2 + /// + private bool showSplitOdlOnTavVal + { + get + { + bool answ = false; + // se è multi controllo + if (isMulti) + { + // verifico se NON HA ODL ma ce l'ha altra tavola... + if (emptyOdlMacc) + { + // ora verifico SE ALTRA TAVOLA ha ODL... + if (!emptyOdlAltraMacc) + { + answ = showSplitOdlOnTav; + } + } + } + return answ; + } + } + + private decimal tcRichAttr { get; set; } = 0; + + private string txtBtnOdlDetail + { + get => showOdlDetail ? "Nascondi Dettaglio PODL" : "MOSTRA Dettaglio ODL Corrente"; + } + + private string txtForceCloseOdl + { + get => forceCloseOdl ? Traduci("ForceCloseODL") : Traduci("SplitCurrODL"); + } + + #endregion Private Properties + #region Private Methods private void checkAll() diff --git a/MP-TAB3/MP-TAB3.csproj b/MP-TAB3/MP-TAB3.csproj index 0ca55470..03ecf080 100644 --- a/MP-TAB3/MP-TAB3.csproj +++ b/MP-TAB3/MP-TAB3.csproj @@ -3,7 +3,7 @@ net6.0 enable - 6.16.2503.1309 + 6.16.2503.1314 enable MP_TAB3 diff --git a/MP-TAB3/Resources/ChangeLog.html b/MP-TAB3/Resources/ChangeLog.html index e1dc43d6..b7b138c4 100644 --- a/MP-TAB3/Resources/ChangeLog.html +++ b/MP-TAB3/Resources/ChangeLog.html @@ -1,6 +1,6 @@ Modulo MAPOSPEC -

Versione: 6.16.2503.1309

+

Versione: 6.16.2503.1314


Note di rilascio:
  • diff --git a/MP-TAB3/Resources/VersNum.txt b/MP-TAB3/Resources/VersNum.txt index 3b73a039..5ef67702 100644 --- a/MP-TAB3/Resources/VersNum.txt +++ b/MP-TAB3/Resources/VersNum.txt @@ -1 +1 @@ -6.16.2503.1309 +6.16.2503.1314 diff --git a/MP-TAB3/Resources/manifest.xml b/MP-TAB3/Resources/manifest.xml index 4a4d3565..3549ff7b 100644 --- a/MP-TAB3/Resources/manifest.xml +++ b/MP-TAB3/Resources/manifest.xml @@ -1,6 +1,6 @@ - 6.16.2503.1309 + 6.16.2503.1314 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/css/site.css b/MP-TAB3/wwwroot/css/site.css index 6c475069..0087c6ec 100644 --- a/MP-TAB3/wwwroot/css/site.css +++ b/MP-TAB3/wwwroot/css/site.css @@ -138,7 +138,15 @@ article { * { font-size: 15px; } -@media (max-width: 450.98) { +@media (max-width: 450) { + * { + font-size: 13px; + } + .longStopListNotes { + max-height: 120px; + } +} +@media (max-width: 600px) { * { font-size: 14px; } @@ -146,17 +154,9 @@ article { max-height: 120px; } } -@media (max-width: 601.98px) { - * { - font-size: 16px; - } - .longStopListNotes { - max-height: 120px; - } -} @media (max-width: 800px) { * { - font-size: 18px; + font-size: 16px; } .top-row:not(.auth) { display: none; diff --git a/MP-TAB3/wwwroot/css/site.less b/MP-TAB3/wwwroot/css/site.less index 77c59f03..ab33a915 100644 --- a/MP-TAB3/wwwroot/css/site.less +++ b/MP-TAB3/wwwroot/css/site.less @@ -158,9 +158,9 @@ a, .btn-link { font-size: 15px; } -@media (max-width: 450.98) { +@media (max-width: 450) { * { - font-size: 14px; + font-size: 13px; } .longStopListNotes { @@ -169,9 +169,9 @@ a, .btn-link { } -@media (max-width: 601.98px) { +@media (max-width: 600px) { * { - font-size: 16px; + font-size: 14px; } .longStopListNotes { max-height: 120px; @@ -180,7 +180,7 @@ a, .btn-link { @media (max-width: 800px) { * { - font-size: 18px; + font-size: 16px; } .top-row:not(.auth) { display: none; diff --git a/MP-TAB3/wwwroot/css/site.min.css b/MP-TAB3/wwwroot/css/site.min.css index e3155a1c..a317e18e 100644 --- a/MP-TAB3/wwwroot/css/site.min.css +++ b/MP-TAB3/wwwroot/css/site.min.css @@ -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%;}.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;}.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;}*{font-size:15px;}@media(max-width:450.98){*{font-size:14px;}.longStopListNotes{max-height:120px;}}@media(max-width:601.98px){*{font-size:16px;}.longStopListNotes{max-height:120px;}}@media(max-width:800px){*{font-size:18px;}.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;}} \ No newline at end of file +@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%;}.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;}.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;}*{font-size:15px;}@media(max-width:450){*{font-size:13px;}.longStopListNotes{max-height:120px;}}@media(max-width:600px){*{font-size:14px;}.longStopListNotes{max-height:120px;}}@media(max-width:800px){*{font-size:16px;}.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;}} \ No newline at end of file