feat : supprimer

pull/38/head
Yvan CALATAYUD 1 year ago
parent 4010e2dcb0
commit 58c72601db

@ -2,7 +2,7 @@
using Blazored.Modal.Services; using Blazored.Modal.Services;
using Blazored.Modal; using Blazored.Modal;
using Microsoft.AspNetCore.Components; using Microsoft.AspNetCore.Components;
using Blazor.Models; using Blazor.ViewClasses;
namespace Blazor.Modals namespace Blazor.Modals
{ {

@ -28,5 +28,5 @@
<button type="button" class="btn btn-primary" @onclick="() => OnDelete(context.Id)"><i class="fa fa-trash"></i> Supprimer</button> <button type="button" class="btn btn-primary" @onclick="() => OnDelete(context.Id)"><i class="fa fa-trash"></i> Supprimer</button>
</DisplayTemplate> </DisplayTemplate>
</DataGridColumn> </DataGridColumn>
</DataGrid> </DataGrid>
<script src="Pages/Chapters.razor.js"></script> <script src="Pages/Chapters.razor.js"></script>

@ -1,48 +1,102 @@
using Microsoft.AspNetCore.Components; using Blazored.LocalStorage;
using Blazor.Models;
using Blazorise.DataGrid;
using Blazored.LocalStorage;
using Blazor.Services; using Blazor.Services;
using Blazor.Modals; using Blazor.Modals;
using Blazored.Modal; using Blazored.Modal;
using Blazored.Modal.Services; using Blazored.Modal.Services;
using Blazor.ViewClasses;
using System.Text;
using Microsoft.JSInterop;
using Microsoft.AspNetCore.Components;
using Blazorise.DataGrid;
using ChoETL;
namespace Blazor.Pages
namespace Blazor.Pages;
public partial class Chapters
{ {
public partial class Chapters public List<Chapter> chapters;
{
public List<Chapter> chapters; private int totalChapter;
[Inject]
public NavigationManager NavigationManager { get; set; }
[CascadingParameter]
public IModalService Modal { get; set; }
private int totalItem; [Inject]
public IDataService DataService { get; set; }
public IWebHostEnvironment WebHostEnvironment { get; set; }
[Inject] [Inject]
public NavigationManager NavigationManager { get; set; } public HttpClient Http { get; set; }
[CascadingParameter] [Inject]
public IModalService Modal { get; set; } public ILocalStorageService LocalStorage { get; set; }
[Inject] [Inject]
public IDataService DataService { get; set; } public IJSRuntime IJSRuntime { get; set; }
[Inject] protected override async Task OnAfterRenderAsync(bool firstRender)
public IWebHostEnvironment WebHostEnvironment { get; set; } {
// Do not treat this action if is not the first render
if (!firstRender)
{
return;
}
var currentData = await LocalStorage.GetItemAsync<Chapter[]>("data");
private async Task OnReadData(DataGridReadDataEventArgs<Chapter> e) // 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<Chapter[]>($"https://trusting-panini.87-106-126-109.plesk.page/api/chapters").Result;
await LocalStorage.SetItemAsync("data", originalData);
}
}
private async Task OnReadData(DataGridReadDataEventArgs<Chapter> e)
{ {
if (e.CancellationToken.IsCancellationRequested) if (e.CancellationToken.IsCancellationRequested)
{ {
return; return;
} }
// When you use a real API, we use this follow code
//var response = await Http.GetFromJsonAsync<ChaptersModel[]>( $"https://trusting-panini.87-106-126-109.plesk.page/api/chapters?page={e.Page}&pageSize={e.PageSize}" );
var response = Http.GetFromJsonAsync<Chapter[]>($"https://trusting-panini.87-106-126-109.plesk.page/api/chapters").Result;
if (!e.CancellationToken.IsCancellationRequested) if (!e.CancellationToken.IsCancellationRequested)
{ {
chapters = await DataService.List(e.Page, e.PageSize); totalChapter = (await LocalStorage.GetItemAsync<List<Chapter>>("data")).Count;
totalItem = await DataService.Count(); chapters = new List<Chapter>(response); // an actual data for the current page
}
}
private async void Export()
{
StringBuilder sb = new StringBuilder();
HttpResponseMessage response = await Http.GetAsync("https://trusting-panini.87-106-126-109.plesk.page/api/chapters");
var json = await response.Content.ReadAsStringAsync();
using (var jsonFile = ChoJSONReader.LoadText(json))
{
using (var csvFile = new ChoCSVWriter(sb).WithFirstLineHeader())
{
csvFile.Write(jsonFile);
} }
} }
var sentFile = new MemoryStream(Encoding.UTF32.GetBytes(sb.ToString()));
using (var streamRef = new DotNetStreamReference(stream: sentFile))
{
await IJSRuntime.InvokeVoidAsync("downloadFileFromStream", "data.csv", streamRef);
}
}
private async void OnDelete(int id) private async void OnDelete(int id)
{ {
var parameters = new ModalParameters(); var parameters = new ModalParameters();
parameters.Add(nameof(Chapter.Id), id); parameters.Add(nameof(Chapter.Id), id);

Loading…
Cancel
Save