diff --git a/MP.Data/Controllers/MpSpecController.cs b/MP.Data/Controllers/MpSpecController.cs index f5cc5192..1eddded3 100644 --- a/MP.Data/Controllers/MpSpecController.cs +++ b/MP.Data/Controllers/MpSpecController.cs @@ -403,6 +403,43 @@ namespace MP.Data.Controllers return answ; } + /// + /// Update ddel campo VALORE di un dossier (che contiene json flux log serializzati) + /// + /// record dossier da modificare + /// + public async Task DossiersUpdateValore(Dossiers editRec) + { + bool fatto = false; + using (var dbCtx = new MoonProContext(_configuration)) + { + try + { + var currRec = dbCtx + .DbSetDossiers + .Where(x => x.IdxDossier == editRec.IdxDossier) + .FirstOrDefault(); + if (currRec != null) + { + currRec.Valore= editRec.Valore; + dbCtx.Entry(currRec).State = EntityState.Modified; + } + else + { + dbCtx + .DbSetDossiers + .Add(editRec); + } + await dbCtx.SaveChangesAsync(); + fatto = true; + } + catch (Exception exc) + { + Log.Error($"Eccezione durante DossiersUpdateRecord{Environment.NewLine}{exc}"); + } + } + return fatto; + } /// /// Elenco valori link (x home e navMenu laterale) /// diff --git a/MP.Data/DTO/DossierFluxLogDTO.cs b/MP.Data/DTO/DossierFluxLogDTO.cs index 67cecb73..ed804309 100644 --- a/MP.Data/DTO/DossierFluxLogDTO.cs +++ b/MP.Data/DTO/DossierFluxLogDTO.cs @@ -13,6 +13,10 @@ namespace MP.Data.DTO { public class DossierFluxLogDTO { - public List ODL { get; set; } = new List(); + /// + /// Elenco valori FluxLogDTO serializzato (compreso valori edit) + /// + public List ODL { get; set; } = new List(); + } } diff --git a/MP.Data/DTO/FluxLogDTO.cs b/MP.Data/DTO/FluxLogDTO.cs new file mode 100644 index 00000000..b36a12bb --- /dev/null +++ b/MP.Data/DTO/FluxLogDTO.cs @@ -0,0 +1,23 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel.DataAnnotations; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace MP.Data.DTO +{ + public class FluxLogDTO + { + public string IdxMacchina { get; set; } + + public DateTime dtEvento { get; set; } + + public string CodFlux { get; set; } + + public string Valore { get; set; } + + public string ValoreEdit { get; set; } + + } +} diff --git a/MP.Data/Utils.cs b/MP.Data/Utils.cs index 6f3ee38d..555607d8 100644 --- a/MP.Data/Utils.cs +++ b/MP.Data/Utils.cs @@ -90,6 +90,21 @@ namespace MP.Data return endRounded; } + public static string FormDurata(double durataMinuti) + { + string answ = ""; + TimeSpan tsDurata = TimeSpan.FromMinutes(durataMinuti); + if (tsDurata.TotalDays < 1) + { + answ = $"{tsDurata.Hours:00}h {tsDurata.Minutes:00}'"; + } + else + { + answ = $"{tsDurata.Days}gg {tsDurata.Hours:00}h"; + } + return answ; + } + #endregion Public Methods } } \ No newline at end of file diff --git a/MP.SPEC/Components/Chart/Doughnut.razor.cs b/MP.SPEC/Components/Chart/Doughnut.razor.cs index 49abb269..52b21dc9 100644 --- a/MP.SPEC/Components/Chart/Doughnut.razor.cs +++ b/MP.SPEC/Components/Chart/Doughnut.razor.cs @@ -1,6 +1,7 @@ using Microsoft.AspNetCore.Components; using Microsoft.JSInterop; using MP.Data; +using static System.Net.Mime.MediaTypeNames; namespace MP.SPEC.Components.Chart { @@ -17,8 +18,8 @@ namespace MP.SPEC.Components.Chart Doughnut } - [Parameter] - public string Id { get; set; } + //[Parameter] + public string Id { get; set; } = "myChart"; [Parameter] public ChartType Type { get; set; } @@ -40,22 +41,14 @@ namespace MP.SPEC.Components.Chart Options = new { Responsive = true, - Scales = new - { - YAxes = new[] - { - new { Ticks = new { - BeginAtZero=true - } } - } - } }, Data = new { Datasets = new[] { - new { Data = Data, BackgroundColor = BackgroundColor} - }, + new { Data = Data, BackgroundColor = BackgroundColor + } +}, Labels = Labels } }; diff --git a/MP.SPEC/Components/DossiersFilter.razor.cs b/MP.SPEC/Components/DossiersFilter.razor.cs index 94174e12..49456daf 100644 --- a/MP.SPEC/Components/DossiersFilter.razor.cs +++ b/MP.SPEC/Components/DossiersFilter.razor.cs @@ -1,5 +1,4 @@ using Microsoft.AspNetCore.Components; -using MP.Data.DatabaseModels; using MP.SPEC.Data; namespace MP.SPEC.Components @@ -14,8 +13,6 @@ namespace MP.SPEC.Components [Parameter] public SelectDossierParams SelFilterDossier { get; set; } = null!; - protected bool showParam { get; set; } = false; - #endregion Public Properties #region Protected Properties @@ -23,6 +20,25 @@ namespace MP.SPEC.Components [Inject] protected MpDataService MDService { get; set; } = null!; + protected string selArticolo + { + get + { + return SelFilterDossier.CodArticolo; + } + set + { + if (!SelFilterDossier.CodArticolo.Equals(value)) + { + SelFilterDossier.CurrPage = 1; + SelFilterDossier.CodArticolo = value; + StateHasChanged(); + Task.Delay(1); + reportChange(); + } + } + } + protected DateTime selDtRef { get @@ -39,7 +55,6 @@ namespace MP.SPEC.Components } } } - protected string selMacchina { @@ -60,25 +75,6 @@ namespace MP.SPEC.Components } } - protected string selArticolo - { - get - { - return SelFilterDossier.CodArticolo; - } - set - { - if (!SelFilterDossier.CodArticolo.Equals(value)) - { - SelFilterDossier.CurrPage = 1; - SelFilterDossier.CodArticolo = value; - StateHasChanged(); - Task.Delay(1); - reportChange(); - } - } - } - protected int selMaxRecord { get @@ -96,6 +92,8 @@ namespace MP.SPEC.Components } } + protected bool showParam { get; set; } = false; + #endregion Protected Properties #region Protected Methods @@ -105,9 +103,6 @@ namespace MP.SPEC.Components SelFilterDossier = new SelectDossierParams(); ListMacchine = await MDService.MacchineWithFlux(); ListArticoli = await MDService.ArticleWithDossier(); -#if false - ListDossier = await MDService.DossiersGetLastFilt(selMacchina, selArticolo, selDtRef, selMaxRecord); -#endif await FilterChanged.InvokeAsync(SelFilterDossier); } @@ -120,12 +115,8 @@ namespace MP.SPEC.Components #region Private Fields -#if false - private List? ListDossier = null; -#endif - private List? ListMacchine = null; - private List? ListArticoli = null; + private List? ListMacchine = null; #endregion Private Fields diff --git a/MP.SPEC/Components/ListDossiers.razor b/MP.SPEC/Components/ListDossiers.razor index 3fe9e652..1728533c 100644 --- a/MP.SPEC/Components/ListDossiers.razor +++ b/MP.SPEC/Components/ListDossiers.razor @@ -22,7 +22,7 @@ else Articolo Fase Macchina - Data + Data Snap ODL @* DATA TYPE*@ @@ -53,10 +53,11 @@ else @record.IdxODL @* - @record.DataType - *@ + @record.DataType + *@ - + + } @@ -74,16 +75,26 @@ else + - + @foreach (var record in listaFlux) { + @@ -94,7 +105,8 @@ else @record.CodFlux } @@ -110,3 +122,5 @@ else + + diff --git a/MP.SPEC/Components/ListDossiers.razor.cs b/MP.SPEC/Components/ListDossiers.razor.cs index fdb5c4e4..4fde0b3a 100644 --- a/MP.SPEC/Components/ListDossiers.razor.cs +++ b/MP.SPEC/Components/ListDossiers.razor.cs @@ -1,6 +1,7 @@ using Microsoft.AspNetCore.Components; using Microsoft.JSInterop; using MP.Data.DatabaseModels; +using MP.Data.DTO; using MP.SPEC.Data; namespace MP.SPEC.Components @@ -12,6 +13,9 @@ namespace MP.SPEC.Components [Parameter] public EventCallback RecordSel { get; set; } + [Parameter] + public EventCallback RecordSelFlux { get; set; } + [Parameter] public SelectDossierParams SelFilter { get; set; } = null!; @@ -67,20 +71,33 @@ namespace MP.SPEC.Components var done = await MDService.DossiersDeleteRecord(selRec); currRecord = null; await reloadData(true); + visualizzaFlux = true; await Task.Delay(1); } + protected async Task editRecord(FluxLogDTO selRec) + { + // indico record selezionato + await RecordSelFlux.InvokeAsync(selRec); + } + + protected string findRec(FluxLog record) + { + string answ = ""; +#if false + if (ListRecordsMod != null) + { + answ = ListRecordsMod.Where(l => l.IdxMacchina == record.IdxMacchina && l.CodFlux == record.CodFlux).Select(x => x.Valore).SingleOrDefault(); + } +#endif + return answ; + } + protected override async Task OnInitializedAsync() { MessageService.EA_PageUpdated += MessageService_EA_PageUpdated; MessageService.EA_SearchUpdated += OnSeachUpdated; - ListStati = await MDService.AnagStatiComm(); - -#if false - ListRecords = await MDService.DossiersGetLastFilt(SelMacchina, SelArticolo, SelDtRef, MaxRecord); -#endif - await reloadData(true); } @@ -97,7 +114,7 @@ namespace MP.SPEC.Components { currRecord = selRec; await RecordSel.InvokeAsync(selRec); - listaFlux = MDService.convertToFluxLog(selRec.Valore); + listaFlux = MDService.getFluxLog(selRec.Valore); await toggleTableFlux(); } @@ -115,8 +132,8 @@ namespace MP.SPEC.Components private Dossiers? currRecord = null; + private FluxLogDTO? currRecordFlux; private List? ListRecords; - private List? ListStati; private List? SearchRecords; @@ -133,7 +150,7 @@ namespace MP.SPEC.Components private bool isLoading { get; set; } = false; - private List? listaFlux { get; set; } = null; + private List? listaFlux { get; set; } = null; private int MaxRecord { @@ -199,19 +216,6 @@ namespace MP.SPEC.Components isLoading = false; } -#if false - private async Task reloadData() - { - isLoading = true; - SearchRecords = await MDService.DossiersGetLastFilt(SelMacchina, SelArticolo, SelDtRef, MaxRecord); - totalCount = SearchRecords.Count; - ListRecords = SearchRecords.Skip(numRecord * (currPage - 1)).Take(numRecord).ToList(); - await Task.Delay(1); - await InvokeAsync(() => StateHasChanged()); - isLoading = false; - } -#endif - private async Task toggleTableFlux() { visualizzaFlux = false; diff --git a/MP.SPEC/Components/ListODL.razor b/MP.SPEC/Components/ListODL.razor index 08e70a35..0a1ecb65 100644 --- a/MP.SPEC/Components/ListODL.razor +++ b/MP.SPEC/Components/ListODL.razor @@ -86,101 +86,146 @@ else -
Macchina Data Data Type Valore +
+ Valore + + +
+
+ + @record.IdxMacchina - @record.Valore +
Modificato: @record.ValoreEdit
+
Originale: @record.Valore
- - - - - - - - - - - - - - - - - -
Articolo Descrizione Art. Fase Note
@currRecord.CodArticolo@currRecord.ArticoloNav.DescArticolo@currRecord.KeyRichiesta@currRecord.Note
- -
- - - - - - - - - - - - - - - - - - -
Macchina Info macchina Periodo
@currRecord.IdxMacchina@currRecord.MachineNav.CodMacchina -
-
-
@($"{@record.DataInizio:yyyy/MM/dd}")
-
@($"{@record.DataInizio:ddd HH:mm:ss}")
-
-
- -
-
- @if (@record.DataFine != null) - { -
@($"{@record.DataFine:yyyy/MM/dd}")
-
@($"{@record.DataFine:ddd HH:mm:ss}")
- } - else - { -
-
@($"{DateTime.Now:yyyy/MM/dd}")
-
@($"{DateTime.Now:ddd HH:mm:ss}")
-
- } -
-
-
-
- -
- -
- - - } - - - - } + } + + diff --git a/MP.SPEC/Components/ListODL.razor.cs b/MP.SPEC/Components/ListODL.razor.cs index f1c3a419..62c2dc58 100644 --- a/MP.SPEC/Components/ListODL.razor.cs +++ b/MP.SPEC/Components/ListODL.razor.cs @@ -3,12 +3,10 @@ using Microsoft.JSInterop; using MP.Data; using MP.Data.DatabaseModels; using MP.SPEC.Data; -using Newtonsoft.Json.Linq; -using System.Text; namespace MP.SPEC.Components { - public partial class ListODL : IDisposable + public partial class ListODL { #region Public Properties @@ -40,17 +38,13 @@ namespace MP.SPEC.Components return answ; } - public void Dispose() + public string formDurata(double durataMin) { -#if false - MessageService.EA_PageUpdated -= MessageService_EA_PageUpdated; - MessageService.EA_SearchUpdated -= OnSeachUpdated; -#endif + return Utils.FormDurata(durataMin); } #endregion Public Methods - #region Protected Properties [Inject] @@ -69,10 +63,6 @@ namespace MP.SPEC.Components protected override async Task OnInitializedAsync() { ListStati = await MDService.AnagStatiComm(); -#if false - MessageService.EA_PageUpdated += MessageService_EA_PageUpdated; - MessageService.EA_SearchUpdated += OnSeachUpdated; -#endif } protected override async Task OnParametersSetAsync() @@ -91,21 +81,6 @@ namespace MP.SPEC.Components }); } - protected async Task UpdateData() - { -#if false - currRecord = null; -#endif - await selectRecord(null); - await reloadData(); - } - - #endregion Protected Methods - - #region Private Fields - - private ODLModel? currRecord = null; - protected async Task selectRecord(ODLModel? currRec) { await Task.Delay(1); @@ -120,12 +95,23 @@ namespace MP.SPEC.Components } } - private List? ListRecords; - private List? ListStati; - private List? SearchRecords; + protected async Task UpdateData() + { + await selectRecord(null); + await reloadData(); + } + + #endregion Protected Methods + + #region Private Fields + + private ODLModel? currRecord = null; private List? ListOdlStats; private List? ListOdlStatsData = new List(); private List? ListOdlStatsLabels = new List(); + private List? ListRecords; + private List? ListStati; + private List? SearchRecords; #endregion Private Fields @@ -151,6 +137,31 @@ namespace MP.SPEC.Components #region Private Methods + private double calcolaPerc(double durata) + { + double answ = 0; + + double tot = 0; + if (ListOdlStats != null) + { + foreach (var item in ListOdlStats) + { + tot += item.TotDurata; + } + + double perc = (durata / tot) * 100; + if (perc > 1) + { + answ = Math.Round(perc, 2); + } + else + { + answ = Math.Round(perc, 4); + } + } + return answ; + } + private async void MessageService_EA_PageUpdated() { await reloadData(); @@ -181,26 +192,7 @@ namespace MP.SPEC.Components } return answ; } - private double[] addODLData() - { - var eleStats = ListOdlStats.Where(x => x.IdxStato == currRecord.IdxOdl).ToList(); - foreach (var item in eleStats) - { - - ListOdlStatsData.Add(item.TotDurata); - } - return ListOdlStatsData.ToArray(); - } - private string[] addODLLabels() - { - var eleStats = ListOdlStats.Where(x => x.IdxStato == currRecord.IdxOdl).ToList(); - foreach (var item in eleStats) - { - ListOdlStatsLabels.Add(item.Descrizione); - } - return ListOdlStatsLabels.ToArray(); - } #endregion Private Methods } } \ No newline at end of file diff --git a/MP.SPEC/Components/ODLPlot.razor b/MP.SPEC/Components/ODLPlot.razor index 9a5234b8..325b78fb 100644 --- a/MP.SPEC/Components/ODLPlot.razor +++ b/MP.SPEC/Components/ODLPlot.razor @@ -1,20 +1,13 @@ @if (@SelectedOdl != -1) { -
-
- @SelectedOdl -
-
-
-
- @if (isLoading) - { - - } - else - { - - } -
+
+ @if (isLoading) + { + + } + else + { + + }
} \ No newline at end of file diff --git a/MP.SPEC/Components/ODLPlot.razor.cs b/MP.SPEC/Components/ODLPlot.razor.cs index e62b9dd2..b4a33260 100644 --- a/MP.SPEC/Components/ODLPlot.razor.cs +++ b/MP.SPEC/Components/ODLPlot.razor.cs @@ -49,14 +49,19 @@ namespace MP.SPEC.Components public List Data = new List(); public List Labels = new List(); + public List colors = new List(); protected async Task ReloadData() { + Data.Clear(); + Labels.Clear(); + colors.Clear(); ListRecords = await MDService.StatOdl(SelectedOdl); foreach (var record in ListRecords) { Data.Add(record.TotDurata); Labels.Add($"{record.Descrizione} - {record.TotDurata:N1}min"); + colors.Add(record.Css); } await Task.Delay(1); isLoading = false; diff --git a/MP.SPEC/Data/MpDataService.cs b/MP.SPEC/Data/MpDataService.cs index 76c82b81..261bd042 100644 --- a/MP.SPEC/Data/MpDataService.cs +++ b/MP.SPEC/Data/MpDataService.cs @@ -274,9 +274,9 @@ namespace MP.SPEC.Data return await Task.FromResult(dbController.ConfigUpdate(updRec)); } - public List convertToFluxLog(string Valore) + public List getFluxLog(string Valore) { - List answ = new List(); + List answ = new List(); DossierFluxLogDTO? result = JsonConvert.DeserializeObject(Valore); if (result != null) { @@ -286,11 +286,57 @@ namespace MP.SPEC.Data .ODL .OrderBy(x => x.CodFlux) .ToList(); + // inizializzo SE necessario + foreach (var item in answ) + { + item.ValoreEdit = String.IsNullOrEmpty(item.ValoreEdit) ? item.Valore : item.ValoreEdit; + } } } return answ; } + public async Task updateDossierValue(Dossiers currDoss, FluxLogDTO editFL) + { + bool answ = false; + // recupero intero set valori dossier deserializzando... + var fluxLogList = getFluxLog(currDoss.Valore); + await Task.Delay(1); + + // se tutto ok + if (fluxLogList != null) + { + // da provare...!!!! + + // elimino vecchio record + var currRec = fluxLogList.FirstOrDefault(x => x.CodFlux == editFL.CodFlux && x.dtEvento == editFL.dtEvento); + if (currRec != null) + { + fluxLogList.Remove(currRec); + // aggiungo nuovo + fluxLogList.Add(editFL); + } + + + // serializzo nuovamente valore + DossierFluxLogDTO? result = new DossierFluxLogDTO(); + var ODLflux = result.ODL.ToList(); + foreach (var item in fluxLogList) + { + ODLflux.Add(item); + } + + DossierFluxLogDTO updatedResult = new DossierFluxLogDTO(){ODL = ODLflux}; + + string rawVal = JsonConvert.SerializeObject(updatedResult); + currDoss.Valore = rawVal; + // aggiorno record sul DB + await dbController.DossiersUpdateValore(currDoss); + } + + return answ; + } + public void Dispose() { // Clear database controller diff --git a/MP.SPEC/MP.SPEC.csproj b/MP.SPEC/MP.SPEC.csproj index 56f475a3..1692824a 100644 --- a/MP.SPEC/MP.SPEC.csproj +++ b/MP.SPEC/MP.SPEC.csproj @@ -5,7 +5,7 @@ enable enable MP.SPEC - 6.16.2210.1016 + 6.16.2210.1417 diff --git a/MP.SPEC/Pages/DOSS.razor b/MP.SPEC/Pages/DOSS.razor index 9c17c17b..5cbf93c3 100644 --- a/MP.SPEC/Pages/DOSS.razor +++ b/MP.SPEC/Pages/DOSS.razor @@ -14,25 +14,79 @@ } else { - + }
- @if (isLoading) + @if (currDetFluxLogRecord != null) { - - } - else - { - +
+
+
+
Modifica Parametro
+
+
+
+
+ MACCHINA + +
+
+
+
+ DATA + +
+
+
+
+ DATA TYPE + +
+
+
+
+ VALORE + +
+
+
+
+
+
+
+
+
+
+ +
+
+
+
+ +
+
+
+
+
+
+
}
- + @if (isLoading) + { + + } + else + { + + } + + diff --git a/MP.SPEC/Pages/DOSS.razor.cs b/MP.SPEC/Pages/DOSS.razor.cs index 65c77aa6..4cc91662 100644 --- a/MP.SPEC/Pages/DOSS.razor.cs +++ b/MP.SPEC/Pages/DOSS.razor.cs @@ -1,4 +1,7 @@ using Microsoft.AspNetCore.Components; +using Microsoft.JSInterop; +using MP.Data.DatabaseModels; +using MP.Data.DTO; using MP.SPEC.Components; using MP.SPEC.Data; @@ -14,6 +17,12 @@ namespace MP.SPEC.Pages #region Protected Properties + [Inject] + protected IJSRuntime JSRuntime { get; set; } = null!; + + [Inject] + protected MpDataService MDService { get; set; } = null!; + [Inject] protected MessageService MsgService { get; set; } = null!; @@ -21,6 +30,12 @@ namespace MP.SPEC.Pages #region Protected Methods + protected async Task cancel() + { + currDetFluxLogRecord = null; + await Task.Delay(1); + } + protected void ForceReload(int newNum) { numRecord = newNum; @@ -48,6 +63,33 @@ namespace MP.SPEC.Pages isFiltering = false; } + protected async Task selRecordDoss(Dossiers selDoss) + { + currRecordDoss = selDoss; + await Task.Delay(1); + } + + protected async Task selRecordFlux(FluxLogDTO selRec) + { + currDetFluxLogRecord = selRec; + await Task.Delay(1); + } + + protected async Task update(FluxLogDTO selRec) + { + if (!await JSRuntime.InvokeAsync("confirm", "Confermi di voler salvare le modifiche? queste saranno parte del dossier inviato all'impianto")) + return; + + await Task.Delay(1); + if (currRecordDoss != null) + { + // METODO PER UPDATE FLUX + await MDService.updateDossierValue(currRecordDoss, selRec); + } + currDetFluxLogRecord = null; + await Task.Delay(1); + } + protected void updateTotal(int newTotCount) { totalCount = newTotCount; @@ -55,8 +97,20 @@ namespace MP.SPEC.Pages #endregion Protected Methods + #region Private Fields + + private FluxLogDTO? _currDetFluxLogRecord = null; + + #endregion Private Fields + #region Private Properties + private FluxLogDTO? currDetFluxLogRecord + { + get => _currDetFluxLogRecord; + set { _currDetFluxLogRecord = value; } + } + private SelectDossierParams currFilter { get; set; } = new SelectDossierParams(); private int currPage @@ -65,6 +119,7 @@ namespace MP.SPEC.Pages set => MsgService.currPage = value; } + private Dossiers? currRecordDoss { get; set; } = null; private bool isFiltering { get; set; } = false; private bool isLoading { get; set; } = true; diff --git a/MP.SPEC/Pages/PODL.razor b/MP.SPEC/Pages/PODL.razor index a890faa2..884921cd 100644 --- a/MP.SPEC/Pages/PODL.razor +++ b/MP.SPEC/Pages/PODL.razor @@ -148,7 +148,7 @@
Attivabile
-
+
diff --git a/MP.SPEC/Pages/_Layout.cshtml b/MP.SPEC/Pages/_Layout.cshtml index 4b0f428f..e1d1070d 100644 --- a/MP.SPEC/Pages/_Layout.cshtml +++ b/MP.SPEC/Pages/_Layout.cshtml @@ -44,19 +44,19 @@ retryIntervalMilliseconds: 2000 } }).then(() => { - Object.defineProperty(Blazor.defaultReconnectionHandler, '_reconnectionDisplay', { - get() { - return this.__reconnectionDisplay; - }, - set(value) { - this.__reconnectionDisplay = { - show: () => value.show(), - update: (d) => value.update(d), - rejected: (d) => document.location.reload() - } + Object.defineProperty(Blazor.defaultReconnectionHandler, '_reconnectionDisplay', { + get() { + return this.__reconnectionDisplay; + }, + set(value) { + this.__reconnectionDisplay = { + show: () => value.show(), + update: (d) => value.update(d), + rejected: (d) => document.location.reload() } - }); + } }); + }); diff --git a/MP.SPEC/Resources/ChangeLog.html b/MP.SPEC/Resources/ChangeLog.html index 5be76064..6f4a2e82 100644 --- a/MP.SPEC/Resources/ChangeLog.html +++ b/MP.SPEC/Resources/ChangeLog.html @@ -1,6 +1,6 @@ Modulo MAPOSPEC -

Versione: 6.16.2210.1016

+

Versione: 6.16.2210.1417


Note di rilascio:
  • diff --git a/MP.SPEC/Resources/VersNum.txt b/MP.SPEC/Resources/VersNum.txt index 81eaf43f..d3fb3511 100644 --- a/MP.SPEC/Resources/VersNum.txt +++ b/MP.SPEC/Resources/VersNum.txt @@ -1,5 +1 @@ -<<<<<<< HEAD -6.16.2210.1016 -======= -6.16.2210.1011 ->>>>>>> 91174a2f6752f9d3cf06484367ebf4b92a2b8d69 +6.16.2210.1417 diff --git a/MP.SPEC/Resources/manifest.xml b/MP.SPEC/Resources/manifest.xml index a0442336..b1bfc31c 100644 --- a/MP.SPEC/Resources/manifest.xml +++ b/MP.SPEC/Resources/manifest.xml @@ -1,6 +1,6 @@ - 6.16.2210.1016 + 6.16.2210.1417 https://nexus.steamware.net/repository/SWS/MP-SPEC/stable/LAST/MP.SPEC.zip https://nexus.steamware.net/repository/SWS/MP-SPEC/stable/LAST/ChangeLog.html false diff --git a/MP.SPEC/wwwroot/css/site.css b/MP.SPEC/wwwroot/css/site.css index 222021fc..4e954d9b 100644 --- a/MP.SPEC/wwwroot/css/site.css +++ b/MP.SPEC/wwwroot/css/site.css @@ -81,6 +81,22 @@ a, .footer { line-height: 1.8em; } +.dcContainer { + width: 22rem; + height: 22rem; + position: relative; +} +.dcBox { + width: 100%; + height: 100%; + position: absolute; + top: 0; + left: 0; +} +.dcOverlay { + z-index: 9; + margin: 8.5rem; +} #blazor-error-ui { background: lightyellow; bottom: 0; diff --git a/MP.SPEC/wwwroot/css/site.less b/MP.SPEC/wwwroot/css/site.less index f76ce6e2..a53999be 100644 --- a/MP.SPEC/wwwroot/css/site.less +++ b/MP.SPEC/wwwroot/css/site.less @@ -87,6 +87,24 @@ a, .btn-link { line-height: 1.8em; } +.dcContainer { + width: 22rem; + height: 22rem; + position: relative; +} +.dcBox { + width: 100%; + height: 100%; + position: absolute; + top: 0; + left: 0; +} + +.dcOverlay { + z-index: 9; + margin: 8.5rem; +} + #blazor-error-ui { background: lightyellow; bottom: 0; diff --git a/MP.SPEC/wwwroot/css/site.min.css b/MP.SPEC/wwwroot/css/site.min.css index 67e0351a..2ccf4b3e 100644 --- a/MP.SPEC/wwwroot/css/site.min.css +++ b/MP.SPEC/wwwroot/css/site.min.css @@ -1 +1 @@ -@import url('open-iconic/font/css/open-iconic-bootstrap.min.css');@import url('fonts.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',sans-serif;}.textConsensed{font-family:'Roboto Condensed',sans-serif;}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;}.selBlock{background-color:#cff4fc;}.watermark{position:absolute;top:250px;left:500px;opacity:.2;}.textTrim{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}.max5Char{white-space:nowrap;width:10rem;overflow:hidden;text-overflow:ellipsis;}.max10Char{white-space:nowrap;width:10rem;overflow:hidden;text-overflow:ellipsis;}.max20Char{white-space:nowrap;width:20rem;overflow:hidden;text-overflow:ellipsis;}.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;}}.shortcuts{text-align:center;}.shortcuts .shortcut{min-width:9rem;min-height:5rem;display:inline-block;padding:.66666667rem 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:.5em;}.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:992px){.shortcuts .shortcut{min-width:8rem;min-height:4rem;}} \ No newline at end of file +@import url('open-iconic/font/css/open-iconic-bootstrap.min.css');@import url('fonts.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',sans-serif;}.textConsensed{font-family:'Roboto Condensed',sans-serif;}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;}.selBlock{background-color:#cff4fc;}.watermark{position:absolute;top:250px;left:500px;opacity:.2;}.textTrim{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}.max5Char{white-space:nowrap;width:10rem;overflow:hidden;text-overflow:ellipsis;}.max10Char{white-space:nowrap;width:10rem;overflow:hidden;text-overflow:ellipsis;}.max20Char{white-space:nowrap;width:20rem;overflow:hidden;text-overflow:ellipsis;}.footer{line-height:1.8em;}.dcContainer{width:22rem;height:22rem;position:relative;}.dcBox{width:100%;height:100%;position:absolute;top:0;left:0;}.dcOverlay{z-index:9;margin:8.5rem;}#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;}}.shortcuts{text-align:center;}.shortcuts .shortcut{min-width:9rem;min-height:5rem;display:inline-block;padding:.66666667rem 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:.5em;}.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:992px){.shortcuts .shortcut{min-width:8rem;min-height:4rem;}} \ No newline at end of file diff --git a/MP.SPEC/wwwroot/lib/chartBoot.js b/MP.SPEC/wwwroot/lib/chartBoot.js index 95c7466d..50401512 100644 --- a/MP.SPEC/wwwroot/lib/chartBoot.js +++ b/MP.SPEC/wwwroot/lib/chartBoot.js @@ -4,13 +4,17 @@ window.setup = (id, config) => { //let currentDate = new Date(); //console.log(currentDate + " - Calling setup..."); console.log(id); - if (window['chart-' + id] instanceof Chart) { + if (window['myChart'] instanceof Chart) { //window.myChart.destroy(); - window['chart-' + id].destroy(); - //console.log("Chart " + id + " destroyed!"); + window['myChart'].destroy(); + console.log("Chart " + id + " destroyed!"); + window['myChart'] = new Chart(ctx, config); + } + else + { + window['myChart'] = new Chart(ctx, config); + //console.log("Chart " + id + " created!"); + console.log(window['myChart']); } - window['chart-' + id] = new Chart(ctx, config); - //console.log("Chart " + id + " created!"); - console.log(window['chart-' + id]); } \ No newline at end of file