diff --git a/MP-TAB/MP-TAB.Client/Components/MachineBlock.razor b/MP-TAB/MP-TAB.Client/Components/MachineBlock.razor index 522092a5..7f9c12b1 100644 --- a/MP-TAB/MP-TAB.Client/Components/MachineBlock.razor +++ b/MP-TAB/MP-TAB.Client/Components/MachineBlock.razor @@ -1,6 +1,6 @@ @if (RecMSE == null) { -
+
@@ -13,14 +13,86 @@ } else { -
-
-
- @RecMSE.IdxMacchina -
- @RecMSE.DescrizioneStato +
+ @RecMSE.CodMacchina +
+
+
+
+
+ Art +
+
+ @RecMSE.CodArticolo +
+
+
+
+ @($"PODL{RecMSE.IdxPOdl:00000000}") +
+
+ @($"ODL{RecMSE.IdxOdl:00000000}") +
+
+
+
+
+

+ @RecMSE.Nome +

+
+
+
+
+ @RecMSE.DescrizioneStato +
+
+ @(formatDurata(RecMSE.Durata)) +
+
+
+
+
+
+ Confermati +
+
+ Prodotti +
+
+ Ordinati +
+
+
+
+ @($"{RecMSE.PezziConf:N0}") +
+
+ @($"{RecMSE.PezziProd:N0}") +
+
+ @($"{RecMSE.NumPezzi:N0}") +
+
+
+
+ @* *@ +
+
+
+
+
+ + @*
+
+ @RecMSE.IdxMacchina +
+ @RecMSE.DescrizioneStato +
+
+
*@
} @@ -31,21 +103,74 @@ else public MappaStatoExpl? RecMSE { get; set; } = null; - [Parameter] - public bool DoBlink { get; set; } = false; - - [Parameter] - public bool DoAnimate { get; set; } = false; - - [Parameter] public int keepAliveMin { get; set; } = 5; protected int kaFactor = 60 / 2; - protected override async Task OnParametersSetAsync() + protected override void OnInitialized() { - Console.WriteLine($"MachineBlock | Parameter SET! | Macc: {RecMSE?.IdxMacchina}"); - await InvokeAsync(StateHasChanged); + // se configurata uso cartella virtuale... altrimenti cartella processo + imgBasePath = Environment.CurrentDirectory;// @"C:\Steamware\macchine"; + } + + private string imgBasePath = ""; + + /// + /// url completo immagine + /// + /// + /// + public string ImgUrlMacc(string url) + { + string answ = ""; + if (string.IsNullOrEmpty(url.ToString())) + { + url = "Steamware.png"; + } + // verifico esistenza macchina SMALL... + answ = $"images/macchine/small/{url}"; + string fullPath = Path.Combine(imgBasePath, "wwwroot", answ); + if (!File.Exists(fullPath)) + { + // se non ci fosse cerco immagine fullsize + answ = $"images/macchine/{url}"; + fullPath = Path.Combine(imgBasePath, "wwwroot", answ); + } + // altrimenti metto default Steamware + if (!File.Exists(fullPath)) + { + answ = "images/macchine/Steamware.png"; + } + return answ; + } + + /// + /// formatta la durata in minuti in un modo "human readable" gg/ore/min + /// + /// minuti + /// + public static string formatDurata(double? minuti) + { + string answ = "??"; + if (minuti != null) + { + DateTime tempo = new DateTime(); + tempo = tempo.AddMinutes((double)minuti); + + if (minuti < 60) + { + answ = $"{tempo.Minute:00}:{tempo.Second:00}"; + } + else if (minuti < 1440) + { + answ = $"{tempo.Hour}h {tempo.Minute}m"; + } + else + { + answ = $"{tempo.DayOfYear}g {tempo.Hour}h"; + } + } + return answ; } private string cssComStatus(string semaforo, DateTime? lastUpdateN) @@ -76,13 +201,6 @@ else } string codColore = codSemaforo.Substring(1, 2); string answ = $"{baseCss}{codColore}"; - if (DoAnimate && codColore != "Ve") - { - if (DoBlink) - { - answ += "_b"; - } - } return answ; } protected string baseCss = "sem"; diff --git a/MP-TAB/MP-TAB.Client/Components/MachineBlock.razor.css b/MP-TAB/MP-TAB.Client/Components/MachineBlock.razor.css index afa3eb83..c6e037aa 100644 --- a/MP-TAB/MP-TAB.Client/Components/MachineBlock.razor.css +++ b/MP-TAB/MP-TAB.Client/Components/MachineBlock.razor.css @@ -1,165 +1,71 @@ -/* Gestione semafori */ -.statusMap { - /*background: rgba(0,0,0,0.3);*/ +/* Bordi */ +/*.rCAll { + border-radius: 10px; } -.statusMap .ui-title, -.statusMap .ui-li-aside { - font-weight: 400; - text-transform: uppercase; - font-size: 2.5em; - line-height: 1.1em; - color: #DEDEDE; - text-shadow: 2px 2px 4px #000; - text-align: center; - background: linear-gradient(270deg, rgba(20, 20, 20, 0.7), rgba(100, 100, 100, 0.7), rgba(20, 20, 20, 0.7)); + +.rCTop { + border-radius: 10px 10px 0 0; } -.statusMap .ui-subtitle { - line-height: 1.1em; - color: #DEDEDE; - text-shadow: 2px 2px 4px #000; - text-align: center; - background: linear-gradient(270deg, rgba(0, 0, 0, 0.4), rgba(100, 100, 100, 0.4), rgba(0, 0, 0, 0.4)); + +.rCBot { + border-radius: 0 0 10px 10px; +}*/ +.mapBlock { + font-family: 'Open Sans Condensed', sans-serif; + color: #FFF; + background-image: linear-gradient(#111, #000); + min-width: 8em; } -.statusMap .ui-footer { - color: #CDCDCD; - background: linear-gradient(270deg, rgba(10, 10, 10, 0.7), rgba(80, 80, 80, 0.7), rgba(10, 10, 10, 0.7)); +.labelTopDx { + padding: 0.1em 0.4em; + width: auto; + min-height: 0; + top: 0; + left: auto; + bottom: auto; + color: #FFFFFF; + background: #2200DE; + background: rgba(33, 0, 200, 0.7); + -webkit-border-top-right-radius: inherit; + border-top-right-radius: inherit; + -webkit-border-top-left-radius: inherit; + border-top-left-radius: inherit; + -webkit-border-bottom-left-radius: inherit; + border-bottom-left-radius: inherit; + -webkit-border-bottom-right-radius: 0; + border-bottom-right-radius: 0; } -.machBlock { - padding: 0 2px 0 2px; -} -/* END: gestione layout dinamico mappa... */ /* area semafori*/ -.semBlinkVe, -.semFixVe, -.semFixVe_b, -.semVe, -.semVe_b { +.sVe { + text-align: left; background: #009036; background: rgba(0, 255, 80, 0.6); - color: #FFFFAA; + /*padding: 0px 4px 0px 4px;*/ + color: Yellow; } -.semBlinkGr, -.semFixGr, -.semFixGr_b, -.semGr, -.semGr_b { +.sGi { + text-align: left; + background: #ffec00; + background: rgba(255, 220, 0, 0.6); + /*padding: 0px 4px 0px 4px;*/ +} +.sRo { + text-align: left; + background-color: #e2001a; + background: rgba(240, 0, 10, 0.6); + /*padding: 0px 4px 0px 4px;*/ +} +.sBl { + text-align: left; + background: #3690FF; + background: rgba(0, 80, 255, 0.6); + /*padding: 0px 4px 0px 4px;*/ + color: Yellow; +} +.sGr { + text-align: left; background-color: #bcbcbc; background: rgba(180, 180, 180, 0.6); + /*padding: 0px 4px 0px 4px;*/ } -.semGi { - text-align: left; - background: #8a8d27; - background: rgba(230, 210, 0, 0.6); - padding: 0px 4px 0px 4px; - color: #000; -} -.semGi_b, -.semFixGi, -.semFixGi_b { - text-align: left; - background: #f9ff18; - background: rgba(255, 255, 0, 0.8); - padding: 0px 4px 0px 4px; - color: #333; -} -.semBl { - text-align: left; - background: #000E7A; - background: rgba(0, 5, 200, 0.6); - padding: 0px 4px 0px 4px; - color: #959500; -} -.semBl_b, -.semFixBl, -.semFixBl_b { - text-align: left; - background: #243FFF; - background: rgba(60, 80, 255, 0.8); - padding: 0px 4px 0px 4px; - color: #ffff32; -} -.semRo { - text-align: left; - background-color: #7a000e; - background: rgba(200, 0, 5, 0.6); - padding: 0px 4px 0px 4px; - color: #959500; -} -.semRo_b, -.semFixRo, -.semFixRo_b { - text-align: left; - background-color: #ff243f; - background: rgba(255, 60, 80, 0.8); - padding: 0px 4px 0px 4px; - color: #ffff32; -} -/* semafori con animazione blinking */ -.no-cpu { - -moz-transform: translateZ(0); - -o-transform: translateZ(0); - -webkit-transform: translateZ(0); - -ms-transform: translateZ(0); - transform: translateZ(0); -} -@-webkit-keyframes blinkBack { - 0% { - background-position: 0% 50%; - } - 50% { - background-position: 100% 50%; - } - 100% { - background-position: 0% 50%; - } -} -@-moz-keyframes blinkBack { - 0% { - background-position: 0% 50%; - } - 50% { - background-position: 100% 50%; - } - 100% { - background-position: 0% 50%; - } -} -@-o-keyframes blinkBack { - 0% { - background-position: 0% 50%; - } - 50% { - background-position: 100% 50%; - } - 100% { - background-position: 0% 50%; - } -} -@keyframes blinkBack { - 0% { - background-position: 0% 50%; - } - 50% { - background-position: 100% 50%; - } - 100% { - background-position: 0% 50%; - } -} -.semBlinkGi { - background: linear-gradient(270deg, #8a8d27, #f9ff18); - background-size: 400% 400%; - -webkit-animation: blinkBack 2s ease infinite; - -moz-animation: blinkBack 2s ease infinite; - -o-animation: blinkBack 2s ease infinite; - animation: blinkBack 2s ease infinite; -} -.semBlinkRo { - background: linear-gradient(270deg, #7a000e, #ff243f); - background-size: 400% 400%; - -webkit-animation: blinkBack 2s ease infinite; - -moz-animation: blinkBack 2s ease infinite; - -o-animation: blinkBack 2s ease infinite; - animation: blinkBack 2s ease infinite; - color: Yellow; -} \ No newline at end of file +/*end semafori */ \ No newline at end of file diff --git a/MP-TAB/MP-TAB.Client/Components/MachineBlock.razor.less b/MP-TAB/MP-TAB.Client/Components/MachineBlock.razor.less index 3f11de19..439b5756 100644 --- a/MP-TAB/MP-TAB.Client/Components/MachineBlock.razor.less +++ b/MP-TAB/MP-TAB.Client/Components/MachineBlock.razor.less @@ -1,194 +1,78 @@ - -/* Gestione semafori */ - -.statusMap { - /*background: rgba(0,0,0,0.3);*/ +/* Bordi */ +/*.rCAll { + border-radius: 10px; } -.statusMap .ui-title, .statusMap .ui-li-aside { - font-weight: 400; - text-transform: uppercase; - font-size: 2.5em; - line-height: 1.1em; - color: #DEDEDE; - text-shadow: 2px 2px 4px #000; - text-align: center; - background: linear-gradient(270deg, rgba(20,20,20,0.7), rgba(100,100,100,0.7), rgba(20,20,20,0.7)); +.rCTop { + border-radius: 10px 10px 0 0; } -.statusMap .ui-subtitle { - line-height: 1.1em; - color: #DEDEDE; - text-shadow: 2px 2px 4px #000; - text-align: center; - background: linear-gradient(270deg, rgba(0,0,0,0.4), rgba(100,100,100,0.4), rgba(0,0,0,0.4)); +.rCBot { + border-radius: 0 0 10px 10px; +}*/ + +.mapBlock { + font-family: 'Open Sans Condensed', sans-serif; + color: #FFF; + background-image: linear-gradient(#111, #000); + min-width: 8em; } -.statusMap .ui-art { +.labelTopDx { + padding: 0.1em 0.4em; + width: auto; + min-height: 0; + top: 0; + left: auto; + bottom: auto; + color: #FFFFFF; + background: #2200DE; + background: rgba(33,0,200,.7); + -webkit-border-top-right-radius: inherit; + border-top-right-radius: inherit; + -webkit-border-top-left-radius: inherit; + border-top-left-radius: inherit; + -webkit-border-bottom-left-radius: inherit; + border-bottom-left-radius: inherit; + -webkit-border-bottom-right-radius: 0; + border-bottom-right-radius: 0; } -.statusMap .ui-footer { - color: #CDCDCD; - background: linear-gradient(270deg, rgba(10,10,10,0.7), rgba(80,80,80,0.7), rgba(10,10,10,0.7)); -} - -.machBlock { - padding: 0 2px 0 2px; -} -/* END: gestione layout dinamico mappa... */ /* area semafori*/ -.semBlinkVe, -.semFixVe, -.semFixVe_b, -.semVe, -.semVe_b { +.sVe { + text-align: left; background: #009036; background: rgba(0,255,80,.6); - color: #FFFFAA; -} - -.semBlinkGr, -.semFixGr, -.semFixGr_b, -.semGr, -.semGr_b { - background-color: #bcbcbc; - background: rgba(180,180,180,.6); -} - -.semGi { - text-align: left; - background: #8a8d27; - background: rgba(230,210,0,.6); - padding: 0px 4px 0px 4px; - color: #000; -} - -.semGi_b, -.semFixGi, -.semFixGi_b { - text-align: left; - background: #f9ff18; - background: rgba(255,255,0,.8); - padding: 0px 4px 0px 4px; - color: #333; -} - -.semBl { - text-align: left; - background: #000E7A; - background: rgba(0,5,200,.6); - padding: 0px 4px 0px 4px; - color: #959500; -} - -.semBl_b, -.semFixBl, -.semFixBl_b { - text-align: left; - background: #243FFF; - background: rgba(60,80,255,.8); - padding: 0px 4px 0px 4px; - color: #ffff32; -} - -.semRo { - text-align: left; - background-color: #7a000e; - background: rgba(200,0,5,.6); - padding: 0px 4px 0px 4px; - color: #959500; -} - -.semRo_b, -.semFixRo, -.semFixRo_b { - text-align: left; - background-color: #ff243f; - background: rgba(255,60,80,.8); - padding: 0px 4px 0px 4px; - color: #ffff32; -} -/* semafori con animazione blinking */ -.no-cpu { - -moz-transform: translateZ(0); - -o-transform: translateZ(0); - -webkit-transform: translateZ(0); - -ms-transform: translateZ(0); - transform: translateZ(0); -} - -@-webkit-keyframes blinkBack { - 0% { - background-position: 0% 50%; - } - - 50% { - background-position: 100% 50%; - } - - 100% { - background-position: 0% 50%; - } -} - -@-moz-keyframes blinkBack { - 0% { - background-position: 0% 50%; - } - - 50% { - background-position: 100% 50%; - } - - 100% { - background-position: 0% 50%; - } -} - -@-o-keyframes blinkBack { - 0% { - background-position: 0% 50%; - } - - 50% { - background-position: 100% 50%; - } - - 100% { - background-position: 0% 50%; - } -} - -@keyframes blinkBack { - 0% { - background-position: 0% 50%; - } - - 50% { - background-position: 100% 50%; - } - - 100% { - background-position: 0% 50%; - } -} - -.semBlinkGi { - background: linear-gradient(270deg, #8a8d27, #f9ff18); - background-size: 400% 400%; - -webkit-animation: blinkBack 2s ease infinite; - -moz-animation: blinkBack 2s ease infinite; - -o-animation: blinkBack 2s ease infinite; - animation: blinkBack 2s ease infinite; -} - -.semBlinkRo { - background: linear-gradient(270deg, #7a000e, #ff243f); - background-size: 400% 400%; - -webkit-animation: blinkBack 2s ease infinite; - -moz-animation: blinkBack 2s ease infinite; - -o-animation: blinkBack 2s ease infinite; - animation: blinkBack 2s ease infinite; + /*padding: 0px 4px 0px 4px;*/ color: Yellow; } + +.sGi { + text-align: left; + background: #ffec00; + background: rgba(255,220,0,.6); + /*padding: 0px 4px 0px 4px;*/ +} + +.sRo { + text-align: left; + background-color: #e2001a; + background: rgba(240,0,10,.6); + /*padding: 0px 4px 0px 4px;*/ +} + +.sBl { + text-align: left; + background: #3690FF; + background: rgba(0,80,255,.6); + /*padding: 0px 4px 0px 4px;*/ + color: Yellow; +} + +.sGr { + text-align: left; + background-color: #bcbcbc; + background: rgba(180,180,180,.6); + /*padding: 0px 4px 0px 4px;*/ +} +/*end semafori */ diff --git a/MP-TAB/MP-TAB.Client/Components/MachineBlock.razor.min.css b/MP-TAB/MP-TAB.Client/Components/MachineBlock.razor.min.css index 3f07489b..82b3cba0 100644 --- a/MP-TAB/MP-TAB.Client/Components/MachineBlock.razor.min.css +++ b/MP-TAB/MP-TAB.Client/Components/MachineBlock.razor.min.css @@ -1 +1 @@ -.statusMap .ui-title,.statusMap .ui-li-aside{font-weight:400;text-transform:uppercase;font-size:2.5em;line-height:1.1em;color:#dedede;text-shadow:2px 2px 4px #000;text-align:center;background:linear-gradient(270deg,rgba(20,20,20,.7),rgba(100,100,100,.7),rgba(20,20,20,.7));}.statusMap .ui-subtitle{line-height:1.1em;color:#dedede;text-shadow:2px 2px 4px #000;text-align:center;background:linear-gradient(270deg,rgba(0,0,0,.4),rgba(100,100,100,.4),rgba(0,0,0,.4));}.statusMap .ui-footer{color:#cdcdcd;background:linear-gradient(270deg,rgba(10,10,10,.7),rgba(80,80,80,.7),rgba(10,10,10,.7));}.machBlock{padding:0 2px 0 2px;}.semBlinkVe,.semFixVe,.semFixVe_b,.semVe,.semVe_b{background:#009036;background:rgba(0,255,80,.6);color:#ffa;}.semBlinkGr,.semFixGr,.semFixGr_b,.semGr,.semGr_b{background-color:#bcbcbc;background:rgba(180,180,180,.6);}.semGi{text-align:left;background:#8a8d27;background:rgba(230,210,0,.6);padding:0 4px 0 4px;color:#000;}.semGi_b,.semFixGi,.semFixGi_b{text-align:left;background:#f9ff18;background:rgba(255,255,0,.8);padding:0 4px 0 4px;color:#333;}.semBl{text-align:left;background:#000e7a;background:rgba(0,5,200,.6);padding:0 4px 0 4px;color:#959500;}.semBl_b,.semFixBl,.semFixBl_b{text-align:left;background:#243fff;background:rgba(60,80,255,.8);padding:0 4px 0 4px;color:#ffff32;}.semRo{text-align:left;background-color:#7a000e;background:rgba(200,0,5,.6);padding:0 4px 0 4px;color:#959500;}.semRo_b,.semFixRo,.semFixRo_b{text-align:left;background-color:#ff243f;background:rgba(255,60,80,.8);padding:0 4px 0 4px;color:#ffff32;}.no-cpu{-moz-transform:translateZ(0);-o-transform:translateZ(0);-webkit-transform:translateZ(0);-ms-transform:translateZ(0);transform:translateZ(0);}@-webkit-keyframes blinkBack{0%{background-position:0% 50%;}50%{background-position:100% 50%;}100%{background-position:0% 50%;}}@-moz-keyframes blinkBack{0%{background-position:0% 50%;}50%{background-position:100% 50%;}100%{background-position:0% 50%;}}@-o-keyframes blinkBack{0%{background-position:0% 50%;}50%{background-position:100% 50%;}100%{background-position:0% 50%;}}@keyframes blinkBack{0%{background-position:0% 50%;}50%{background-position:100% 50%;}100%{background-position:0% 50%;}}.semBlinkGi{background:linear-gradient(270deg,#8a8d27,#f9ff18);background-size:400% 400%;-webkit-animation:blinkBack 2s ease infinite;-moz-animation:blinkBack 2s ease infinite;-o-animation:blinkBack 2s ease infinite;animation:blinkBack 2s ease infinite;}.semBlinkRo{background:linear-gradient(270deg,#7a000e,#ff243f);background-size:400% 400%;-webkit-animation:blinkBack 2s ease infinite;-moz-animation:blinkBack 2s ease infinite;-o-animation:blinkBack 2s ease infinite;animation:blinkBack 2s ease infinite;color:#ff0;} \ No newline at end of file +.mapBlock{font-family:'Open Sans Condensed',sans-serif;color:#fff;background-image:linear-gradient(#111,#000);min-width:8em;}.labelTopDx{padding:.1em .4em;width:auto;min-height:0;top:0;left:auto;bottom:auto;color:#fff;background:#2200de;background:rgba(33,0,200,.7);-webkit-border-top-right-radius:inherit;border-top-right-radius:inherit;-webkit-border-top-left-radius:inherit;border-top-left-radius:inherit;-webkit-border-bottom-left-radius:inherit;border-bottom-left-radius:inherit;-webkit-border-bottom-right-radius:0;border-bottom-right-radius:0;}.sVe{text-align:left;background:#009036;background:rgba(0,255,80,.6);color:#ff0;}.sGi{text-align:left;background:#ffec00;background:rgba(255,220,0,.6);}.sRo{text-align:left;background-color:#e2001a;background:rgba(240,0,10,.6);}.sBl{text-align:left;background:#3690ff;background:rgba(0,80,255,.6);color:#ff0;}.sGr{text-align:left;background-color:#bcbcbc;background:rgba(180,180,180,.6);} \ No newline at end of file diff --git a/MP-TAB/MP-TAB.Client/Pages/StatusMap.razor b/MP-TAB/MP-TAB.Client/Pages/StatusMap.razor index 706c2eff..cd4d2a67 100644 --- a/MP-TAB/MP-TAB.Client/Pages/StatusMap.razor +++ b/MP-TAB/MP-TAB.Client/Pages/StatusMap.razor @@ -3,26 +3,25 @@ @using MP.Data.Services; @using MP.Data; @using NLog; -@using Newtonsoft.Json; -@inject MonDataFeeder MMDataService -@implements IDisposable +@* @using Newtonsoft.Json; +@inject StatusData MDataService *@
- @if (listMSE == null || listMSE.Count == 0) + @if (ListMSE == null || ListMSE.Count == 0) { @for (int i = 0; i < 10; i++) { -
+
} } else { - @foreach (var item in listMSE) + @foreach (var item in ListMSE) { -
- +
+
} } @@ -30,93 +29,6 @@ @code { - private List? listMSE { get; set; } = null; - private bool doBlink = false; - - public void Dispose() - { - DateTime adesso = DateTime.Now; - if (adesso.Subtract(lastStart).TotalMilliseconds < 800) - { - Log.Debug($"StatusMap | SALTATO dispose"); - } - else - { - - MMDataService.dataPipe.EA_NewMessage -= DataPipe_EA_NewMessage; - MMDataService.blinkPipe.EA_NewMessage -= BlinkPipe_EA_NewMessage; - MMDataService.stopTimers(); - // disposeTimers(); - Log.Debug($"StatusMap | richiamato dispose"); - } - } - - protected override async Task OnInitializedAsync() - { - // MMDataService.dataPipe.EA_NewMessage -= DataPipe_EA_NewMessage; - // MMDataService.blinkPipe.EA_NewMessage -= BlinkPipe_EA_NewMessage; - MMDataService.dataPipe.EA_NewMessage += DataPipe_EA_NewMessage; - MMDataService.blinkPipe.EA_NewMessage += BlinkPipe_EA_NewMessage; - MMDataService.startTimers(); - lastStart = DateTime.Now; - await Task.Delay(1); - Log.Debug($"StatusMap | OnInitializedAsync"); - // return base.OnInitializedAsync(); - } - - private DateTime lastStart = DateTime.Now; - - - private void BlinkPipe_EA_NewMessage(object? sender, EventArgs e) - { - PubSubEventArgs currArgs = (PubSubEventArgs)e; - Log.Trace($"BlinkPipe_EA_NewMessage | messsage received!"); - // conversione on-the-fly List --> allarmi - if (!string.IsNullOrEmpty(currArgs.newMessage)) - { - try - { - var dataRaw = JsonConvert.DeserializeObject(currArgs.newMessage); - if (dataRaw != null) - { - bool.TryParse($"{dataRaw}", out doBlink); - } - } - catch (Exception exc) - { - Log.Error($"Exception on BlinkPipe_EA_NewMessage{Environment.NewLine}{exc}"); - } - } - } - private static NLog.Logger Log = LogManager.GetCurrentClassLogger(); - - /// - /// Ricevuto nuovi dati da mostrare! - /// - /// - /// - /// - private void DataPipe_EA_NewMessage(object? sender, EventArgs e) - { - PubSubEventArgs currArgs = (PubSubEventArgs)e; - Log.Trace($"DataPipe_EA_NewMessage | messsage received!"); - // conversione on-the-fly List --> allarmi - if (!string.IsNullOrEmpty(currArgs.newMessage)) - { - listMSE = null; - try - { - var dataList = JsonConvert.DeserializeObject>(currArgs.newMessage); - if (dataList != null) - { - listMSE = dataList; - InvokeAsync(StateHasChanged); - } - } - catch (Exception exc) - { - Log.Error($"Exception on DataPipe_EA_NewMessage{Environment.NewLine}{exc}"); - } - } - } + [Parameter] + public List? ListMSE { get; set; } = null; } diff --git a/MP-TAB/MP-TAB.Client/Pages/StatusMap.razor.css b/MP-TAB/MP-TAB.Client/Pages/StatusMap.razor.css new file mode 100644 index 00000000..f69d8193 --- /dev/null +++ b/MP-TAB/MP-TAB.Client/Pages/StatusMap.razor.css @@ -0,0 +1,39 @@ +body .bloccoMacc { + font-family: 'Open Sans Condensed', sans-serif; +} +/* <= 425px */ +@media all and (max-width: 425px) { + .bloccoMacc { + font-size: 0.6em; + } +} +/* > 425px con 2 blocchi */ +@media all and (min-width: 425px) { + .bloccoMacc { + font-size: 0.8em; + } +} +/* > 600px con 2 colonne */ +@media all and (min-width: 600px) { + .bloccoMacc { + font-size: 1.2em; + } +} +/* > 800px */ +@media all and (min-width: 800px) { + .bloccoMacc { + font-size: 1em; + } +} +/* > 1024px */ +@media all and (min-width: 1024px) { + .bloccoMacc { + font-size: 1.1em; + } +} +/* > 1440px */ +@media all and (min-width: 1600px) { + .bloccoMacc { + font-size: 1.2em; + } +} \ No newline at end of file diff --git a/MP-TAB/MP-TAB.Client/Pages/StatusMap.razor.less b/MP-TAB/MP-TAB.Client/Pages/StatusMap.razor.less new file mode 100644 index 00000000..3d37e099 --- /dev/null +++ b/MP-TAB/MP-TAB.Client/Pages/StatusMap.razor.less @@ -0,0 +1,41 @@ +body /* gestione area mappa stato e pagine dettaglio macchina */ +.bloccoMacc { + font-family: 'Open Sans Condensed', sans-serif; +} + +/* <= 425px */ +@media all and (max-width: 425px) { + .bloccoMacc { + font-size: 0.6em; + } +} +/* > 425px con 2 blocchi */ +@media all and (min-width: 425px) { + .bloccoMacc { + font-size: 0.8em; + } +} +/* > 600px con 2 colonne */ +@media all and (min-width: 600px) { + .bloccoMacc { + font-size: 1.2em; + } +} +/* > 800px */ +@media all and (min-width: 800px) { + .bloccoMacc { + font-size: 1em; + } +} +/* > 1024px */ +@media all and (min-width: 1024px) { + .bloccoMacc { + font-size: 1.1em; + } +} +/* > 1440px */ +@media all and (min-width: 1600px) { + .bloccoMacc { + font-size: 1.2em; + } +} diff --git a/MP-TAB/MP-TAB.Client/Pages/StatusMap.razor.min.css b/MP-TAB/MP-TAB.Client/Pages/StatusMap.razor.min.css new file mode 100644 index 00000000..11be311d --- /dev/null +++ b/MP-TAB/MP-TAB.Client/Pages/StatusMap.razor.min.css @@ -0,0 +1 @@ +body .bloccoMacc{font-family:'Open Sans Condensed',sans-serif;}@media all and (max-width:425px){.bloccoMacc{font-size:.6em;}}@media all and (min-width:425px){.bloccoMacc{font-size:.8em;}}@media all and (min-width:600px){.bloccoMacc{font-size:1.2em;}}@media all and (min-width:800px){.bloccoMacc{font-size:1em;}}@media all and (min-width:1024px){.bloccoMacc{font-size:1.1em;}}@media all and (min-width:1600px){.bloccoMacc{font-size:1.2em;}} \ No newline at end of file diff --git a/MP-TAB/MP-TAB.Client/compilerconfig.json b/MP-TAB/MP-TAB.Client/compilerconfig.json index 18edd0fb..d820348d 100644 --- a/MP-TAB/MP-TAB.Client/compilerconfig.json +++ b/MP-TAB/MP-TAB.Client/compilerconfig.json @@ -2,5 +2,9 @@ { "outputFile": "Components/MachineBlock.razor.css", "inputFile": "Components/MachineBlock.razor.less" + }, + { + "outputFile": "Pages/StatusMap.razor.css", + "inputFile": "Pages/StatusMap.razor.less" } ] \ No newline at end of file diff --git a/MP-TAB/MP-TAB/.config/dotnet-tools.json b/MP-TAB/MP-TAB/.config/dotnet-tools.json new file mode 100644 index 00000000..b0e38abd --- /dev/null +++ b/MP-TAB/MP-TAB/.config/dotnet-tools.json @@ -0,0 +1,5 @@ +{ + "version": 1, + "isRoot": true, + "tools": {} +} \ No newline at end of file diff --git a/MP-TAB/MP-TAB/Components/App.razor b/MP-TAB/MP-TAB/Components/App.razor index 6065d971..7a90008a 100644 --- a/MP-TAB/MP-TAB/Components/App.razor +++ b/MP-TAB/MP-TAB/Components/App.razor @@ -4,10 +4,11 @@ - + @* *@ + diff --git a/MP-TAB/MP-TAB/Components/Pages/StatusMap.razor b/MP-TAB/MP-TAB/Components/Pages/StatusMap.razor index 1b677ac9..241cef1b 100644 --- a/MP-TAB/MP-TAB/Components/Pages/StatusMap.razor +++ b/MP-TAB/MP-TAB/Components/Pages/StatusMap.razor @@ -4,5 +4,18 @@ - - +@* @if (listMSE == null || listMSE.Count == 0) +{ +
+ @for (int i = 0; i < 10; i++) + { +
+ +
+ } +
+} +else +{ +} *@ + diff --git a/MP-TAB/MP-TAB/Components/Pages/StatusMap.razor.cs b/MP-TAB/MP-TAB/Components/Pages/StatusMap.razor.cs index 724d98a9..09f43775 100644 --- a/MP-TAB/MP-TAB/Components/Pages/StatusMap.razor.cs +++ b/MP-TAB/MP-TAB/Components/Pages/StatusMap.razor.cs @@ -39,7 +39,7 @@ namespace MP_TAB.Components.Pages #region Protected Properties [Inject] - protected MonDataFeeder MMDataService { get; set; } = null!; + protected StatusData MDataService { get; set; } = null!; protected int slowRefreshMs { @@ -106,12 +106,12 @@ namespace MP_TAB.Components.Pages protected List? getIobTag(string codIob) { List? answ = null; - if (MMDataService.currTagConf != null) + if (MDataService.currTagConf != null) { // cerco x chiave IOB... - if (MMDataService.currTagConf.ContainsKey(codIob)) + if (MDataService.currTagConf.ContainsKey(codIob)) { - answ = MMDataService.currTagConf[codIob]; + answ = MDataService.currTagConf[codIob]; } } return answ; @@ -131,14 +131,17 @@ namespace MP_TAB.Components.Pages if (currTags != null && currTags.Count > 0) { // FIXME TODO !!!! FARE !!!! - da verificare - answ = currTags.ToDictionary(x => x.TagLocation, x => MMDataService.getTagConf(x.TagLocation)); + answ = currTags.ToDictionary(x => x.TagLocation, x => MDataService.getTagConf(x.TagLocation)); } return answ; } protected override async Task OnInitializedAsync() { + listMSE = null; await setupConf(); + //await Task.Delay(1000); + await ReloadData(); } #endregion Protected Methods @@ -146,17 +149,31 @@ namespace MP_TAB.Components.Pages #region Private Fields private static NLog.Logger Log = LogManager.GetCurrentClassLogger(); + private static System.Timers.Timer slowTimer = new System.Timers.Timer(300000); + private List? CurrConfig = null; + private Random rnd = new Random(); #endregion Private Fields + #region Private Properties + + private List? listMSE { get; set; } = null; + + #endregion Private Properties + #region Private Methods + private async Task ReloadData() + { + listMSE = await MDataService.MseGetAll(); + } + private async Task setupConf() { - CurrConfig = await MMDataService.ConfigGetAll(); + CurrConfig = await MDataService.ConfigGetAll(); if (CurrConfig != null && CurrConfig.Count > 0) { // sistemo i parametri opzionali... diff --git a/MP-TAB/MP-TAB/MP-TAB.csproj b/MP-TAB/MP-TAB/MP-TAB.csproj index a659dacd..46a4b03d 100644 --- a/MP-TAB/MP-TAB/MP-TAB.csproj +++ b/MP-TAB/MP-TAB/MP-TAB.csproj @@ -10,6 +10,38 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -22,6 +54,66 @@ + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always diff --git a/MP-TAB/MP-TAB/Program.cs b/MP-TAB/MP-TAB/Program.cs index 35048c4e..1e2f3a4e 100644 --- a/MP-TAB/MP-TAB/Program.cs +++ b/MP-TAB/MP-TAB/Program.cs @@ -13,7 +13,7 @@ var redisMultiplexer = ConnectionMultiplexer.Connect(connStringRedis); // Add services to the container. builder.Services.AddSingleton(redisMultiplexer); -builder.Services.AddSingleton(); +builder.Services.AddSingleton(); // nuova versione contenuti... builder.Services.AddRazorComponents() @@ -22,6 +22,10 @@ builder.Services.AddRazorComponents() var app = builder.Build(); +// aggiunt base URL x routing corretto +app.UsePathBase(configuration["OptConf:BaseUrl"]); +app.UseAntiforgery(); + // Configure the HTTP request pipeline. if (app.Environment.IsDevelopment()) { diff --git a/MP-TAB/MP-TAB/Properties/launchSettings.json b/MP-TAB/MP-TAB/Properties/launchSettings.json index 41fab983..d1dbb26b 100644 --- a/MP-TAB/MP-TAB/Properties/launchSettings.json +++ b/MP-TAB/MP-TAB/Properties/launchSettings.json @@ -25,6 +25,7 @@ "launchBrowser": true, "inspectUri": "{wsProtocol}://{url.hostname}:{url.port}/_framework/debug/ws-proxy?browser={browserInspectUri}", "applicationUrl": "https://localhost:7057;http://localhost:5101", + "launchUrl": "https://localhost:7057/MP/TAB2", "environmentVariables": { "ASPNETCORE_ENVIRONMENT": "Development" } diff --git a/MP-TAB/MP-TAB/appsettings.json b/MP-TAB/MP-TAB/appsettings.json index cf8666b8..b6522a98 100644 --- a/MP-TAB/MP-TAB/appsettings.json +++ b/MP-TAB/MP-TAB/appsettings.json @@ -14,5 +14,9 @@ }, "ServerConf": { "maxAge": "2000" + }, + "OptConf": { + "BaseUrl": "/MP/TAB2", + "ImgBasePath": "C:\\Steamware\\macchine" } } diff --git a/MP-TAB/MP-TAB/compilerconfig.json b/MP-TAB/MP-TAB/compilerconfig.json index 8ec7a4e4..1f45d325 100644 --- a/MP-TAB/MP-TAB/compilerconfig.json +++ b/MP-TAB/MP-TAB/compilerconfig.json @@ -2,5 +2,9 @@ { "outputFile": "wwwroot/app.css", "inputFile": "wwwroot/app.less" + }, + { + "outputFile": "wwwroot/font.css", + "inputFile": "wwwroot/font.less" } ] \ No newline at end of file diff --git a/MP-TAB/MP-TAB/wwwroot/font.css b/MP-TAB/MP-TAB/wwwroot/font.css new file mode 100644 index 00000000..89f25331 --- /dev/null +++ b/MP-TAB/MP-TAB/wwwroot/font.css @@ -0,0 +1,42 @@ +@font-face { + font-family: 'Open Sans'; + font-style: normal; + font-weight: 400; + src: url('fonts/OpenSans.woff') format('woff'); +} +@font-face { + font-family: 'Open Sans Condensed'; + font-style: normal; + font-weight: 300; + src: url('fonts/OpenSansCondensed.woff') format('woff'); +} +/* lato-regular - latin */ +@font-face { + font-family: 'Lato'; + font-style: normal; + font-weight: 400; + src: url('../fonts/lato-v17-latin-regular.eot'); + /* IE9 Compat Modes */ + src: local(''), url('../fonts/lato-v17-latin-regular.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */ url('../fonts/lato-v17-latin-regular.woff2') format('woff2'), /* Super Modern Browsers */ url('../fonts/lato-v17-latin-regular.woff') format('woff'), /* Modern Browsers */ url('../fonts/lato-v17-latin-regular.ttf') format('truetype'), /* Safari, Android, iOS */ url('../fonts/lato-v17-latin-regular.svg#Lato') format('svg'); + /* Legacy iOS */ +} +/* roboto-regular - latin */ +@font-face { + font-family: 'Roboto'; + font-style: normal; + font-weight: 400; + src: url('../fonts/roboto-v27-latin-regular.eot'); + /* IE9 Compat Modes */ + src: local(''), url('../fonts/roboto-v27-latin-regular.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */ url('../fonts/roboto-v27-latin-regular.woff2') format('woff2'), /* Super Modern Browsers */ url('../fonts/roboto-v27-latin-regular.woff') format('woff'), /* Modern Browsers */ url('../fonts/roboto-v27-latin-regular.ttf') format('truetype'), /* Safari, Android, iOS */ url('../fonts/roboto-v27-latin-regular.svg#Roboto') format('svg'); + /* Legacy iOS */ +} +/* roboto-condensed-regular - latin */ +@font-face { + font-family: 'Roboto Condensed'; + font-style: normal; + font-weight: 400; + src: url('../fonts/roboto-condensed-v19-latin-regular.eot'); + /* IE9 Compat Modes */ + src: local(''), url('../fonts/roboto-condensed-v19-latin-regular.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */ url('../fonts/roboto-condensed-v19-latin-regular.woff2') format('woff2'), /* Super Modern Browsers */ url('../fonts/roboto-condensed-v19-latin-regular.woff') format('woff'), /* Modern Browsers */ url('../fonts/roboto-condensed-v19-latin-regular.ttf') format('truetype'), /* Safari, Android, iOS */ url('../fonts/roboto-condensed-v19-latin-regular.svg#RobotoCondensed') format('svg'); + /* Legacy iOS */ +} \ No newline at end of file diff --git a/MP-TAB/MP-TAB/wwwroot/font.less b/MP-TAB/MP-TAB/wwwroot/font.less new file mode 100644 index 00000000..a432a5af --- /dev/null +++ b/MP-TAB/MP-TAB/wwwroot/font.less @@ -0,0 +1,50 @@ +@font-face { + font-family: 'Open Sans'; + font-style: normal; + font-weight: 400; + src: url('fonts/OpenSans.woff') format('woff'); +} + +@font-face { + font-family: 'Open Sans Condensed'; + font-style: normal; + font-weight: 300; + src: url('fonts/OpenSansCondensed.woff') format('woff'); +} + +/* lato-regular - latin */ +@font-face { + font-family: 'Lato'; + font-style: normal; + font-weight: 400; + src: url('../fonts/lato-v17-latin-regular.eot'); /* IE9 Compat Modes */ + src: local(''), url('../fonts/lato-v17-latin-regular.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */ + url('../fonts/lato-v17-latin-regular.woff2') format('woff2'), /* Super Modern Browsers */ + url('../fonts/lato-v17-latin-regular.woff') format('woff'), /* Modern Browsers */ + url('../fonts/lato-v17-latin-regular.ttf') format('truetype'), /* Safari, Android, iOS */ + url('../fonts/lato-v17-latin-regular.svg#Lato') format('svg'); /* Legacy iOS */ +} +/* roboto-regular - latin */ +@font-face { + font-family: 'Roboto'; + font-style: normal; + font-weight: 400; + src: url('../fonts/roboto-v27-latin-regular.eot'); /* IE9 Compat Modes */ + src: local(''), url('../fonts/roboto-v27-latin-regular.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */ + url('../fonts/roboto-v27-latin-regular.woff2') format('woff2'), /* Super Modern Browsers */ + url('../fonts/roboto-v27-latin-regular.woff') format('woff'), /* Modern Browsers */ + url('../fonts/roboto-v27-latin-regular.ttf') format('truetype'), /* Safari, Android, iOS */ + url('../fonts/roboto-v27-latin-regular.svg#Roboto') format('svg'); /* Legacy iOS */ +} +/* roboto-condensed-regular - latin */ +@font-face { + font-family: 'Roboto Condensed'; + font-style: normal; + font-weight: 400; + src: url('../fonts/roboto-condensed-v19-latin-regular.eot'); /* IE9 Compat Modes */ + src: local(''), url('../fonts/roboto-condensed-v19-latin-regular.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */ + url('../fonts/roboto-condensed-v19-latin-regular.woff2') format('woff2'), /* Super Modern Browsers */ + url('../fonts/roboto-condensed-v19-latin-regular.woff') format('woff'), /* Modern Browsers */ + url('../fonts/roboto-condensed-v19-latin-regular.ttf') format('truetype'), /* Safari, Android, iOS */ + url('../fonts/roboto-condensed-v19-latin-regular.svg#RobotoCondensed') format('svg'); /* Legacy iOS */ +} \ No newline at end of file diff --git a/MP-TAB/MP-TAB/wwwroot/font.min.css b/MP-TAB/MP-TAB/wwwroot/font.min.css new file mode 100644 index 00000000..7b4dea8d --- /dev/null +++ b/MP-TAB/MP-TAB/wwwroot/font.min.css @@ -0,0 +1 @@ +@font-face{font-family:'Open Sans';font-style:normal;font-weight:400;src:url('fonts/OpenSans.woff') format('woff');}@font-face{font-family:'Open Sans Condensed';font-style:normal;font-weight:300;src:url('fonts/OpenSansCondensed.woff') format('woff');}@font-face{font-family:'Lato';font-style:normal;font-weight:400;src:url('../fonts/lato-v17-latin-regular.eot?');src:local(''),url('../fonts/lato-v17-latin-regular.eot?#iefix') format('embedded-opentype'),url('../fonts/lato-v17-latin-regular.woff2') format('woff2'),url('../fonts/lato-v17-latin-regular.woff') format('woff'),url('../fonts/lato-v17-latin-regular.ttf') format('truetype'),url('../fonts/lato-v17-latin-regular.svg#Lato') format('svg');}@font-face{font-family:'Roboto';font-style:normal;font-weight:400;src:url('../fonts/roboto-v27-latin-regular.eot?');src:local(''),url('../fonts/roboto-v27-latin-regular.eot?#iefix') format('embedded-opentype'),url('../fonts/roboto-v27-latin-regular.woff2') format('woff2'),url('../fonts/roboto-v27-latin-regular.woff') format('woff'),url('../fonts/roboto-v27-latin-regular.ttf') format('truetype'),url('../fonts/roboto-v27-latin-regular.svg#Roboto') format('svg');}@font-face{font-family:'Roboto Condensed';font-style:normal;font-weight:400;src:url('../fonts/roboto-condensed-v19-latin-regular.eot?');src:local(''),url('../fonts/roboto-condensed-v19-latin-regular.eot?#iefix') format('embedded-opentype'),url('../fonts/roboto-condensed-v19-latin-regular.woff2') format('woff2'),url('../fonts/roboto-condensed-v19-latin-regular.woff') format('woff'),url('../fonts/roboto-condensed-v19-latin-regular.ttf') format('truetype'),url('../fonts/roboto-condensed-v19-latin-regular.svg#RobotoCondensed') format('svg');} \ No newline at end of file diff --git a/MP-TAB/MP-TAB/wwwroot/fonts/OpenSans.woff b/MP-TAB/MP-TAB/wwwroot/fonts/OpenSans.woff new file mode 100644 index 00000000..55b25f86 Binary files /dev/null and b/MP-TAB/MP-TAB/wwwroot/fonts/OpenSans.woff differ diff --git a/MP-TAB/MP-TAB/wwwroot/fonts/OpenSansCondensed.woff b/MP-TAB/MP-TAB/wwwroot/fonts/OpenSansCondensed.woff new file mode 100644 index 00000000..aedbd930 Binary files /dev/null and b/MP-TAB/MP-TAB/wwwroot/fonts/OpenSansCondensed.woff differ diff --git a/MP-TAB/MP-TAB/wwwroot/fonts/lato-v17-latin-regular.eot b/MP-TAB/MP-TAB/wwwroot/fonts/lato-v17-latin-regular.eot new file mode 100644 index 00000000..c6413069 Binary files /dev/null and b/MP-TAB/MP-TAB/wwwroot/fonts/lato-v17-latin-regular.eot differ diff --git a/MP-TAB/MP-TAB/wwwroot/fonts/lato-v17-latin-regular.svg b/MP-TAB/MP-TAB/wwwroot/fonts/lato-v17-latin-regular.svg new file mode 100644 index 00000000..55b43fb8 --- /dev/null +++ b/MP-TAB/MP-TAB/wwwroot/fonts/lato-v17-latin-regular.svg @@ -0,0 +1,435 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/MP-TAB/MP-TAB/wwwroot/fonts/lato-v17-latin-regular.ttf b/MP-TAB/MP-TAB/wwwroot/fonts/lato-v17-latin-regular.ttf new file mode 100644 index 00000000..3c2d417e Binary files /dev/null and b/MP-TAB/MP-TAB/wwwroot/fonts/lato-v17-latin-regular.ttf differ diff --git a/MP-TAB/MP-TAB/wwwroot/fonts/lato-v17-latin-regular.woff b/MP-TAB/MP-TAB/wwwroot/fonts/lato-v17-latin-regular.woff new file mode 100644 index 00000000..189a0feb Binary files /dev/null and b/MP-TAB/MP-TAB/wwwroot/fonts/lato-v17-latin-regular.woff differ diff --git a/MP-TAB/MP-TAB/wwwroot/fonts/lato-v17-latin-regular.woff2 b/MP-TAB/MP-TAB/wwwroot/fonts/lato-v17-latin-regular.woff2 new file mode 100644 index 00000000..6904b664 Binary files /dev/null and b/MP-TAB/MP-TAB/wwwroot/fonts/lato-v17-latin-regular.woff2 differ diff --git a/MP-TAB/MP-TAB/wwwroot/fonts/roboto-condensed-v19-latin-regular.eot b/MP-TAB/MP-TAB/wwwroot/fonts/roboto-condensed-v19-latin-regular.eot new file mode 100644 index 00000000..e64b69bb Binary files /dev/null and b/MP-TAB/MP-TAB/wwwroot/fonts/roboto-condensed-v19-latin-regular.eot differ diff --git a/MP-TAB/MP-TAB/wwwroot/fonts/roboto-condensed-v19-latin-regular.svg b/MP-TAB/MP-TAB/wwwroot/fonts/roboto-condensed-v19-latin-regular.svg new file mode 100644 index 00000000..803c3b8a --- /dev/null +++ b/MP-TAB/MP-TAB/wwwroot/fonts/roboto-condensed-v19-latin-regular.svg @@ -0,0 +1,306 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/MP-TAB/MP-TAB/wwwroot/fonts/roboto-condensed-v19-latin-regular.ttf b/MP-TAB/MP-TAB/wwwroot/fonts/roboto-condensed-v19-latin-regular.ttf new file mode 100644 index 00000000..878bdb26 Binary files /dev/null and b/MP-TAB/MP-TAB/wwwroot/fonts/roboto-condensed-v19-latin-regular.ttf differ diff --git a/MP-TAB/MP-TAB/wwwroot/fonts/roboto-condensed-v19-latin-regular.woff b/MP-TAB/MP-TAB/wwwroot/fonts/roboto-condensed-v19-latin-regular.woff new file mode 100644 index 00000000..90f54ea5 Binary files /dev/null and b/MP-TAB/MP-TAB/wwwroot/fonts/roboto-condensed-v19-latin-regular.woff differ diff --git a/MP-TAB/MP-TAB/wwwroot/fonts/roboto-condensed-v19-latin-regular.woff2 b/MP-TAB/MP-TAB/wwwroot/fonts/roboto-condensed-v19-latin-regular.woff2 new file mode 100644 index 00000000..bcbfde74 Binary files /dev/null and b/MP-TAB/MP-TAB/wwwroot/fonts/roboto-condensed-v19-latin-regular.woff2 differ diff --git a/MP-TAB/MP-TAB/wwwroot/fonts/roboto-v27-latin-regular.eot b/MP-TAB/MP-TAB/wwwroot/fonts/roboto-v27-latin-regular.eot new file mode 100644 index 00000000..6dd5e3a0 Binary files /dev/null and b/MP-TAB/MP-TAB/wwwroot/fonts/roboto-v27-latin-regular.eot differ diff --git a/MP-TAB/MP-TAB/wwwroot/fonts/roboto-v27-latin-regular.svg b/MP-TAB/MP-TAB/wwwroot/fonts/roboto-v27-latin-regular.svg new file mode 100644 index 00000000..627f5a36 --- /dev/null +++ b/MP-TAB/MP-TAB/wwwroot/fonts/roboto-v27-latin-regular.svg @@ -0,0 +1,308 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/MP-TAB/MP-TAB/wwwroot/fonts/roboto-v27-latin-regular.ttf b/MP-TAB/MP-TAB/wwwroot/fonts/roboto-v27-latin-regular.ttf new file mode 100644 index 00000000..637971a1 Binary files /dev/null and b/MP-TAB/MP-TAB/wwwroot/fonts/roboto-v27-latin-regular.ttf differ diff --git a/MP-TAB/MP-TAB/wwwroot/fonts/roboto-v27-latin-regular.woff b/MP-TAB/MP-TAB/wwwroot/fonts/roboto-v27-latin-regular.woff new file mode 100644 index 00000000..86b38637 Binary files /dev/null and b/MP-TAB/MP-TAB/wwwroot/fonts/roboto-v27-latin-regular.woff differ diff --git a/MP-TAB/MP-TAB/wwwroot/fonts/roboto-v27-latin-regular.woff2 b/MP-TAB/MP-TAB/wwwroot/fonts/roboto-v27-latin-regular.woff2 new file mode 100644 index 00000000..ebe1795f Binary files /dev/null and b/MP-TAB/MP-TAB/wwwroot/fonts/roboto-v27-latin-regular.woff2 differ diff --git a/MP-TAB/MP-TAB/wwwroot/images/macchine/Steamware.png b/MP-TAB/MP-TAB/wwwroot/images/macchine/Steamware.png new file mode 100644 index 00000000..d1a658b0 Binary files /dev/null and b/MP-TAB/MP-TAB/wwwroot/images/macchine/Steamware.png differ diff --git a/MP-TAB/MP-TAB/wwwroot/images/macchine/small/Steamware.png b/MP-TAB/MP-TAB/wwwroot/images/macchine/small/Steamware.png new file mode 100644 index 00000000..5d4a75b1 Binary files /dev/null and b/MP-TAB/MP-TAB/wwwroot/images/macchine/small/Steamware.png differ