From d3e7c224d3e484b9e339e3b2d985a09789b9ea19 Mon Sep 17 00:00:00 2001 From: Samuele Locatelli Date: Wed, 13 Apr 2022 16:00:40 +0200 Subject: [PATCH] creato componente e spostato li i dati di visualizzazione --- MP.Data/Controllers/MpMonController.cs | 19 ++++-- MP.Mon/Components/DetailMSE.razor | 55 +++++++++++++++-- MP.Mon/Components/DetailMSE.razor.cs | 82 ++++++++++++++++++++++++++ MP.Mon/Pages/Index.razor | 50 +--------------- MP.Mon/Pages/Index.razor.cs | 50 ---------------- MP.Mon/wwwroot/css/site.css | 3 + MP.Mon/wwwroot/css/site.less | 4 ++ MP.Mon/wwwroot/css/site.min.css | 2 +- 8 files changed, 158 insertions(+), 107 deletions(-) create mode 100644 MP.Mon/Components/DetailMSE.razor.cs diff --git a/MP.Data/Controllers/MpMonController.cs b/MP.Data/Controllers/MpMonController.cs index 83cde8de..e93e6bbe 100644 --- a/MP.Data/Controllers/MpMonController.cs +++ b/MP.Data/Controllers/MpMonController.cs @@ -76,15 +76,26 @@ namespace MP.Data.Controllers /// Elenco da tabella MappaStatoExpl /// /// - public List MseGetAll() + public List MseGetAll(int maxAge = 2000) { List dbResult = new List(); using (var dbCtx = new MoonProContext(_configuration)) { + //dbResult = dbCtx + //.DbSetMSE + //.OrderBy(x => x.RowNum) + //.ToList(); + + + + + + var maxAgeSec = new SqlParameter("@maxAgeSec", maxAge); + dbResult = dbCtx - .DbSetMSE - .OrderBy(x => x.RowNum) - .ToList(); + .DbSetMSE + .FromSqlRaw("EXEC stp_MSE_getData @maxAgeSec", maxAgeSec) + .ToList(); } return dbResult; } diff --git a/MP.Mon/Components/DetailMSE.razor b/MP.Mon/Components/DetailMSE.razor index dc9993cf..7c6997e3 100644 --- a/MP.Mon/Components/DetailMSE.razor +++ b/MP.Mon/Components/DetailMSE.razor @@ -1,5 +1,52 @@ -

dettaglio macchina

