diff --git a/MP.Data/Controllers/MpStatsController.cs b/MP.Data/Controllers/MpStatsController.cs index 90de21ef..1fdb1f9b 100644 --- a/MP.Data/Controllers/MpStatsController.cs +++ b/MP.Data/Controllers/MpStatsController.cs @@ -135,15 +135,27 @@ namespace MP.Data.Controllers /// /// /// - public List StatDdbGetAll(int numRecord, string searchVal = "") + public List StatDdbGetAll(DateTime DataStart, DateTime DataEnd, string IdxMacchina, int IdxODL, string KeyRichiesta, string CodArticolo) { List dbResult = new List(); + //dbResult = dbCtx + // . + // .Where(x => x.Descrizione.Contains(searchVal) || x.IdxMacchina.Contains(searchVal) || x.CodArticolo.Contains(searchVal) || x.KeyRichiesta.Contains(searchVal) || string.IsNullOrEmpty(searchVal)) + // .OrderByDescending(x => x.InizioStato) + // .Take(numRecord) + // .ToList(); + + var dataFrom = new SqlParameter("@dataFrom", DataStart); + var dataTo = new SqlParameter("@dataTo", DataEnd); + var idxMacchina = new SqlParameter("@idxMacchina", IdxMacchina); + var idxODL = new SqlParameter("@IdxODL", IdxODL); + var keyRichiesta = new SqlParameter("@KeyRichiesta", KeyRichiesta); + var codArticolo = new SqlParameter("@CodArticolo", CodArticolo); + dbResult = dbCtx .DbSetDdbTurni - .Where(x => x.Descrizione.Contains(searchVal) || x.IdxMacchina.Contains(searchVal) || x.CodArticolo.Contains(searchVal) || x.KeyRichiesta.Contains(searchVal) || string.IsNullOrEmpty(searchVal)) - .OrderByDescending(x => x.InizioStato) - .Take(numRecord) + .FromSqlRaw("EXEC stp_UI_DDBTurni_GetByFilter @dataFrom,@dataTo,@idxMacchina,@IdxODL,@KeyRichiesta,@CodArticolo", dataFrom, dataTo, idxMacchina, idxODL, keyRichiesta, codArticolo) .ToList(); return dbResult; diff --git a/MP.Stats/Components/DataPager.razor b/MP.Stats/Components/DataPager.razor index eab20eca..424d7640 100644 --- a/MP.Stats/Components/DataPager.razor +++ b/MP.Stats/Components/DataPager.razor @@ -1,4 +1,6 @@ -
+@inject Services.BlazorTimer Timer + +
@@ -7,10 +9,15 @@ - + - @for (int i = 1; i <= LastPage; ++i) + + + + + + @for (int i = @startPage; i <= endPage; ++i) { var pageNum = i; @@ -19,16 +26,34 @@ } + + + + + - + }
- @totalCount records + @if (!showLoading) + { + @totalCount records + } +
+
+
+
+ @if (showLoading) + { + + + + }
@@ -57,6 +82,47 @@ reportChangePage(); } + private int numPages { get; set; } = 10; + + // calcola un set 1..numPOages centrato sulla pagina corrente... + private int startPage + { + get + { + int answ = (int)(currPage / numPages) * numPages; + answ = answ > 0 ? answ : 1; + return answ; + } + } + private int endPage + { + get + { + int answ = (int)(currPage / numPages) * numPages + numPages; + answ = answ < LastPage ? answ : LastPage; + return answ; + } + } + + private int prevBlock + { + get + { + int answ = currPage - numPages; + answ = answ > 0 ? answ : 1; + return answ; + } + } + private int nextBlock + { + get + { + int answ = currPage + numPages; + answ = answ < LastPage ? answ : LastPage; + return answ; + } + } + private int LastPage { get @@ -65,6 +131,38 @@ } } + protected override Task OnInitializedAsync() + { + showLoading = false; + return base.OnInitializedAsync(); + } + + protected int percLoading { get; set; } = 0; + + protected bool _showLoading = false; + + [Parameter] + public bool showLoading + { + get + { + return _showLoading; + } + set + { + if (value) + { + Random random = new Random(); + percLoading = random.Next(30, 90); + } + else + { + percLoading = 5; + } + _showLoading = value; + } + } + [Parameter] public int totalCount { get; set; } = 0; diff --git a/MP.Stats/Components/LoadingData.razor b/MP.Stats/Components/LoadingData.razor index 4eb9ffb3..2ffebab8 100644 --- a/MP.Stats/Components/LoadingData.razor +++ b/MP.Stats/Components/LoadingData.razor @@ -1,5 +1,5 @@ -
-
+
+

