- @RecMSE.DescrizioneStato
+
+
)
+
+
+
+
+
+ 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