From 1848fef64028253753017cde78ff83ad3d589a5d Mon Sep 17 00:00:00 2001 From: Samuele Locatelli Date: Tue, 12 Apr 2022 17:45:06 +0200 Subject: [PATCH 01/29] Update x predisporre display stato macchina --- MP-MON.sln | 2 +- MP.Mon/Components/DetailMSE.razor | 5 ++++ MP.Mon/Components/LoadingData.razor | 6 ++++ MP.Mon/Data/MpDataService.cs | 45 +++++++++++++++++++++++++++++ MP.Mon/MP.Mon.csproj | 2 ++ MP.Mon/Pages/Index.razor | 34 ++++++++++++++++++++-- MP.Mon/Pages/Index.razor.cs | 25 ++++++++++++++++ MP.Mon/Program.cs | 3 ++ MP.Mon/appsettings.json | 4 +-- 9 files changed, 120 insertions(+), 6 deletions(-) create mode 100644 MP.Mon/Components/DetailMSE.razor create mode 100644 MP.Mon/Components/LoadingData.razor create mode 100644 MP.Mon/Data/MpDataService.cs create mode 100644 MP.Mon/Pages/Index.razor.cs diff --git a/MP-MON.sln b/MP-MON.sln index 538dd50f..4e8c2f87 100644 --- a/MP-MON.sln +++ b/MP-MON.sln @@ -5,7 +5,7 @@ VisualStudioVersion = 17.0.32126.317 MinimumVisualStudioVersion = 10.0.40219.1 Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "MP.Data", "MP.Data\MP.Data.csproj", "{10BA8450-301D-49C7-8E1E-21B7469C225C}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MP.Mon", "MP.Mon\MP.Mon.csproj", "{7780FA7A-3597-4098-81C1-DC9AD6AE7A98}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "MP.Mon", "MP.Mon\MP.Mon.csproj", "{7780FA7A-3597-4098-81C1-DC9AD6AE7A98}" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution diff --git a/MP.Mon/Components/DetailMSE.razor b/MP.Mon/Components/DetailMSE.razor new file mode 100644 index 00000000..dc9993cf --- /dev/null +++ b/MP.Mon/Components/DetailMSE.razor @@ -0,0 +1,5 @@ +

dettaglio macchina

+ +@code { + +} diff --git a/MP.Mon/Components/LoadingData.razor b/MP.Mon/Components/LoadingData.razor new file mode 100644 index 00000000..d3228baf --- /dev/null +++ b/MP.Mon/Components/LoadingData.razor @@ -0,0 +1,6 @@ +
+
+

loading data