loading data

diff --git a/MP.Stats/Data/MpStatsService.cs b/MP.Stats/Data/MpStatsService.cs index 4b2a9352..922b3656 100644 --- a/MP.Stats/Data/MpStatsService.cs +++ b/MP.Stats/Data/MpStatsService.cs @@ -24,8 +24,6 @@ namespace MP.Stats.Data private readonly IDistributedCache distributedCache; private readonly IMemoryCache memoryCache; - private DistributedCacheEntryOptions cacheOpt; - /// /// Durata assoluta massima della cache /// @@ -42,6 +40,7 @@ namespace MP.Stats.Data #region Protected Fields protected static string connStringBBM = ""; + protected static string connStringFatt = ""; #endregion Protected Fields @@ -61,7 +60,6 @@ namespace MP.Stats.Data // conf cache this.memoryCache = memoryCache; this.distributedCache = distributedCache; - cacheOpt = new DistributedCacheEntryOptions().SetAbsoluteExpiration(DateTime.Now.AddMinutes(chAbsExp)).SetSlidingExpiration(TimeSpan.FromMinutes(chSliExp)); // conf DB string connStr = _configuration.GetConnectionString("Mp.Stats"); if (string.IsNullOrEmpty(connStr)) @@ -80,6 +78,18 @@ namespace MP.Stats.Data #endregion Public Constructors + #region Private Properties + + private DistributedCacheEntryOptions cacheOpt + { + get + { + return new DistributedCacheEntryOptions().SetAbsoluteExpiration(DateTime.Now.AddMinutes(chAbsExp)).SetSlidingExpiration(TimeSpan.FromMinutes(chSliExp)); + } + } + + #endregion Private Properties + #region Protected Methods protected string getCacheKey(string TableName, SelectData CurrFilter) @@ -92,9 +102,26 @@ namespace MP.Stats.Data #region Public Methods - public Task ActionsGetAll() + public async Task> ActionsGetAll() { - return Task.FromResult(dbController.ActionsGetAll().ToArray()); + //return Task.FromResult(dbController.ActionsGetAll()); + List dbResult = new List(); + string cacheKey = "MP:STATS:AZIONI_ALL"; + string rawData; + var redisDataList = await distributedCache.GetAsync(cacheKey); + if (redisDataList != null) + { + rawData = Encoding.UTF8.GetString(redisDataList); + dbResult = JsonConvert.DeserializeObject>(rawData); + } + else + { + dbResult = dbController.ActionsGetAll(); + rawData = JsonConvert.SerializeObject(dbResult); + redisDataList = Encoding.UTF8.GetBytes(rawData); + await distributedCache.SetAsync(cacheKey, redisDataList, cacheOpt); + } + return await Task.FromResult(dbResult); } public void rollBackEdit(object item) @@ -107,14 +134,48 @@ namespace MP.Stats.Data return Task.FromResult(dbController.StatArticoliGetSearch(numRecord, searchVal).ToArray()); } - public Task StatControlliGetAll(DateTime DataStart, DateTime DataEnd, string IdxMacchina, int IdxODL, string KeyRichiesta, string CodArticolo, string searchVal = "") + public async Task> StatControlliGetAll(SelectData CurrFilter, string searchVal = "") { - return Task.FromResult(dbController.StatControlliGetAll(DataStart, DataEnd, IdxMacchina, IdxODL, KeyRichiesta, CodArticolo).ToArray()); + //return Task.FromResult(dbController.StatControlliGetAll(DataStart, DataEnd, IdxMacchina, IdxODL, KeyRichiesta, CodArticolo).ToArray()); + List dbResult = new List(); + string cacheKey = getCacheKey("MP:STATS:CONTROLLI", CurrFilter); + string rawData; + var redisDataList = await distributedCache.GetAsync(cacheKey); + if (redisDataList != null) + { + rawData = Encoding.UTF8.GetString(redisDataList); + dbResult = JsonConvert.DeserializeObject>(rawData); + } + else + { + dbResult = dbController.StatControlliGetAll(CurrFilter.DateStart, CurrFilter.DateEnd, CurrFilter.IdxMacchina, CurrFilter.IdxOdl, CurrFilter.KeyRichiesta, CurrFilter.CodArticolo); + rawData = JsonConvert.SerializeObject(dbResult); + redisDataList = Encoding.UTF8.GetBytes(rawData); + await distributedCache.SetAsync(cacheKey, redisDataList, cacheOpt); + } + return await Task.FromResult(dbResult); } - public Task StatDdbGetAll(int numRecord, string searchVal = "") + public async Task> StatDdbGetAll(SelectData CurrFilter, string searchVal = "") { - return Task.FromResult(dbController.StatDdbGetAll(numRecord, searchVal).ToArray()); + //return Task.FromResult(dbController.StatDdbGetAll(numRecord, searchVal).ToArray()); + List dbResult = new List(); + string cacheKey = getCacheKey("MP:STATS:DDBT", CurrFilter); + string rawData; + var redisDataList = await distributedCache.GetAsync(cacheKey); + if (redisDataList != null) + { + rawData = Encoding.UTF8.GetString(redisDataList); + dbResult = JsonConvert.DeserializeObject>(rawData); + } + else + { + dbResult = dbController.StatDdbGetAll(CurrFilter.DateStart, CurrFilter.DateEnd, CurrFilter.IdxMacchina, CurrFilter.IdxOdl, CurrFilter.KeyRichiesta, CurrFilter.CodArticolo); + rawData = JsonConvert.SerializeObject(dbResult); + redisDataList = Encoding.UTF8.GetBytes(rawData); + await distributedCache.SetAsync(cacheKey, redisDataList, cacheOpt); + } + return await Task.FromResult(dbResult); } public Task StatMacchineGetAll() @@ -144,10 +205,26 @@ namespace MP.Stats.Data return await Task.FromResult(dbResult); } - public Task StatScartiGetAll(DateTime DataStart, DateTime DataEnd, string IdxMacchina, int IdxODL, string KeyRichiesta, string CodArticolo, string searchVal = "") + public async Task> StatScartiGetAll(SelectData CurrFilter, string searchVal = "") { - // filtra e restituisce SOLO i primi record... - return Task.FromResult(dbController.StatScartiGetAll(DataStart, DataEnd, IdxMacchina, IdxODL, KeyRichiesta, CodArticolo).ToArray()); + //return Task.FromResult(dbController.StatScartiGetAll(DataStart, DataEnd, IdxMacchina, IdxODL, KeyRichiesta, CodArticolo).ToArray()); + List dbResult = new List(); + string cacheKey = getCacheKey("MP:STATS:SCARTI", CurrFilter); + string rawData; + var redisDataList = await distributedCache.GetAsync(cacheKey); + if (redisDataList != null) + { + rawData = Encoding.UTF8.GetString(redisDataList); + dbResult = JsonConvert.DeserializeObject>(rawData); + } + else + { + dbResult = dbController.StatScartiGetAll(CurrFilter.DateStart, CurrFilter.DateEnd, CurrFilter.IdxMacchina, CurrFilter.IdxOdl, CurrFilter.KeyRichiesta, CurrFilter.CodArticolo); + rawData = JsonConvert.SerializeObject(dbResult); + redisDataList = Encoding.UTF8.GetBytes(rawData); + await distributedCache.SetAsync(cacheKey, redisDataList, cacheOpt); + } + return await Task.FromResult(dbResult); } public async Task> StatTurniOeeGetAllAsync(DateTime DataStart, DateTime DataEnd, string IdxMacchina, int IdxODL, string KeyRichiesta, string CodArticolo, string searchVal = "") @@ -186,9 +263,26 @@ namespace MP.Stats.Data return Task.FromResult(dbController.StatTurniParetoOdlGetAll(DataStart, DataEnd, IdxMacchina, IdxODL, KeyRichiesta, CodArticolo).ToArray()); } - public Task StatUserLogGetAll(DateTime DataStart, DateTime DataEnd, string IdxMacchina, int IdxODL, string KeyRichiesta, string CodArticolo, string searchVal = "") + public async Task> StatUserLogGetAll(SelectData CurrFilter, string searchVal = "") { - return Task.FromResult(dbController.StatUserLogGetAll(DataStart, DataEnd, IdxMacchina, IdxODL, KeyRichiesta, CodArticolo).ToArray()); + //return Task.FromResult(dbController.StatUserLogGetAll(DataStart, DataEnd, IdxMacchina, IdxODL, KeyRichiesta, CodArticolo).ToArray()); + List dbResult = new List(); + string cacheKey = getCacheKey("MP:STATS:USRACTLOG", CurrFilter); + string rawData; + var redisDataList = await distributedCache.GetAsync(cacheKey); + if (redisDataList != null) + { + rawData = Encoding.UTF8.GetString(redisDataList); + dbResult = JsonConvert.DeserializeObject>(rawData); + } + else + { + dbResult = dbController.StatUserLogGetAll(CurrFilter.DateStart, CurrFilter.DateEnd, CurrFilter.IdxMacchina, CurrFilter.IdxOdl, CurrFilter.KeyRichiesta, CurrFilter.CodArticolo); + rawData = JsonConvert.SerializeObject(dbResult); + redisDataList = Encoding.UTF8.GetBytes(rawData); + await distributedCache.SetAsync(cacheKey, redisDataList, cacheOpt); + } + return await Task.FromResult(dbResult); } #endregion Public Methods diff --git a/MP.Stats/Pages/Controlli.razor b/MP.Stats/Pages/Controlli.razor index abaf527d..494ccd16 100644 --- a/MP.Stats/Pages/Controlli.razor +++ b/MP.Stats/Pages/Controlli.razor @@ -1,31 +1,28 @@ @page "/controlli" @using MP.Stats.Components -@using MP.Stats.Data
-
Registro Controlli
-
+
Registro Controlli
+
- @if (currRecord != null) +
+
+ +
+
+ @if (totalCount == 0 || ListRecords == null) { - @**@ - } - @if (ListRecords == null) - { -
+ } else {
-
- -
@@ -61,6 +58,6 @@ } \ No newline at end of file diff --git a/MP.Stats/Pages/Controlli.razor.cs b/MP.Stats/Pages/Controlli.razor.cs index 71af34c9..fd6ddda6 100644 --- a/MP.Stats/Pages/Controlli.razor.cs +++ b/MP.Stats/Pages/Controlli.razor.cs @@ -2,6 +2,7 @@ using Microsoft.JSInterop; using MP.Stats.Data; using System; +using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; @@ -13,8 +14,8 @@ namespace MP.Stats.Pages private MP.Data.DatabaseModels.ResControlli currRecord = null; - private MP.Data.DatabaseModels.ResControlli[] ListRecords; - private MP.Data.DatabaseModels.ResControlli[] SearchRecords; + private List ListRecords; + private List SearchRecords; #endregion Private Fields @@ -22,6 +23,7 @@ namespace MP.Stats.Pages private SelectData currFilter { get; set; } = new SelectData(); private int currPage { get; set; } = 1; + private bool isLoading { get; set; } = false; private int numRecord { get; set; } = 10; #endregion Private Properties @@ -40,14 +42,29 @@ namespace MP.Stats.Pages [Inject] protected MpStatsService StatService { get; set; } + protected int totalCount + { + get + { + int answ = 0; + if (SearchRecords != null) + { + answ = SearchRecords.Count; + } + return answ; + } + } + #endregion Protected Properties #region Private Methods private async Task reloadData() { - SearchRecords = await StatService.StatControlliGetAll(currFilter.DateStart, currFilter.DateEnd, currFilter.IdxMacchina, currFilter.IdxOdl, currFilter.KeyRichiesta, currFilter.CodArticolo, MessageService.SearchVal); - ListRecords = SearchRecords.Skip(numRecord * (currPage - 1)).Take(numRecord).ToArray(); + isLoading = true; + SearchRecords = await StatService.StatControlliGetAll(currFilter, MessageService.SearchVal); + ListRecords = SearchRecords.Skip(numRecord * (currPage - 1)).Take(numRecord).ToList(); + isLoading = false; } #endregion Private Methods @@ -56,6 +73,8 @@ namespace MP.Stats.Pages protected async Task DoFilter(SelectData newFilter) { + SearchRecords = null; + ListRecords = null; currFilter = newFilter; await reloadData(); } @@ -74,6 +93,8 @@ namespace MP.Stats.Pages protected override async Task OnInitializedAsync() { + numRecord = 10; + currFilter = SelectData.Init(5, 7); MessageService.ShowSearch = false; MessageService.EA_SearchUpdated += OnSeachUpdated; await reloadData(); diff --git a/MP.Stats/Pages/Diario.razor b/MP.Stats/Pages/Diario.razor index b9769c30..80a93461 100644 --- a/MP.Stats/Pages/Diario.razor +++ b/MP.Stats/Pages/Diario.razor @@ -1,51 +1,45 @@ @page "/diario" @using MP.Stats.Components -@using MP.Stats.Data
-
Diario Produzione
-
+
Diario Produzione
+
- @if (currRecord != null) +
+
+ +
+
+ @if (totalCount == 0 || ListRecords == null || ListRecords.Count() == 0) { - @**@ - } - @if (ListRecords == null) - { -
+ } else { -
-
- -
-
-
- - - @**@ - - - - - - - - @**@ - - - - @foreach (var record in ListRecords) - { +
+
+
MacchinaDataODL/CommessaArticoloStatoDurataPezziOperatore
+ + + + + + + + + + + + + @foreach (var record in ListRecords) + { - @**@ - } - -
MacchinaDataODL/CommessaArticoloStatoDurataPezzi
 
@record.CodMacchina
@record.IdxMacchina
@@ -60,14 +54,14 @@
@record.DurataMin @record.TotPzProd
-
-
+ } + + +
+
}
\ No newline at end of file diff --git a/MP.Stats/Pages/Diario.razor.cs b/MP.Stats/Pages/Diario.razor.cs index e94b882d..992e8e1e 100644 --- a/MP.Stats/Pages/Diario.razor.cs +++ b/MP.Stats/Pages/Diario.razor.cs @@ -2,6 +2,7 @@ using Microsoft.AspNetCore.Components; using Microsoft.JSInterop; using MP.Stats.Data; using System; +using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; @@ -13,9 +14,8 @@ namespace MP.Stats.Pages private MP.Data.DatabaseModels.DdbTurni currRecord = null; - private MP.Data.DatabaseModels.DdbTurni[] ListRecords; - - private MP.Data.DatabaseModels.DdbTurni[] SearchRecords; + private List ListRecords; + private List SearchRecords; #endregion Private Fields @@ -23,6 +23,7 @@ namespace MP.Stats.Pages private SelectData currFilter { get; set; } = new SelectData(); private int currPage { get; set; } = 1; + private bool isLoading { get; set; } = false; private int numRecord { get; set; } = 10; #endregion Private Properties @@ -41,16 +42,29 @@ namespace MP.Stats.Pages [Inject] protected MpStatsService StatService { get; set; } + protected int totalCount + { + get + { + int answ = 0; + if (SearchRecords != null) + { + answ = SearchRecords.Count; + } + return answ; + } + } + #endregion Protected Properties #region Private Methods private async Task reloadData() { - // fare VERO filtro periodo - SearchRecords = await StatService.StatDdbGetAll(200, MessageService.SearchVal); - // SearchRecords = await StatService.StatDdbGetAll(currFilter.DateStart, currFilter.DateEnd, currFilter.IdxMacchina, currFilter.IdxOdl, currFilter.KeyRichiesta, currFilter.CodArticolo, MessageService.SearchVal); - ListRecords = SearchRecords.Skip(numRecord * (currPage - 1)).Take(numRecord).ToArray(); + isLoading = true; + SearchRecords = await StatService.StatDdbGetAll(currFilter, MessageService.SearchVal); + ListRecords = SearchRecords.Skip(numRecord * (currPage - 1)).Take(numRecord).ToList(); + isLoading = false; } #endregion Private Methods @@ -59,6 +73,8 @@ namespace MP.Stats.Pages protected async Task DoFilter(SelectData newFilter) { + SearchRecords = null; + ListRecords = null; currFilter = newFilter; await reloadData(); } @@ -78,6 +94,7 @@ namespace MP.Stats.Pages protected override async Task OnInitializedAsync() { numRecord = 10; + currFilter = SelectData.Init(5, 3); MessageService.ShowSearch = false; MessageService.EA_SearchUpdated += OnSeachUpdated; await reloadData(); diff --git a/MP.Stats/Pages/Index.razor b/MP.Stats/Pages/Index.razor index f2d91a2f..8466112e 100644 --- a/MP.Stats/Pages/Index.razor +++ b/MP.Stats/Pages/Index.razor @@ -28,7 +28,7 @@
- + diff --git a/MP.Stats/Pages/Oee.razor b/MP.Stats/Pages/Oee.razor index d48e8323..6197ed80 100644 --- a/MP.Stats/Pages/Oee.razor +++ b/MP.Stats/Pages/Oee.razor @@ -5,8 +5,8 @@
-
TRS / OEE %
-
+
TRS / OEE %
+
@@ -16,7 +16,7 @@
- @if (totalCount == 0 || ListRecords == null || ListRecords.Count() == 0) + @if (totalCount == 0 || ListRecords == null) { } @@ -61,6 +61,6 @@ }
\ No newline at end of file diff --git a/MP.Stats/Pages/Oee.razor.cs b/MP.Stats/Pages/Oee.razor.cs index d5fd3934..310db664 100644 --- a/MP.Stats/Pages/Oee.razor.cs +++ b/MP.Stats/Pages/Oee.razor.cs @@ -24,6 +24,7 @@ namespace MP.Stats.Pages private SelectData currFilter { get; set; } = new SelectData(); private int currPage { get; set; } = 1; + private bool isLoading { get; set; } = false; private int numRecord { get; set; } = 10; #endregion Private Properties @@ -61,8 +62,10 @@ namespace MP.Stats.Pages private async Task reloadData() { + isLoading = true; SearchRecords = await StatService.StatTurniOeeGetAllCached(currFilter, MessageService.SearchVal); ListRecords = SearchRecords.Skip(numRecord * (currPage - 1)).Take(numRecord).ToList(); + isLoading = false; } #endregion Private Methods diff --git a/MP.Stats/Pages/ReportODL.razor b/MP.Stats/Pages/ReportODL.razor index 1b30d59d..9d867de9 100644 --- a/MP.Stats/Pages/ReportODL.razor +++ b/MP.Stats/Pages/ReportODL.razor @@ -5,8 +5,8 @@
-
Report ODL/Comm.
-
+
Report ODL/Comm.
+
diff --git a/MP.Stats/Pages/Scarti.razor b/MP.Stats/Pages/Scarti.razor index a3e64483..a220ae80 100644 --- a/MP.Stats/Pages/Scarti.razor +++ b/MP.Stats/Pages/Scarti.razor @@ -5,26 +5,24 @@
-
Registro Scarti
-
+
Registro Scarti
+
- @if (currRecord != null) +
+
+ +
+
+ @if (totalCount == 0 || ListRecords == null) { - @**@ - } - @if (ListRecords == null) - { -
+ } else {
-
- -
@@ -70,6 +68,6 @@ } \ No newline at end of file diff --git a/MP.Stats/Pages/Scarti.razor.cs b/MP.Stats/Pages/Scarti.razor.cs index 087c1057..42190233 100644 --- a/MP.Stats/Pages/Scarti.razor.cs +++ b/MP.Stats/Pages/Scarti.razor.cs @@ -14,9 +14,8 @@ namespace MP.Stats.Pages private MP.Data.DatabaseModels.ResScarti currRecord = null; - private MP.Data.DatabaseModels.ResScarti[] ListRecords; - - private MP.Data.DatabaseModels.ResScarti[] SearchRecords; + private List ListRecords; + private List SearchRecords; #endregion Private Fields @@ -24,6 +23,7 @@ namespace MP.Stats.Pages private SelectData currFilter { get; set; } = new SelectData(); private int currPage { get; set; } = 1; + private bool isLoading { get; set; } = false; private int numRecord { get; set; } = 10; #endregion Private Properties @@ -42,14 +42,28 @@ namespace MP.Stats.Pages [Inject] protected MpStatsService StatService { get; set; } + protected int totalCount + { + get + { + int answ = 0; + if (SearchRecords != null) + { + answ = SearchRecords.Count; + } + return answ; + } + } #endregion Protected Properties #region Private Methods private async Task reloadData() { - SearchRecords = await StatService.StatScartiGetAll(currFilter.DateStart, currFilter.DateEnd, currFilter.IdxMacchina, currFilter.IdxOdl, currFilter.KeyRichiesta, currFilter.CodArticolo, MessageService.SearchVal); - ListRecords = SearchRecords.Skip(numRecord * (currPage - 1)).Take(numRecord).ToArray(); + isLoading = true; + SearchRecords = await StatService.StatScartiGetAll(currFilter, MessageService.SearchVal); + ListRecords = SearchRecords.Skip(numRecord * (currPage - 1)).Take(numRecord).ToList(); + isLoading = false; } #endregion Private Methods @@ -58,6 +72,8 @@ namespace MP.Stats.Pages protected async Task DoFilter(SelectData newFilter) { + SearchRecords = null; + ListRecords = null; currFilter = newFilter; await reloadData(); } @@ -76,6 +92,8 @@ namespace MP.Stats.Pages protected override async Task OnInitializedAsync() { + numRecord = 10; + currFilter = SelectData.Init(5, 7); MessageService.ShowSearch = false; MessageService.EA_SearchUpdated += OnSeachUpdated; await reloadData(); diff --git a/MP.Stats/Pages/UserLog.razor b/MP.Stats/Pages/UserLog.razor index b1e792e1..6c628007 100644 --- a/MP.Stats/Pages/UserLog.razor +++ b/MP.Stats/Pages/UserLog.razor @@ -1,31 +1,28 @@ @page "/userlog" @using MP.Stats.Components -@using MP.Stats.Data
-
User ActionLog
-
+
User ActionLog
+
- @if (currRecord != null) +
+
+ +
+
+ @if (totalCount == 0 || ListRecords == null) { - @**@ - } - @if (ListRecords == null) - { -
+ } else {
-
- -
@@ -75,6 +72,6 @@ } \ No newline at end of file diff --git a/MP.Stats/Pages/UserLog.razor.cs b/MP.Stats/Pages/UserLog.razor.cs index 24eb1c4f..248addff 100644 --- a/MP.Stats/Pages/UserLog.razor.cs +++ b/MP.Stats/Pages/UserLog.razor.cs @@ -2,6 +2,7 @@ using Microsoft.AspNetCore.Components; using Microsoft.JSInterop; using MP.Stats.Data; using System; +using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; @@ -11,11 +12,11 @@ namespace MP.Stats.Pages { #region Private Fields - private MP.Data.DatabaseModels.AzioniUL[] ActionsList; + private List ActionsList; private MP.Data.DatabaseModels.UserActionLog currRecord = null; - private MP.Data.DatabaseModels.UserActionLog[] ListRecords; - private MP.Data.DatabaseModels.UserActionLog[] SearchRecords; + private List ListRecords; + private List SearchRecords; #endregion Private Fields @@ -23,6 +24,7 @@ namespace MP.Stats.Pages private SelectData currFilter { get; set; } = new SelectData(); private int currPage { get; set; } = 1; + private bool isLoading { get; set; } = false; private int numRecord { get; set; } = 10; #endregion Private Properties @@ -41,15 +43,30 @@ namespace MP.Stats.Pages [Inject] protected MpStatsService StatService { get; set; } + protected int totalCount + { + get + { + int answ = 0; + if (SearchRecords != null) + { + answ = SearchRecords.Count; + } + return answ; + } + } + #endregion Protected Properties #region Private Methods private async Task reloadData() { + isLoading = true; ActionsList = await StatService.ActionsGetAll(); - SearchRecords = await StatService.StatUserLogGetAll(currFilter.DateStart, currFilter.DateEnd, currFilter.IdxMacchina, currFilter.IdxOdl, currFilter.KeyRichiesta, currFilter.CodArticolo, MessageService.SearchVal); - ListRecords = SearchRecords.Skip(numRecord * (currPage - 1)).Take(numRecord).ToArray(); + SearchRecords = await StatService.StatUserLogGetAll(currFilter, MessageService.SearchVal); + ListRecords = SearchRecords.Skip(numRecord * (currPage - 1)).Take(numRecord).ToList(); + isLoading = false; } #endregion Private Methods @@ -58,6 +75,8 @@ namespace MP.Stats.Pages protected async Task DoFilter(SelectData newFilter) { + SearchRecords = null; + ListRecords = null; currFilter = newFilter; await reloadData(); } @@ -76,6 +95,8 @@ namespace MP.Stats.Pages protected override async Task OnInitializedAsync() { + numRecord = 10; + currFilter = SelectData.Init(5, 7); MessageService.ShowSearch = false; MessageService.EA_SearchUpdated += OnSeachUpdated; await reloadData(); diff --git a/MP.Stats/Services/BlazorTimer.cs b/MP.Stats/Services/BlazorTimer.cs new file mode 100644 index 00000000..2836323d --- /dev/null +++ b/MP.Stats/Services/BlazorTimer.cs @@ -0,0 +1,49 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Threading.Tasks; +using System.Timers; + +namespace MP.Stats.Services +{ + /// + /// Timer a consumo + /// https://wellsb.com/csharp/aspnet/blazor-timer-navigate-programmatically/ + /// (da verificare) + /// + public class BlazorTimer + { + #region Private Fields + + private Timer _timer; + + #endregion Private Fields + + #region Public Events + + public event Action OnElapsed; + + #endregion Public Events + + #region Private Methods + + private void NotifyTimerElapsed(Object source, ElapsedEventArgs e) + { + OnElapsed?.Invoke(); + _timer.Dispose(); + } + + #endregion Private Methods + + #region Public Methods + + public void SetTimer(double interval) + { + _timer = new Timer(interval); + _timer.Elapsed += NotifyTimerElapsed; + _timer.Enabled = true; + } + + #endregion Public Methods + } +} \ No newline at end of file diff --git a/MP.Stats/Startup.cs b/MP.Stats/Startup.cs index 905e67a9..42f0661d 100644 --- a/MP.Stats/Startup.cs +++ b/MP.Stats/Startup.cs @@ -95,6 +95,7 @@ namespace MP.Stats services.AddRazorPages(); services.AddServerSideBlazor(); services.AddSingleton(Configuration); + services.AddTransient(); #if false services.AddDbContext(options =>