Compare commits

...

4 Commits

@ -1,16 +1,16 @@
namespace Blazor.Models
{
public class Answer
{
public int Id { get; private set; }
public string Content { get; set; }
public int IdQuestion { get; private set; }
namespace Blazor.Models
{
public class Answer
{
public int Id { get; private set; }
public string Content { get; set; }
public int IdQuestion { get; private set; }
public Answer(int id, string content, int idQuestion)
{
Id = id;
Content = content;
IdQuestion = idQuestion;
}
}
}
}
}
}

@ -12,5 +12,4 @@
Responsive>
<DataGridColumn TItem="Administrator" Field="@nameof(Administrator.Id)" Caption="#" />
<DataGridColumn TItem="Administrator" Field="@nameof(Administrator.Username)" Caption="Display userName" />
</DataGrid>
</DataGrid>

@ -0,0 +1,16 @@
@page "/answers"
@using Blazor.Models;
@using Blazorise.DataGrid
<h3>Answers</h3>
<DataGrid TItem="Answer"
Data="@answers"
ReadData="@OnReadData"
TotalItems="@totalItem"
PageSize="10"
ShowPager
Responsive>
<DataGridColumn TItem="Answer" Field="@nameof(Answer.Id)" Caption="#" />
<DataGridColumn TItem="Answer" Field="@nameof(Answer.Content)" Caption="Display content" />
<DataGridColumn TItem="Answer" Field="@nameof(Answer.IdQuestion)" Caption="# question" />
</DataGrid>

@ -0,0 +1,37 @@
using Microsoft.AspNetCore.Components;
using Blazor.Models;
using Blazorise.DataGrid;
namespace Blazor.Pages
{
public partial class Answers
{
public List<Answer> answers;
private int totalItem;
[Inject]
public HttpClient Http { get; set; }
[Inject]
public NavigationManager NavigationManager { get; set; }
private async Task OnReadData(DataGridReadDataEventArgs<Answer> e)
{
if (e.CancellationToken.IsCancellationRequested)
{
return;
}
// When you use a real API, we use this follow code
//var response = await Http.GetJsonAsync<Item[]>( $"http://my-api/api/data?page={e.Page}&pageSize={e.PageSize}" );
var response = (await Http.GetFromJsonAsync<Answer[]>($"{NavigationManager.BaseUri}fake-answer.json")).Skip((e.Page - 1) * e.PageSize).Take(e.PageSize).ToList();
if (!e.CancellationToken.IsCancellationRequested)
{
totalItem = (await Http.GetFromJsonAsync<List<Answer>>($"{NavigationManager.BaseUri}fake-answer.json")).Count;
answers = new List<Answer>(response); // an actual data for the current page
}
}
}
}

@ -0,0 +1,15 @@
@page "/players"
@using Blazor.Models;
@using Blazorise.DataGrid
<h3>Players</h3>
<DataGrid TItem="Player"
Data="@players"
ReadData="@OnReadData"
TotalItems="@totalItem"
PageSize="10"
ShowPager
Responsive>
<DataGridColumn TItem="Player" Field="@nameof(Player.Id)" Caption="#" />
<DataGridColumn TItem="Player" Field="@nameof(Player.Nickname)" Caption="Display nickname" />
</DataGrid>

@ -0,0 +1,37 @@
using Microsoft.AspNetCore.Components;
using Blazor.Models;
using Blazorise.DataGrid;
namespace Blazor.Pages
{
public partial class Players
{
public List<Player> players;
private int totalItem;
[Inject]
public HttpClient Http { get; set; }
[Inject]
public NavigationManager NavigationManager { get; set; }
private async Task OnReadData(DataGridReadDataEventArgs<Player> e)
{
if (e.CancellationToken.IsCancellationRequested)
{
return;
}
// When you use a real API, we use this follow code
//var response = await Http.GetJsonAsync<Item[]>( $"http://my-api/api/data?page={e.Page}&pageSize={e.PageSize}" );
var response = (await Http.GetFromJsonAsync<Player[]>($"{NavigationManager.BaseUri}fake-player.json")).Skip((e.Page - 1) * e.PageSize).Take(e.PageSize).ToList();
if (!e.CancellationToken.IsCancellationRequested)
{
totalItem = (await Http.GetFromJsonAsync<List<Player>>($"{NavigationManager.BaseUri}fake-player.json")).Count;
players = new List<Player>(response); // an actual data for the current page
}
}
}
}

@ -0,0 +1,19 @@
@page "/questions"
@using Blazor.Models;
@using Blazorise.DataGrid
<h3>Questions</h3>
<DataGrid TItem="Question"
Data="@questions"
ReadData="@OnReadData"
TotalItems="@totalItem"
PageSize="10"
ShowPager
Responsive>
<DataGridColumn TItem="Question" Field="@nameof(Question.Id)" Caption="#" />
<DataGridColumn TItem="Question" Field="@nameof(Question.IdChapter)" Caption="# chapter" />
<DataGridColumn TItem="Question" Field="@nameof(Question.IdAnswerGood)" Caption="# correct aswer" />
<DataGridColumn TItem="Question" Field="@nameof(Question.Content)" Caption="Display content" />
<DataGridColumn TItem="Question" Field="@nameof(Question.Difficulty)" Caption="Difficulty" />
<DataGridColumn TItem="Question" Field="@nameof(Question.nbFails)" Caption="Number of fails" />
</DataGrid>

@ -0,0 +1,37 @@
using Microsoft.AspNetCore.Components;
using Blazor.Models;
using Blazorise.DataGrid;
namespace Blazor.Pages
{
public partial class Questions
{
public List<Question> questions;
private int totalItem;
[Inject]
public HttpClient Http { get; set; }
[Inject]
public NavigationManager NavigationManager { get; set; }
private async Task OnReadData(DataGridReadDataEventArgs<Question> e)
{
if (e.CancellationToken.IsCancellationRequested)
{
return;
}
// When you use a real API, we use this follow code
//var response = await Http.GetJsonAsync<Item[]>( $"http://my-api/api/data?page={e.Page}&pageSize={e.PageSize}" );
var response = (await Http.GetFromJsonAsync<Question[]>($"{NavigationManager.BaseUri}fake-question.json")).Skip((e.Page - 1) * e.PageSize).Take(e.PageSize).ToList();
if (!e.CancellationToken.IsCancellationRequested)
{
totalItem = (await Http.GetFromJsonAsync<List<Question>>($"{NavigationManager.BaseUri}fake-question.json")).Count;
questions = new List<Question>(response); // an actual data for the current page
}
}
}
}

@ -19,11 +19,26 @@
<span class="oi oi-plus" aria-hidden="true"></span> Administrators
</NavLink>
</div>
<div class="nav-item px-3">
<NavLink class="nav-link" href="players">
<span class="oi oi-plus" aria-hidden="true"></span> Players
</NavLink>
</div>
<div class="nav-item px-3">
<NavLink class="nav-link" href="chapters">
<span class="oi oi-plus" aria-hidden="true"></span> Chapters
</NavLink>
</div>
<div class="nav-item px-3">
<NavLink class="nav-link" href="questions">
<span class="oi oi-plus" aria-hidden="true"></span> Questions
</NavLink>
</div>
<div class="nav-item px-3">
<NavLink class="nav-link" href="answers">
<span class="oi oi-plus" aria-hidden="true"></span> Answers
</NavLink>
</div>
<div class="nav-item px-3">
<NavLink class="nav-link" href="fetchdata">
<span class="oi oi-list-rich" aria-hidden="true"></span> Fetch data

Loading…
Cancel
Save