Update MON

This commit is contained in:
Samuele Locatelli
2025-03-12 12:17:16 +01:00
parent 0daa2de23b
commit 91d7c8598f
15 changed files with 274 additions and 83 deletions
+66 -44
View File
@@ -4,57 +4,79 @@
}
else
{
<div class="card mb-3 border border-dark rounded rounded-3 shadow">
<div class="card-body @cssStatus(CurrRecord.Semaforo) bg-gradient text-white p-1">
<div class="card-title text-uppercase text-center fs-4 mb-0">@CurrRecord.Nome</div>
<div class="bg-light bg-gradient text-dark px-1 rounded shadow small lh-sm py-1">
<div class="card-text d-flex justify-content-between small">
<div class="px-1">
ART:
</div>
<div class="px-1">
@if (showArt == "CodArticolo")
{
<span>@CurrRecord.CodArticolo</span>
}
else
{
if (string.IsNullOrEmpty(CurrRecord.Disegno))
<div class="card mb-1 border border-dark rounded rounded-3 shadow">
<div class="card-body @cssStatus(CurrRecord.Semaforo, doAnimate) bg-gradient text-white p-1">
<div class="bg-dark text-white opacity-75 px-1 rounded shadow small lh-sm py-0 my-0">
<div class="card-title text-uppercase bg-dark text-center py-0 my-0 fs-3 text-truncate">
@CurrRecord.Nome
</div>
<div class="bg-dark text-white opacity-100 bg-gradient px-1 rounded shadow small lh-sm py-0">
<div class="card-text d-flex justify-content-between small lh-sm">
<div class="px-1">
ART:
</div>
<div class="px-1">
@if (showArt == "CodArticolo")
{
<span>[@CurrRecord.CodArticolo]</span>
<span>@CurrRecord.CodArticolo</span>
}
else
{
<span>@CurrRecord.Disegno</span>
if (string.IsNullOrEmpty(CurrRecord.Disegno))
{
<span>[@CurrRecord.CodArticolo]</span>
}
else
{
<span>@CurrRecord.Disegno</span>
}
}
}
</div>
</div>
</div>
<div class="card-text d-flex justify-content-between small">
<div class="px-1">
PODL:
<div class="card-text d-flex justify-content-between small lh-sm">
<div class="px-1">
PODL:
</div>
<div class="px-1">
@(CurrRecord.IdxPOdl > 0 ? $"{CurrRecord.IdxPOdl:00000000}" : "-")
</div>
</div>
<div class="px-1">
@(CurrRecord.IdxPOdl > 0 ? $"{CurrRecord.IdxPOdl:00000000}" : "-")
</div>
</div>
<div class="card-text d-flex justify-content-between small">
<div class="px-1">
ODL:
</div>
<div class="px-1">
@(CurrRecord.IdxOdl > 0 ? $"{CurrRecord.IdxOdl:00000000}" : "-")
<div class="card-text d-flex justify-content-between small lh-sm">
<div class="px-1">
ODL:
</div>
<div class="px-1">
@(CurrRecord.IdxOdl > 0 ? $"{CurrRecord.IdxOdl:00000000}" : "-")
</div>
</div>
@if (hasRow(4))
{
<div class="d-flex justify-content-between small lh-sm">
@foreach (var item in rowValues(4))
{
<div class="px-1 @item.TagCss">@item.TagName: <b>@currVal(item.TagLocation)</b></div>
}
</div>
}
else
{
<div class="d-flex justify-content-between small lh-sm">
<div class="px-1 pe-0">TC. Act</div>
<div class="px-1 ps-0">@getMinSec(@CurrRecord.TCLavRT) <small>[@getMinSec(@CurrRecord.TCAssegnato)]</small></div>
</div>
}
</div>
</div>
<div class="card-text text-light bg-dark bg-gradient rounded py-1 shadow my-1">
<div class=" d-flex justify-content-between text-warning small">
<div class="card-text text-light bg-dark bg-gradient rounded py-1 shadow mt-1 mb-0">
<div class=" d-flex justify-content-between text-warning small scroll-left">
<div class="px-1 text-uppercase">@CurrRecord.DescrizioneStato</div>
<div class="px-1">@getMinSec(getDecimal(@CurrRecord.Durata))</div>
</div>
<div class="d-flex justify-content-around fs-5">
<div class="px-1">
@CurrRecord.PezziProd / @CurrRecord.NumPezzi
<span class="text-light">@CurrRecord.PezziProd</span> / <span class="text-light">@CurrRecord.NumPezzi</span>
</div>
</div>
</div>
@@ -65,15 +87,15 @@ else
</div>
</div> *@
</div>
<div class="card-footer p-0 text-opacity-50 small" style="font-size: 0.7rem;">
<div class="d-flex justify-content-between @cssComStatus(CurrRecord.Semaforo, CurrRecord.LastUpdate)">
@if (showComErr(CurrRecord.LastUpdate))
{
<div class="px-1 text-warning">
<div class="card-footer px-1 pb-1 pt-0 small @cssStatus(CurrRecord.Semaforo, false)" style="font-size: 0.7rem;">
<div class="d-flex text-white justify-content-between @cssComStatus(CurrRecord.Semaforo, CurrRecord.LastUpdate)">
<div class="px-1 text-light">
@if (showComErr(CurrRecord.LastUpdate))
{
<b>C.101</b>
</div>
}
<div class="px-1 text-end text-light">
}
</div>
<div class="px-1 text-end text-light text-truncate">
@CurrRecord.LastUpdate
</div>
</div>
+91 -22
View File
@@ -44,19 +44,90 @@ namespace MP.Mon.Components
#endregion Protected Properties
#region Private Methods
#region Protected Methods
private decimal getDecimal(object? rawData)
/// <summary>
/// Verifica se ci sia un override per la riga indicata
/// </summary>
/// <param name="numRow"></param>
/// <returns></returns>
protected bool hasRow(int numRow)
{
decimal answ = 0;
if (rawData != null)
bool answ = false;
if (currTagConf != null)
{
decimal.TryParse($"{rawData}", out answ);
if (currTagConf.Count > 0)
{
var currVals = rowValues(numRow);
answ = currVals.Count > 0;
}
}
return answ;
}
/// <summary>
/// Restituisce (se presenti) valori di override per la riga indicata
/// </summary>
/// <param name="numRow"></param>
/// <returns></returns>
protected List<TagData> rowValues(int numRow)
{
List<TagData>? rowVals = null;
if (currTagConf != null)
{
if (currTagConf.Count > 0)
{
//cerco solo la riga corrente...
rowVals = currTagConf.Where(x => x.RowNum == numRow).ToList();
}
}
if (rowVals == null)
{
rowVals = new List<TagData>();
}
return rowVals;
}
/// <summary>
/// restituisce il valore data la tagLocation
/// </summary>
/// <param name="tagLocation"></param>
/// <returns></returns>
protected string currVal(string tagLocation)
{
string answ = "";
if (currTagVal.ContainsKey(tagLocation))
{
answ = currTagVal[tagLocation];
}
return answ;
}
private string cssStatus(string codSemaforo)
#endregion Protected Methods
#region Private Methods
private string cssComStatus(string semaforo, DateTime? lastUpdateN)
{
DateTime lastUpdate = lastUpdateN.HasValue ? (DateTime)lastUpdateN : DateTime.Now.AddHours(-1);
string answ = "bg-dark opacity-75"; cssStatus(semaforo, false);
if (DateTime.Now.Subtract(lastUpdate).TotalSeconds > (keepAliveMin * kaFactor))
{
answ = $"bg-danger";
// blink se secondo pari...
#if false
DateTime adesso = DateTime.Now;
int resto = 0;
Math.DivRem(adesso.Second, 2, out resto);
if (resto == 0)
{
answ += " opacity-100";
}
#endif
}
return answ;
}
private string cssStatus(string codSemaforo, bool animate)
{
string answ = "";
// se vuoto --> mostra nero!
@@ -69,28 +140,34 @@ namespace MP.Mon.Components
{
case "sVe":
answ = "bg-success";
doAnimate = false;
animate = false;
break;
case "sGi":
answ = "bg-warning";
break;
case "sGr":
answ = "bg-dark opacity-75";
doAnimate = false;
animate = false;
break;
case "sRo":
answ = "bg-danger";
break;
case "sBl":
answ = "bg-primary";
break;
case "sNe":
answ = "bg-dark";
break;
default:
break;
}
if (doAnimate)
if (animate)
{
if (doBlink)
{
@@ -99,21 +176,13 @@ namespace MP.Mon.Components
}
return answ;
}
private string cssComStatus(string semaforo, DateTime? lastUpdateN)
private decimal getDecimal(object? rawData)
{
DateTime lastUpdate = lastUpdateN.HasValue ? (DateTime)lastUpdateN : DateTime.Now.AddHours(-1);
string answ = cssStatus(semaforo);
if (DateTime.Now.Subtract(lastUpdate).TotalSeconds > (keepAliveMin * kaFactor))
decimal answ = 0;
if (rawData != null)
{
answ = $"bg-danger";
// blink se secondo pari...
DateTime adesso = DateTime.Now;
int resto = 0;
Math.DivRem(adesso.Second, 2, out resto);
if (resto == 0)
{
answ += " opacity-75";
}
decimal.TryParse($"{rawData}", out answ);
}
return answ;
}
+41
View File
@@ -0,0 +1,41 @@
/* gestione scroll testo */
.scroll-left {
overflow: hidden;
position: relative;
width: 100%;
white-space: nowrap;
}
.scroll-left span {
/*display: inline-block;*/
position: absolute;
width: 100%;
height: 100%;
margin: 0;
line-height: 1.5em;
/* Starting position */
-moz-transform: translateX(-50%);
-webkit-transform: translateX(-50%);
transform: translateX(-50%);
/* Apply animation to this element */
-moz-animation: scroll-left 20s ease infinite;
-webkit-animation: scroll-left 20s ease infinite;
animation: scroll-left 20s ease infinite;
}
/* Move it (define the animation) */
@keyframes scroll-left {
0% {
transform: translateX(-50%);
}
25% {
transform: translateX(-30%);
}
50% {
transform: translateX(-50%);
}
75% {
transform: translateX(-70%);
}
100% {
transform: translateX(-50%);
}
}
@@ -0,0 +1,47 @@
/* gestione scroll testo */
.scroll-left {
overflow: hidden;
position: relative;
width: 100%;
white-space: nowrap;
}
.scroll-left span {
/*display: inline-block;*/
position: absolute;
width: 100%;
height: 100%;
margin: 0;
line-height: 1.5em;
/* Starting position */
-moz-transform: translateX(-50%);
-webkit-transform: translateX(-50%);
transform: translateX(-50%);
/* Apply animation to this element */
-moz-animation: scroll-left 20s ease infinite;
-webkit-animation: scroll-left 20s ease infinite;
animation: scroll-left 20s ease infinite;
}
/* Move it (define the animation) */
@keyframes scroll-left {
0% {
transform: translateX(-50%);
}
25% {
transform: translateX(-30%);
}
50% {
transform: translateX(-50%);
}
75% {
transform: translateX(-70%);
}
100% {
transform: translateX(-50%);
}
}
+1
View File
@@ -0,0 +1 @@
.scroll-left{overflow:hidden;position:relative;width:100%;white-space:nowrap;}.scroll-left span{position:absolute;width:100%;height:100%;margin:0;line-height:1.5em;-moz-transform:translateX(-50%);-webkit-transform:translateX(-50%);transform:translateX(-50%);-moz-animation:scroll-left 20s ease infinite;-webkit-animation:scroll-left 20s ease infinite;animation:scroll-left 20s ease infinite;}@keyframes scroll-left{0%{transform:translateX(-50%);}25%{transform:translateX(-30%);}50%{transform:translateX(-50%);}75%{transform:translateX(-70%);}100%{transform:translateX(-50%);}}
+1 -1
View File
@@ -4,7 +4,7 @@
<TargetFramework>net6.0</TargetFramework>
<Nullable>enable</Nullable>
<ImplicitUsings>enable</ImplicitUsings>
<Version>6.16.2503.1207</Version>
<Version>6.16.2503.1211</Version>
</PropertyGroup>
<ItemGroup>
+15 -8
View File
@@ -35,13 +35,20 @@ else
mseIdx++;
if (currMse != null)
{
<div class="col p-0">
<DetailMSE CurrRecord="@currMse" currTagConf="@getIobTag(currMse.IdxMacchina)" currTagVal="@getTagVal(currMse.IdxMacchina)" doAnimate="@doAnimate" keepAliveMin="@keepAliveMin" showArt="@showArt" doBlink="@doBlink"></DetailMSE>
</div>
@* <div class="col p-0">
<DetailViewMSE CurrRecord="@currMse" currTagConf="@getIobTag(currMse.IdxMacchina)" currTagVal="@getTagVal(currMse.IdxMacchina)" doAnimate="@doAnimate" keepAliveMin="@keepAliveMin" showArt="@showArt" doBlink="@doBlink"></DetailViewMSE>
</div> *@
bool showOld = false;
bool showNew = true;
@if (showOld)
{
<div class="col p-0">
<DetailMSE CurrRecord="@currMse" currTagConf="@getIobTag(currMse.IdxMacchina)" currTagVal="@getTagVal(currMse.IdxMacchina)" doAnimate="@doAnimate" keepAliveMin="@keepAliveMin" showArt="@showArt" doBlink="@doBlink"></DetailMSE>
</div>
}
if(showNew)
{
<div class="col p-0">
<DetailViewMSE CurrRecord="@currMse" currTagConf="@getIobTag(currMse.IdxMacchina)" currTagVal="@getTagVal(currMse.IdxMacchina)" doAnimate="@doAnimate" keepAliveMin="@keepAliveMin" showArt="@showArt" doBlink="@doBlink"></DetailViewMSE>
</div>
}
}
else
{
@@ -51,7 +58,7 @@ else
</div>
}
@* <div class="row statusMap mx-1 my-1">
@* <div class="row statusMap mx-1 my-1">
@{
int currIdx = 0;
foreach (var recordIob in ListMSE)
+1 -1
View File
@@ -1,6 +1,6 @@
<body>
<i>Modulo MON MAPO</i>
<h4>Versione: 6.16.2503.1207</h4>
<h4>Versione: 6.16.2503.1211</h4>
<br /> Note di rilascio:
<ul>
<li>
+1 -1
View File
@@ -1 +1 @@
6.16.2503.1207
6.16.2503.1211
+1 -1
View File
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<item>
<version>6.16.2503.1207</version>
<version>6.16.2503.1211</version>
<url>https://nexus.steamware.net/repository/SWS/MP-MON/stable/LAST/MP.Mon.zip</url>
<changelog>https://nexus.steamware.net/repository/SWS/MP-MON/stable/LAST/ChangeLog.html</changelog>
<mandatory>false</mandatory>
+4
View File
@@ -10,5 +10,9 @@
{
"outputFile": "Components/DetailMSE.razor.css",
"inputFile": "Components/DetailMSE.razor.less"
},
{
"outputFile": "Components/DetailViewMSE.razor.css",
"inputFile": "Components/DetailViewMSE.razor.less"
}
]
+2 -2
View File
@@ -4,8 +4,8 @@
<TargetFramework>net6.0</TargetFramework>
<RootNamespace>MP.Stats</RootNamespace>
<UserSecretsId>826e877c-ba70-4253-84cb-d0b1cafd4440</UserSecretsId>
<Version>6.16.2503.1207</Version>
<Version>6.16.2503.1207</Version>
<Version>6.16.2503.1210</Version>
<Version>6.16.2503.1210</Version>
<GenerateDocumentationFile>true</GenerateDocumentationFile>
<NoWarn>$(NoWarn);1591</NoWarn>
<SatelliteResourceLanguages>en</SatelliteResourceLanguages>
+1 -1
View File
@@ -1,6 +1,6 @@
<body>
<i>Modulo statistiche MAPO</i>
<h4>Versione: 6.16.2503.1207</h4>
<h4>Versione: 6.16.2503.1210</h4>
<br />
Note di rilascio:
<ul>
+1 -1
View File
@@ -1 +1 @@
6.16.2503.1207
6.16.2503.1210
+1 -1
View File
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<item>
<version>6.16.2503.1207</version>
<version>6.16.2503.1210</version>
<url>https://nexus.steamware.net/repository/SWS/MP-STATS/stable/LAST/MP.Stats.zip</url>
<changelog>https://nexus.steamware.net/repository/SWS/MP-STATS/stable/LAST/ChangeLog.html</changelog>
<mandatory>false</mandatory>