From f1688e278df156ad0bc5d76aaaf36e5caa2c0d1c Mon Sep 17 00:00:00 2001 From: palevrault Date: Thu, 18 Jan 2024 08:44:16 +0100 Subject: [PATCH] Debut siganlements --- Sources/HeartTrack/HeartTrack.csproj | 1 + Sources/HeartTrack/Pages/Reports.razor | 16 +++++- Sources/HeartTrack/Pages/Reports.razor.cs | 63 +++++++++++++++++++++++ 3 files changed, 78 insertions(+), 2 deletions(-) create mode 100644 Sources/HeartTrack/Pages/Reports.razor.cs diff --git a/Sources/HeartTrack/HeartTrack.csproj b/Sources/HeartTrack/HeartTrack.csproj index 1f4f594..cf69fc5 100644 --- a/Sources/HeartTrack/HeartTrack.csproj +++ b/Sources/HeartTrack/HeartTrack.csproj @@ -8,6 +8,7 @@ + diff --git a/Sources/HeartTrack/Pages/Reports.razor b/Sources/HeartTrack/Pages/Reports.razor index 7cfde0e..83c22e0 100644 --- a/Sources/HeartTrack/Pages/Reports.razor +++ b/Sources/HeartTrack/Pages/Reports.razor @@ -1,4 +1,5 @@ @page "/reports" +@using HeartTrack.Models Reports @@ -6,5 +7,16 @@ This is the report list of users. - - + + + + + + + \ No newline at end of file diff --git a/Sources/HeartTrack/Pages/Reports.razor.cs b/Sources/HeartTrack/Pages/Reports.razor.cs new file mode 100644 index 0000000..fe0d993 --- /dev/null +++ b/Sources/HeartTrack/Pages/Reports.razor.cs @@ -0,0 +1,63 @@ +using Blazored.LocalStorage; +using Blazorise.DataGrid; +using HeartTrack.Models; +using Microsoft.AspNetCore.Components; +using Microsoft.Extensions.Localization; + +namespace HeartTrack.Pages +{ + public partial class Reports + { + private List reports; + + private int totalReport; + + [Inject] + public HttpClient Http { get; set; } + + [Inject] + public NavigationManager NavigationManager { get; set; } + + [Inject] + public ILocalStorageService LocalStorage { get; set; } + + [Inject] + public IStringLocalizer Localizer { get; set; } + + protected override async Task OnAfterRenderAsync(bool firstRender) + { + // Do not treat this action if is not the first render + if (!firstRender) + { + return; + } + + var currentData = await LocalStorage.GetItemAsync("data"); + + // Check if data exist in the local storage + if (currentData == null) + { + // this code add in the local storage the fake data (we load the data sync for initialize the data before load the OnReadData method) + var originalData = Http.GetFromJsonAsync($"{NavigationManager.BaseUri}fake-data.json").Result; + await LocalStorage.SetItemAsync("data", originalData); + } + } + private async Task OnReadData(DataGridReadDataEventArgs e) + { + if (e.CancellationToken.IsCancellationRequested) + { + return; + } + + // When you use a real API, we use this follow code + //var response = await Http.GetJsonAsync( $"http://my-api/api/data?page={e.Page}&pageSize={e.PageSize}" ); + var response = (await LocalStorage.GetItemAsync("data")).Skip((e.Page - 1) * e.PageSize).Take(e.PageSize).ToList(); + + if (!e.CancellationToken.IsCancellationRequested) + { + totalReport = (await LocalStorage.GetItemAsync>("data")).Count; + reports = new List(response); // an actual data for the current page + } + } + } +}