From 6c4720616a89a19b08f18d810c4f2c0f5188d1d6 Mon Sep 17 00:00:00 2001 From: Baptiste Marcel Date: Fri, 28 Oct 2022 15:23:20 +0200 Subject: [PATCH] Tutoriel - Etape LocalStorage --- .../BlazorProject/BlazorProject.csproj | 7 + BlazorProject/BlazorProject/Models/Item.cs | 15 + BlazorProject/BlazorProject/Pages/List.razor | 28 + .../BlazorProject/Pages/List.razor.cs | 37 ++ .../BlazorProject/Pages/_Layout.cshtml | 4 + BlazorProject/BlazorProject/Program.cs | 12 + .../BlazorProject/Shared/NavMenu.razor | 6 + BlazorProject/BlazorProject/_Imports.razor | 1 + .../BlazorProject/wwwroot/fake-data.json | 349 +++++++++++ MyBlazorProject/App.razor | 10 - MyBlazorProject/Data/WeatherForecast.cs | 15 - .../Data/WeatherForecastService.cs | 25 - MyBlazorProject/MyBlazorProject.csproj | 7 - MyBlazorProject/MyBlazorProject.sln | 25 - MyBlazorProject/Pages/Counter.razor | 16 - MyBlazorProject/Pages/Error.cshtml | 42 -- MyBlazorProject/Pages/Error.cshtml.cs | 32 -- MyBlazorProject/Pages/FetchData.razor | 46 -- MyBlazorProject/Pages/Index.razor | 7 - MyBlazorProject/Pages/_Host.cshtml | 35 -- MyBlazorProject/Program.cs | 26 - .../Properties/launchSettings.json | 28 - MyBlazorProject/Shared/MainLayout.razor | 17 - MyBlazorProject/Shared/MainLayout.razor.css | 70 --- MyBlazorProject/Shared/NavMenu.razor | 37 -- MyBlazorProject/Shared/NavMenu.razor.css | 62 -- MyBlazorProject/Shared/SurveyPrompt.razor | 16 - MyBlazorProject/Startup.cs | 60 -- MyBlazorProject/_Imports.razor | 10 - MyBlazorProject/appsettings.Development.json | 10 - MyBlazorProject/appsettings.json | 10 - .../wwwroot/css/bootstrap/bootstrap.min.css | 7 - .../css/bootstrap/bootstrap.min.css.map | 1 - .../wwwroot/css/open-iconic/FONT-LICENSE | 86 --- .../wwwroot/css/open-iconic/ICON-LICENSE | 21 - .../wwwroot/css/open-iconic/README.md | 114 ---- .../font/css/open-iconic-bootstrap.min.css | 1 - .../open-iconic/font/fonts/open-iconic.eot | Bin 28196 -> 0 bytes .../open-iconic/font/fonts/open-iconic.otf | Bin 20996 -> 0 bytes .../open-iconic/font/fonts/open-iconic.svg | 543 ------------------ .../open-iconic/font/fonts/open-iconic.ttf | Bin 28028 -> 0 bytes .../open-iconic/font/fonts/open-iconic.woff | Bin 14984 -> 0 bytes MyBlazorProject/wwwroot/css/site.css | 50 -- MyBlazorProject/wwwroot/favicon.ico | Bin 5430 -> 0 bytes 44 files changed, 459 insertions(+), 1429 deletions(-) create mode 100644 BlazorProject/BlazorProject/Models/Item.cs create mode 100644 BlazorProject/BlazorProject/Pages/List.razor create mode 100644 BlazorProject/BlazorProject/Pages/List.razor.cs create mode 100644 BlazorProject/BlazorProject/wwwroot/fake-data.json delete mode 100644 MyBlazorProject/App.razor delete mode 100644 MyBlazorProject/Data/WeatherForecast.cs delete mode 100644 MyBlazorProject/Data/WeatherForecastService.cs delete mode 100644 MyBlazorProject/MyBlazorProject.csproj delete mode 100644 MyBlazorProject/MyBlazorProject.sln delete mode 100644 MyBlazorProject/Pages/Counter.razor delete mode 100644 MyBlazorProject/Pages/Error.cshtml delete mode 100644 MyBlazorProject/Pages/Error.cshtml.cs delete mode 100644 MyBlazorProject/Pages/FetchData.razor delete mode 100644 MyBlazorProject/Pages/Index.razor delete mode 100644 MyBlazorProject/Pages/_Host.cshtml delete mode 100644 MyBlazorProject/Program.cs delete mode 100644 MyBlazorProject/Properties/launchSettings.json delete mode 100644 MyBlazorProject/Shared/MainLayout.razor delete mode 100644 MyBlazorProject/Shared/MainLayout.razor.css delete mode 100644 MyBlazorProject/Shared/NavMenu.razor delete mode 100644 MyBlazorProject/Shared/NavMenu.razor.css delete mode 100644 MyBlazorProject/Shared/SurveyPrompt.razor delete mode 100644 MyBlazorProject/Startup.cs delete mode 100644 MyBlazorProject/_Imports.razor delete mode 100644 MyBlazorProject/appsettings.Development.json delete mode 100644 MyBlazorProject/appsettings.json delete mode 100644 MyBlazorProject/wwwroot/css/bootstrap/bootstrap.min.css delete mode 100644 MyBlazorProject/wwwroot/css/bootstrap/bootstrap.min.css.map delete mode 100644 MyBlazorProject/wwwroot/css/open-iconic/FONT-LICENSE delete mode 100644 MyBlazorProject/wwwroot/css/open-iconic/ICON-LICENSE delete mode 100644 MyBlazorProject/wwwroot/css/open-iconic/README.md delete mode 100644 MyBlazorProject/wwwroot/css/open-iconic/font/css/open-iconic-bootstrap.min.css delete mode 100644 MyBlazorProject/wwwroot/css/open-iconic/font/fonts/open-iconic.eot delete mode 100644 MyBlazorProject/wwwroot/css/open-iconic/font/fonts/open-iconic.otf delete mode 100644 MyBlazorProject/wwwroot/css/open-iconic/font/fonts/open-iconic.svg delete mode 100644 MyBlazorProject/wwwroot/css/open-iconic/font/fonts/open-iconic.ttf delete mode 100644 MyBlazorProject/wwwroot/css/open-iconic/font/fonts/open-iconic.woff delete mode 100644 MyBlazorProject/wwwroot/css/site.css delete mode 100644 MyBlazorProject/wwwroot/favicon.ico diff --git a/BlazorProject/BlazorProject/BlazorProject.csproj b/BlazorProject/BlazorProject/BlazorProject.csproj index c78c9c7..c0eacf6 100644 --- a/BlazorProject/BlazorProject/BlazorProject.csproj +++ b/BlazorProject/BlazorProject/BlazorProject.csproj @@ -6,4 +6,11 @@ enable + + + + + + + diff --git a/BlazorProject/BlazorProject/Models/Item.cs b/BlazorProject/BlazorProject/Models/Item.cs new file mode 100644 index 0000000..b1ae29b --- /dev/null +++ b/BlazorProject/BlazorProject/Models/Item.cs @@ -0,0 +1,15 @@ +namespace BlazorProject.Models +{ + public class Item + { + public int Id { get; set; } + public string DisplayName { get; set; } + public string Name { get; set; } + public int StackSize { get; set; } + public int MaxDurability { get; set; } + public List EnchantCategories { get; set; } + public List RepairWith { get; set; } + public DateTime CreatedDate { get; set; } + public DateTime? UpdatedDate { get; set; } + } +} diff --git a/BlazorProject/BlazorProject/Pages/List.razor b/BlazorProject/BlazorProject/Pages/List.razor new file mode 100644 index 0000000..3077a5c --- /dev/null +++ b/BlazorProject/BlazorProject/Pages/List.razor @@ -0,0 +1,28 @@ +@page "/list" +@using BlazorProject.Models + +

