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 @@