- -@code { - +@if (CurrRecord == null) +{ + } +else +{ +
+
+
+ @CurrRecord.Nome +
+
+
Art.
+
@CurrRecord.CodArticolo
+
+
+
@CurrRecord.DescrizioneStato
+
@($"{CurrRecord.Durata:0.00}")'
+
+
+ @*
OEE
+
xx%
*@ +
T.Ciclo
+
std: @getMinSec(CurrRecord.TCAssegnato)
+
act: @getMinSec(CurrRecord.TCLavRt)
+
+
+
Pezzi(prod/ord)
+
@CurrRecord.PezziProd / @CurrRecord.NumPezzi
+
+
+
+
+
+ +
+
+
+
+} \ No newline at end of file diff --git a/MP.Mon/Components/DetailMSE.razor.cs b/MP.Mon/Components/DetailMSE.razor.cs new file mode 100644 index 00000000..a065ac6b --- /dev/null +++ b/MP.Mon/Components/DetailMSE.razor.cs @@ -0,0 +1,82 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Threading.Tasks; +using Microsoft.AspNetCore.Components; +using System.Net.Http; +using Microsoft.AspNetCore.Authorization; +using Microsoft.AspNetCore.Components.Authorization; +using Microsoft.AspNetCore.Components.Forms; +using Microsoft.AspNetCore.Components.Routing; +using Microsoft.AspNetCore.Components.Web; +using Microsoft.AspNetCore.Components.Web.Virtualization; +using Microsoft.JSInterop; +using MP.Mon; +using MP.Mon.Shared; +using MP.Mon.Components; +using MP.Data.DatabaseModels; + +namespace MP.Mon.Components +{ + public partial class DetailMSE + { + + protected string baseCss = ""; + + [Parameter] + public bool doAnimate { get; set; } = true; + + [Parameter] + public int keepAliveMin { get; set; } = 5; + [Parameter] + public MappaStatoExpl? CurrRecord { get; set; } = null; + + private string cssStatus(string codSemaforo) + { + return $"{baseCss}{codSemaforo.Substring(1, 2)}"; + } + + private string cssComStatus(string semaforo, DateTime? lastUpdateN) + { + DateTime lastUpdate = lastUpdateN.HasValue ? (DateTime)lastUpdateN : DateTime.Now.AddHours(-1); + string answ = cssStatus(semaforo); + if (DateTime.Now.Subtract(lastUpdate).TotalSeconds > (keepAliveMin * 60 / 2)) + { + answ = $"{baseCss}Ro"; + } + return answ; + } + protected override async Task OnInitializedAsync() + { + setupConf(); + } + private void setupConf() + { + baseCss = doAnimate ? "semBlink" : "sem"; + } + private bool showComErr(DateTime? lastUpdateN) + { + DateTime lastUpdate = lastUpdateN.HasValue ? (DateTime)lastUpdateN : DateTime.Now.AddHours(-1); + bool answ = false; + if (DateTime.Now.Subtract(lastUpdate).TotalSeconds > (keepAliveMin * 60 / 2)) + { + answ = true; + } + return answ; + } + + private string getMinSec(decimal? currTimeMin) + { + string answ = "nd"; + TimeSpan tSpan = new TimeSpan(0); + try + { + tSpan = TimeSpan.FromMinutes((double)currTimeMin); + answ = tSpan.ToString("mm:ss"); + } + catch + { } + return answ; + } + } +} \ No newline at end of file diff --git a/MP.Mon/Pages/Index.razor b/MP.Mon/Pages/Index.razor index d87b34a5..9e11bfec 100644 --- a/MP.Mon/Pages/Index.razor +++ b/MP.Mon/Pages/Index.razor @@ -26,56 +26,10 @@ int currIdx = 0; foreach (var macchina in ListMSE) { -
-
-
- @macchina.Nome -
-
-
Art.
-
@macchina.CodArticolo
-
-
-
@macchina.DescrizioneStato
-
@($"{macchina.Durata:0.00}")'
-
-
- @*
OEE
-
xx%
*@ -
T.Ciclo
-
std: @getMinSec(macchina.TCAssegnato)
-
act: @getMinSec(macchina.TCLavRt)
-
-
-
Pezzi(prod/ord)
-
@macchina.PezziProd / @macchina.NumPezzi
-
-
-
-
-
- -
-
-
-
+ currIdx++; if (currIdx >= maxCol) { - @* -
*@ currIdx = 0; @((MarkupString)"
") ; @@ -85,7 +39,7 @@ int currNum = (currIdx % maxCol); while (currNum < (maxCol)) { - @((MarkupString)"
 
") + @((MarkupString)"
 
") ; currNum++; diff --git a/MP.Mon/Pages/Index.razor.cs b/MP.Mon/Pages/Index.razor.cs index 3df00241..b6848819 100644 --- a/MP.Mon/Pages/Index.razor.cs +++ b/MP.Mon/Pages/Index.razor.cs @@ -30,21 +30,11 @@ namespace MP.Mon.Pages protected bool doAnimate = true; // leggere da conf? - //protected string baseCss = "sem"; - //protected string baseCss = "semBlink"; - protected string baseCss = ""; - protected override async Task OnInitializedAsync() { - setupConf(); await reloadData(); - //return base.OnInitializedAsync(); } - private void setupConf() - { - baseCss = doAnimate ? "semBlink" : "sem"; - } [Inject] protected MpDataService MMDataService { get; set; } @@ -54,45 +44,5 @@ namespace MP.Mon.Pages ListMSE = await MMDataService.MseGetAll(); } - private string cssStatus(string codSemaforo) - { - return $"{baseCss}{codSemaforo.Substring(1,2)}"; - } - - private string cssComStatus(string semaforo, DateTime? lastUpdateN) - { - DateTime lastUpdate = lastUpdateN.HasValue ? (DateTime)lastUpdateN : DateTime.Now.AddHours(-1); - string answ = cssStatus(semaforo); - if (DateTime.Now.Subtract(lastUpdate).TotalSeconds > (keepAliveMin * 60 / 2)) - { - answ = $"{baseCss}Ro"; - } - return answ; - } - - private bool showComErr(DateTime? lastUpdateN) - { - DateTime lastUpdate = lastUpdateN.HasValue ? (DateTime)lastUpdateN : DateTime.Now.AddHours(-1); - bool answ = false; - if (DateTime.Now.Subtract(lastUpdate).TotalSeconds > (keepAliveMin * 60 / 2)) - { - answ = true; - } - return answ; - } - - private string getMinSec(decimal? currTimeMin) - { - string answ = "nd"; - TimeSpan tSpan = new TimeSpan(0); - try - { - tSpan = TimeSpan.FromMinutes((double)currTimeMin); - answ = tSpan.ToString("mm:ss"); - } - catch - { } - return answ; - } } } \ No newline at end of file diff --git a/MP.Mon/wwwroot/css/site.css b/MP.Mon/wwwroot/css/site.css index bb34b8b9..2f49cabf 100644 --- a/MP.Mon/wwwroot/css/site.css +++ b/MP.Mon/wwwroot/css/site.css @@ -166,6 +166,9 @@ a, 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, diff --git a/MP.Mon/wwwroot/css/site.less b/MP.Mon/wwwroot/css/site.less index f16d5209..240ce074 100644 --- a/MP.Mon/wwwroot/css/site.less +++ b/MP.Mon/wwwroot/css/site.less @@ -175,6 +175,10 @@ a, .btn-link { 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, diff --git a/MP.Mon/wwwroot/css/site.min.css b/MP.Mon/wwwroot/css/site.min.css index afca936c..0389fb48 100644 --- a/MP.Mon/wwwroot/css/site.min.css +++ b/MP.Mon/wwwroot/css/site.min.css @@ -1 +1 @@ -@import url('open-iconic/font/css/open-iconic-bootstrap.min.css');@import url('fonts.min.css');h1,h2,h3,h4,h5,h6,b,display-1,display-2,display-3,display-4{font-family:'Lato',sans-serif;}html,body{height:100%;}html,body{font-family:'Roboto Condensed',sans-serif;line-height:1.3;background-image:linear-gradient(180deg,#010816 20%,#3aa6ff 90%);background-size:auto 100%;background-repeat:no-repeat;}h1:focus{outline:none;}a,.btn-link{color:#0071c1;}.btn-primary{color:#fff;background-color:#1b6ec2;border-color:#1861ac;}.content{padding-top:1.1rem;}.valid.modified:not([type=checkbox]){outline:1px solid #26b050;}.invalid{outline:1px solid #f00;}.validation-message{color:#f00;}.regionnotclicked{fill:white;}.regionclicked{fill:red;}.striked{text-decoration:line-through;}.textTrim{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}.maxChar{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}.max5Char{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;width:5rem;}.max10Char{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;width:10rem;}.max20Char{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;width:20rem;}.max30Char{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;width:30rem;}.max40Char{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;width:40rem;}.max50Char{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;width:50rem;}.max100Char{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;width:100rem;}.footer{line-height:1.8em;}#blazor-error-ui{background:#ffffe0;bottom:0;box-shadow:0 -1px 2px rgba(0,0,0,.2);display:none;left:0;padding:.6rem 1.25rem .7rem 1.25rem;position:fixed;width:100%;z-index:1000;}#blazor-error-ui .dismiss{cursor:pointer;position:absolute;right:.75rem;top:.5rem;}.blazor-error-boundary{background:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTYiIGhlaWdodD0iNDkiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIG92ZXJmbG93PSJoaWRkZW4iPjxkZWZzPjxjbGlwUGF0aCBpZD0iY2xpcDAiPjxyZWN0IHg9IjIzNSIgeT0iNTEiIHdpZHRoPSI1NiIgaGVpZ2h0PSI0OSIvPjwvY2xpcFBhdGg+PC9kZWZzPjxnIGNsaXAtcGF0aD0idXJsKCNjbGlwMCkiIHRyYW5zZm9ybT0idHJhbnNsYXRlKC0yMzUgLTUxKSI+PHBhdGggZD0iTTI2My41MDYgNTFDMjY0LjcxNyA1MSAyNjUuODEzIDUxLjQ4MzcgMjY2LjYwNiA1Mi4yNjU4TDI2Ny4wNTIgNTIuNzk4NyAyNjcuNTM5IDUzLjYyODMgMjkwLjE4NSA5Mi4xODMxIDI5MC41NDUgOTIuNzk1IDI5MC42NTYgOTIuOTk2QzI5MC44NzcgOTMuNTEzIDI5MSA5NC4wODE1IDI5MSA5NC42NzgyIDI5MSA5Ny4wNjUxIDI4OS4wMzggOTkgMjg2LjYxNyA5OUwyNDAuMzgzIDk5QzIzNy45NjMgOTkgMjM2IDk3LjA2NTEgMjM2IDk0LjY3ODIgMjM2IDk0LjM3OTkgMjM2LjAzMSA5NC4wODg2IDIzNi4wODkgOTMuODA3MkwyMzYuMzM4IDkzLjAxNjIgMjM2Ljg1OCA5Mi4xMzE0IDI1OS40NzMgNTMuNjI5NCAyNTkuOTYxIDUyLjc5ODUgMjYwLjQwNyA1Mi4yNjU4QzI2MS4yIDUxLjQ4MzcgMjYyLjI5NiA1MSAyNjMuNTA2IDUxWk0yNjMuNTg2IDY2LjAxODNDMjYwLjczNyA2Ni4wMTgzIDI1OS4zMTMgNjcuMTI0NSAyNTkuMzEzIDY5LjMzNyAyNTkuMzEzIDY5LjYxMDIgMjU5LjMzMiA2OS44NjA4IDI1OS4zNzEgNzAuMDg4N0wyNjEuNzk1IDg0LjAxNjEgMjY1LjM4IDg0LjAxNjEgMjY3LjgyMSA2OS43NDc1QzI2Ny44NiA2OS43MzA5IDI2Ny44NzkgNjkuNTg3NyAyNjcuODc5IDY5LjMxNzkgMjY3Ljg3OSA2Ny4xMTgyIDI2Ni40NDggNjYuMDE4MyAyNjMuNTg2IDY2LjAxODNaTTI2My41NzYgODYuMDU0N0MyNjEuMDQ5IDg2LjA1NDcgMjU5Ljc4NiA4Ny4zMDA1IDI1OS43ODYgODkuNzkyMSAyNTkuNzg2IDkyLjI4MzcgMjYxLjA0OSA5My41Mjk1IDI2My41NzYgOTMuNTI5NSAyNjYuMTE2IDkzLjUyOTUgMjY3LjM4NyA5Mi4yODM3IDI2Ny4zODcgODkuNzkyMSAyNjcuMzg3IDg3LjMwMDUgMjY2LjExNiA4Ni4wNTQ3IDI2My41NzYgODYuMDU0N1oiIGZpbGw9IiNGRkU1MDAiIGZpbGwtcnVsZT0iZXZlbm9kZCIvPjwvZz48L3N2Zz4=) no-repeat 1rem/1.8rem,#b32121;padding:1rem 1rem 1rem 3.7rem;color:#fff;}.blazor-error-boundary::after{content:"An error has occurred.";}.fontSmall{font-size:.75em;}.fontSmaller{font-size:.6em;}.statusMap{background:rgba(255,255,255,.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-footer{color:#cdcdcd;background:linear-gradient(270deg,rgba(10,10,10,.7),rgba(80,80,80,.7),rgba(10,10,10,.7));}.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 +@import url('open-iconic/font/css/open-iconic-bootstrap.min.css');@import url('fonts.min.css');h1,h2,h3,h4,h5,h6,b,display-1,display-2,display-3,display-4{font-family:'Lato',sans-serif;}html,body{height:100%;}html,body{font-family:'Roboto Condensed',sans-serif;line-height:1.3;background-image:linear-gradient(180deg,#010816 20%,#3aa6ff 90%);background-size:auto 100%;background-repeat:no-repeat;}h1:focus{outline:none;}a,.btn-link{color:#0071c1;}.btn-primary{color:#fff;background-color:#1b6ec2;border-color:#1861ac;}.content{padding-top:1.1rem;}.valid.modified:not([type=checkbox]){outline:1px solid #26b050;}.invalid{outline:1px solid #f00;}.validation-message{color:#f00;}.regionnotclicked{fill:white;}.regionclicked{fill:red;}.striked{text-decoration:line-through;}.textTrim{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}.maxChar{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}.max5Char{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;width:5rem;}.max10Char{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;width:10rem;}.max20Char{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;width:20rem;}.max30Char{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;width:30rem;}.max40Char{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;width:40rem;}.max50Char{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;width:50rem;}.max100Char{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;width:100rem;}.footer{line-height:1.8em;}#blazor-error-ui{background:#ffffe0;bottom:0;box-shadow:0 -1px 2px rgba(0,0,0,.2);display:none;left:0;padding:.6rem 1.25rem .7rem 1.25rem;position:fixed;width:100%;z-index:1000;}#blazor-error-ui .dismiss{cursor:pointer;position:absolute;right:.75rem;top:.5rem;}.blazor-error-boundary{background:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTYiIGhlaWdodD0iNDkiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIG92ZXJmbG93PSJoaWRkZW4iPjxkZWZzPjxjbGlwUGF0aCBpZD0iY2xpcDAiPjxyZWN0IHg9IjIzNSIgeT0iNTEiIHdpZHRoPSI1NiIgaGVpZ2h0PSI0OSIvPjwvY2xpcFBhdGg+PC9kZWZzPjxnIGNsaXAtcGF0aD0idXJsKCNjbGlwMCkiIHRyYW5zZm9ybT0idHJhbnNsYXRlKC0yMzUgLTUxKSI+PHBhdGggZD0iTTI2My41MDYgNTFDMjY0LjcxNyA1MSAyNjUuODEzIDUxLjQ4MzcgMjY2LjYwNiA1Mi4yNjU4TDI2Ny4wNTIgNTIuNzk4NyAyNjcuNTM5IDUzLjYyODMgMjkwLjE4NSA5Mi4xODMxIDI5MC41NDUgOTIuNzk1IDI5MC42NTYgOTIuOTk2QzI5MC44NzcgOTMuNTEzIDI5MSA5NC4wODE1IDI5MSA5NC42NzgyIDI5MSA5Ny4wNjUxIDI4OS4wMzggOTkgMjg2LjYxNyA5OUwyNDAuMzgzIDk5QzIzNy45NjMgOTkgMjM2IDk3LjA2NTEgMjM2IDk0LjY3ODIgMjM2IDk0LjM3OTkgMjM2LjAzMSA5NC4wODg2IDIzNi4wODkgOTMuODA3MkwyMzYuMzM4IDkzLjAxNjIgMjM2Ljg1OCA5Mi4xMzE0IDI1OS40NzMgNTMuNjI5NCAyNTkuOTYxIDUyLjc5ODUgMjYwLjQwNyA1Mi4yNjU4QzI2MS4yIDUxLjQ4MzcgMjYyLjI5NiA1MSAyNjMuNTA2IDUxWk0yNjMuNTg2IDY2LjAxODNDMjYwLjczNyA2Ni4wMTgzIDI1OS4zMTMgNjcuMTI0NSAyNTkuMzEzIDY5LjMzNyAyNTkuMzEzIDY5LjYxMDIgMjU5LjMzMiA2OS44NjA4IDI1OS4zNzEgNzAuMDg4N0wyNjEuNzk1IDg0LjAxNjEgMjY1LjM4IDg0LjAxNjEgMjY3LjgyMSA2OS43NDc1QzI2Ny44NiA2OS43MzA5IDI2Ny44NzkgNjkuNTg3NyAyNjcuODc5IDY5LjMxNzkgMjY3Ljg3OSA2Ny4xMTgyIDI2Ni40NDggNjYuMDE4MyAyNjMuNTg2IDY2LjAxODNaTTI2My41NzYgODYuMDU0N0MyNjEuMDQ5IDg2LjA1NDcgMjU5Ljc4NiA4Ny4zMDA1IDI1OS43ODYgODkuNzkyMSAyNTkuNzg2IDkyLjI4MzcgMjYxLjA0OSA5My41Mjk1IDI2My41NzYgOTMuNTI5NSAyNjYuMTE2IDkzLjUyOTUgMjY3LjM4NyA5Mi4yODM3IDI2Ny4zODcgODkuNzkyMSAyNjcuMzg3IDg3LjMwMDUgMjY2LjExNiA4Ni4wNTQ3IDI2My41NzYgODYuMDU0N1oiIGZpbGw9IiNGRkU1MDAiIGZpbGwtcnVsZT0iZXZlbm9kZCIvPjwvZz48L3N2Zz4=) no-repeat 1rem/1.8rem,#b32121;padding:1rem 1rem 1rem 3.7rem;color:#fff;}.blazor-error-boundary::after{content:"An error has occurred.";}.fontSmall{font-size:.75em;}.fontSmaller{font-size:.6em;}.statusMap{background:rgba(255,255,255,.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-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