List

+ + + + + + + + + @(string.Join(", ", ((Item)context).EnchantCategories)) + + + + + @(string.Join(", ", ((Item)context).RepairWith)) + + + + \ No newline at end of file diff --git a/BlazorProject/BlazorProject/Pages/List.razor.cs b/BlazorProject/BlazorProject/Pages/List.razor.cs new file mode 100644 index 0000000..916f19d --- /dev/null +++ b/BlazorProject/BlazorProject/Pages/List.razor.cs @@ -0,0 +1,37 @@ +using Blazorise.DataGrid; +using BlazorProject.Models; +using Microsoft.AspNetCore.Components; + +namespace BlazorProject.Pages +{ + public partial class List + { + private List items; + + private int totalItem; + + [Inject] + public HttpClient Http { get; set; } + + [Inject] + public NavigationManager NavigationManager { get; set; } + + 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 Http.GetFromJsonAsync($"{NavigationManager.BaseUri}fake-data.json")).Skip((e.Page - 1) * e.PageSize).Take(e.PageSize).ToList(); + + if (!e.CancellationToken.IsCancellationRequested) + { + totalItem = (await Http.GetFromJsonAsync>($"{NavigationManager.BaseUri}fake-data.json")).Count; + items = new List(response); // an actual data for the current page + } + } + } +} diff --git a/BlazorProject/BlazorProject/Pages/_Layout.cshtml b/BlazorProject/BlazorProject/Pages/_Layout.cshtml index fedeff4..49685b6 100644 --- a/BlazorProject/BlazorProject/Pages/_Layout.cshtml +++ b/BlazorProject/BlazorProject/Pages/_Layout.cshtml @@ -28,5 +28,9 @@ + + + + diff --git a/BlazorProject/BlazorProject/Program.cs b/BlazorProject/BlazorProject/Program.cs index 6aa6e57..bee85f2 100644 --- a/BlazorProject/BlazorProject/Program.cs +++ b/BlazorProject/BlazorProject/Program.cs @@ -1,3 +1,7 @@ +using Blazored.LocalStorage; +using Blazorise; +using Blazorise.Bootstrap; +using Blazorise.Icons.FontAwesome; using BlazorProject.Data; using Microsoft.AspNetCore.Components; using Microsoft.AspNetCore.Components.Web; @@ -8,6 +12,14 @@ var builder = WebApplication.CreateBuilder(args); builder.Services.AddRazorPages(); builder.Services.AddServerSideBlazor(); builder.Services.AddSingleton(); +builder.Services.AddHttpClient(); + +builder.Services + .AddBlazorise() + .AddBootstrapProviders() + .AddFontAwesomeIcons(); + +builder.Services.AddBlazoredLocalStorage(); var app = builder.Build(); diff --git a/BlazorProject/BlazorProject/Shared/NavMenu.razor b/BlazorProject/BlazorProject/Shared/NavMenu.razor index b62d642..0d13ba5 100644 --- a/BlazorProject/BlazorProject/Shared/NavMenu.razor +++ b/BlazorProject/BlazorProject/Shared/NavMenu.razor @@ -9,6 +9,12 @@