+ +
+
\ No newline at end of file diff --git a/MP.Mon/Data/MpDataService.cs b/MP.Mon/Data/MpDataService.cs new file mode 100644 index 00000000..a2f0b60a --- /dev/null +++ b/MP.Mon/Data/MpDataService.cs @@ -0,0 +1,45 @@ + +using Newtonsoft.Json; +using System.Text; + +namespace MP.Mon.Data +{ + public class MpDataService : IDisposable + { + private static IConfiguration _configuration; + private static ILogger _logger; + + public static MP.Data.Controllers.MpStatsController dbController; + + + public MpDataService(IConfiguration configuration, ILogger logger) + { + _logger = logger; + _configuration = configuration; + // conf DB + string connStr = _configuration.GetConnectionString("Mp.Mon"); + if (string.IsNullOrEmpty(connStr)) + { + _logger.LogError("ConnString empty!"); + } + else + { + dbController = new MP.Data.Controllers.MpStatsController(configuration); + StringBuilder sb = new StringBuilder(); + sb.AppendLine($"DbController OK"); + //sb.AppendLine($"CST: {dbController.CustomersCount()} | CNT: {dbController.CountersCount()} | BSK: {dbController.BasketsCount()} | NGT: {dbController.NegotiationsCount()} | DOC: {dbController.DocsCount()} | ITM: {dbController.ItemsCount()} | RES: {dbController.ResourcesCount()}"); + _logger.LogInformation(sb.ToString()); + } + } + public void Dispose() + { + // Clear database controller + dbController.Dispose(); + } + + public Task> MacchineGetAll() + { + return Task.FromResult(dbController.MacchineGetAll().ToList()); + } + } +} diff --git a/MP.Mon/MP.Mon.csproj b/MP.Mon/MP.Mon.csproj index d7d012c0..054f6762 100644 --- a/MP.Mon/MP.Mon.csproj +++ b/MP.Mon/MP.Mon.csproj @@ -7,6 +7,8 @@ + + diff --git a/MP.Mon/Pages/Index.razor b/MP.Mon/Pages/Index.razor index 6085c4aa..414ac22b 100644 --- a/MP.Mon/Pages/Index.razor +++ b/MP.Mon/Pages/Index.razor @@ -1,9 +1,37 @@ @page "/" +@using Components Index -

Hello, world!

-Welcome to your new app. - +
+
+

Hello, world!

+ + Welcome to your new app. +
+ @if (ListMacchine == null) + { +
+ +
+ } + else if (ListMacchine.Count == 0) + { +
+
+ No data found +
+
+ } + else + { + foreach (var macchina in ListMacchine) + { +
+ @macchina.CodMacchina +
+ } + } +
diff --git a/MP.Mon/Pages/Index.razor.cs b/MP.Mon/Pages/Index.razor.cs new file mode 100644 index 00000000..5b7556f9 --- /dev/null +++ b/MP.Mon/Pages/Index.razor.cs @@ -0,0 +1,25 @@ +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.Pages +{ + public partial class Index + { + protected List? ListMacchine = null; + } +} \ No newline at end of file diff --git a/MP.Mon/Program.cs b/MP.Mon/Program.cs index ff6ffc88..068f5954 100644 --- a/MP.Mon/Program.cs +++ b/MP.Mon/Program.cs @@ -26,6 +26,9 @@ var redisMultiplexer = ConnectionMultiplexer.Connect(connStringRedis); builder.Services.AddRazorPages(); builder.Services.AddServerSideBlazor(); builder.Services.AddSingleton(redisMultiplexer); +builder.Services.AddSingleton(); +//builder.Services.AddScoped(); + builder.Services.AddSingleton(); var app = builder.Build(); diff --git a/MP.Mon/appsettings.json b/MP.Mon/appsettings.json index 5d591d56..6a0146a5 100644 --- a/MP.Mon/appsettings.json +++ b/MP.Mon/appsettings.json @@ -6,9 +6,9 @@ } }, "AllowedHosts": "*", - "CodApp": "BlazorServerApp-2022", + "CodApp": "MP.MON", "ConnectionStrings": { - "GPW.DB": "Server=SQL2016DEV;Database=MonPro_Anagrafica; User ID=sa;Password=keyhammer16; integrated security=False; MultipleActiveResultSets=True; App=Blazor.ServerApp;", + "MP.Mon": "Server=SQL2016DEV;Database=MonPro; User ID=sa;Password=keyhammer16; integrated security=False; MultipleActiveResultSets=True; App=Blazor.ServerApp;", "Redis": "localhost:6379,DefaultDatabase=13,connectTimeout=5000,syncTimeout=5000,asyncTimeout=5000,abortConnect=false,ssl=false" } } From f28f7ee81544ea24d24bd734d52843ba752cc121 Mon Sep 17 00:00:00 2001 From: Samuele Locatelli Date: Wed, 13 Apr 2022 08:20:42 +0200 Subject: [PATCH 02/29] Aggiunto controller al DB di base x MoonPro (no stats) --- MP.Data/Controllers/MpMonController.cs | 119 +++++++++++++ MP.Data/DatabaseModels/MappaStatoExpl.cs | 36 ++++ MP.Data/MoonProContext.cs | 213 +++++++++++++++++++++++ MP.Mon/Data/MpDataService.cs | 9 +- MP.Mon/Pages/Index.razor | 9 +- MP.Mon/Pages/Index.razor.cs | 19 +- MP.Mon/appsettings.json | 3 +- 7 files changed, 400 insertions(+), 8 deletions(-) create mode 100644 MP.Data/Controllers/MpMonController.cs create mode 100644 MP.Data/DatabaseModels/MappaStatoExpl.cs create mode 100644 MP.Data/MoonProContext.cs diff --git a/MP.Data/Controllers/MpMonController.cs b/MP.Data/Controllers/MpMonController.cs new file mode 100644 index 00000000..83cde8de --- /dev/null +++ b/MP.Data/Controllers/MpMonController.cs @@ -0,0 +1,119 @@ +using Microsoft.Data.SqlClient; +using Microsoft.EntityFrameworkCore; +using Microsoft.Extensions.Configuration; +using NLog; +using System; +using System.Collections.Generic; +using System.Linq; + +namespace MP.Data.Controllers +{ + public class MpMonController : IDisposable + { + #region Private Fields + + private static IConfiguration _configuration; + + private static NLog.Logger Log = LogManager.GetCurrentClassLogger(); + + #endregion Private Fields + + #region Public Constructors + + public MpMonController(IConfiguration configuration) + { + _configuration = configuration; + Log.Info("Avviata classe MpMonController"); + } + + #endregion Public Constructors + + #region Public Methods + + /// + /// Elenco tabella Articoli da filtro + /// + /// + /// + /// + public List ArticoliGetSearch(int numRecord, string searchVal = "") + { + List dbResult = new List(); + using (var dbCtx = new MoonProContext(_configuration)) + { + dbResult = dbCtx + .DbSetArticoli + .Where(x => x.CodArticolo.Contains(searchVal) || x.DescArticolo.Contains(searchVal) || x.Disegno.Contains(searchVal) || string.IsNullOrEmpty(searchVal)) + .OrderBy(x => x.CodArticolo) + .Take(numRecord) + .ToList(); + } + return dbResult; + } + + public void Dispose() + { + } + + /// + /// Elenco da tabella Macchine + /// + /// + public List MacchineGetAll() + { + List dbResult = new List(); + using (var dbCtx = new MoonProContext(_configuration)) + { + dbResult = dbCtx + .DbSetMacchine + .OrderBy(x => x.IdxMacchina) + .ToList(); + } + return dbResult; + } + + /// + /// Elenco da tabella MappaStatoExpl + /// + /// + public List MseGetAll() + { + List dbResult = new List(); + using (var dbCtx = new MoonProContext(_configuration)) + { + dbResult = dbCtx + .DbSetMSE + .OrderBy(x => x.RowNum) + .ToList(); + } + return dbResult; + } + + /// + /// Annulla modifiche su una specifica entity (cancel update) + /// + /// + /// + public bool RollBackEntity(object item) + { + bool answ = false; + using (var dbCtx = new MoonProContext(_configuration)) + { + try + { + if (dbCtx.Entry(item).State == Microsoft.EntityFrameworkCore.EntityState.Deleted || dbCtx.Entry(item).State == Microsoft.EntityFrameworkCore.EntityState.Modified) + { + dbCtx.Entry(item).Reload(); + } + } + catch (Exception exc) + { + Log.Error($"Eccezione in rollBackEntity{Environment.NewLine}{exc}"); + } + } + return answ; + } + + #endregion Public Methods + } +} \ No newline at end of file diff --git a/MP.Data/DatabaseModels/MappaStatoExpl.cs b/MP.Data/DatabaseModels/MappaStatoExpl.cs new file mode 100644 index 00000000..e529b4ea --- /dev/null +++ b/MP.Data/DatabaseModels/MappaStatoExpl.cs @@ -0,0 +1,36 @@ +using System; +using System.Collections.Generic; + +namespace MP.Data.DatabaseModels +{ + public partial class MappaStatoExpl + { + public int RowNum { get; set; } + public DateTime? LastUpdate { get; set; } + public string IdxMacchina { get; set; } + public string CodMacchina { get; set; } + public string Nome { get; set; } + public string Url { get; set; } + public int? IdxOdl { get; set; } + public string CodArticolo { get; set; } + public string Disegno { get; set; } + public int? NumPezzi { get; set; } + public decimal? Tcassegnato { get; set; } + public DateTime? DataInizioOdl { get; set; } + public string Semaforo { get; set; } + public int? IdxStato { get; set; } + public string DescrizioneStato { get; set; } + public double? Durata { get; set; } + public int? PezziProd { get; set; } + public int? PezziConf { get; set; } + public decimal? TempoOn { get; set; } + public decimal? TempoAuto { get; set; } + public decimal? TempoRun { get; set; } + public decimal? Tcmedio { get; set; } + public decimal? Tclav { get; set; } + public decimal? Tceff { get; set; } + public decimal? TcmedioRt { get; set; } + public decimal? TclavRt { get; set; } + public decimal? TceffRt { get; set; } + } +} diff --git a/MP.Data/MoonProContext.cs b/MP.Data/MoonProContext.cs new file mode 100644 index 00000000..40b2ed1c --- /dev/null +++ b/MP.Data/MoonProContext.cs @@ -0,0 +1,213 @@ +using System; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Metadata; +using Microsoft.Extensions.Configuration; +using MP.Data.DatabaseModels; +using NLog; + +#nullable disable + +namespace MP.Data +{ + public partial class MoonProContext : DbContext + { + #region Private Fields + + private static NLog.Logger Log = LogManager.GetCurrentClassLogger(); + + private IConfiguration _configuration; + + #endregion Private Fields + + #region Public Constructors + + public MoonProContext(IConfiguration configuration) + { + _configuration = configuration; + } + + public MoonProContext(DbContextOptions options) : base(options) + { + } + + #endregion Public Constructors + + #region Public Properties + + public virtual DbSet DbSetArticoli { get; set; } + public virtual DbSet DbSetMacchine { get; set; } + public virtual DbSet DbSetMSE { get; set; } + + #endregion Public Properties + + #region Private Methods + + partial void OnModelCreatingPartial(ModelBuilder modelBuilder); + + #endregion Private Methods + + #region Protected Methods + + protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) + { + if (!optionsBuilder.IsConfigured) + { + string connString = _configuration.GetConnectionString("Mp.Mon"); + + optionsBuilder.UseSqlServer(connString); + //optionsBuilder.UseSqlServer("Server=SQL2016DEV;Database=MoonPro;Trusted_Connection=True;"); + } + } + + protected override void OnModelCreating(ModelBuilder modelBuilder) + { + modelBuilder.HasAnnotation("Relational:Collation", "SQL_Latin1_General_CP1_CI_AS"); + + modelBuilder.Entity(entity => + { + entity.HasNoKey(); + + entity.ToView("v_UI_AnagArticoli"); + + entity.Property(e => e.CodArticolo) + .IsRequired() + .HasMaxLength(50); + + entity.Property(e => e.DescArticolo) + .IsRequired() + .HasMaxLength(250); + + entity.Property(e => e.Disegno) + .IsRequired() + .HasMaxLength(50); + + entity.Property(e => e.Tipo) + .IsRequired() + .HasMaxLength(50); + }); + + modelBuilder.Entity(entity => + { + entity.HasNoKey(); + + entity.ToView("Macchine"); + + entity.Property(e => e.CodMacchina).HasMaxLength(50); + + entity.Property(e => e.Descrizione).HasMaxLength(50); + + entity.Property(e => e.IdxMacchina) + .IsRequired() + .HasMaxLength(50); + + entity.Property(e => e.Nome).HasMaxLength(50); + }); + + modelBuilder.Entity(entity => + { + entity.HasKey(e => e.RowNum); + + entity.ToTable("MappaStatoExpl"); + + entity.Property(e => e.CodArticolo) + .HasMaxLength(50) + .HasDefaultValueSql("('-')"); + + entity.Property(e => e.CodMacchina).HasMaxLength(50); + + entity.Property(e => e.DataInizioOdl) + .HasColumnType("datetime") + .HasColumnName("DataInizioODL"); + + entity.Property(e => e.DescrizioneStato) + .HasMaxLength(50) + .HasDefaultValueSql("('n.d.')"); + + entity.Property(e => e.Disegno) + .HasMaxLength(50) + .HasDefaultValueSql("('')"); + + entity.Property(e => e.Durata) + .HasColumnName("durata") + .HasDefaultValueSql("((0))"); + + entity.Property(e => e.IdxMacchina).HasMaxLength(50); + + entity.Property(e => e.IdxOdl).HasColumnName("idxODL"); + + entity.Property(e => e.IdxStato) + .HasColumnName("idxStato") + .HasDefaultValueSql("((0))"); + + entity.Property(e => e.LastUpdate) + .HasColumnType("datetime") + .HasColumnName("lastUpdate"); + + entity.Property(e => e.Nome).HasMaxLength(50); + + entity.Property(e => e.PezziConf).HasDefaultValueSql("((0))"); + + entity.Property(e => e.PezziProd).HasDefaultValueSql("((0))"); + + entity.Property(e => e.Semaforo) + .HasMaxLength(50) + .HasDefaultValueSql("('')"); + + entity.Property(e => e.Tcassegnato) + .HasColumnType("decimal(18, 8)") + .HasColumnName("TCAssegnato") + .HasDefaultValueSql("((1))"); + + entity.Property(e => e.Tceff) + .HasColumnType("decimal(18, 8)") + .HasColumnName("TCEff") + .HasDefaultValueSql("((0))"); + + entity.Property(e => e.TceffRt) + .HasColumnType("decimal(18, 8)") + .HasColumnName("TCEffRT") + .HasDefaultValueSql("((0))"); + + entity.Property(e => e.Tclav) + .HasColumnType("decimal(18, 8)") + .HasColumnName("TCLav") + .HasDefaultValueSql("((0))"); + + entity.Property(e => e.TclavRt) + .HasColumnType("decimal(18, 8)") + .HasColumnName("TCLavRT") + .HasDefaultValueSql("((0))"); + + entity.Property(e => e.Tcmedio) + .HasColumnType("decimal(18, 8)") + .HasColumnName("TCMedio") + .HasDefaultValueSql("((0))"); + + entity.Property(e => e.TcmedioRt) + .HasColumnType("decimal(18, 8)") + .HasColumnName("TCMedioRT") + .HasDefaultValueSql("((0))"); + + entity.Property(e => e.TempoAuto) + .HasColumnType("decimal(18, 8)") + .HasDefaultValueSql("((0))"); + + entity.Property(e => e.TempoOn) + .HasColumnType("decimal(18, 8)") + .HasDefaultValueSql("((0))"); + + entity.Property(e => e.TempoRun) + .HasColumnType("decimal(18, 8)") + .HasDefaultValueSql("((0))"); + + entity.Property(e => e.Url) + .HasMaxLength(250) + .HasColumnName("url"); + }); + + OnModelCreatingPartial(modelBuilder); + } + + #endregion Protected Methods + } +} \ No newline at end of file diff --git a/MP.Mon/Data/MpDataService.cs b/MP.Mon/Data/MpDataService.cs index a2f0b60a..44777b89 100644 --- a/MP.Mon/Data/MpDataService.cs +++ b/MP.Mon/Data/MpDataService.cs @@ -9,7 +9,7 @@ namespace MP.Mon.Data private static IConfiguration _configuration; private static ILogger _logger; - public static MP.Data.Controllers.MpStatsController dbController; + public static MP.Data.Controllers.MpMonController dbController; public MpDataService(IConfiguration configuration, ILogger logger) @@ -24,7 +24,7 @@ namespace MP.Mon.Data } else { - dbController = new MP.Data.Controllers.MpStatsController(configuration); + dbController = new MP.Data.Controllers.MpMonController(configuration); StringBuilder sb = new StringBuilder(); sb.AppendLine($"DbController OK"); //sb.AppendLine($"CST: {dbController.CustomersCount()} | CNT: {dbController.CountersCount()} | BSK: {dbController.BasketsCount()} | NGT: {dbController.NegotiationsCount()} | DOC: {dbController.DocsCount()} | ITM: {dbController.ItemsCount()} | RES: {dbController.ResourcesCount()}"); @@ -41,5 +41,10 @@ namespace MP.Mon.Data { return Task.FromResult(dbController.MacchineGetAll().ToList()); } + + public Task> MseGetAll() + { + return Task.FromResult(dbController.MseGetAll().ToList()); + } } } diff --git a/MP.Mon/Pages/Index.razor b/MP.Mon/Pages/Index.razor index 414ac22b..3f9202cf 100644 --- a/MP.Mon/Pages/Index.razor +++ b/MP.Mon/Pages/Index.razor @@ -1,5 +1,6 @@ @page "/" -@using Components + + Index @@ -11,13 +12,13 @@ Welcome to your new app. - @if (ListMacchine == null) + @if (ListMSE == null) {
} - else if (ListMacchine.Count == 0) + else if (ListMSE.Count == 0) {
@@ -27,7 +28,7 @@ } else { - foreach (var macchina in ListMacchine) + foreach (var macchina in ListMSE) {
@macchina.CodMacchina diff --git a/MP.Mon/Pages/Index.razor.cs b/MP.Mon/Pages/Index.razor.cs index 5b7556f9..3ae92d10 100644 --- a/MP.Mon/Pages/Index.razor.cs +++ b/MP.Mon/Pages/Index.razor.cs @@ -15,11 +15,28 @@ using MP.Mon; using MP.Mon.Shared; using MP.Mon.Components; using MP.Data.DatabaseModels; +using MP.Mon.Components; +using MP.Mon.Data; namespace MP.Mon.Pages { public partial class Index { - protected List? ListMacchine = null; + protected List? ListMSE = null; + + protected override async Task OnInitializedAsync() + { + await reloadData(); + //return base.OnInitializedAsync(); + } + + [Inject] + protected MpDataService MMDataService { get; set; } + + private async Task reloadData() + { + ListMSE = await MMDataService.MseGetAll(); + } + } } \ No newline at end of file diff --git a/MP.Mon/appsettings.json b/MP.Mon/appsettings.json index 6a0146a5..f83e95f8 100644 --- a/MP.Mon/appsettings.json +++ b/MP.Mon/appsettings.json @@ -8,7 +8,8 @@ "AllowedHosts": "*", "CodApp": "MP.MON", "ConnectionStrings": { - "MP.Mon": "Server=SQL2016DEV;Database=MonPro; User ID=sa;Password=keyhammer16; integrated security=False; MultipleActiveResultSets=True; App=Blazor.ServerApp;", + "MP.Mon": "Server=SQL2016DEV;Database=MoonPro; User ID=sa;Password=keyhammer16; integrated security=False; MultipleActiveResultSets=True; App=Blazor.ServerApp;", + "MP.Stats": "Server=SQL2016DEV;Database=MoonPro_STATS; User ID=sa;Password=keyhammer16; integrated security=False; MultipleActiveResultSets=True; App=Blazor.ServerApp;", "Redis": "localhost:6379,DefaultDatabase=13,connectTimeout=5000,syncTimeout=5000,asyncTimeout=5000,abortConnect=false,ssl=false" } } From 519c8d21304ce41a9ee6e42666a402aaa56c31f8 Mon Sep 17 00:00:00 2001 From: Samuele Locatelli Date: Wed, 13 Apr 2022 10:58:13 +0200 Subject: [PATCH 03/29] Update MON --- MP.Data/DatabaseModels/MappaStatoExpl.cs | 14 +- MP.Data/MoonProContext.cs | 14 +- MP.Mon/Data/WeatherForecast.cs | 13 - MP.Mon/Data/WeatherForecastService.cs | 20 -- MP.Mon/MP.Mon.csproj | 8 + MP.Mon/Pages/Counter.razor | 18 -- MP.Mon/Pages/FetchData.razor | 48 ---- MP.Mon/Pages/Index.razor | 70 ++++- MP.Mon/Pages/Index.razor.cs | 56 ++++ MP.Mon/Program.cs | 2 - MP.Mon/Shared/MainLayout.razor | 20 +- MP.Mon/Shared/MainLayout.razor.css | 20 +- MP.Mon/compilerconfig.json | 10 + MP.Mon/compilerconfig.json.defaults | 71 +++++ MP.Mon/wwwroot/css/site.css | 342 +++++++++++----------- MP.Mon/wwwroot/css/site.less | 350 ++++++++++++----------- MP.Mon/wwwroot/css/site.min.css | 2 +- MP.Mon/wwwroot/images/LogoCliente.png | Bin 0 -> 3051 bytes MP.Mon/wwwroot/images/LogoMapo.png | Bin 0 -> 19861 bytes 19 files changed, 589 insertions(+), 489 deletions(-) delete mode 100644 MP.Mon/Data/WeatherForecast.cs delete mode 100644 MP.Mon/Data/WeatherForecastService.cs delete mode 100644 MP.Mon/Pages/Counter.razor delete mode 100644 MP.Mon/Pages/FetchData.razor create mode 100644 MP.Mon/compilerconfig.json create mode 100644 MP.Mon/compilerconfig.json.defaults create mode 100644 MP.Mon/wwwroot/images/LogoCliente.png create mode 100644 MP.Mon/wwwroot/images/LogoMapo.png diff --git a/MP.Data/DatabaseModels/MappaStatoExpl.cs b/MP.Data/DatabaseModels/MappaStatoExpl.cs index e529b4ea..bebcf16e 100644 --- a/MP.Data/DatabaseModels/MappaStatoExpl.cs +++ b/MP.Data/DatabaseModels/MappaStatoExpl.cs @@ -15,7 +15,7 @@ namespace MP.Data.DatabaseModels public string CodArticolo { get; set; } public string Disegno { get; set; } public int? NumPezzi { get; set; } - public decimal? Tcassegnato { get; set; } + public decimal? TCAssegnato { get; set; } public DateTime? DataInizioOdl { get; set; } public string Semaforo { get; set; } public int? IdxStato { get; set; } @@ -26,11 +26,11 @@ namespace MP.Data.DatabaseModels public decimal? TempoOn { get; set; } public decimal? TempoAuto { get; set; } public decimal? TempoRun { get; set; } - public decimal? Tcmedio { get; set; } - public decimal? Tclav { get; set; } - public decimal? Tceff { get; set; } - public decimal? TcmedioRt { get; set; } - public decimal? TclavRt { get; set; } - public decimal? TceffRt { get; set; } + public decimal? TCMedio { get; set; } + public decimal? TCLav { get; set; } + public decimal? TCEff { get; set; } + public decimal? TCMedioRt { get; set; } + public decimal? TCLavRt { get; set; } + public decimal? TCEffRt { get; set; } } } diff --git a/MP.Data/MoonProContext.cs b/MP.Data/MoonProContext.cs index 40b2ed1c..7cd12b19 100644 --- a/MP.Data/MoonProContext.cs +++ b/MP.Data/MoonProContext.cs @@ -153,37 +153,37 @@ namespace MP.Data .HasMaxLength(50) .HasDefaultValueSql("('')"); - entity.Property(e => e.Tcassegnato) + entity.Property(e => e.TCAssegnato) .HasColumnType("decimal(18, 8)") .HasColumnName("TCAssegnato") .HasDefaultValueSql("((1))"); - entity.Property(e => e.Tceff) + entity.Property(e => e.TCEff) .HasColumnType("decimal(18, 8)") .HasColumnName("TCEff") .HasDefaultValueSql("((0))"); - entity.Property(e => e.TceffRt) + entity.Property(e => e.TCEffRt) .HasColumnType("decimal(18, 8)") .HasColumnName("TCEffRT") .HasDefaultValueSql("((0))"); - entity.Property(e => e.Tclav) + entity.Property(e => e.TCLav) .HasColumnType("decimal(18, 8)") .HasColumnName("TCLav") .HasDefaultValueSql("((0))"); - entity.Property(e => e.TclavRt) + entity.Property(e => e.TCLavRt) .HasColumnType("decimal(18, 8)") .HasColumnName("TCLavRT") .HasDefaultValueSql("((0))"); - entity.Property(e => e.Tcmedio) + entity.Property(e => e.TCMedio) .HasColumnType("decimal(18, 8)") .HasColumnName("TCMedio") .HasDefaultValueSql("((0))"); - entity.Property(e => e.TcmedioRt) + entity.Property(e => e.TCMedioRt) .HasColumnType("decimal(18, 8)") .HasColumnName("TCMedioRT") .HasDefaultValueSql("((0))"); diff --git a/MP.Mon/Data/WeatherForecast.cs b/MP.Mon/Data/WeatherForecast.cs deleted file mode 100644 index c0004e5e..00000000 --- a/MP.Mon/Data/WeatherForecast.cs +++ /dev/null @@ -1,13 +0,0 @@ -namespace MP.Mon.Data -{ - public class WeatherForecast - { - public DateTime Date { get; set; } - - public int TemperatureC { get; set; } - - public int TemperatureF => 32 + (int)(TemperatureC / 0.5556); - - public string? Summary { get; set; } - } -} \ No newline at end of file diff --git a/MP.Mon/Data/WeatherForecastService.cs b/MP.Mon/Data/WeatherForecastService.cs deleted file mode 100644 index 6b8e22db..00000000 --- a/MP.Mon/Data/WeatherForecastService.cs +++ /dev/null @@ -1,20 +0,0 @@ -namespace MP.Mon.Data -{ - public class WeatherForecastService - { - private static readonly string[] Summaries = new[] - { - "Freezing", "Bracing", "Chilly", "Cool", "Mild", "Warm", "Balmy", "Hot", "Sweltering", "Scorching" - }; - - public Task GetForecastAsync(DateTime startDate) - { - return Task.FromResult(Enumerable.Range(1, 5).Select(index => new WeatherForecast - { - Date = startDate.AddDays(index), - TemperatureC = Random.Shared.Next(-20, 55), - Summary = Summaries[Random.Shared.Next(Summaries.Length)] - }).ToArray()); - } - } -} \ No newline at end of file diff --git a/MP.Mon/MP.Mon.csproj b/MP.Mon/MP.Mon.csproj index 054f6762..12c79581 100644 --- a/MP.Mon/MP.Mon.csproj +++ b/MP.Mon/MP.Mon.csproj @@ -6,6 +6,14 @@ enable + + + + + + + + diff --git a/MP.Mon/Pages/Counter.razor b/MP.Mon/Pages/Counter.razor deleted file mode 100644 index ef23cb31..00000000 --- a/MP.Mon/Pages/Counter.razor +++ /dev/null @@ -1,18 +0,0 @@ -@page "/counter" - -Counter - -

Counter

- -

Current count: @currentCount

- - - -@code { - private int currentCount = 0; - - private void IncrementCount() - { - currentCount++; - } -} diff --git a/MP.Mon/Pages/FetchData.razor b/MP.Mon/Pages/FetchData.razor deleted file mode 100644 index b5ba00c3..00000000 --- a/MP.Mon/Pages/FetchData.razor +++ /dev/null @@ -1,48 +0,0 @@ -@page "/fetchdata" - -Weather forecast - -@using MP.Mon.Data -@inject WeatherForecastService ForecastService - -

Weather forecast

- -

This component demonstrates fetching data from a service.

- -@if (forecasts == null) -{ -

Loading...

-} -else -{ - - - - - - - - - - - @foreach (var forecast in forecasts) - { - - - - - - - } - -
DateTemp. (C)Temp. (F)Summary
@forecast.Date.ToShortDateString()@forecast.TemperatureC@forecast.TemperatureF@forecast.Summary
-} - -@code { - private WeatherForecast[]? forecasts; - - protected override async Task OnInitializedAsync() - { - forecasts = await ForecastService.GetForecastAsync(DateTime.Now); - } -} diff --git a/MP.Mon/Pages/Index.razor b/MP.Mon/Pages/Index.razor index 3f9202cf..76a6da3e 100644 --- a/MP.Mon/Pages/Index.razor +++ b/MP.Mon/Pages/Index.razor @@ -6,12 +6,7 @@ -
-
-

Hello, world!

- - Welcome to your new app. -
+
@if (ListMSE == null) {
@@ -28,11 +23,70 @@ } else { + int currIdx = 0; foreach (var macchina in ListMSE) { -
- @macchina.CodMacchina +
+
+
+
+
@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)"
") + ; + } + } + // controllo se devo "chiudere riga... + int currNum = (currIdx % maxCol); + while (currNum < (maxCol)) + { + @((MarkupString)"
 
") + ; + currNum++; + } }
diff --git a/MP.Mon/Pages/Index.razor.cs b/MP.Mon/Pages/Index.razor.cs index 3ae92d10..3df00241 100644 --- a/MP.Mon/Pages/Index.razor.cs +++ b/MP.Mon/Pages/Index.razor.cs @@ -24,12 +24,28 @@ namespace MP.Mon.Pages { protected List? ListMSE = null; + protected int keepAliveMin = 5; // leggere da conf? + + protected int maxCol = 6; // leggere da conf? + + 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; } @@ -38,5 +54,45 @@ 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/Program.cs b/MP.Mon/Program.cs index 068f5954..5d1efe06 100644 --- a/MP.Mon/Program.cs +++ b/MP.Mon/Program.cs @@ -29,8 +29,6 @@ builder.Services.AddSingleton(redisMultiplexer); builder.Services.AddSingleton(); //builder.Services.AddScoped(); -builder.Services.AddSingleton(); - var app = builder.Build(); // Configure the HTTP request pipeline. diff --git a/MP.Mon/Shared/MainLayout.razor b/MP.Mon/Shared/MainLayout.razor index 7da4e90a..f17b6251 100644 --- a/MP.Mon/Shared/MainLayout.razor +++ b/MP.Mon/Shared/MainLayout.razor @@ -3,16 +3,22 @@ MP.Mon
- -
-
- About +
+
+ + MP MONitor +
+
+ + @($"{DateTime.Now:dddd dd MMMM yyyy, HH:mm}") + + + EgalWare +
-
+
@Body
diff --git a/MP.Mon/Shared/MainLayout.razor.css b/MP.Mon/Shared/MainLayout.razor.css index 495fb804..f46e7c65 100644 --- a/MP.Mon/Shared/MainLayout.razor.css +++ b/MP.Mon/Shared/MainLayout.razor.css @@ -8,19 +8,19 @@ main { flex: 1; } -.sidebar,.sidebarSmall { - background-image: linear-gradient(180deg, rgb(5, 39, 103) 20%, #3aa6ff 90%); -} - .top-row { - background-color: #f7f7f7; - border-bottom: 1px solid #d6d5d5; - justify-content: flex-end; - height: 3.5rem; + background-color: #000000; + /*border-bottom: 1px solid #696969;*/ + color: #696969; + font-size: 1.4em; + height: 3rem; display: flex; align-items: center; - /*justify-content: space-evenly; - display: flex;*/ + justify-content: space-evenly; +} + +.mainHead{ + font-size: 1.7rem; } .top-row ::deep a, diff --git a/MP.Mon/compilerconfig.json b/MP.Mon/compilerconfig.json new file mode 100644 index 00000000..caa3f6ec --- /dev/null +++ b/MP.Mon/compilerconfig.json @@ -0,0 +1,10 @@ +[ + { + "outputFile": "wwwroot/css/site.css", + "inputFile": "wwwroot/css/site.less" + }, + { + "outputFile": "wwwroot/css/fonts.css", + "inputFile": "wwwroot/css/fonts.less" + } +] \ No newline at end of file diff --git a/MP.Mon/compilerconfig.json.defaults b/MP.Mon/compilerconfig.json.defaults new file mode 100644 index 00000000..41870cc5 --- /dev/null +++ b/MP.Mon/compilerconfig.json.defaults @@ -0,0 +1,71 @@ +{ + "compilers": { + "less": { + "autoPrefix": "", + "cssComb": "none", + "ieCompat": true, + "math": null, + "strictMath": false, + "strictUnits": false, + "relativeUrls": true, + "rootPath": "", + "sourceMapRoot": "", + "sourceMapBasePath": "", + "sourceMap": false + }, + "sass": { + "autoPrefix": "", + "loadPaths": "", + "style": "expanded", + "relativeUrls": true, + "sourceMap": false + }, + "nodesass": { + "autoPrefix": "", + "includePath": "", + "indentType": "space", + "indentWidth": 2, + "outputStyle": "nested", + "precision": 5, + "relativeUrls": true, + "sourceMapRoot": "", + "lineFeed": "", + "sourceMap": false + }, + "stylus": { + "sourceMap": false + }, + "babel": { + "sourceMap": false + }, + "coffeescript": { + "bare": false, + "runtimeMode": "node", + "sourceMap": false + }, + "handlebars": { + "root": "", + "noBOM": false, + "name": "", + "namespace": "", + "knownHelpersOnly": false, + "forcePartial": false, + "knownHelpers": [], + "commonjs": "", + "amd": false, + "sourceMap": false + } + }, + "minifiers": { + "css": { + "enabled": true, + "termSemicolons": true, + "gzip": false + }, + "javascript": { + "enabled": true, + "termSemicolons": true, + "gzip": false + } + } +} \ No newline at end of file diff --git a/MP.Mon/wwwroot/css/site.css b/MP.Mon/wwwroot/css/site.css index 4a8ba847..331403ae 100644 --- a/MP.Mon/wwwroot/css/site.css +++ b/MP.Mon/wwwroot/css/site.css @@ -15,10 +15,17 @@ display-4 { font-family: 'Lato', sans-serif; } html, +body { + height: 100%; +} +html, body { /*font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif;*/ 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; @@ -53,89 +60,6 @@ a, .striked { text-decoration: line-through; } -/* Gestione dropdown menu x week planner */ -.dropdown { - position: relative; - display: inline-block; -} -.dropdown:hover .dropdown-content, -.dropdown:hover .dropdown-content-top, -.dropdown:hover .dropdown-content-left, -.dropdown:hover .dropdown-content-top-left { - display: block; -} -.dropdown-content { - display: none; - position: absolute; - left: -10em; - min-width: 8em; - box-shadow: 0px 8px 16px 0px rgba(0, 0, 0, 0.2); - z-index: 1; -} -.dropdown-content .a { - color: black; - padding: 12px 16px; - text-decoration: none; - display: block; -} -.dropdown-content .a:hover { - background-color: #ddd; -} -.dropdown-content-top { - display: none; - position: absolute; - min-width: 8em; - box-shadow: 0px 8px 16px 0px rgba(0, 0, 0, 0.2); - z-index: 1; - top: -13.5em; - left: -10em; -} -.dropdown-content-top .a { - color: black; - padding: 12px 16px; - text-decoration: none; - display: block; -} -.dropdown-content-top .a:hover { - background-color: #ddd; -} -.dropdown-content-left { - display: none; - position: absolute; - left: -10em; - min-width: 8em; - box-shadow: 0px 8px 16px 0px rgba(0, 0, 0, 0.2); - z-index: 1; - left: -24em; -} -.dropdown-content-left .a { - color: black; - padding: 12px 16px; - text-decoration: none; - display: block; -} -.dropdown-content-left .a:hover { - background-color: #ddd; -} -.dropdown-content-top-left { - display: none; - position: absolute; - left: -10em; - min-width: 8em; - box-shadow: 0px 8px 16px 0px rgba(0, 0, 0, 0.2); - z-index: 1; - top: -13.5em; - left: -24em; -} -.dropdown-content-top-left .a { - color: black; - padding: 12px 16px; - text-decoration: none; - display: block; -} -.dropdown-content-top-left .a:hover { - background-color: #ddd; -} .textTrim { white-space: nowrap; overflow: hidden; @@ -216,109 +140,165 @@ a, .blazor-error-boundary::after { content: "An error has occurred."; } -/*------------------------------------------------------------------ -[ Shortcuts / .shortcuts ] -*/ -.shortcuts { - text-align: center; +/* Gestione specifica oggetti MON*/ +/* MAIN: gestione layout dinamico mappa... */ +.fontSmall { + font-size: 0.75em; } -.shortcuts .shortcut-icon { - font-size: 2rem; +.fontSmaller { + font-size: 0.6em; } -.shortcuts .shortcut { - min-width: 9rem; - min-height: 5rem; - display: inline-block; - padding: 2rem/3 0; - margin: 0 2px 1em; - vertical-align: top; - text-decoration: none; - background: #F3F3F3; - background-image: -webkit-gradient(linear, left 0%, left 100%, from(#ffffff), to(#eeeeee)); - background-image: -webkit-linear-gradient(top, #ffffff, 0%, #eeeeee, 100%); - background-image: -moz-linear-gradient(top, #ffffff 0%, #eeeeee 100%); - background-image: linear-gradient(to bottom, #ffffff 0%, #eeeeee 100%); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#ffeeeeee', GradientType=0); - border: 1px solid #ddd; - box-sizing: border-box; - border-radius: 1rem/2; +.statusMap { + background: #222; } -.shortcuts .shortcut-sm { - min-width: 4.5rem; - min-height: 3rem; - display: inline-block; - padding: 1rem/4 0; - margin: 0 2px 1em; - vertical-align: top; - text-decoration: none; - background: #F3F3F3; - background-image: -webkit-gradient(linear, left 0%, left 100%, from(#ffffff), to(#eeeeee)); - background-image: -webkit-linear-gradient(top, #ffffff, 0%, #eeeeee, 100%); - background-image: -moz-linear-gradient(top, #ffffff 0%, #eeeeee 100%); - background-image: linear-gradient(to bottom, #ffffff 0%, #eeeeee 100%); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#ffeeeeee', GradientType=0); - border: 1px solid #ddd; - box-sizing: border-box; - border-radius: 1rem/2; -} -.shortcuts .shortcut .shortcut-icon { - width: 100%; - margin-top: 0; - margin-bottom: 0; - font-size: 2rem; - color: #333; -} -.shortcuts .shortcut-sm .shortcut-icon { - width: 100%; - margin-top: 0; - margin-bottom: 0; - font-size: 2rem; - color: #333; -} -.shortcuts .shortcut:hover { - background: #E8E8E8; - background-image: -webkit-gradient(linear, left 0%, left 100%, from(#fafafa), to(#e1e1e1)); - background-image: -webkit-linear-gradient(top, #fafafa, 0%, #e1e1e1, 100%); - background-image: -moz-linear-gradient(top, #fafafa 0%, #e1e1e1 100%); - background-image: linear-gradient(to bottom, #fafafa 0%, #e1e1e1 100%); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffafafa', endColorstr='#ffe1e1e1', GradientType=0); -} -.shortcuts .shortcut-sm:hover { - background: #E8E8E8; - background-image: -webkit-gradient(linear, left 0%, left 100%, from(#fafafa), to(#e1e1e1)); - background-image: -webkit-linear-gradient(top, #fafafa, 0%, #e1e1e1, 100%); - background-image: -moz-linear-gradient(top, #fafafa 0%, #e1e1e1 100%); - background-image: linear-gradient(to bottom, #fafafa 0%, #e1e1e1 100%); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffafafa', endColorstr='#ffe1e1e1', GradientType=0); -} -.shortcuts .shortcut:active { - box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); -} -.shortcuts .shortcut-sm:active { - box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); -} -.shortcuts .shortcut:hover .shortcut-icon { - color: #C93; -} -.shortcuts .shortcut-sm:hover .shortcut-icon { - color: #666; -} -.shortcuts .shortcut-label { - display: block; - margin-top: 0.75em; +.statusMap .ui-title, +.statusMap .ui-li-aside { font-weight: 400; - color: #666; + 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)); } -@media (max-width: 640px) { - .shortcuts .shortcut { - min-width: 8rem; - min-height: 4rem; +.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)); +} +/* END: gestione layout dinamico mappa... */ +/* area semafori*/ +.semBlinkVe, +.semFixVe, +.semFixVe_b, +.semVe, +.semVe_b { + background: #009036; + background: rgba(0, 255, 80, 0.6); + color: #FFFFAA; +} +.semBlinkGr, +.semFixGr, +.semFixGr_b, +.semGr, +.semGr_b { + background-color: #bcbcbc; + background: rgba(180, 180, 180, 0.6); +} +.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%; } - body { - font-size: 0.8em; + 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 diff --git a/MP.Mon/wwwroot/css/site.less b/MP.Mon/wwwroot/css/site.less index bda17c4b..70bc5e66 100644 --- a/MP.Mon/wwwroot/css/site.less +++ b/MP.Mon/wwwroot/css/site.less @@ -6,10 +6,17 @@ 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: 'Helvetica Neue', Helvetica, Arial, sans-serif;*/ font-family: 'Roboto Condensed', sans-serif; line-height: 1.3; + background-image: linear-gradient(180deg, rgb(1, 8, 22) 20%, #3aa6ff 90%); + background-size: auto 100%; + background-repeat: no-repeat; } @@ -55,61 +62,6 @@ a, .btn-link { text-decoration: line-through; } - -/* Gestione dropdown menu x week planner */ - -@dropTop: -13.5em; -@dropLeftL: -10em; -@dropLeftR: -24em; - -.dropdown { - position: relative; - display: inline-block; - - &:hover .dropdown-content, &:hover .dropdown-content-top, &:hover .dropdown-content-left, &:hover .dropdown-content-top-left { - display: block; - } -} - -.dropdown-content { - display: none; - position: absolute; - left: @dropLeftL; - min-width: 8em; - box-shadow: 0px 8px 16px 0px rgba(0,0,0,0.2); - z-index: 1; - - .a { - color: black; - padding: 12px 16px; - text-decoration: none; - display: block; - } - - .a:hover { - background-color: #ddd; - } -} - - -.dropdown-content-top { - .dropdown-content(); - top: @dropTop; - left: @dropLeftL; -} - -.dropdown-content-left { - .dropdown-content(); - left: @dropLeftR; -} - -.dropdown-content-top-left { - .dropdown-content(); - top: @dropTop; - left: @dropLeftR; -} - - .textTrim { white-space: nowrap; overflow: hidden; @@ -191,128 +143,192 @@ a, .btn-link { .blazor-error-boundary::after { content: "An error has occurred." } - - -/*------------------------------------------------------------------ -[ Shortcuts / .shortcuts ] -*/ - -@blSCut: 1rem; - -.shortcuts { - text-align: center; +/* Gestione specifica oggetti MON*/ +/* MAIN: gestione layout dinamico mappa... */ +.fontSmall { + font-size: 0.75em; } -.shortcuts .shortcut-icon { - font-size: 2*@blSCut; +.fontSmaller { + font-size: 0.6em; } -.shortcuts .shortcut { - min-width: @blSCut * 9; - min-height: @blSCut * 5; - display: inline-block; - padding: @blSCut*2/3 0; - margin: 0 2px 1em; - vertical-align: top; - text-decoration: none; - background: #F3F3F3; - background-image: -webkit-gradient(linear, left 0%, left 100%, from(#ffffff), to(#eeeeee)); - background-image: -webkit-linear-gradient(top, #ffffff, 0%, #eeeeee, 100%); - background-image: -moz-linear-gradient(top, #ffffff 0%, #eeeeee 100%); - background-image: linear-gradient(to bottom, #ffffff 0%, #eeeeee 100%); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#ffeeeeee', GradientType=0); - border: 1px solid #ddd; - box-sizing: border-box; - border-radius: @blSCut/2; +.statusMap { + background: #222; } -.shortcuts .shortcut-sm { - min-width: @blSCut * 4.5; - min-height: @blSCut * 3; - display: inline-block; - padding: @blSCut/4 0; - margin: 0 2px 1em; - vertical-align: top; - text-decoration: none; - background: #F3F3F3; - background-image: -webkit-gradient(linear, left 0%, left 100%, from(#ffffff), to(#eeeeee)); - background-image: -webkit-linear-gradient(top, #ffffff, 0%, #eeeeee, 100%); - background-image: -moz-linear-gradient(top, #ffffff 0%, #eeeeee 100%); - background-image: linear-gradient(to bottom, #ffffff 0%, #eeeeee 100%); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#ffeeeeee', GradientType=0); - border: 1px solid #ddd; - box-sizing: border-box; - border-radius: @blSCut/2; -} - -.shortcuts .shortcut .shortcut-icon { - width: 100%; - margin-top: 0; - margin-bottom: 0; - font-size: @blSCut*2; - color: #333; -} - -.shortcuts .shortcut-sm .shortcut-icon { - width: 100%; - margin-top: 0; - margin-bottom: 0; - font-size: @blSCut*2; - color: #333; -} - -.shortcuts .shortcut:hover { - background: #E8E8E8; - background-image: -webkit-gradient(linear, left 0%, left 100%, from(#fafafa), to(#e1e1e1)); - background-image: -webkit-linear-gradient(top, #fafafa, 0%, #e1e1e1, 100%); - background-image: -moz-linear-gradient(top, #fafafa 0%, #e1e1e1 100%); - background-image: linear-gradient(to bottom, #fafafa 0%, #e1e1e1 100%); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffafafa', endColorstr='#ffe1e1e1', GradientType=0); -} - -.shortcuts .shortcut-sm:hover { - background: #E8E8E8; - background-image: -webkit-gradient(linear, left 0%, left 100%, from(#fafafa), to(#e1e1e1)); - background-image: -webkit-linear-gradient(top, #fafafa, 0%, #e1e1e1, 100%); - background-image: -moz-linear-gradient(top, #fafafa 0%, #e1e1e1 100%); - background-image: linear-gradient(to bottom, #fafafa 0%, #e1e1e1 100%); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffafafa', endColorstr='#ffe1e1e1', GradientType=0); -} - -.shortcuts .shortcut:active { - box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); -} - -.shortcuts .shortcut-sm:active { - box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); -} - -.shortcuts .shortcut:hover .shortcut-icon { - color: #C93; -} - -.shortcuts .shortcut-sm:hover .shortcut-icon { - color: #666; -} - -.shortcuts .shortcut-label { - display: block; - margin-top: .75em; +.statusMap .ui-title, .statusMap .ui-li-aside { font-weight: 400; - color: #666; + 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)); } -@media (max-width: 640px) { - .shortcuts .shortcut { - min-width: @blSCut * 8; - min-height: @blSCut * 4; +.statusMap .ui-art { +} + +.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)); +} +/* END: gestione layout dinamico mappa... */ +/* area semafori*/ +.semBlinkVe, +.semFixVe, +.semFixVe_b, +.semVe, +.semVe_b { + 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%; } - body { - font-size: 0.8em; + 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; +} diff --git a/MP.Mon/wwwroot/css/site.min.css b/MP.Mon/wwwroot/css/site.min.css index ad652924..c5d46f4d 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{font-family:'Roboto Condensed',sans-serif;line-height:1.3;}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;}.dropdown{position:relative;display:inline-block;}.dropdown:hover .dropdown-content,.dropdown:hover .dropdown-content-top,.dropdown:hover .dropdown-content-left,.dropdown:hover .dropdown-content-top-left{display:block;}.dropdown-content{display:none;position:absolute;left:-10em;min-width:8em;box-shadow:0 8px 16px 0 rgba(0,0,0,.2);z-index:1;}.dropdown-content .a{color:#000;padding:12px 16px;text-decoration:none;display:block;}.dropdown-content .a:hover{background-color:#ddd;}.dropdown-content-top{display:none;position:absolute;min-width:8em;box-shadow:0 8px 16px 0 rgba(0,0,0,.2);z-index:1;top:-13.5em;left:-10em;}.dropdown-content-top .a{color:#000;padding:12px 16px;text-decoration:none;display:block;}.dropdown-content-top .a:hover{background-color:#ddd;}.dropdown-content-left{display:none;position:absolute;left:-10em;min-width:8em;box-shadow:0 8px 16px 0 rgba(0,0,0,.2);z-index:1;left:-24em;}.dropdown-content-left .a{color:#000;padding:12px 16px;text-decoration:none;display:block;}.dropdown-content-left .a:hover{background-color:#ddd;}.dropdown-content-top-left{display:none;position:absolute;left:-10em;min-width:8em;box-shadow:0 8px 16px 0 rgba(0,0,0,.2);z-index:1;top:-13.5em;left:-24em;}.dropdown-content-top-left .a{color:#000;padding:12px 16px;text-decoration:none;display:block;}.dropdown-content-top-left .a:hover{background-color:#ddd;}.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.";}.shortcuts{text-align:center;}.shortcuts .shortcut-icon{font-size:2rem;}.shortcuts .shortcut{min-width:9rem;min-height:5rem;display:inline-block;padding:2rem/3 0;margin:0 2px 1em;vertical-align:top;text-decoration:none;background:#f3f3f3;background-image:-webkit-gradient(linear,left 0%,left 100%,from(#fff),to(#eee));background-image:-webkit-linear-gradient(top,#fff,0%,#eee,100%);background-image:-moz-linear-gradient(top,#fff 0%,#eee 100%);background-image:linear-gradient(to bottom,#fff 0%,#eee 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff',endColorstr='#ffeeeeee',GradientType=0);border:1px solid #ddd;box-sizing:border-box;border-radius:1rem/2;}.shortcuts .shortcut-sm{min-width:4.5rem;min-height:3rem;display:inline-block;padding:1rem/4 0;margin:0 2px 1em;vertical-align:top;text-decoration:none;background:#f3f3f3;background-image:-webkit-gradient(linear,left 0%,left 100%,from(#fff),to(#eee));background-image:-webkit-linear-gradient(top,#fff,0%,#eee,100%);background-image:-moz-linear-gradient(top,#fff 0%,#eee 100%);background-image:linear-gradient(to bottom,#fff 0%,#eee 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff',endColorstr='#ffeeeeee',GradientType=0);border:1px solid #ddd;box-sizing:border-box;border-radius:1rem/2;}.shortcuts .shortcut .shortcut-icon{width:100%;margin-top:0;margin-bottom:0;font-size:2rem;color:#333;}.shortcuts .shortcut-sm .shortcut-icon{width:100%;margin-top:0;margin-bottom:0;font-size:2rem;color:#333;}.shortcuts .shortcut:hover{background:#e8e8e8;background-image:-webkit-gradient(linear,left 0%,left 100%,from(#fafafa),to(#e1e1e1));background-image:-webkit-linear-gradient(top,#fafafa,0%,#e1e1e1,100%);background-image:-moz-linear-gradient(top,#fafafa 0%,#e1e1e1 100%);background-image:linear-gradient(to bottom,#fafafa 0%,#e1e1e1 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffafafa',endColorstr='#ffe1e1e1',GradientType=0);}.shortcuts .shortcut-sm:hover{background:#e8e8e8;background-image:-webkit-gradient(linear,left 0%,left 100%,from(#fafafa),to(#e1e1e1));background-image:-webkit-linear-gradient(top,#fafafa,0%,#e1e1e1,100%);background-image:-moz-linear-gradient(top,#fafafa 0%,#e1e1e1 100%);background-image:linear-gradient(to bottom,#fafafa 0%,#e1e1e1 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffafafa',endColorstr='#ffe1e1e1',GradientType=0);}.shortcuts .shortcut:active{box-shadow:inset 0 3px 5px rgba(0,0,0,.125);}.shortcuts .shortcut-sm:active{box-shadow:inset 0 3px 5px rgba(0,0,0,.125);}.shortcuts .shortcut:hover .shortcut-icon{color:#c93;}.shortcuts .shortcut-sm:hover .shortcut-icon{color:#666;}.shortcuts .shortcut-label{display:block;margin-top:.75em;font-weight:400;color:#666;}@media(max-width:640px){.shortcuts .shortcut{min-width:8rem;min-height:4rem;}body{font-size:.8em;}} \ 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:#222;}.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 diff --git a/MP.Mon/wwwroot/images/LogoCliente.png b/MP.Mon/wwwroot/images/LogoCliente.png new file mode 100644 index 0000000000000000000000000000000000000000..8d5a7c1fa3da8f7edbd0edfaa5b299fee87505ec GIT binary patch literal 3051 zcmds3YgAKL8jbZq0hOT&S|Xr8u}TBhLKG1gPy(!$hk&>wMZknm@Cp@>M0up*R79|Z zN0qk<6lE}oH*hI0k%AC`BvJ@)3E@q6n1n|vhygO^I{)VH{Fyab>zLJ0< zR8!9^(m4?Qn{aUQZ9(Hmqd@c;m3n6KUk{9xwN6yF35BCGH`xO{qYGSADw=wWbPO~I zM2YMHkz|Qk-hZW}7w(iiY8n+!D^fXwJh8mFcdqQ!#JyVaz~o~6o0;CR1;Nnd@QmWk z@O*3E+w!)FoVwwQ`Q2iPtfoucIXH*#rplVT2Pfx%cD<6IPrzgw?d9&R`Y%2>b&IC~ zAd&iyF6X0gxScK7v#CAe2^ELah;}{g;KR5e6VJj!i1w|Z^U3+guj~u)$a0EVjvpyj zHdWw!DF65-iF0LOZ=85u;eGam>4I^jbEfYo4RVwp`na-r9F} zFnsNV(=pb^AfCnOBIyFim>hujh3>PxV9e2!M}6m^M&B zGDmn;Ik;L?nt3cw#h}iE*dVm|7gGH2`kqjZ&`PsjEy(^)Eku4Ev+%0n-MWIlXgFBGTv@RJM4b{9s6u_|4i#NfF;B_o zH&VVw*V0G@Nq%nsgf?ni?t{*hbolnqcB}yLhcNM7H`y*(pu%3}6QN0m@449yB?ukN zQ+7X5g7&!)Rg2u)fcA?#RlSOZeIff7m2Y}%RbT>0&JaWbhe)czUQge$H!PA`t{FY` z0SMTQ4yBRW!3#M`1*L7rhgqq^t4&I+gi0NCxHiq11ayywM1f=0yNN9jvDUs0h z+DZUR=I6Z~nA<-z5hJMh<~0VqO1oaElLXm6w~g^+HvC>@0KGaO!iy+s@7gcrVftkn zijSv)U^TJ>(n+&s&$47iIk)_FpyqHvt_EtJGmVMTG(CYu8a}tfDpN>eF~+AThU4c< z?3&b}+E8GOn4kSuvoA|lrJe*r?zwX8u(t&GizUlC^l>j6+#=Rxaq43$eVEOW<>;Wk zyc4})T!dDEUA@b%N6pA)6zgkY&N7yV;*I?h=;x_025u_`v$axSeepn%E;%Q% zjB1np0YeTC0gLTJ?U?cUqO8>^E-mG*u@mxO@ZtoQb$R2)2Ja}9^BXB+zeoU;rMC)} zqsXCOE^<&uiuwb$iw~Kc88jj2?RHZJ5-@nQSiO)SAsoGq1fYjo)C*+&2$$g)!m--6 z+nU^Slr^>Th*bGEba7SKAmq?6>j z#oOI{-Su--9vS?5)1b0HQFz#>niIS)ZSNSAV^?Won$PoPWrQQGH7;XNEw+)ztFS*L zgscy8)rwF!K9K&MWuAY$UoN`zi*qU!i394ryYA5w;~r)c)(Kum$#a0D^WHVEai3>? z@>nhOy4{#WAj^S3KVrR9+6phqRloQm(p{6A%b*7$r&EXVHC)mmJXk-1n9skx_kj#?B`2y4YOz zt|QT|GM01zqzl=Cq2-3b0TO|le>69T zgPt9CL35KiUpv@6lJXkBzB~)IR?s+?TE7X7D&@5?CQD!&4vlg$(hn_k#c;(^K?(Z1 zQ{kEA5Iz(aNOwmc9^x$C5T6fDD(#}(Pr4eMMC$_Q8epegG)iKe16r)kL0^q!!On`{ z39%{zcKsGPhqUhu$Mo&_)!z?pthSB$F^X7kneQ7DiaNyqZ_#l@s?yVV&>@@zqA>=(^eT+?JI<9~B#;H*cjt`6kT5#~DHMk)9S8t~si zB3e^3PZM4L4~BV8<8%8PIM~%F&*VP`-gHxh`Sk}fVam!z&6;}YvN^t$<@QEYqf-0+ Y*WH$Z+O?m9KczTVC->78j)95)0#(IYY5)KL literal 0 HcmV?d00001 diff --git a/MP.Mon/wwwroot/images/LogoMapo.png b/MP.Mon/wwwroot/images/LogoMapo.png new file mode 100644 index 0000000000000000000000000000000000000000..579e0fe3e68e03fd91c795292b2927f03067f929 GIT binary patch literal 19861 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 Date: Wed, 13 Apr 2022 11:11:01 +0200 Subject: [PATCH 04/29] Ancora update su display --- MP.Mon/Pages/Index.razor | 38 +++++++++++++++++---------------- MP.Mon/wwwroot/css/site.css | 2 +- MP.Mon/wwwroot/css/site.less | 2 +- MP.Mon/wwwroot/css/site.min.css | 2 +- 4 files changed, 23 insertions(+), 21 deletions(-) diff --git a/MP.Mon/Pages/Index.razor b/MP.Mon/Pages/Index.razor index 76a6da3e..d87b34a5 100644 --- a/MP.Mon/Pages/Index.razor +++ b/MP.Mon/Pages/Index.razor @@ -26,27 +26,29 @@ int currIdx = 0; foreach (var macchina in ListMSE) { -
+
-
-
-
@macchina.Nome
-
+
+ @macchina.Nome
-
-
Art.
-
@macchina.CodArticolo
+
+
Art.
+
@macchina.CodArticolo
-
-
@macchina.DescrizioneStato
-
@($"{macchina.Durata:0.00}")
+
+
@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
+
xx%
*@ +
T.Ciclo
+
std: @getMinSec(macchina.TCAssegnato)
+
act: @getMinSec(macchina.TCLavRt)
+
+
+
Pezzi(prod/ord)
+
@macchina.PezziProd / @macchina.NumPezzi
@@ -83,7 +85,7 @@ int currNum = (currIdx % maxCol); while (currNum < (maxCol)) { - @((MarkupString)"
 
") + @((MarkupString)"
 
") ; currNum++; diff --git a/MP.Mon/wwwroot/css/site.css b/MP.Mon/wwwroot/css/site.css index 331403ae..bb34b8b9 100644 --- a/MP.Mon/wwwroot/css/site.css +++ b/MP.Mon/wwwroot/css/site.css @@ -149,7 +149,7 @@ a, font-size: 0.6em; } .statusMap { - background: #222; + background: rgba(255, 255, 255, 0.1); } .statusMap .ui-title, .statusMap .ui-li-aside { diff --git a/MP.Mon/wwwroot/css/site.less b/MP.Mon/wwwroot/css/site.less index 70bc5e66..f16d5209 100644 --- a/MP.Mon/wwwroot/css/site.less +++ b/MP.Mon/wwwroot/css/site.less @@ -154,7 +154,7 @@ a, .btn-link { } .statusMap { - background: #222; + background: rgba(255,255,255,0.1); } .statusMap .ui-title, .statusMap .ui-li-aside { diff --git a/MP.Mon/wwwroot/css/site.min.css b/MP.Mon/wwwroot/css/site.min.css index c5d46f4d..afca936c 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:#222;}.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));}.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 From d3e7c224d3e484b9e339e3b2d985a09789b9ea19 Mon Sep 17 00:00:00 2001 From: Samuele Locatelli Date: Wed, 13 Apr 2022 16:00:40 +0200 Subject: [PATCH 05/29] 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 From fd63226051b742713b1ecced29bc9faf6cd924d5 Mon Sep 17 00:00:00 2001 From: Samuele Locatelli Date: Wed, 13 Apr 2022 16:48:47 +0200 Subject: [PATCH 06/29] Fix time blink x errore C101 --- MP.Data/Controllers/MpMonController.cs | 9 ------ MP.Mon/Components/DetailMSE.razor | 18 ++++++------ MP.Mon/Components/DetailMSE.razor.cs | 37 ++++++++++++++++++++++-- MP.Mon/Components/LoadingData.razor | 2 +- MP.Mon/Components/LoadingDataSmall.razor | 6 ++++ MP.Mon/Data/MpDataService.cs | 7 ++++- MP.Mon/Pages/Index.razor.cs | 36 ++++++++++++++++++++--- 7 files changed, 89 insertions(+), 26 deletions(-) create mode 100644 MP.Mon/Components/LoadingDataSmall.razor diff --git a/MP.Data/Controllers/MpMonController.cs b/MP.Data/Controllers/MpMonController.cs index e93e6bbe..b6738ecd 100644 --- a/MP.Data/Controllers/MpMonController.cs +++ b/MP.Data/Controllers/MpMonController.cs @@ -81,15 +81,6 @@ namespace MP.Data.Controllers 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 diff --git a/MP.Mon/Components/DetailMSE.razor b/MP.Mon/Components/DetailMSE.razor index 7c6997e3..38e5f47e 100644 --- a/MP.Mon/Components/DetailMSE.razor +++ b/MP.Mon/Components/DetailMSE.razor @@ -1,10 +1,10 @@ -@if (CurrRecord == null) -{ - -} -else -{ -
+
+ @if (CurrRecord == null || !dataLoaded) + { + + } + else + {
@CurrRecord.Nome @@ -48,5 +48,5 @@ else
-
-} \ No newline at end of file + } +
\ No newline at end of file diff --git a/MP.Mon/Components/DetailMSE.razor.cs b/MP.Mon/Components/DetailMSE.razor.cs index a065ac6b..9d55507c 100644 --- a/MP.Mon/Components/DetailMSE.razor.cs +++ b/MP.Mon/Components/DetailMSE.razor.cs @@ -22,6 +22,8 @@ namespace MP.Mon.Components { protected string baseCss = ""; + protected bool dataLoaded { get; set; } = false; + protected int kaFactor = 60 / 2; [Parameter] public bool doAnimate { get; set; } = true; @@ -40,7 +42,7 @@ namespace MP.Mon.Components { DateTime lastUpdate = lastUpdateN.HasValue ? (DateTime)lastUpdateN : DateTime.Now.AddHours(-1); string answ = cssStatus(semaforo); - if (DateTime.Now.Subtract(lastUpdate).TotalSeconds > (keepAliveMin * 60 / 2)) + if (DateTime.Now.Subtract(lastUpdate).TotalSeconds > (keepAliveMin * kaFactor)) { answ = $"{baseCss}Ro"; } @@ -48,6 +50,10 @@ namespace MP.Mon.Components } protected override async Task OnInitializedAsync() { + StartTimer(); + Random rnd = new Random(); + //await Task.Delay(rnd.Next(500)); + dataLoaded = true; setupConf(); } private void setupConf() @@ -58,7 +64,7 @@ namespace MP.Mon.Components { DateTime lastUpdate = lastUpdateN.HasValue ? (DateTime)lastUpdateN : DateTime.Now.AddHours(-1); bool answ = false; - if (DateTime.Now.Subtract(lastUpdate).TotalSeconds > (keepAliveMin * 60 / 2)) + if (DateTime.Now.Subtract(lastUpdate).TotalSeconds > (keepAliveMin * kaFactor)) { answ = true; } @@ -78,5 +84,32 @@ namespace MP.Mon.Components { } return answ; } + public void Dispose() + { + aTimer.Stop(); + aTimer.Dispose(); + } + + private static System.Timers.Timer aTimer = new System.Timers.Timer(60 * 1000); + + public void StartTimer() + { + int tOutPeriod = 4000; + //int.TryParse(Configuration["ReloadStatusTimer"], out tOutPeriod); + aTimer = new System.Timers.Timer(tOutPeriod); + aTimer.Elapsed += ElapsedTimer; + aTimer.Enabled = true; + aTimer.Start(); + } + + public void ElapsedTimer(Object source, System.Timers.ElapsedEventArgs e) + { + var pUpd = Task.Run(async () => + { + await Task.Delay(1); + await InvokeAsync(StateHasChanged); + }); + pUpd.Wait(); + } } } \ No newline at end of file diff --git a/MP.Mon/Components/LoadingData.razor b/MP.Mon/Components/LoadingData.razor index d3228baf..db79a629 100644 --- a/MP.Mon/Components/LoadingData.razor +++ b/MP.Mon/Components/LoadingData.razor @@ -1,4 +1,4 @@ -
+

loading data

diff --git a/MP.Mon/Components/LoadingDataSmall.razor b/MP.Mon/Components/LoadingDataSmall.razor new file mode 100644 index 00000000..196dafc7 --- /dev/null +++ b/MP.Mon/Components/LoadingDataSmall.razor @@ -0,0 +1,6 @@ +
+
+ loading data + +
+
\ No newline at end of file diff --git a/MP.Mon/Data/MpDataService.cs b/MP.Mon/Data/MpDataService.cs index 44777b89..fa0a362c 100644 --- a/MP.Mon/Data/MpDataService.cs +++ b/MP.Mon/Data/MpDataService.cs @@ -44,7 +44,12 @@ namespace MP.Mon.Data public Task> MseGetAll() { - return Task.FromResult(dbController.MseGetAll().ToList()); + var dbResult = dbController.MseGetAll(); + if (dbResult == null) + { + dbResult = new List(); + } + return Task.FromResult(dbResult); } } } diff --git a/MP.Mon/Pages/Index.razor.cs b/MP.Mon/Pages/Index.razor.cs index b6848819..cc6c257b 100644 --- a/MP.Mon/Pages/Index.razor.cs +++ b/MP.Mon/Pages/Index.razor.cs @@ -20,7 +20,7 @@ using MP.Mon.Data; namespace MP.Mon.Pages { - public partial class Index + public partial class Index : IDisposable { protected List? ListMSE = null; @@ -32,17 +32,45 @@ namespace MP.Mon.Pages protected override async Task OnInitializedAsync() { - await reloadData(); + await ReloadData(); } [Inject] - protected MpDataService MMDataService { get; set; } + protected MpDataService MMDataService { get; set; } = null!; - private async Task reloadData() + private async Task ReloadData() { ListMSE = await MMDataService.MseGetAll(); } + public void Dispose() + { + aTimer.Stop(); + aTimer.Dispose(); + } + + private static System.Timers.Timer aTimer; + + public void StartTimer() + { + int tOutPeriod = 2000; + //int.TryParse(Configuration["ReloadStatusTimer"], out tOutPeriod); + aTimer = new System.Timers.Timer(tOutPeriod); + aTimer.Elapsed += ElapsedTimer; + aTimer.Enabled = true; + aTimer.Start(); + } + + public void ElapsedTimer(Object source, System.Timers.ElapsedEventArgs e) + { + var pUpd = Task.Run(async () => + { + await ReloadData(); + //await Task.Delay(1); + await InvokeAsync(StateHasChanged); + }); + pUpd.Wait(); + } } } \ No newline at end of file From 703bae704f813a43053acc5e0d4dd529a61738e1 Mon Sep 17 00:00:00 2001 From: Samuele Locatelli Date: Wed, 13 Apr 2022 17:19:52 +0200 Subject: [PATCH 07/29] Aggiunto reload generale dati ogni 2 sec come attuale --- MP.Mon/Components/DetailMSE.razor.cs | 2 +- MP.Mon/Pages/Index.razor.cs | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/MP.Mon/Components/DetailMSE.razor.cs b/MP.Mon/Components/DetailMSE.razor.cs index 9d55507c..cafef224 100644 --- a/MP.Mon/Components/DetailMSE.razor.cs +++ b/MP.Mon/Components/DetailMSE.razor.cs @@ -94,7 +94,7 @@ namespace MP.Mon.Components public void StartTimer() { - int tOutPeriod = 4000; + int tOutPeriod = 1000; //int.TryParse(Configuration["ReloadStatusTimer"], out tOutPeriod); aTimer = new System.Timers.Timer(tOutPeriod); aTimer.Elapsed += ElapsedTimer; diff --git a/MP.Mon/Pages/Index.razor.cs b/MP.Mon/Pages/Index.razor.cs index cc6c257b..f4dd4b87 100644 --- a/MP.Mon/Pages/Index.razor.cs +++ b/MP.Mon/Pages/Index.razor.cs @@ -33,6 +33,7 @@ namespace MP.Mon.Pages protected override async Task OnInitializedAsync() { await ReloadData(); + StartTimer(); } From e5ac829bd8eb786aa45f3dcdf0e2f6140519910c Mon Sep 17 00:00:00 2001 From: Samuele Locatelli Date: Wed, 13 Apr 2022 17:26:53 +0200 Subject: [PATCH 08/29] Completato allineamento a versioen attuale x comportamento blink --- MP.Mon/Components/DetailMSE.razor.cs | 26 +++++++++++++++++++++++--- 1 file changed, 23 insertions(+), 3 deletions(-) diff --git a/MP.Mon/Components/DetailMSE.razor.cs b/MP.Mon/Components/DetailMSE.razor.cs index cafef224..9c9e6f7b 100644 --- a/MP.Mon/Components/DetailMSE.razor.cs +++ b/MP.Mon/Components/DetailMSE.razor.cs @@ -21,7 +21,7 @@ namespace MP.Mon.Components public partial class DetailMSE { - protected string baseCss = ""; + protected string baseCss = "sem"; protected bool dataLoaded { get; set; } = false; protected int kaFactor = 60 / 2; @@ -35,7 +35,19 @@ namespace MP.Mon.Components private string cssStatus(string codSemaforo) { - return $"{baseCss}{codSemaforo.Substring(1, 2)}"; + string answ= $"{baseCss}{codSemaforo.Substring(1, 2)}"; + if (doAnimate) + { + // blink se secondo pari... + DateTime adesso = DateTime.Now; + int resto = 0; + Math.DivRem(adesso.Second, 2, out resto); + if (resto == 0) + { + answ += "_b"; + } + } + return answ; } private string cssComStatus(string semaforo, DateTime? lastUpdateN) @@ -45,6 +57,14 @@ namespace MP.Mon.Components if (DateTime.Now.Subtract(lastUpdate).TotalSeconds > (keepAliveMin * kaFactor)) { answ = $"{baseCss}Ro"; + // blink se secondo pari... + DateTime adesso = DateTime.Now; + int resto = 0; + Math.DivRem(adesso.Second, 2, out resto); + if (resto == 0) + { + answ += "_b"; + } } return answ; } @@ -58,7 +78,7 @@ namespace MP.Mon.Components } private void setupConf() { - baseCss = doAnimate ? "semBlink" : "sem"; + //baseCss = doAnimate ? "semBlink" : "sem"; } private bool showComErr(DateTime? lastUpdateN) { From 116ec93bb6f312132dfff8beb8acfd54644abc85 Mon Sep 17 00:00:00 2001 From: Samuele Locatelli Date: Wed, 13 Apr 2022 17:40:18 +0200 Subject: [PATCH 09/29] Correzione display min/sec TCiclo --- MP.Data/DatabaseModels/MappaStatoExpl.cs | 4 ++-- MP.Data/MoonProContext.cs | 4 ++-- MP.Mon/Components/DetailMSE.razor | 6 ++++-- MP.Mon/Components/DetailMSE.razor.cs | 2 +- 4 files changed, 9 insertions(+), 7 deletions(-) diff --git a/MP.Data/DatabaseModels/MappaStatoExpl.cs b/MP.Data/DatabaseModels/MappaStatoExpl.cs index bebcf16e..5ec09875 100644 --- a/MP.Data/DatabaseModels/MappaStatoExpl.cs +++ b/MP.Data/DatabaseModels/MappaStatoExpl.cs @@ -30,7 +30,7 @@ namespace MP.Data.DatabaseModels public decimal? TCLav { get; set; } public decimal? TCEff { get; set; } public decimal? TCMedioRt { get; set; } - public decimal? TCLavRt { get; set; } - public decimal? TCEffRt { get; set; } + public decimal? TCLavRT { get; set; } + public decimal? TCEffRT { get; set; } } } diff --git a/MP.Data/MoonProContext.cs b/MP.Data/MoonProContext.cs index 7cd12b19..27e32099 100644 --- a/MP.Data/MoonProContext.cs +++ b/MP.Data/MoonProContext.cs @@ -163,7 +163,7 @@ namespace MP.Data .HasColumnName("TCEff") .HasDefaultValueSql("((0))"); - entity.Property(e => e.TCEffRt) + entity.Property(e => e.TCEffRT) .HasColumnType("decimal(18, 8)") .HasColumnName("TCEffRT") .HasDefaultValueSql("((0))"); @@ -173,7 +173,7 @@ namespace MP.Data .HasColumnName("TCLav") .HasDefaultValueSql("((0))"); - entity.Property(e => e.TCLavRt) + entity.Property(e => e.TCLavRT) .HasColumnType("decimal(18, 8)") .HasColumnName("TCLavRT") .HasDefaultValueSql("((0))"); diff --git a/MP.Mon/Components/DetailMSE.razor b/MP.Mon/Components/DetailMSE.razor index 38e5f47e..14bb6656 100644 --- a/MP.Mon/Components/DetailMSE.razor +++ b/MP.Mon/Components/DetailMSE.razor @@ -21,8 +21,10 @@ @*
OEE
xx%
*@
T.Ciclo
-
std: @getMinSec(CurrRecord.TCAssegnato)
-
act: @getMinSec(CurrRecord.TCLavRt)
+ @*
std: @CurrRecord.TCAssegnato
+
act: @CurrRecord.TCLavRT
*@ +
std: @getMinSec(@CurrRecord.TCAssegnato)
+
act: @getMinSec(@CurrRecord.TCLavRT)
Pezzi(prod/ord)
diff --git a/MP.Mon/Components/DetailMSE.razor.cs b/MP.Mon/Components/DetailMSE.razor.cs index 9c9e6f7b..172d7b7e 100644 --- a/MP.Mon/Components/DetailMSE.razor.cs +++ b/MP.Mon/Components/DetailMSE.razor.cs @@ -98,7 +98,7 @@ namespace MP.Mon.Components try { tSpan = TimeSpan.FromMinutes((double)currTimeMin); - answ = tSpan.ToString("mm:ss"); + answ = $"{tSpan:mm}:{tSpan:ss}"; } catch { } From 31c142efa4529f7c2e4abb27a247eb996dbf372d Mon Sep 17 00:00:00 2001 From: Samuele Locatelli Date: Wed, 13 Apr 2022 20:06:19 +0200 Subject: [PATCH 10/29] Completato MON AsIs in BLazor --- MP.Data/Controllers/MpMonController.cs | 17 +++++ MP.Data/DatabaseModels/ConfigModel.cs | 18 +++++ MP.Data/MoonProContext.cs | 19 +++++ MP.Mon/Components/CmpFooter.razor | 36 ++++++++- MP.Mon/Components/CmpHeader.razor | 49 ++++++++++++ MP.Mon/Components/DetailMSE.razor | 4 +- MP.Mon/Data/MpDataService.cs | 32 ++++++-- MP.Mon/NLog.config | 46 ++++++++++++ MP.Mon/Pages/Index.razor.cs | 100 +++++++++++++++++++++---- MP.Mon/Shared/MainLayout.razor | 27 ++++--- 10 files changed, 312 insertions(+), 36 deletions(-) create mode 100644 MP.Data/DatabaseModels/ConfigModel.cs create mode 100644 MP.Mon/Components/CmpHeader.razor create mode 100644 MP.Mon/NLog.config diff --git a/MP.Data/Controllers/MpMonController.cs b/MP.Data/Controllers/MpMonController.cs index b6738ecd..9c2ed87b 100644 --- a/MP.Data/Controllers/MpMonController.cs +++ b/MP.Data/Controllers/MpMonController.cs @@ -72,6 +72,23 @@ namespace MP.Data.Controllers return dbResult; } + /// + /// Elenco da tabella Macchine + /// + /// + public List ConfigGetAll() + { + List dbResult = new List(); + using (var dbCtx = new MoonProContext(_configuration)) + { + dbResult = dbCtx + .DbSetConfig + .OrderBy(x => x.Chiave) + .ToList(); + } + return dbResult; + } + /// /// Elenco da tabella MappaStatoExpl /// diff --git a/MP.Data/DatabaseModels/ConfigModel.cs b/MP.Data/DatabaseModels/ConfigModel.cs new file mode 100644 index 00000000..eb4a1ac3 --- /dev/null +++ b/MP.Data/DatabaseModels/ConfigModel.cs @@ -0,0 +1,18 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel.DataAnnotations.Schema; + +namespace MP.Data.DatabaseModels +{ + [Table("Config")] + public partial class ConfigModel + { + public string Chiave { get; set; } + public string Valore { get; set; } + /// + /// Valore di default/riferimento per la variabile + /// + public string ValoreStd { get; set; } + public string Note { get; set; } + } +} diff --git a/MP.Data/MoonProContext.cs b/MP.Data/MoonProContext.cs index 27e32099..957d91ae 100644 --- a/MP.Data/MoonProContext.cs +++ b/MP.Data/MoonProContext.cs @@ -37,6 +37,7 @@ namespace MP.Data public virtual DbSet DbSetArticoli { get; set; } public virtual DbSet DbSetMacchine { get; set; } public virtual DbSet DbSetMSE { get; set; } + public virtual DbSet DbSetConfig { get; set; } #endregion Public Properties @@ -204,6 +205,24 @@ namespace MP.Data .HasMaxLength(250) .HasColumnName("url"); }); + modelBuilder.Entity(entity => + { + entity.HasKey(e => e.Chiave); + + entity.ToTable("Config"); + + entity.Property(e => e.Chiave) + .HasMaxLength(50) + .HasColumnName("chiave"); + + entity.Property(e => e.Note).HasColumnName("note"); + + entity.Property(e => e.Valore).HasColumnName("valore"); + + entity.Property(e => e.ValoreStd) + .HasColumnName("valoreStd") + .HasComment("Valore di default/riferimento per la variabile"); + }); OnModelCreatingPartial(modelBuilder); } diff --git a/MP.Mon/Components/CmpFooter.razor b/MP.Mon/Components/CmpFooter.razor index 74a64b8b..507af4e6 100644 --- a/MP.Mon/Components/CmpFooter.razor +++ b/MP.Mon/Components/CmpFooter.razor @@ -3,13 +3,45 @@ Mapo MON @(DateTime.Today.Year) | v.@version
- @adesso | Egalware + @($"{DateTime.Now:HH:mm:ss}") | Egalware
@code { - protected DateTime adesso = DateTime.Now; Version version = typeof(Program).Assembly.GetName().Version; + protected override async Task OnInitializedAsync() + { + StartTimer(); + } + + public void Dispose() + { + aTimer.Stop(); + aTimer.Dispose(); + } + + private static System.Timers.Timer aTimer; + + public void StartTimer() + { + int tOutPeriod = 1000; + //int.TryParse(Configuration["ReloadStatusTimer"], out tOutPeriod); + aTimer = new System.Timers.Timer(tOutPeriod); + aTimer.Elapsed += ElapsedTimer; + aTimer.Enabled = true; + aTimer.Start(); + } + + public void ElapsedTimer(Object source, System.Timers.ElapsedEventArgs e) + { + var pUpd = Task.Run(async () => + { + //await ReloadData(); + await Task.Delay(1); + await InvokeAsync(StateHasChanged); + }); + pUpd.Wait(); + } } \ No newline at end of file diff --git a/MP.Mon/Components/CmpHeader.razor b/MP.Mon/Components/CmpHeader.razor new file mode 100644 index 00000000..b2b0ba34 --- /dev/null +++ b/MP.Mon/Components/CmpHeader.razor @@ -0,0 +1,49 @@ +
+ + MP MONitor +
+
+ + @($"{DateTime.Now:dddd dd MMMM yyyy}") + + + EgalWare +
+ +@code { + + protected override async Task OnInitializedAsync() + { + StartTimer(); + } + + public void Dispose() + { + aTimer.Stop(); + aTimer.Dispose(); + } + + private static System.Timers.Timer aTimer; + + public void StartTimer() + { + int tOutPeriod = 60000; + //int.TryParse(Configuration["ReloadStatusTimer"], out tOutPeriod); + aTimer = new System.Timers.Timer(tOutPeriod); + aTimer.Elapsed += ElapsedTimer; + aTimer.Enabled = true; + aTimer.Start(); + } + + public void ElapsedTimer(Object source, System.Timers.ElapsedEventArgs e) + { + var pUpd = Task.Run(async () => + { + //await ReloadData(); + await Task.Delay(1); + await InvokeAsync(StateHasChanged); + }); + pUpd.Wait(); + } + +} \ No newline at end of file diff --git a/MP.Mon/Components/DetailMSE.razor b/MP.Mon/Components/DetailMSE.razor index 14bb6656..5dab45db 100644 --- a/MP.Mon/Components/DetailMSE.razor +++ b/MP.Mon/Components/DetailMSE.razor @@ -15,14 +15,12 @@
@CurrRecord.DescrizioneStato
-
@($"{CurrRecord.Durata:0.00}")'
+
@getMinSec((decimal)CurrRecord.Durata)
@*
OEE
xx%
*@
T.Ciclo
- @*
std: @CurrRecord.TCAssegnato
-
act: @CurrRecord.TCLavRT
*@
std: @getMinSec(@CurrRecord.TCAssegnato)
act: @getMinSec(@CurrRecord.TCLavRT)
diff --git a/MP.Mon/Data/MpDataService.cs b/MP.Mon/Data/MpDataService.cs index fa0a362c..f29f056b 100644 --- a/MP.Mon/Data/MpDataService.cs +++ b/MP.Mon/Data/MpDataService.cs @@ -1,16 +1,24 @@ - -using Newtonsoft.Json; +using MP.Data.DatabaseModels; using System.Text; namespace MP.Mon.Data { public class MpDataService : IDisposable { + #region Private Fields + private static IConfiguration _configuration; private static ILogger _logger; + #endregion Private Fields + + #region Public Fields + public static MP.Data.Controllers.MpMonController dbController; + #endregion Public Fields + + #region Public Constructors public MpDataService(IConfiguration configuration, ILogger logger) { @@ -31,25 +39,37 @@ namespace MP.Mon.Data _logger.LogInformation(sb.ToString()); } } + + #endregion Public Constructors + + #region Public Methods + + public Task> ConfigGetAll() + { + return Task.FromResult(dbController.ConfigGetAll().ToList()); + } + public void Dispose() { // Clear database controller dbController.Dispose(); } - public Task> MacchineGetAll() + public Task> MacchineGetAll() { return Task.FromResult(dbController.MacchineGetAll().ToList()); } - public Task> MseGetAll() + public Task> MseGetAll() { var dbResult = dbController.MseGetAll(); if (dbResult == null) { - dbResult = new List(); + dbResult = new List(); } return Task.FromResult(dbResult); } + + #endregion Public Methods } -} +} \ No newline at end of file diff --git a/MP.Mon/NLog.config b/MP.Mon/NLog.config new file mode 100644 index 00000000..bd414080 --- /dev/null +++ b/MP.Mon/NLog.config @@ -0,0 +1,46 @@ + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/MP.Mon/Pages/Index.razor.cs b/MP.Mon/Pages/Index.razor.cs index f4dd4b87..e49945e4 100644 --- a/MP.Mon/Pages/Index.razor.cs +++ b/MP.Mon/Pages/Index.razor.cs @@ -17,21 +17,38 @@ using MP.Mon.Components; using MP.Data.DatabaseModels; using MP.Mon.Components; using MP.Mon.Data; +using NLog; namespace MP.Mon.Pages { public partial class Index : IDisposable { protected List? ListMSE = null; + List? CurrConfig = null; - protected int keepAliveMin = 5; // leggere da conf? - protected int maxCol = 6; // leggere da conf? + private static NLog.Logger Log = LogManager.GetCurrentClassLogger(); - protected bool doAnimate = true; // leggere da conf? + protected int keepAliveMin = 1; + + protected int maxCol = 4; + + protected bool doAnimate = true; + + protected int slowRefreshSec = 300; + protected int fastRefreshSec = 10; + protected int slowRefreshMs + { + get => 1000 * slowRefreshSec; + } + protected int fastRefreshMs + { + get => 1000 * fastRefreshSec; + } protected override async Task OnInitializedAsync() { + await setupConf(); await ReloadData(); StartTimer(); } @@ -40,6 +57,49 @@ namespace MP.Mon.Pages [Inject] protected MpDataService MMDataService { get; set; } = null!; + [Inject] + protected NavigationManager NavManager { get; set; } = null!; + + private async Task setupConf() + { + CurrConfig = await MMDataService.ConfigGetAll(); + if (CurrConfig != null && CurrConfig.Count > 0) + { + // sistemo i parametri opzionali... + + getConfValInt("keepAliveMin", ref keepAliveMin); + getConfValInt("MON_maxCol", ref maxCol); + int intDoAnim = 0; + getConfValInt("doAnimate", ref intDoAnim); + doAnimate = intDoAnim == 1; + getConfValInt("pageRefreshSec", ref slowRefreshSec); + getConfValInt("MSE_cacheDuration", ref fastRefreshSec); + + Log.Info($"Effettuato setup parametri | keepAlive: {keepAliveMin} | MaxCol: {maxCol} | doAnimate: {doAnimate} | pageRefreshSec: {slowRefreshSec} | fastRefreshSec: {fastRefreshSec}"); + } + } + + /// + /// Recupera il valore e se trovato aggiorna + /// + /// Valore da cercare + /// Oggetto in cui salvare il valore se trovato + /// + protected bool getConfValInt(string chiave, ref int varObj) + { + bool answ = false; + if (CurrConfig != null && CurrConfig.Count > 0) + { + // sistemo i parametri opzionali... + ConfigModel? risultato = CurrConfig.FirstOrDefault(x => x.Chiave == chiave); + if (risultato != null) + { + answ = int.TryParse(risultato.Valore, out varObj); + } + } + return answ; + } + private async Task ReloadData() { ListMSE = await MMDataService.MseGetAll(); @@ -47,23 +107,30 @@ namespace MP.Mon.Pages public void Dispose() { - aTimer.Stop(); - aTimer.Dispose(); + fastTimer.Stop(); + fastTimer.Dispose(); + slowTimer.Stop(); + slowTimer.Dispose(); } - private static System.Timers.Timer aTimer; + private static System.Timers.Timer fastTimer; + private static System.Timers.Timer slowTimer; public void StartTimer() { - int tOutPeriod = 2000; - //int.TryParse(Configuration["ReloadStatusTimer"], out tOutPeriod); - aTimer = new System.Timers.Timer(tOutPeriod); - aTimer.Elapsed += ElapsedTimer; - aTimer.Enabled = true; - aTimer.Start(); + // timer veloce + fastTimer = new System.Timers.Timer(fastRefreshMs); + fastTimer.Elapsed += ElapsedFastTimer; + fastTimer.Enabled = true; + fastTimer.Start(); + // timer lento + slowTimer = new System.Timers.Timer(slowRefreshMs); + slowTimer.Elapsed += ElapsedSlowTimer; + slowTimer.Enabled = true; + slowTimer.Start(); } - public void ElapsedTimer(Object source, System.Timers.ElapsedEventArgs e) + public void ElapsedFastTimer(Object source, System.Timers.ElapsedEventArgs e) { var pUpd = Task.Run(async () => { @@ -73,5 +140,12 @@ namespace MP.Mon.Pages }); pUpd.Wait(); } + + public async void ElapsedSlowTimer(Object source, System.Timers.ElapsedEventArgs e) + { + ListMSE = null; + await Task.Delay(200); + NavManager.NavigateTo(NavManager.Uri); + } } } \ No newline at end of file diff --git a/MP.Mon/Shared/MainLayout.razor b/MP.Mon/Shared/MainLayout.razor index f17b6251..8d4876e5 100644 --- a/MP.Mon/Shared/MainLayout.razor +++ b/MP.Mon/Shared/MainLayout.razor @@ -4,26 +4,29 @@
+ @*
+
+ + MP MONitor +
+
+ + @($"{DateTime.Now:dddd dd MMMM yyyy, HH:mm}") + + + EgalWare +
+
*@
-
- - MP MONitor -
-
- - @($"{DateTime.Now:dddd dd MMMM yyyy, HH:mm}") - - - EgalWare -
+
@Body
-
+
From 69ce7b5a0b8d7be8938893be350d1a8a6b7511cf Mon Sep 17 00:00:00 2001 From: Samuele Locatelli Date: Wed, 13 Apr 2022 20:09:56 +0200 Subject: [PATCH 11/29] Rimosso delay --- MP.Mon/Pages/Index.razor.cs | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/MP.Mon/Pages/Index.razor.cs b/MP.Mon/Pages/Index.razor.cs index e49945e4..c61ba8ce 100644 --- a/MP.Mon/Pages/Index.razor.cs +++ b/MP.Mon/Pages/Index.razor.cs @@ -75,7 +75,7 @@ namespace MP.Mon.Pages getConfValInt("pageRefreshSec", ref slowRefreshSec); getConfValInt("MSE_cacheDuration", ref fastRefreshSec); - Log.Info($"Effettuato setup parametri | keepAlive: {keepAliveMin} | MaxCol: {maxCol} | doAnimate: {doAnimate} | pageRefreshSec: {slowRefreshSec} | fastRefreshSec: {fastRefreshSec}"); + Log.Info($"Effettuato setup parametri | keepAlive: {keepAliveMin} | MaxCol: {maxCol} | doAnimate: {doAnimate} | slowRefreshSec: {slowRefreshSec} | fastRefreshSec: {fastRefreshSec}"); } } @@ -144,7 +144,6 @@ namespace MP.Mon.Pages public async void ElapsedSlowTimer(Object source, System.Timers.ElapsedEventArgs e) { ListMSE = null; - await Task.Delay(200); NavManager.NavigateTo(NavManager.Uri); } } From 84875e5c30e5682e5ad52aec275d22dd7cfc2505 Mon Sep 17 00:00:00 2001 From: Samuele Locatelli Date: Wed, 13 Apr 2022 20:12:29 +0200 Subject: [PATCH 12/29] Tolto reload titolo se tanto ricarica pagina ogni 5-10 minuti --- MP.Mon/Components/CmpHeader.razor | 58 +++++++++++++++---------------- MP.Mon/Pages/Index.razor.cs | 4 +-- 2 files changed, 31 insertions(+), 31 deletions(-) diff --git a/MP.Mon/Components/CmpHeader.razor b/MP.Mon/Components/CmpHeader.razor index b2b0ba34..1c2ae42d 100644 --- a/MP.Mon/Components/CmpHeader.razor +++ b/MP.Mon/Components/CmpHeader.razor @@ -12,38 +12,38 @@ @code { - protected override async Task OnInitializedAsync() - { - StartTimer(); - } + //protected override async Task OnInitializedAsync() + //{ + // StartTimer(); + //} - public void Dispose() - { - aTimer.Stop(); - aTimer.Dispose(); - } + //public void Dispose() + //{ + // aTimer.Stop(); + // aTimer.Dispose(); + //} - private static System.Timers.Timer aTimer; + //private static System.Timers.Timer aTimer; - public void StartTimer() - { - int tOutPeriod = 60000; - //int.TryParse(Configuration["ReloadStatusTimer"], out tOutPeriod); - aTimer = new System.Timers.Timer(tOutPeriod); - aTimer.Elapsed += ElapsedTimer; - aTimer.Enabled = true; - aTimer.Start(); - } + //public void StartTimer() + //{ + // int tOutPeriod = 60000; + // //int.TryParse(Configuration["ReloadStatusTimer"], out tOutPeriod); + // aTimer = new System.Timers.Timer(tOutPeriod); + // aTimer.Elapsed += ElapsedTimer; + // aTimer.Enabled = true; + // aTimer.Start(); + //} - public void ElapsedTimer(Object source, System.Timers.ElapsedEventArgs e) - { - var pUpd = Task.Run(async () => - { - //await ReloadData(); - await Task.Delay(1); - await InvokeAsync(StateHasChanged); - }); - pUpd.Wait(); - } + //public void ElapsedTimer(Object source, System.Timers.ElapsedEventArgs e) + //{ + // var pUpd = Task.Run(async () => + // { + // //await ReloadData(); + // await Task.Delay(1); + // await InvokeAsync(StateHasChanged); + // }); + // pUpd.Wait(); + //} } \ No newline at end of file diff --git a/MP.Mon/Pages/Index.razor.cs b/MP.Mon/Pages/Index.razor.cs index c61ba8ce..e335a53b 100644 --- a/MP.Mon/Pages/Index.razor.cs +++ b/MP.Mon/Pages/Index.razor.cs @@ -113,8 +113,8 @@ namespace MP.Mon.Pages slowTimer.Dispose(); } - private static System.Timers.Timer fastTimer; - private static System.Timers.Timer slowTimer; + private static System.Timers.Timer fastTimer = new System.Timers.Timer(4000); + private static System.Timers.Timer slowTimer = new System.Timers.Timer(300000); public void StartTimer() { From 011fbe52d3e30033386a9fd00607e0ebc320cb5d Mon Sep 17 00:00:00 2001 From: Samuele Locatelli Date: Thu, 14 Apr 2022 09:20:21 +0200 Subject: [PATCH 13/29] Fix display disegno/articolo + fix stile --- MP.Mon/Components/DetailMSE.razor | 18 ++++++++++++++++- MP.Mon/Components/DetailMSE.razor.cs | 3 +++ MP.Mon/Pages/Index.razor | 2 +- MP.Mon/Pages/Index.razor.cs | 29 +++++++++++++++++++++++++++- MP.Mon/wwwroot/css/site.css | 2 +- MP.Mon/wwwroot/css/site.less | 6 +++--- MP.Mon/wwwroot/css/site.min.css | 2 +- 7 files changed, 54 insertions(+), 8 deletions(-) diff --git a/MP.Mon/Components/DetailMSE.razor b/MP.Mon/Components/DetailMSE.razor index 5dab45db..72b3ec44 100644 --- a/MP.Mon/Components/DetailMSE.razor +++ b/MP.Mon/Components/DetailMSE.razor @@ -11,7 +11,23 @@
Art.
-
@CurrRecord.CodArticolo
+
+ @if (showArt == "CodArticolo") + { + @CurrRecord.CodArticolo + } + else + { + if (string.IsNullOrEmpty(CurrRecord.Disegno)) + { + [@CurrRecord.CodArticolo] + } + else + { + @CurrRecord.Disegno + } + } +
@CurrRecord.DescrizioneStato
diff --git a/MP.Mon/Components/DetailMSE.razor.cs b/MP.Mon/Components/DetailMSE.razor.cs index 172d7b7e..aea3fddd 100644 --- a/MP.Mon/Components/DetailMSE.razor.cs +++ b/MP.Mon/Components/DetailMSE.razor.cs @@ -28,6 +28,9 @@ namespace MP.Mon.Components [Parameter] public bool doAnimate { get; set; } = true; + [Parameter] + public string showArt { get; set; } = ""; + [Parameter] public int keepAliveMin { get; set; } = 5; [Parameter] diff --git a/MP.Mon/Pages/Index.razor b/MP.Mon/Pages/Index.razor index 9e11bfec..c3e49606 100644 --- a/MP.Mon/Pages/Index.razor +++ b/MP.Mon/Pages/Index.razor @@ -26,7 +26,7 @@ int currIdx = 0; foreach (var macchina in ListMSE) { - + currIdx++; if (currIdx >= maxCol) { diff --git a/MP.Mon/Pages/Index.razor.cs b/MP.Mon/Pages/Index.razor.cs index e335a53b..5c9f9033 100644 --- a/MP.Mon/Pages/Index.razor.cs +++ b/MP.Mon/Pages/Index.razor.cs @@ -35,8 +35,12 @@ namespace MP.Mon.Pages protected bool doAnimate = true; + protected string showArt = ""; + protected int slowRefreshSec = 300; protected int fastRefreshSec = 10; + + protected int slowRefreshMs { get => 1000 * slowRefreshSec; @@ -74,6 +78,7 @@ namespace MP.Mon.Pages doAnimate = intDoAnim == 1; getConfValInt("pageRefreshSec", ref slowRefreshSec); getConfValInt("MSE_cacheDuration", ref fastRefreshSec); + getConfVal("sART", ref showArt); Log.Info($"Effettuato setup parametri | keepAlive: {keepAliveMin} | MaxCol: {maxCol} | doAnimate: {doAnimate} | slowRefreshSec: {slowRefreshSec} | fastRefreshSec: {fastRefreshSec}"); } @@ -83,7 +88,7 @@ namespace MP.Mon.Pages /// Recupera il valore e se trovato aggiorna /// /// Valore da cercare - /// Oggetto in cui salvare il valore se trovato + /// Int in cui salvare il valore se trovato /// protected bool getConfValInt(string chiave, ref int varObj) { @@ -100,6 +105,28 @@ namespace MP.Mon.Pages return answ; } + /// + /// Recupera il valore e se trovato aggiorna + /// + /// Valore da cercare + /// String in cui salvare il valore se trovato + /// + protected bool getConfVal(string chiave, ref string varObj) + { + bool answ = false; + if (CurrConfig != null && CurrConfig.Count > 0) + { + // sistemo i parametri opzionali... + ConfigModel? risultato = CurrConfig.FirstOrDefault(x => x.Chiave == chiave); + if (risultato != null) + { + varObj = risultato.Valore; + answ = !string.IsNullOrEmpty(risultato.Valore); + } + } + return answ; + } + private async Task ReloadData() { ListMSE = await MMDataService.MseGetAll(); diff --git a/MP.Mon/wwwroot/css/site.css b/MP.Mon/wwwroot/css/site.css index 2f49cabf..8cb8ed3e 100644 --- a/MP.Mon/wwwroot/css/site.css +++ b/MP.Mon/wwwroot/css/site.css @@ -149,7 +149,7 @@ a, font-size: 0.6em; } .statusMap { - background: rgba(255, 255, 255, 0.1); + background: rgba(0, 0, 0, 0.4); } .statusMap .ui-title, .statusMap .ui-li-aside { diff --git a/MP.Mon/wwwroot/css/site.less b/MP.Mon/wwwroot/css/site.less index 240ce074..030e27e5 100644 --- a/MP.Mon/wwwroot/css/site.less +++ b/MP.Mon/wwwroot/css/site.less @@ -154,7 +154,7 @@ a, .btn-link { } .statusMap { - background: rgba(255,255,255,0.1); + background: rgba(0,0,0,0.4); } .statusMap .ui-title, .statusMap .ui-li-aside { @@ -175,8 +175,8 @@ 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 -{ + +.machBlock { padding: 0 2px 0 2px; } /* END: gestione layout dinamico mappa... */ diff --git a/MP.Mon/wwwroot/css/site.min.css b/MP.Mon/wwwroot/css/site.min.css index 0389fb48..a4012bea 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));}.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 +@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(0,0,0,.4);}.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 From b9a115bb13f06efdadc23a0cac33da9b26e5ba89 Mon Sep 17 00:00:00 2001 From: Samuele Locatelli Date: Thu, 14 Apr 2022 12:15:59 +0200 Subject: [PATCH 14/29] Aggiunta profili pubblicazione x MON --- MP.Mon/.config/dotnet-tools.json | 5 ++++ MP.Mon/MP.Mon.csproj | 13 +++++++++ .../PublishProfiles/FolderProfile.pubxml | 16 +++++++++++ .../PublishProfiles/FolderProfile.pubxml.user | 10 +++++++ .../Properties/PublishProfiles/IIS01.pubxml | 28 +++++++++++++++++++ .../PublishProfiles/IIS01.pubxml.user | 12 ++++++++ .../Properties/PublishProfiles/IIS02.pubxml | 28 +++++++++++++++++++ .../PublishProfiles/IIS02.pubxml.user | 12 ++++++++ .../Properties/PublishProfiles/IIS03.pubxml | 28 +++++++++++++++++++ .../PublishProfiles/IIS03.pubxml.user | 12 ++++++++ .../PublishProfiles/IISProfile.pubxml | 21 ++++++++++++++ .../PublishProfiles/IISProfile.pubxml.user | 11 ++++++++ 12 files changed, 196 insertions(+) create mode 100644 MP.Mon/.config/dotnet-tools.json create mode 100644 MP.Mon/Properties/PublishProfiles/FolderProfile.pubxml create mode 100644 MP.Mon/Properties/PublishProfiles/FolderProfile.pubxml.user create mode 100644 MP.Mon/Properties/PublishProfiles/IIS01.pubxml create mode 100644 MP.Mon/Properties/PublishProfiles/IIS01.pubxml.user create mode 100644 MP.Mon/Properties/PublishProfiles/IIS02.pubxml create mode 100644 MP.Mon/Properties/PublishProfiles/IIS02.pubxml.user create mode 100644 MP.Mon/Properties/PublishProfiles/IIS03.pubxml create mode 100644 MP.Mon/Properties/PublishProfiles/IIS03.pubxml.user create mode 100644 MP.Mon/Properties/PublishProfiles/IISProfile.pubxml create mode 100644 MP.Mon/Properties/PublishProfiles/IISProfile.pubxml.user diff --git a/MP.Mon/.config/dotnet-tools.json b/MP.Mon/.config/dotnet-tools.json new file mode 100644 index 00000000..b0e38abd --- /dev/null +++ b/MP.Mon/.config/dotnet-tools.json @@ -0,0 +1,5 @@ +{ + "version": 1, + "isRoot": true, + "tools": {} +} \ No newline at end of file diff --git a/MP.Mon/MP.Mon.csproj b/MP.Mon/MP.Mon.csproj index 12c79581..50826210 100644 --- a/MP.Mon/MP.Mon.csproj +++ b/MP.Mon/MP.Mon.csproj @@ -10,8 +10,21 @@ + + <_WebToolingArtifacts Remove="Properties\PublishProfiles\FolderProfile.pubxml" /> + <_WebToolingArtifacts Remove="Properties\PublishProfiles\IIS01.pubxml" /> + <_WebToolingArtifacts Remove="Properties\PublishProfiles\IIS02.pubxml" /> + <_WebToolingArtifacts Remove="Properties\PublishProfiles\IIS03.pubxml" /> + <_WebToolingArtifacts Remove="Properties\PublishProfiles\IISProfile.pubxml" /> + + + + + + + diff --git a/MP.Mon/Properties/PublishProfiles/FolderProfile.pubxml b/MP.Mon/Properties/PublishProfiles/FolderProfile.pubxml new file mode 100644 index 00000000..62a4ee10 --- /dev/null +++ b/MP.Mon/Properties/PublishProfiles/FolderProfile.pubxml @@ -0,0 +1,16 @@ + + + + + False + False + True + Release + Any CPU + FileSystem + bin\publish\net6.0\ + FileSystem + + \ No newline at end of file diff --git a/MP.Mon/Properties/PublishProfiles/FolderProfile.pubxml.user b/MP.Mon/Properties/PublishProfiles/FolderProfile.pubxml.user new file mode 100644 index 00000000..c4b7871e --- /dev/null +++ b/MP.Mon/Properties/PublishProfiles/FolderProfile.pubxml.user @@ -0,0 +1,10 @@ + + + + + <_PublishTargetUrl>C:\Users\samuele\source\repos\MAPO-CORE\MP.Mon\bin\publish\net6.0\ + True|2021-05-25T06:38:44.6280246Z; + + \ No newline at end of file diff --git a/MP.Mon/Properties/PublishProfiles/IIS01.pubxml b/MP.Mon/Properties/PublishProfiles/IIS01.pubxml new file mode 100644 index 00000000..94b80775 --- /dev/null +++ b/MP.Mon/Properties/PublishProfiles/IIS01.pubxml @@ -0,0 +1,28 @@ + + + + + MSDeploy + True + Release + Any CPU + + + False + d9901b50-e61c-400c-b62c-fa060cf72c29 + false + https://iis01.egalware.com:8172/MsDeploy.axd + Default Web Site/MP/MON + + False + WMSVC + True + jenkins + <_SavePWD>True + net6.0 + True + + \ No newline at end of file diff --git a/MP.Mon/Properties/PublishProfiles/IIS01.pubxml.user b/MP.Mon/Properties/PublishProfiles/IIS01.pubxml.user new file mode 100644 index 00000000..148b0929 --- /dev/null +++ b/MP.Mon/Properties/PublishProfiles/IIS01.pubxml.user @@ -0,0 +1,12 @@ + + + + + + AQAAANCMnd8BFdERjHoAwE/Cl+sBAAAA+11nhJeDSkeTlSej+COD3AAAAAACAAAAAAADZgAAwAAAABAAAACFCXZ0UR7Czo59aaRCHU5QAAAAAASAAACgAAAAEAAAACYlKt9E6s77uEikpKwyhdQYAAAAUwae989LovFbsfjRp69HCVpyUQZbqLyYFAAAAMW8mLSAxWmKaOvB4nkDgUpS27/b + True|2022-04-14T07:37:09.1341280Z;True|2022-02-26T18:24:32.0833123+01:00;False|2022-02-26T18:24:15.3994092+01:00;False|2022-02-26T18:23:44.8358586+01:00;True|2021-05-26T19:49:30.0427896+02:00;False|2021-05-26T19:49:14.9065510+02:00;True|2021-05-25T17:48:33.3901785+02:00;True|2021-05-25T17:46:09.2063020+02:00;True|2021-05-25T17:42:47.8167539+02:00;True|2021-05-25T17:22:03.1877438+02:00;True|2021-05-25T17:21:05.1565775+02:00;True|2021-05-25T16:26:34.1426996+02:00;True|2021-05-25T16:14:28.2842402+02:00;True|2021-05-25T15:02:11.7131495+02:00; + + \ No newline at end of file diff --git a/MP.Mon/Properties/PublishProfiles/IIS02.pubxml b/MP.Mon/Properties/PublishProfiles/IIS02.pubxml new file mode 100644 index 00000000..679f87f6 --- /dev/null +++ b/MP.Mon/Properties/PublishProfiles/IIS02.pubxml @@ -0,0 +1,28 @@ + + + + + MSDeploy + True + Release + Any CPU + + + False + d9901b50-e61c-400c-b62c-fa060cf72c29 + false + https://iis02.egalware.com:8172/MsDeploy.axd + Default Web Site/MP/MON + + False + WMSVC + True + jenkins + <_SavePWD>True + net6.0 + True + + \ No newline at end of file diff --git a/MP.Mon/Properties/PublishProfiles/IIS02.pubxml.user b/MP.Mon/Properties/PublishProfiles/IIS02.pubxml.user new file mode 100644 index 00000000..cccd5396 --- /dev/null +++ b/MP.Mon/Properties/PublishProfiles/IIS02.pubxml.user @@ -0,0 +1,12 @@ + + + + + + AQAAANCMnd8BFdERjHoAwE/Cl+sBAAAA+11nhJeDSkeTlSej+COD3AAAAAACAAAAAAADZgAAwAAAABAAAAB3zVMW24A4himhWJ5CNqgeAAAAAASAAACgAAAAEAAAAA7IL1n8zHn2/ljDNL4/zlsYAAAAgAEg9RYKHV0xl3wnafZiN9Q954GOBAvdFAAAACSBJkwDndNTiIrUuk7zJls84fN1 + True|2022-02-26T17:24:42.6534875Z;True|2021-05-26T19:49:44.3836006+02:00; + + \ No newline at end of file diff --git a/MP.Mon/Properties/PublishProfiles/IIS03.pubxml b/MP.Mon/Properties/PublishProfiles/IIS03.pubxml new file mode 100644 index 00000000..4eda79b9 --- /dev/null +++ b/MP.Mon/Properties/PublishProfiles/IIS03.pubxml @@ -0,0 +1,28 @@ + + + + + MSDeploy + True + Release + Any CPU + + + False + d9901b50-e61c-400c-b62c-fa060cf72c29 + false + https://iis03.egalware.com:8172/MsDeploy.axd + Default Web Site/MP/MON + + False + WMSVC + True + jenkins + <_SavePWD>True + net6.0 + True + + \ No newline at end of file diff --git a/MP.Mon/Properties/PublishProfiles/IIS03.pubxml.user b/MP.Mon/Properties/PublishProfiles/IIS03.pubxml.user new file mode 100644 index 00000000..d5ad4521 --- /dev/null +++ b/MP.Mon/Properties/PublishProfiles/IIS03.pubxml.user @@ -0,0 +1,12 @@ + + + + + + AQAAANCMnd8BFdERjHoAwE/Cl+sBAAAA+11nhJeDSkeTlSej+COD3AAAAAACAAAAAAADZgAAwAAAABAAAADHiGtCyOetOyeT2xaFL+NDAAAAAASAAACgAAAAEAAAAAuYw1PbVDVdZhloQ7eVuTsYAAAAfA8iFmY49U48HUeRwWwQNsvZg5FRMf9SFAAAACB+0njgnTZ+1teEqoJcNV16idHL + True|2022-02-26T17:27:10.4709417Z;True|2021-05-26T19:49:56.4831784+02:00;True|2021-05-25T16:56:57.0194126+02:00;True|2021-05-24T18:44:45.5388713+02:00;True|2021-05-24T18:23:50.6056375+02:00;True|2021-05-24T18:01:51.1166144+02:00;True|2021-05-24T17:07:21.6348703+02:00;True|2021-05-24T17:07:10.8304877+02:00;True|2021-05-24T11:12:19.8440009+02:00;True|2021-05-24T11:12:08.1362921+02:00;True|2021-05-22T12:03:42.2864462+02:00;True|2021-05-21T19:54:05.6348108+02:00;False|2021-05-21T19:53:46.2134560+02:00;True|2021-05-21T08:11:55.5022811+02:00;True|2021-05-20T19:40:34.2462833+02:00;True|2021-05-20T19:40:10.3931366+02:00;True|2021-05-20T17:27:02.9543079+02:00;True|2021-05-20T16:59:12.4323448+02:00;True|2021-05-20T16:58:55.5021812+02:00;False|2021-05-20T16:58:03.5161910+02:00;True|2021-05-19T19:28:03.8104716+02:00;True|2021-05-18T19:48:52.9083044+02:00;True|2021-05-18T18:15:50.2374168+02:00;True|2021-05-18T18:06:20.0997789+02:00;True|2021-05-18T14:56:33.7479984+02:00;True|2021-05-17T17:03:39.9822588+02:00;True|2021-05-17T16:33:53.4419457+02:00;True|2021-05-17T16:33:10.5405414+02:00;False|2021-05-17T16:30:04.8648550+02:00;False|2021-05-17T16:29:49.5085445+02:00; + + \ No newline at end of file diff --git a/MP.Mon/Properties/PublishProfiles/IISProfile.pubxml b/MP.Mon/Properties/PublishProfiles/IISProfile.pubxml new file mode 100644 index 00000000..5e8fb7c3 --- /dev/null +++ b/MP.Mon/Properties/PublishProfiles/IISProfile.pubxml @@ -0,0 +1,21 @@ + + + + + Package + Release + Any CPU + + True + False + d9901b50-e61c-400c-b62c-fa060cf72c29 + bin\publish\MP.Mon.zip + true + Default Web Site/MP/MON + net6.0 + false + + \ No newline at end of file diff --git a/MP.Mon/Properties/PublishProfiles/IISProfile.pubxml.user b/MP.Mon/Properties/PublishProfiles/IISProfile.pubxml.user new file mode 100644 index 00000000..105ac0ab --- /dev/null +++ b/MP.Mon/Properties/PublishProfiles/IISProfile.pubxml.user @@ -0,0 +1,11 @@ + + + + + + True|2021-05-27T09:13:55.8234781Z;True|2021-05-26T19:51:13.5051479+02:00;True|2021-05-26T19:51:04.9283608+02:00;True|2021-05-25T16:38:26.4142377+02:00; + + \ No newline at end of file From 3b2b09762654015a9a524a6e2ddad8ce85d411aa Mon Sep 17 00:00:00 2001 From: Samuele Locatelli Date: Thu, 14 Apr 2022 12:16:13 +0200 Subject: [PATCH 15/29] Update YAML x build mon (e nuild con variabili) --- .gitlab-ci.yml | 36 ++++++++++++++++++++++++++++++------ 1 file changed, 30 insertions(+), 6 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 755f4210..cdb46a6f 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -1,6 +1,7 @@ variables: NEXUS_PATH: 'MP-STATS' APP_NAME: 'MP.Stats' + SOL_NAME: 'MP-STATS' # helper x fix pacchetti nuget da repo locale nexus.steamware.net .nuget-fix: &nuget-fix @@ -64,31 +65,54 @@ LAND:build: stage: build tags: - win + variables: + APP_NAME: MP.Land + SOL_NAME: MP-LAND before_script: - *nuget-fix - - dotnet restore MP-LAND.sln + - dotnet restore $env:SOL_NAME.sln script: - - dotnet build MP.Land/MP.Land.csproj + - dotnet build $env:APP_NAME/$env:APP_NAME.csproj PROG:build: stage: build tags: - win + variables: + APP_NAME: MP.Prog + SOL_NAME: MP-PROG before_script: - *nuget-fix - - dotnet restore MP-PROG.sln + - dotnet restore $env:SOL_NAME.sln script: - - dotnet build MP.Prog/MP.Prog.csproj + - dotnet build $env:APP_NAME/$env:APP_NAME.csproj STAT:build: stage: build tags: - win + variables: + APP_NAME: MP.Stats + SOL_NAME: MP-STATS before_script: - *nuget-fix - - dotnet restore MP-STATS.sln + - dotnet restore $env:SOL_NAME.sln script: - - dotnet build MP.Stats/MP.Stats.csproj + - dotnet build $env:APP_NAME/$env:APP_NAME.csproj + +MON:build: + stage: build + tags: + - win + variables: + APP_NAME: MP.Mon + SOL_NAME: MP-MON + before_script: + - *nuget-fix + - dotnet restore $env:SOL_NAME.sln + script: + - dotnet build $env:APP_NAME/$env:APP_NAME.csproj + LAND:test: stage: test From 54fab4468785446f8fff862b028d3f1a1cd17d2b Mon Sep 17 00:00:00 2001 From: Samuele Locatelli Date: Thu, 14 Apr 2022 12:18:42 +0200 Subject: [PATCH 16/29] correzione step restore sln --- .gitlab-ci.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index cdb46a6f..477eca86 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -70,7 +70,7 @@ LAND:build: SOL_NAME: MP-LAND before_script: - *nuget-fix - - dotnet restore $env:SOL_NAME.sln + - dotnet restore "$env:SOL_NAME.sln" script: - dotnet build $env:APP_NAME/$env:APP_NAME.csproj @@ -83,7 +83,7 @@ PROG:build: SOL_NAME: MP-PROG before_script: - *nuget-fix - - dotnet restore $env:SOL_NAME.sln + - dotnet restore "$env:SOL_NAME.sln" script: - dotnet build $env:APP_NAME/$env:APP_NAME.csproj @@ -96,7 +96,7 @@ STAT:build: SOL_NAME: MP-STATS before_script: - *nuget-fix - - dotnet restore $env:SOL_NAME.sln + - dotnet restore "$env:SOL_NAME.sln" script: - dotnet build $env:APP_NAME/$env:APP_NAME.csproj @@ -109,7 +109,7 @@ MON:build: SOL_NAME: MP-MON before_script: - *nuget-fix - - dotnet restore $env:SOL_NAME.sln + - dotnet restore "$env:SOL_NAME.sln" script: - dotnet build $env:APP_NAME/$env:APP_NAME.csproj From 703337fa9a6790aaf669a2639bf9c9277946fe63 Mon Sep 17 00:00:00 2001 From: Samuele Locatelli Date: Thu, 14 Apr 2022 12:27:46 +0200 Subject: [PATCH 17/29] UPdate nuget packages --- MP.Data/MP.Data.csproj | 12 ++++++------ MP.Stats/MP.Stats.csproj | 4 ++-- MP.Stats/Resources/ChangeLog.html | 2 +- MP.Stats/Resources/VersNum.txt | 2 +- MP.Stats/Resources/manifest.xml | 2 +- 5 files changed, 11 insertions(+), 11 deletions(-) diff --git a/MP.Data/MP.Data.csproj b/MP.Data/MP.Data.csproj index f7007495..41f08fa6 100644 --- a/MP.Data/MP.Data.csproj +++ b/MP.Data/MP.Data.csproj @@ -12,14 +12,14 @@ - - - - + + + + all runtime; build; native; contentfiles; analyzers; buildtransitive - - + + \ No newline at end of file diff --git a/MP.Stats/MP.Stats.csproj b/MP.Stats/MP.Stats.csproj index 30be0f97..c783fca0 100644 --- a/MP.Stats/MP.Stats.csproj +++ b/MP.Stats/MP.Stats.csproj @@ -4,7 +4,7 @@ net6.0 MP.Stats 826e877c-ba70-4253-84cb-d0b1cafd4440 - 6.15.2204.1216 + 6.15.2204.1412 @@ -188,7 +188,7 @@ - + diff --git a/MP.Stats/Resources/ChangeLog.html b/MP.Stats/Resources/ChangeLog.html index 3421c587..b1f2a36a 100644 --- a/MP.Stats/Resources/ChangeLog.html +++ b/MP.Stats/Resources/ChangeLog.html @@ -1,6 +1,6 @@ Modulo statistiche MAPO -

Versione: 6.15.2204.1216

+

Versione: 6.15.2204.1412


Note di rilascio:
    diff --git a/MP.Stats/Resources/VersNum.txt b/MP.Stats/Resources/VersNum.txt index f474a27a..00d0ab40 100644 --- a/MP.Stats/Resources/VersNum.txt +++ b/MP.Stats/Resources/VersNum.txt @@ -1 +1 @@ -6.15.2204.1216 +6.15.2204.1412 diff --git a/MP.Stats/Resources/manifest.xml b/MP.Stats/Resources/manifest.xml index a09dd34d..0a74e43e 100644 --- a/MP.Stats/Resources/manifest.xml +++ b/MP.Stats/Resources/manifest.xml @@ -1,6 +1,6 @@ - 6.15.2204.1216 + 6.15.2204.1412 https://nexus.steamware.net/repository/SWS/MP-STATS/stable/LAST/MP.Stats.zip https://nexus.steamware.net/repository/SWS/MP-STATS/stable/LAST/ChangeLog.html false From 7a89db055c38e9c85ebb4df72814d0575647db7a Mon Sep 17 00:00:00 2001 From: Samuele Locatelli Date: Thu, 14 Apr 2022 12:44:04 +0200 Subject: [PATCH 18/29] =?UTF-8?q?test=20cambio=20modalit=C3=A0=20nuget=20r?= =?UTF-8?q?estore?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitlab-ci.yml | 26 +++++++++++++++++++++----- 1 file changed, 21 insertions(+), 5 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 477eca86..ee6f1d88 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -6,12 +6,28 @@ variables: # helper x fix pacchetti nuget da repo locale nexus.steamware.net .nuget-fix: &nuget-fix - | - $hasSource = C:\Tools\nuget.exe sources list | find "`"Steamware Nexus`"" /C - if ($hasSource -eq 0) { - C:\Tools\nuget.exe sources Add -Name "`"Steamware Nexus`"" -Source https://nexus.steamware.net/repository/nuget-group -username "`"nugetUser`"" -password "`"viaDante16`"" - } else { - C:\Tools\nuget.exe sources Update -Name "`"Steamware Nexus`"" -Source https://nexus.steamware.net/repository/nuget-group -username "`"nugetUser`"" -password "`"viaDante16`"" + dotnet nuget list source + $hasSource = dotnet nuget list source | Select-String -Pattern "Steamware Nexus Proxy" + if (! [String]::IsNullOrWhiteSpace($hasSource)) { + dotnet nuget remove source "`"Steamware Nexus Proxy`"" } + $hasSource = dotnet nuget list source | Select-String -Pattern "Steamware Nexus" + if (! [String]::IsNullOrWhiteSpace($hasSource)) { + dotnet nuget remove source "`"Steamware Nexus`"" + } + $hasSource = dotnet nuget list source | Select-String -Pattern "nexus-proxy-v3" + if (! [String]::IsNullOrWhiteSpace($hasSource)) { + dotnet nuget remove source nexus-proxy-v3 + } + + dotnet nuget add source https://nexus.steamware.net/repository/nuget-proxy-v3/index.json -n nexus-proxy-v3 -u nugetUser -p viaDante16 --valid-authentication-types basic + +# $hasSource = C:\Tools\nuget.exe sources list | find "`"Steamware Nexus`"" /C +# if ($hasSource -eq 0) { +# C:\Tools\nuget.exe sources Add -Name "`"Steamware Nexus`"" -Source https://nexus.steamware.net/#repository/nuget-group -username "`"nugetUser`"" -password "`"viaDante16`" -" +# } else { +# C:\Tools\nuget.exe sources Update -Name "`"Steamware Nexus`"" -Source https://nexus.steamware.net/#repository/nuget-group -username "`"nugetUser`"" -password "`"viaDante16`"" +# } echo $hasSource # helper creazione hash files x IIS From e642d29605d938fb0b39166850bd6e9afca21a2f Mon Sep 17 00:00:00 2001 From: Samuele Locatelli Date: Thu, 14 Apr 2022 12:45:24 +0200 Subject: [PATCH 19/29] typo --- .gitlab-ci.yml | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index ee6f1d88..ed598093 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -5,7 +5,7 @@ variables: # helper x fix pacchetti nuget da repo locale nexus.steamware.net .nuget-fix: &nuget-fix - - | + - | dotnet nuget list source $hasSource = dotnet nuget list source | Select-String -Pattern "Steamware Nexus Proxy" if (! [String]::IsNullOrWhiteSpace($hasSource)) { @@ -19,8 +19,7 @@ variables: if (! [String]::IsNullOrWhiteSpace($hasSource)) { dotnet nuget remove source nexus-proxy-v3 } - - dotnet nuget add source https://nexus.steamware.net/repository/nuget-proxy-v3/index.json -n nexus-proxy-v3 -u nugetUser -p viaDante16 --valid-authentication-types basic + dotnet nuget add source https://nexus.steamware.net/repository/nuget-proxy-v3/index.json -n nexus-proxy-v3 -u nugetUser -p viaDante16 --valid-authentication-types basic # $hasSource = C:\Tools\nuget.exe sources list | find "`"Steamware Nexus`"" /C # if ($hasSource -eq 0) { From 60db6422e8585db8f697e33a1673873a95195797 Mon Sep 17 00:00:00 2001 From: Samuele Locatelli Date: Thu, 14 Apr 2022 12:47:35 +0200 Subject: [PATCH 20/29] ancora typo correct --- .gitlab-ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index ed598093..269be9be 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -20,6 +20,7 @@ variables: dotnet nuget remove source nexus-proxy-v3 } dotnet nuget add source https://nexus.steamware.net/repository/nuget-proxy-v3/index.json -n nexus-proxy-v3 -u nugetUser -p viaDante16 --valid-authentication-types basic + echo $hasSource # $hasSource = C:\Tools\nuget.exe sources list | find "`"Steamware Nexus`"" /C # if ($hasSource -eq 0) { @@ -27,7 +28,6 @@ variables: # } else { # C:\Tools\nuget.exe sources Update -Name "`"Steamware Nexus`"" -Source https://nexus.steamware.net/#repository/nuget-group -username "`"nugetUser`"" -password "`"viaDante16`"" # } - echo $hasSource # helper creazione hash files x IIS .hashBuild: &hashBuild From 99e697369547fcc448e16d5d4b8b6d45b7739592 Mon Sep 17 00:00:00 2001 From: Samuele Locatelli Date: Thu, 14 Apr 2022 12:52:11 +0200 Subject: [PATCH 21/29] aggiunto nuget v3 --- .gitlab-ci.yml | 25 +++++-------------------- 1 file changed, 5 insertions(+), 20 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 269be9be..8fd47651 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -6,29 +6,14 @@ variables: # helper x fix pacchetti nuget da repo locale nexus.steamware.net .nuget-fix: &nuget-fix - | - dotnet nuget list source - $hasSource = dotnet nuget list source | Select-String -Pattern "Steamware Nexus Proxy" - if (! [String]::IsNullOrWhiteSpace($hasSource)) { - dotnet nuget remove source "`"Steamware Nexus Proxy`"" + $hasSource = C:\Tools\nuget.exe sources list | find "`"Steamware Nexus`"" /C + if ($hasSource -eq 0) { + C:\Tools\nuget.exe sources Add -Name "`"Steamware Nexus`"" -Source https://nexus.steamware.net/#repository/nuget-group-v3/index.json -username "`"nugetUser`"" -password "`"viaDante16`" " + } else { + C:\Tools\nuget.exe sources Update -Name "`"Steamware Nexus`"" -Source https://nexus.steamware.net/#repository/nuget-group-v3/index.json -username "`"nugetUser`"" -password "`"viaDante16`" " } - $hasSource = dotnet nuget list source | Select-String -Pattern "Steamware Nexus" - if (! [String]::IsNullOrWhiteSpace($hasSource)) { - dotnet nuget remove source "`"Steamware Nexus`"" - } - $hasSource = dotnet nuget list source | Select-String -Pattern "nexus-proxy-v3" - if (! [String]::IsNullOrWhiteSpace($hasSource)) { - dotnet nuget remove source nexus-proxy-v3 - } - dotnet nuget add source https://nexus.steamware.net/repository/nuget-proxy-v3/index.json -n nexus-proxy-v3 -u nugetUser -p viaDante16 --valid-authentication-types basic echo $hasSource -# $hasSource = C:\Tools\nuget.exe sources list | find "`"Steamware Nexus`"" /C -# if ($hasSource -eq 0) { -# C:\Tools\nuget.exe sources Add -Name "`"Steamware Nexus`"" -Source https://nexus.steamware.net/#repository/nuget-group -username "`"nugetUser`"" -password "`"viaDante16`" -" -# } else { -# C:\Tools\nuget.exe sources Update -Name "`"Steamware Nexus`"" -Source https://nexus.steamware.net/#repository/nuget-group -username "`"nugetUser`"" -password "`"viaDante16`"" -# } - # helper creazione hash files x IIS .hashBuild: &hashBuild - | From da39149575603b630c2a31716556694327409b8b Mon Sep 17 00:00:00 2001 From: Samuele Locatelli Date: Thu, 14 Apr 2022 12:56:43 +0200 Subject: [PATCH 22/29] cambio sintassi x nuget proxy fix --- .gitlab-ci.yml | 25 ++++++++++++++++++++----- 1 file changed, 20 insertions(+), 5 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 8fd47651..9d7f99ee 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -6,12 +6,27 @@ variables: # helper x fix pacchetti nuget da repo locale nexus.steamware.net .nuget-fix: &nuget-fix - | - $hasSource = C:\Tools\nuget.exe sources list | find "`"Steamware Nexus`"" /C - if ($hasSource -eq 0) { - C:\Tools\nuget.exe sources Add -Name "`"Steamware Nexus`"" -Source https://nexus.steamware.net/#repository/nuget-group-v3/index.json -username "`"nugetUser`"" -password "`"viaDante16`" " - } else { - C:\Tools\nuget.exe sources Update -Name "`"Steamware Nexus`"" -Source https://nexus.steamware.net/#repository/nuget-group-v3/index.json -username "`"nugetUser`"" -password "`"viaDante16`" " + dotnet nuget list source + $hasSource = dotnet nuget list source | Select-String -Pattern "Steamware Nexus Proxy" + if (! [String]::IsNullOrWhiteSpace($hasSource)) { + dotnet nuget remove source "`"Steamware Nexus Proxy`"" } + $hasSource = dotnet nuget list source | Select-String -Pattern "Steamware Nexus" + if (! [String]::IsNullOrWhiteSpace($hasSource)) { + dotnet nuget remove source "`"Steamware Nexus`"" + } + $hasSource = dotnet nuget list source | Select-String -Pattern "nexus-proxy-v3" + if (! [String]::IsNullOrWhiteSpace($hasSource)) { + dotnet nuget remove source nexus-proxy-v3 + } + dotnet nuget add source https://nexus.steamware.net/repository/nuget-proxy-v3/index.json -n nexus-proxy-v3 -u nugetUser -p viaDante16 --store-password-in-clear-text + +# $hasSource = C:\Tools\nuget.exe sources list | find "`"Steamware Nexus`"" /C +# if ($hasSource -eq 0) { +# C:\Tools\nuget.exe sources Add -Name "`"Steamware Nexus`"" -Source https://nexus.steamware.net/#repository/nuget-group -username "`"nugetUser`"" -password "`"viaDante16`" -" +# } else { +# C:\Tools\nuget.exe sources Update -Name "`"Steamware Nexus`"" -Source https://nexus.steamware.net/#repository/nuget-group -username "`"nugetUser`"" -password "`"viaDante16`"" +# } echo $hasSource # helper creazione hash files x IIS From 63947b666244380dac2a9d5c9bc902e89a1e196f Mon Sep 17 00:00:00 2001 From: Samuele Locatelli Date: Thu, 14 Apr 2022 12:58:04 +0200 Subject: [PATCH 23/29] cambio ordine comandi nuget-fix --- .gitlab-ci.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 9d7f99ee..70309984 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -6,6 +6,7 @@ variables: # helper x fix pacchetti nuget da repo locale nexus.steamware.net .nuget-fix: &nuget-fix - | + echo "esecuzione Nuget FIX steps" dotnet nuget list source $hasSource = dotnet nuget list source | Select-String -Pattern "Steamware Nexus Proxy" if (! [String]::IsNullOrWhiteSpace($hasSource)) { @@ -20,6 +21,7 @@ variables: dotnet nuget remove source nexus-proxy-v3 } dotnet nuget add source https://nexus.steamware.net/repository/nuget-proxy-v3/index.json -n nexus-proxy-v3 -u nugetUser -p viaDante16 --store-password-in-clear-text + echo "Has Source: $hasSource" # $hasSource = C:\Tools\nuget.exe sources list | find "`"Steamware Nexus`"" /C # if ($hasSource -eq 0) { @@ -27,7 +29,6 @@ variables: # } else { # C:\Tools\nuget.exe sources Update -Name "`"Steamware Nexus`"" -Source https://nexus.steamware.net/#repository/nuget-group -username "`"nugetUser`"" -password "`"viaDante16`"" # } - echo $hasSource # helper creazione hash files x IIS .hashBuild: &hashBuild From 5e6da5faa93bb2dd7b78e066695de072043e42b3 Mon Sep 17 00:00:00 2001 From: Samuele Locatelli Date: Thu, 14 Apr 2022 13:05:25 +0200 Subject: [PATCH 24/29] Fix yaml fino a test --- .gitlab-ci.yml | 52 ++++++++++++++++++++++++++++++++++++-------------- 1 file changed, 38 insertions(+), 14 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 70309984..2f44b201 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -23,13 +23,6 @@ variables: dotnet nuget add source https://nexus.steamware.net/repository/nuget-proxy-v3/index.json -n nexus-proxy-v3 -u nugetUser -p viaDante16 --store-password-in-clear-text echo "Has Source: $hasSource" -# $hasSource = C:\Tools\nuget.exe sources list | find "`"Steamware Nexus`"" /C -# if ($hasSource -eq 0) { -# C:\Tools\nuget.exe sources Add -Name "`"Steamware Nexus`"" -Source https://nexus.steamware.net/#repository/nuget-group -username "`"nugetUser`"" -password "`"viaDante16`" -" -# } else { -# C:\Tools\nuget.exe sources Update -Name "`"Steamware Nexus`"" -Source https://nexus.steamware.net/#repository/nuget-group -username "`"nugetUser`"" -password "`"viaDante16`"" -# } - # helper creazione hash files x IIS .hashBuild: &hashBuild - | @@ -66,10 +59,8 @@ variables: } mCurl -v -u GitLab:$NEXUS_PASSWD --upload-file "$env:APP_NAME\Resources\manifest.xml" https://nexus.steamware.net/repository/SWS/$env:NEXUS_PATH/$version/LAST/manifest.xml mCurl -v -u GitLab:$NEXUS_PASSWD --upload-file "$env:APP_NAME\Resources\ChangeLog.html" https://nexus.steamware.net/repository/SWS/$env:NEXUS_PATH/$version/LAST/ChangeLog.html - - -# mCurl -v -u $env:NEXUS_USER:$env:NEXUS_PASSWD --upload-file bin/release/$env:APP_NAME.zip $env:NEXUS_SERVER/utility/$env:NEXUS_PATH/$version/$env:APP_NAME-$version.zip +# Stages previsti stages: - build - test @@ -129,36 +120,69 @@ MON:build: script: - dotnet build $env:APP_NAME/$env:APP_NAME.csproj - LAND:test: stage: test tags: - win + variables: + APP_NAME: MP.Land + SOL_NAME: MP-LAND + before_script: + - *nuget-fix + - dotnet restore "$env:SOL_NAME.sln" only: - develop needs: ["LAND:build"] script: - - dotnet test MP.Land/MP.Land.csproj + - dotnet test $env:APP_NAME/$env:APP_NAME.csproj PROG:test: stage: test tags: - win + variables: + APP_NAME: MP.Prog + SOL_NAME: MP-PROG + before_script: + - *nuget-fix + - dotnet restore "$env:SOL_NAME.sln" only: - develop needs: ["PROG:build"] script: - - dotnet test MP.Prog/MP.Prog.csproj + - dotnet test $env:APP_NAME/$env:APP_NAME.csproj STAT:test: stage: test tags: - win + variables: + APP_NAME: MP.Stats + SOL_NAME: MP-STATS + before_script: + - *nuget-fix + - dotnet restore "$env:SOL_NAME.sln" only: - develop needs: ["STAT:build"] script: - - dotnet test MP.Stats/MP.Stats.csproj + - dotnet test $env:APP_NAME/$env:APP_NAME.csproj + +MON:test: + stage: test + tags: + - win + variables: + APP_NAME: MP.Mon + SOL_NAME: MP-MON + before_script: + - *nuget-fix + - dotnet restore "$env:SOL_NAME.sln" + only: + - develop + needs: ["MON:build"] + script: + - dotnet test $env:APP_NAME/$env:APP_NAME.csproj LAND:IIS01:deploy: stage: deploy From 04d0b7e9a23f89fea7be95a6752646fb356627c3 Mon Sep 17 00:00:00 2001 From: Samuele Locatelli Date: Thu, 14 Apr 2022 13:13:51 +0200 Subject: [PATCH 25/29] Proseguo yaml parametrico --- .gitlab-ci.yml | 57 ++++++++++++++++++++++++++++++++++++++++++++------ 1 file changed, 51 insertions(+), 6 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 2f44b201..4a5baedc 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -188,48 +188,93 @@ LAND:IIS01:deploy: stage: deploy tags: - win + variables: + APP_NAME: MP.Land + SOL_NAME: MP-LAND + before_script: + - *nuget-fix + - dotnet restore "$env:SOL_NAME.sln" only: - develop needs: ["LAND:test"] script: - - dotnet publish -p:PublishProfile=IIS01.pubxml -p:RunCodeAnalysis=false -p:Configuration=Release -p:username=jenkins -p:Password=viadante16 -p:AllowUntrustedCertificate=true MP.Land/MP.Land.csproj + - dotnet publish -p:PublishProfile=IIS01.pubxml -p:RunCodeAnalysis=false -p:Configuration=Release -p:username=jenkins -p:Password=viadante16 -p:AllowUntrustedCertificate=true $env:APP_NAME/$env:APP_NAME.csproj PROG:IIS01:deploy: stage: deploy tags: - win + variables: + APP_NAME: MP.Prog + SOL_NAME: MP-PROG + before_script: + - *nuget-fix + - dotnet restore "$env:SOL_NAME.sln" only: - develop needs: ["PROG:test"] script: - - dotnet publish -p:PublishProfile=IIS01.pubxml -p:RunCodeAnalysis=false -p:Configuration=Release -p:username=jenkins -p:Password=viadante16 -p:AllowUntrustedCertificate=true MP.Prog/MP.Prog.csproj - + - dotnet publish -p:PublishProfile=IIS01.pubxml -p:RunCodeAnalysis=false -p:Configuration=Release -p:username=jenkins -p:Password=viadante16 -p:AllowUntrustedCertificate=true $env:APP_NAME/$env:APP_NAME.csproj STAT:IIS01:deploy: stage: deploy tags: - win + variables: + APP_NAME: MP.Stats + SOL_NAME: MP-STATS + before_script: + - *nuget-fix + - dotnet restore "$env:SOL_NAME.sln" only: - develop needs: ["STAT:test"] script: - - dotnet publish -p:PublishProfile=IIS01.pubxml -p:RunCodeAnalysis=false -p:Configuration=Release -p:username=jenkins -p:Password=viadante16 -p:AllowUntrustedCertificate=true MP.Stats/MP.Stats.csproj + - dotnet publish -p:PublishProfile=IIS01.pubxml -p:RunCodeAnalysis=false -p:Configuration=Release -p:username=jenkins -p:Password=viadante16 -p:AllowUntrustedCertificate=true $env:APP_NAME/$env:APP_NAME.csproj + +MON:IIS01:deploy: + stage: deploy + tags: + - win + variables: + APP_NAME: MP.Mon + SOL_NAME: MP-MON + before_script: + - *nuget-fix + - dotnet restore "$env:SOL_NAME.sln" + only: + - develop + needs: ["STAT:test"] + script: + - dotnet publish -p:PublishProfile=IIS01.pubxml -p:RunCodeAnalysis=false -p:Configuration=Release -p:username=jenkins -p:Password=viadante16 -p:AllowUntrustedCertificate=true $env:APP_NAME/$env:APP_NAME.csproj LAND:IIS02:deploy: stage: deploy tags: - win + variables: + APP_NAME: MP.Land + SOL_NAME: MP-LAND + before_script: + - *nuget-fix + - dotnet restore "$env:SOL_NAME.sln" only: - master needs: ["LAND:build"] script: - - dotnet publish -p:PublishProfile=IIS02.pubxml -p:RunCodeAnalysis=false -p:Configuration=Release -p:username=jenkins -p:Password=viadante16 -p:AllowUntrustedCertificate=true MP.Land/MP.Land.csproj - - dotnet publish -p:PublishProfile=W2019-IIS-DEVProfile.pubxml -p:RunCodeAnalysis=false -p:Configuration=Release -p:username=jenkins -p:Password=viadante16 -p:AllowUntrustedCertificate=true MP.Land/MP.Land.csproj + - dotnet publish -p:PublishProfile=IIS02.pubxml -p:RunCodeAnalysis=false -p:Configuration=Release -p:username=jenkins -p:Password=viadante16 -p:AllowUntrustedCertificate=true $env:APP_NAME/$env:APP_NAME.csproj + - dotnet publish -p:PublishProfile=IIS03.pubxml -p:RunCodeAnalysis=false -p:Configuration=Release -p:username=jenkins -p:Password=viadante16 -p:AllowUntrustedCertificate=true $env:APP_NAME/$env:APP_NAME.csproj PROG:IIS02:deploy: stage: deploy tags: - win + variables: + APP_NAME: MP.Prog + SOL_NAME: MP-PROG + before_script: + - *nuget-fix + - dotnet restore "$env:SOL_NAME.sln" only: - master needs: ["PROG:build"] From a296908697f69460202b452d1f155603ad89e2bb Mon Sep 17 00:00:00 2001 From: Samuele Locatelli Date: Thu, 14 Apr 2022 14:46:53 +0200 Subject: [PATCH 26/29] update yaml --- .gitlab-ci.yml | 104 +++++++++++++++++++++++++++++++++++-------------- 1 file changed, 75 insertions(+), 29 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 4a5baedc..afb3c0aa 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -244,7 +244,7 @@ MON:IIS01:deploy: - dotnet restore "$env:SOL_NAME.sln" only: - develop - needs: ["STAT:test"] + needs: ["MON:test"] script: - dotnet publish -p:PublishProfile=IIS01.pubxml -p:RunCodeAnalysis=false -p:Configuration=Release -p:username=jenkins -p:Password=viadante16 -p:AllowUntrustedCertificate=true $env:APP_NAME/$env:APP_NAME.csproj @@ -279,36 +279,60 @@ PROG:IIS02:deploy: - master needs: ["PROG:build"] script: - - dotnet publish -p:PublishProfile=IIS02.pubxml -p:RunCodeAnalysis=false -p:Configuration=Release -p:username=jenkins -p:Password=viadante16 -p:AllowUntrustedCertificate=true MP.Prog/MP.Prog.csproj - - dotnet publish -p:PublishProfile=W2019-IIS-DEVProfile.pubxml -p:RunCodeAnalysis=false -p:Configuration=Release -p:username=jenkins -p:Password=viadante16 -p:AllowUntrustedCertificate=true MP.Prog/MP.Prog.csproj + - dotnet publish -p:PublishProfile=IIS02.pubxml -p:RunCodeAnalysis=false -p:Configuration=Release -p:username=jenkins -p:Password=viadante16 -p:AllowUntrustedCertificate=true $env:APP_NAME/$env:APP_NAME.csproj + - dotnet publish -p:PublishProfile=IIS03.pubxml -p:RunCodeAnalysis=false -p:Configuration=Release -p:username=jenkins -p:Password=viadante16 -p:AllowUntrustedCertificate=true $env:APP_NAME/$env:APP_NAME.csproj STAT:IIS02:deploy: stage: deploy tags: - win + variables: + APP_NAME: MP.Stats + SOL_NAME: MP-STATS + before_script: + - *nuget-fix + - dotnet restore "$env:SOL_NAME.sln" only: - master needs: ["STAT:build"] script: - - dotnet publish -p:PublishProfile=IIS02.pubxml -p:RunCodeAnalysis=false -p:Configuration=Release -p:username=jenkins -p:Password=viadante16 -p:AllowUntrustedCertificate=true MP.Stats/MP.Stats.csproj - - dotnet publish -p:PublishProfile=W2019-IIS-DEVProfile.pubxml -p:RunCodeAnalysis=false -p:Configuration=Release -p:username=jenkins -p:Password=viadante16 -p:AllowUntrustedCertificate=true MP.Stats/MP.Stats.csproj + - dotnet publish -p:PublishProfile=IIS02.pubxml -p:RunCodeAnalysis=false -p:Configuration=Release -p:username=jenkins -p:Password=viadante16 -p:AllowUntrustedCertificate=true $env:APP_NAME/$env:APP_NAME.csproj + - dotnet publish -p:PublishProfile=IIS03.pubxml -p:RunCodeAnalysis=false -p:Configuration=Release -p:username=jenkins -p:Password=viadante16 -p:AllowUntrustedCertificate=true $env:APP_NAME/$env:APP_NAME.csproj + +MON:IIS02:deploy: + stage: deploy + tags: + - win + variables: + APP_NAME: MP.Mon + SOL_NAME: MP-MON + before_script: + - *nuget-fix + - dotnet restore "$env:SOL_NAME.sln" + only: + - master + needs: ["MON:test"] + script: + - dotnet publish -p:PublishProfile=IIS02.pubxml -p:RunCodeAnalysis=false -p:Configuration=Release -p:username=jenkins -p:Password=viadante16 -p:AllowUntrustedCertificate=true $env:APP_NAME/$env:APP_NAME.csproj + - dotnet publish -p:PublishProfile=IIS03.pubxml -p:RunCodeAnalysis=false -p:Configuration=Release -p:username=jenkins -p:Password=viadante16 -p:AllowUntrustedCertificate=true $env:APP_NAME/$env:APP_NAME.csproj LAND:installer: stage: installer tags: - win + variables: + APP_NAME: MP.Land + SOL_NAME: MP-LAND + NEXUS_PATH: MP-LAND + before_script: + - *nuget-fix + - dotnet restore "$env:SOL_NAME.sln" only: - develop - master needs: ["LAND:build"] - variables: - APP_NAME: MP.Land - NEXUS_PATH: MP-LAND - before_script: - # - *nuget-fix - # - dotnet restore script: - - dotnet publish -p:PublishProfile=IISProfile.pubxml -p:RunCodeAnalysis=false -p:Configuration=Release MP.Land/MP.Land.csproj -o:publish + - dotnet publish -p:PublishProfile=IISProfile.pubxml -p:RunCodeAnalysis=false -p:Configuration=Release $env:APP_NAME/$env:APP_NAME.csproj -o:publish # qui il deploy su nexus... - *hashBuild - *nexusUpload @@ -317,18 +341,19 @@ PROG:installer: stage: installer tags: - win + variables: + APP_NAME: MP.Prog + SOL_NAME: MP-PROG + NEXUS_PATH: MP-PROG + before_script: + - *nuget-fix + - dotnet restore "$env:SOL_NAME.sln" only: - develop - master needs: ["PROG:build"] - variables: - APP_NAME: MP.Prog - NEXUS_PATH: MP-PROG - before_script: - # - *nuget-fix - # - dotnet restore script: - - dotnet publish -p:PublishProfile=IISProfile.pubxml -p:RunCodeAnalysis=false -p:Configuration=Release MP.Prog/MP.Prog.csproj -o:publish + - dotnet publish -p:PublishProfile=IISProfile.pubxml -p:RunCodeAnalysis=false -p:Configuration=Release $env:APP_NAME/$env:APP_NAME.csproj -o:publish # qui il deploy su nexus... - *hashBuild - *nexusUpload @@ -337,22 +362,43 @@ STAT:installer: stage: installer tags: - win + variables: + APP_NAME: MP.Stats + SOL_NAME: MP-STATS + NEXUS_PATH: MP-STATS + before_script: + - *nuget-fix + - dotnet restore "$env:SOL_NAME.sln" only: - develop - master needs: ["STAT:build"] - variables: - APP_NAME: MP.Stats - NEXUS_PATH: MP-STATS - before_script: - # - *nuget-fix - # - dotnet restore script: - - dotnet publish -p:PublishProfile=IISProfile.pubxml -p:RunCodeAnalysis=false -p:Configuration=Release MP.Stats/MP.Stats.csproj -o:publish + - dotnet publish -p:PublishProfile=IISProfile.pubxml -p:RunCodeAnalysis=false -p:Configuration=Release $env:APP_NAME/$env:APP_NAME.csproj -o:publish + # qui il deploy su nexus... + - *hashBuild + - *nexusUpload + +MON:installer: + stage: installer + tags: + - win + variables: + APP_NAME: MP.Mon + SOL_NAME: MP-MON + NEXUS_PATH: MP-MON + before_script: + - *nuget-fix + - dotnet restore "$env:SOL_NAME.sln" + only: + - develop + - master + needs: ["MON:build"] + script: + - dotnet publish -p:PublishProfile=IISProfile.pubxml -p:RunCodeAnalysis=false -p:Configuration=Release $env:APP_NAME/$env:APP_NAME.csproj -o:publish # qui il deploy su nexus... - *hashBuild - *nexusUpload - LAND:release: stage: release @@ -387,7 +433,7 @@ PROG:release: paths: - publish/ script: - - dotnet publish -c Release -o ./publish MP.Prog/MP.Prog.csproj + - dotnet publish -c Release -o ./publish $env:APP_NAME/$env:APP_NAME.csproj STAT:release: @@ -405,6 +451,6 @@ STAT:release: paths: - publish/ script: - - dotnet publish -c Release -o ./publish MP.Stats/MP.Stats.csproj + - dotnet publish -c Release -o ./publish $env:APP_NAME/$env:APP_NAME.csproj From edad6f24c0729d840526dd4c247b279bc4c5f52c Mon Sep 17 00:00:00 2001 From: Samuele Locatelli Date: Thu, 14 Apr 2022 14:50:57 +0200 Subject: [PATCH 27/29] Completato yaml da testare --- .gitlab-ci.yml | 49 ++++++++++++++++++++++++++++--- MP.Stats/MP.Stats.csproj | 2 +- MP.Stats/Resources/ChangeLog.html | 2 +- MP.Stats/Resources/VersNum.txt | 2 +- MP.Stats/Resources/manifest.xml | 2 +- 5 files changed, 49 insertions(+), 8 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index afb3c0aa..2efa6b1a 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -404,6 +404,13 @@ LAND:release: stage: release tags: - win + variables: + APP_NAME: MP.Land + SOL_NAME: MP-LAND + NEXUS_PATH: MP-LAND + before_script: + - *nuget-fix + - dotnet restore "$env:SOL_NAME.sln" only: #- feature/Deploy_CI_CD # - master @@ -415,13 +422,19 @@ LAND:release: paths: - publish/ script: - - dotnet publish -c Release -o ./publish MP.Land/MP.Land.csproj - + - dotnet publish -c Release -o ./publish $env:APP_NAME/$env:APP_NAME.csproj PROG:release: stage: release tags: - win + variables: + APP_NAME: MP.Prog + SOL_NAME: MP-PROG + NEXUS_PATH: MP-PROG + before_script: + - *nuget-fix + - dotnet restore "$env:SOL_NAME.sln" only: #- feature/Deploy_CI_CD # - master @@ -435,11 +448,17 @@ PROG:release: script: - dotnet publish -c Release -o ./publish $env:APP_NAME/$env:APP_NAME.csproj - STAT:release: stage: release tags: - win + variables: + APP_NAME: MP.Stats + SOL_NAME: MP-STATS + NEXUS_PATH: MP-STATS + before_script: + - *nuget-fix + - dotnet restore "$env:SOL_NAME.sln" only: #- feature/Deploy_CI_CD # - master @@ -453,4 +472,26 @@ STAT:release: script: - dotnet publish -c Release -o ./publish $env:APP_NAME/$env:APP_NAME.csproj - +MON:release: + stage: release + tags: + - win + variables: + APP_NAME: MP.Mon + SOL_NAME: MP-MON + NEXUS_PATH: MP-MON + before_script: + - *nuget-fix + - dotnet restore "$env:SOL_NAME.sln" + only: + #- feature/Deploy_CI_CD + # - master + - tags + except: + - branches + needs: ["MON:build"] + artifacts: + paths: + - publish/ + script: + - dotnet publish -c Release -o ./publish $env:APP_NAME/$env:APP_NAME.csproj diff --git a/MP.Stats/MP.Stats.csproj b/MP.Stats/MP.Stats.csproj index c783fca0..229cb1f7 100644 --- a/MP.Stats/MP.Stats.csproj +++ b/MP.Stats/MP.Stats.csproj @@ -4,7 +4,7 @@ net6.0 MP.Stats 826e877c-ba70-4253-84cb-d0b1cafd4440 - 6.15.2204.1412 + 6.15.2204.1414 diff --git a/MP.Stats/Resources/ChangeLog.html b/MP.Stats/Resources/ChangeLog.html index b1f2a36a..6bff319c 100644 --- a/MP.Stats/Resources/ChangeLog.html +++ b/MP.Stats/Resources/ChangeLog.html @@ -1,6 +1,6 @@ Modulo statistiche MAPO -

    Versione: 6.15.2204.1412

    +

    Versione: 6.15.2204.1414


    Note di rilascio:
      diff --git a/MP.Stats/Resources/VersNum.txt b/MP.Stats/Resources/VersNum.txt index 00d0ab40..6cce0e03 100644 --- a/MP.Stats/Resources/VersNum.txt +++ b/MP.Stats/Resources/VersNum.txt @@ -1 +1 @@ -6.15.2204.1412 +6.15.2204.1414 diff --git a/MP.Stats/Resources/manifest.xml b/MP.Stats/Resources/manifest.xml index 0a74e43e..0455729b 100644 --- a/MP.Stats/Resources/manifest.xml +++ b/MP.Stats/Resources/manifest.xml @@ -1,6 +1,6 @@ - 6.15.2204.1412 + 6.15.2204.1414 https://nexus.steamware.net/repository/SWS/MP-STATS/stable/LAST/MP.Stats.zip https://nexus.steamware.net/repository/SWS/MP-STATS/stable/LAST/ChangeLog.html false From f47cc1f5059fc7e1654301199d06ad2441061219 Mon Sep 17 00:00:00 2001 From: Samuele Locatelli Date: Thu, 14 Apr 2022 14:58:26 +0200 Subject: [PATCH 28/29] Aggiunta dir resources --- MP.Mon/Resources/ChangeLog-original.html | 25 +++++++++++++++++++++ MP.Mon/Resources/ChangeLog.html | 27 +++++++++++++++++++++++ MP.Mon/Resources/VersNum.txt | 1 + MP.Mon/Resources/logoSteamware.png | Bin 0 -> 3402 bytes MP.Mon/Resources/manifest-original.xml | 7 ++++++ MP.Mon/Resources/manifest.xml | 7 ++++++ 6 files changed, 67 insertions(+) create mode 100644 MP.Mon/Resources/ChangeLog-original.html create mode 100644 MP.Mon/Resources/ChangeLog.html create mode 100644 MP.Mon/Resources/VersNum.txt create mode 100644 MP.Mon/Resources/logoSteamware.png create mode 100644 MP.Mon/Resources/manifest-original.xml create mode 100644 MP.Mon/Resources/manifest.xml diff --git a/MP.Mon/Resources/ChangeLog-original.html b/MP.Mon/Resources/ChangeLog-original.html new file mode 100644 index 00000000..04abd704 --- /dev/null +++ b/MP.Mon/Resources/ChangeLog-original.html @@ -0,0 +1,25 @@ + + Modulo MON MAPO +

      Versione: {{CURRENT-REL}}

      +
      Note di rilascio: +
        +
      • + Ultime modifiche: +
          {{LAST-CHANGES}}
        +
      • +
      • + v.6.15.* → +
          +
        • Prima release dotnet6
        • +
        +
      • +
      +
      +
      + +
      + +
      + \ No newline at end of file diff --git a/MP.Mon/Resources/ChangeLog.html b/MP.Mon/Resources/ChangeLog.html new file mode 100644 index 00000000..6bff319c --- /dev/null +++ b/MP.Mon/Resources/ChangeLog.html @@ -0,0 +1,27 @@ + + Modulo statistiche MAPO +

      Versione: 6.15.2204.1414

      +
      + Note di rilascio: +
        +
      • + Ultime modifiche: +
          {{LAST-CHANGES}}
        +
      • +
      • + v.1.* → +
          +
        • Prima release dotnet5
        • +
        • Integrazione EFCore
        • +
        +
      • +
      +
      +
      + +
      + +
      + diff --git a/MP.Mon/Resources/VersNum.txt b/MP.Mon/Resources/VersNum.txt new file mode 100644 index 00000000..6cce0e03 --- /dev/null +++ b/MP.Mon/Resources/VersNum.txt @@ -0,0 +1 @@ +6.15.2204.1414 diff --git a/MP.Mon/Resources/logoSteamware.png b/MP.Mon/Resources/logoSteamware.png new file mode 100644 index 0000000000000000000000000000000000000000..0958b50a1ee7f6a934e26cf55e2335d4cea6aa82 GIT binary patch literal 3402 zcmV-Q4Yl%#P)Kpl00004XF*Lt006O% z3;baP00009a7bBm000ia000ia0czHX2><{98FWQhbW?9;ba!ELWdKlNX>N2bPDNB8 zb~7$DE;85dX+r=2497`CK~#8N?VEXYRMi>4lgUh$nd~9N?8#&%lgvKZ7a%JLgb=8< zJ+;y z?+!1~Kq%Ee{3ChaIrqG~eD}UL@B6*)`|g{Wuy0Bd19D`vPgk>EW=B z{upI=m_+%c`RJTNcSmx!oT+rHqRMcI3&>_bIUd#}ol(j`U6)j)3=b3Z<}?0@#w%?H z#_YW32Q(?Y!Ej|*6;;kkq)##e$!CL50nS0aZ)B+OVzHEO83M9f=aaHy{L*~p*BJb= z3YIEgNJ6(98R3HyIED%LNjMf>C*1JAO!fMiKO#~X!rN)hNTWX{LH_1E-X zIXbg97@xsWQBh^AOV-+8RFqe;>b(6{z|ad11Te>h=K`|cc)ygasGgOM{&1aFY5~S= zK)yfDTZW1Jo%2 z6=gF<&*Yd!aZn6GFSSS3qL-2okYmC+B@YnpB7t8GSZM%S8snD}Lks>7AulTh+BaD9 zDD(S)^XmL{vQ`;ZWi$yPuarFNC5+uinH%GiV*%!m)b|3|yd=LIF^;ea6ger~a#Td8 z6iFU7MempFF>sk?yS5Rm+gP-v$9GGl8Zy;3$FXBH&{ z&Y+OHrA7JVP7ziKn{VOeTrocB2G%?|2o?Q-#DJ8fOi^Vt%lIBygSToVq}_}+DgY1z z06YQ+$AId7U@`&AE5Owe>zBqU(}oH9<>^^)K|`P$how5o<%?;;mO_vDm@|3810uX!=sgjb@rQ6#lTPR?EzbO2Q=Ugslnp{IfBf?iASlW##s>=HMm z_nx08jT5gU0+LQ?sxlS@FZCD+_J5MPJl)`hgMRZ-;&(feibi-X1FLr(LCV8}Bi1mtf6&8A47ya>P|MPG8aY{omi9v_fra?E19 zf;sA2a#e;)YL6T@zE>`f^_|_l4GJEr1MhVPkFs~z0VPJVk=?)3GRU>`R0oUC0UU}%9ldiM>yf1^xJ*AP3Vq3Y*Qq*4Ra<42h z7cO+!9Ud_@p{hnx;&i7L8ViR12vC*LDZrF~Hwxubz_m{44oT7aV0cfBRJSE3bY<-UYc_C$0M!9rK;UwO9hJZYm9BJ70 zpB>?J%0^%lzw|6ty3dmp_udy#Y_>daDKH%>GMV#=&4p1Ohcl(r?J*P|lL+nY$!yQtiZu>Wa!lK(^u~Z8eouaYDCcT8qB9p)tFuz9FZv zu0E9e(M}cZDNW63*Up`%nK5m8?4V9lUA^Jb<|(?$vhpk*1iLxk=qPo0jHT|9p=+z3 zRA=BCj24sGQIMPG;B$mLFxMOHb~sI9PGxCX&dk=C7yO!QOv=O;2gIv`%_66woC2)7 zVlMF8^55LIA`+N3b2Iniu@W)((92E?pNrS}Gh-((!27_prOZ>Rt)Dn4#%*^jX6#kQ zb^ymK=*|H|9YBTy<^z@j^ESq|7aC1Ftc8|GSa-ZwlfG*xn<#Gr-9K34MXRM~Dc8_T z-%k48Wd7rByE6}fE2wW|?C(yi?I%;3Cr5D&t3;bMpQx>>NpsrlSD^D6eShPcCUYHk zvZgrqZmxL`^*7MHt*X2tp7Xf5)(+9fdG;{g2Y^jHEUCc!2oK0EF^BeR=-%vcx<>qO z<(QNSFC7to(|TEf>LgGt{qp;&bH!e4UBu1&n42Bo32rGaw1hkhPrspV!o)e;V2QrR zn(7*+;R&=D_&QU*aUb*MRhL&5VW>MW(qRldQOx71p8;U?lWJ~EE}xE?Fe-NpI#(%wROhqX>qj?mwhmzCXyZcx!birzuImX+hvO5cY9Ec8!M zP6Fdq&5h0KHwuHoPOp)j-x`fqS`izN%}V!(!p%$J#{QHWxsUPzPwHcUQzXU+FD{IA z(3F?ANVEwN3Fxi^hSeo*Pa5qc#%t-@NBC-QZJ7}ch+2S10s=Fj%wRo{tF?>y0xHU< zqAmnjS{Oe#p{hCr-Nf37(HQtWpz}_su8C&+Nnvo--_DwCtRtZKoa1p|zmo9{Vw^R4 zN?h(Ft|uS3r&7MhoE7LDQS@*8GE`jKN_0x?Mb>&?;`8Mn1L)iMEOpfTgbtt4Us+b6 zdMhEGjX_PkPfkzoku&TYga21BgCPO(1ozl-i^ z=A2~Rw`dFRCgzGcTPUIYZcK~#u8+`n8#}|@c&R?>*F|+nQOfW|g&f0xVV>b;?kB{h zoeLE={St2aRt&J2oZ~9OTLoUtgi$j%>aB%ERm?jKY)hOrTP`{d#zg+|wV)!5S~0l9 zIgg^ZhvNX(^AN{RX}?Vop=tmRRS#qp)Pt0hoWGOy?bHu*jtfFXJ~oT>LlE)VKHzh0 zq;D0UnmAVth`T7al2WV5Y;mw8qPK@|APxkMD<|&M@ z8LwrnsjSY&Q}qGLRzhhzV=Jf&PqSE@@2f&pT~VQB?Yq%CB@E9wH~&j|;>9CSBvE}{Dwz^d_n(7;c zr?rXe;u^djhg0Nr&vNd?^jWggGpwxLF6LF0S2l$fN6?8vrp9kk&HU@PK gb@ksMRAFKN1+dqwbM3SFTL1t607*qoM6N<$g3&)|djJ3c literal 0 HcmV?d00001 diff --git a/MP.Mon/Resources/manifest-original.xml b/MP.Mon/Resources/manifest-original.xml new file mode 100644 index 00000000..f95e0763 --- /dev/null +++ b/MP.Mon/Resources/manifest-original.xml @@ -0,0 +1,7 @@ + + + 1.0.0.0 + https://nexus.steamware.net/repository/SWS/{{DIRNAME}}/{{BRANCHNAME}}/{{PACKNAME}}.zip + https://nexus.steamware.net/repository/SWS/{{DIRNAME}}/{{BRANCHNAME}}/ChangeLog.html + false + diff --git a/MP.Mon/Resources/manifest.xml b/MP.Mon/Resources/manifest.xml new file mode 100644 index 00000000..0455729b --- /dev/null +++ b/MP.Mon/Resources/manifest.xml @@ -0,0 +1,7 @@ + + + 6.15.2204.1414 + https://nexus.steamware.net/repository/SWS/MP-STATS/stable/LAST/MP.Stats.zip + https://nexus.steamware.net/repository/SWS/MP-STATS/stable/LAST/ChangeLog.html + false + From d99f2d2144cd1e0e0aab0b2f0250997c7727d510 Mon Sep 17 00:00:00 2001 From: Samuele Locatelli Date: Thu, 14 Apr 2022 16:19:42 +0200 Subject: [PATCH 29/29] Update display grafico testi MON --- MP.Mon/Components/DetailMSE.razor | 13 +++-- MP.Mon/Components/DetailMSE.razor.cs | 5 +- MP.Mon/wwwroot/css/site.css | 71 ++++++++++++++++++++++- MP.Mon/wwwroot/css/site.less | 87 +++++++++++++++++++++++++++- MP.Mon/wwwroot/css/site.min.css | 2 +- 5 files changed, 166 insertions(+), 12 deletions(-) diff --git a/MP.Mon/Components/DetailMSE.razor b/MP.Mon/Components/DetailMSE.razor index 72b3ec44..b51ef88c 100644 --- a/MP.Mon/Components/DetailMSE.razor +++ b/MP.Mon/Components/DetailMSE.razor @@ -9,8 +9,8 @@
      @CurrRecord.Nome
      -
      -
      Art.
      +
      +
      Art
      @if (showArt == "CodArticolo") { @@ -33,14 +33,17 @@
      @CurrRecord.DescrizioneStato
      @getMinSec((decimal)CurrRecord.Durata)
      -
      +
      @*
      OEE
      xx%
      *@ -
      T.Ciclo
      +
      TCiclo
      std: @getMinSec(@CurrRecord.TCAssegnato)
      act: @getMinSec(@CurrRecord.TCLavRT)
      -
      +
      + @*
      Pezzi
      +
      prod: @CurrRecord.PezziProd
      +
      ord: @CurrRecord.NumPezzi
      *@
      Pezzi(prod/ord)
      @CurrRecord.PezziProd / @CurrRecord.NumPezzi
      diff --git a/MP.Mon/Components/DetailMSE.razor.cs b/MP.Mon/Components/DetailMSE.razor.cs index aea3fddd..dcc63554 100644 --- a/MP.Mon/Components/DetailMSE.razor.cs +++ b/MP.Mon/Components/DetailMSE.razor.cs @@ -38,8 +38,9 @@ namespace MP.Mon.Components private string cssStatus(string codSemaforo) { - string answ= $"{baseCss}{codSemaforo.Substring(1, 2)}"; - if (doAnimate) + string codColore = codSemaforo.Substring(1, 2); + string answ = $"{baseCss}{codColore}"; + if (doAnimate && codColore != "Ve") { // blink se secondo pari... DateTime adesso = DateTime.Now; diff --git a/MP.Mon/wwwroot/css/site.css b/MP.Mon/wwwroot/css/site.css index 8cb8ed3e..77ec9693 100644 --- a/MP.Mon/wwwroot/css/site.css +++ b/MP.Mon/wwwroot/css/site.css @@ -22,7 +22,7 @@ html, body { /*font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif;*/ font-family: 'Roboto Condensed', sans-serif; - line-height: 1.3; + line-height: 1.25; background-image: linear-gradient(180deg, #010816 20%, #3aa6ff 90%); background-size: auto 100%; background-repeat: no-repeat; @@ -149,7 +149,7 @@ a, font-size: 0.6em; } .statusMap { - background: rgba(0, 0, 0, 0.4); + /*background: rgba(0,0,0,0.3);*/ } .statusMap .ui-title, .statusMap .ui-li-aside { @@ -304,4 +304,71 @@ a, -o-animation: blinkBack 2s ease infinite; animation: blinkBack 2s ease infinite; color: Yellow; +} +/* Gestione size caratteri */ +.mainHead, +.logoImg { + height: 1.6em; +} +@media all and (min-width: 425px) { + .mainHead { + font-size: 1.3em; + } + body { + font-size: 0.8em; + } + .logoImg { + height: 30px; + } +} +@media all and (min-width: 768px) { + .mainHead { + font-size: 1.4em; + } + body { + font-size: 1em; + } + .logoImg { + height: 35px; + } +} +@media all and (min-width: 800px) { + body { + font-size: 0.6em; + } +} +@media all and (min-width: 1024px) { + body { + font-size: 0.7em; + } +} +@media all and (min-width: 1280px) { + body { + font-size: 0.8em; + } +} +@media all and (min-width: 1440px) { + body { + font-size: 1em; + } +} +@media all and (min-width: 1680px) { + body { + font-size: 1.1em; + } +} +@media all and (min-width: 1920px) { + body { + font-size: 1.3em; + } +} +@media all and (min-width: 2560px) { + body { + font-size: 3em; + } +} +@media all and (max-width: 425px) { + body { + font-size: 0.7em; + } } \ No newline at end of file diff --git a/MP.Mon/wwwroot/css/site.less b/MP.Mon/wwwroot/css/site.less index 030e27e5..14591c1a 100644 --- a/MP.Mon/wwwroot/css/site.less +++ b/MP.Mon/wwwroot/css/site.less @@ -13,7 +13,7 @@ html, body { html, body { /*font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif;*/ font-family: 'Roboto Condensed', sans-serif; - line-height: 1.3; + line-height: 1.25; background-image: linear-gradient(180deg, rgb(1, 8, 22) 20%, #3aa6ff 90%); background-size: auto 100%; background-repeat: no-repeat; @@ -154,7 +154,7 @@ a, .btn-link { } .statusMap { - background: rgba(0,0,0,0.4); + /*background: rgba(0,0,0,0.3);*/ } .statusMap .ui-title, .statusMap .ui-li-aside { @@ -336,3 +336,86 @@ a, .btn-link { animation: blinkBack 2s ease infinite; color: Yellow; } + + +/* Gestione size caratteri */ +.mainHead, +.logoImg { + height: 1.6em; +} + +@media all and (min-width: 425px) { + .mainHead { + font-size: 1.3em; + } + + body { + font-size: 0.8em; + } + + .logoImg { + height: 30px; + } +} + +@media all and (min-width: 768px) { + .mainHead { + font-size: 1.4em; + } + + body { + font-size: 1em; + } + + .logoImg { + height: 35px; + } +} + +@media all and (min-width: 800px) { + body { + font-size: 0.6em; + } +} + +@media all and (min-width: 1024px) { + body { + font-size: 0.7em; + } +} + +@media all and (min-width: 1280px) { + body { + font-size: 0.8em; + } +} + +@media all and (min-width: 1440px) { + body { + font-size: 1.0em; + } +} + +@media all and (min-width: 1680px) { + body { + font-size: 1.1em; + } +} + +@media all and (min-width: 1920px) { + body { + font-size: 1.3em; + } +} + +@media all and (min-width: 2560px) { + body { + font-size: 3.0em; + } +} + +@media all and (max-width: 425px) { + body { + font-size: 0.7em; + } +} \ No newline at end of file diff --git a/MP.Mon/wwwroot/css/site.min.css b/MP.Mon/wwwroot/css/site.min.css index a4012bea..569615cf 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(0,0,0,.4);}.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 +@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.25;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 .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;}.mainHead,.logoImg{height:1.6em;}@media all and (min-width:425px){.mainHead{font-size:1.3em;}body{font-size:.8em;}.logoImg{height:30px;}}@media all and (min-width:768px){.mainHead{font-size:1.4em;}body{font-size:1em;}.logoImg{height:35px;}}@media all and (min-width:800px){body{font-size:.6em;}}@media all and (min-width:1024px){body{font-size:.7em;}}@media all and (min-width:1280px){body{font-size:.8em;}}@media all and (min-width:1440px){body{font-size:1em;}}@media all and (min-width:1680px){body{font-size:1.1em;}}@media all and (min-width:1920px){body{font-size:1.3em;}}@media all and (min-width:2560px){body{font-size:3em;}}@media all and (max-width:425px){body{font-size:.7em;}} \ No newline at end of file