Finish Liste element

pull/9/head
Louis DUFOUR 3 years ago
parent d1775666b1
commit 0f1ffbfc24

@ -3,6 +3,9 @@
@using ValblazeProject.Components @using ValblazeProject.Components
@using ValblazeProject.Models @using ValblazeProject.Models
<link href="/path/to/bootstrap.min.css" rel="stylesheet">
<link href="dist/css/component-custom-switch.css" rel="stylesheet">
<main class="contentInvent"> <main class="contentInvent">
<div class="inventaire"> <div class="inventaire">
<h3>Inventaire</h3> <h3>Inventaire</h3>
@ -18,17 +21,20 @@
<div class="toolSearch"> <div class="toolSearch">
<label> <label>
Recherche: Recherche:
<input type="text" @bind-value="search" name="searchBar" /> <input type="text" @bind-value="search"/>
</label>
<label class="LabelFiltre">
Trie:
<input class="filtre" @bind-value="trieActive" onclick="@TrieChanged" type="checkbox">
</label> </label>
<button class="filtre"></button>
</div> </div>
<DataGrid TItem="Item" <DataGrid TItem="Item"
Data="@items" Data="@items"
ReadData="@OnReadData" ReadData="@OnReadData"
TotalItems="@totalItem" TotalItems="@totalItem"
PageSize="@totalSizeByPage" PageSize="@totalSizeByPage"
@ref="dataGrid" @ref="dataGrid"
ShowPager ShowPager
Responsive> Responsive>

@ -17,6 +17,7 @@ namespace ValblazeProject.Pages
{ {
public partial class Inventaire public partial class Inventaire
{ {
/******************* Initialisation des attributs *******************/
private List<Item> items; private List<Item> items;
private int totalItem; private int totalItem;
@ -38,40 +39,66 @@ namespace ValblazeProject.Pages
public IModalService Modal { get; set; } public IModalService Modal { get; set; }
private DataGrid<Item> dataGrid; private DataGrid<Item> dataGrid;
private string _searchText; private string _searchText;
private int totalSizeByPage = 10; private int totalSizeByPage = 10;
private bool _trie = false;
public string search /******************* Attribut modifier *******************/
private string search
{ {
get { return _searchText; } get { return _searchText; }
set set
{
if(_searchText != value )
{ {
_searchText = value; _searchText = value;
OnSearch(); SearchTextChange();
}
} }
} }
public async Task OnSearch() private bool trieActive
{ {
List<Item> maListe = await DataService.List(); get { return _trie; }
items.Clear(); set
foreach(var item in maListe)
{ {
if(item.DisplayName == null || string.IsNullOrEmpty(_searchText) || item.DisplayName.Contains(_searchText)) if (_trie != value)
{ {
items.Add(item); _trie = value;
TrieChanged();
} }
} }
totalItem = items.Count; }
int pageCourante = dataGrid.CurrentPage;
items = items.Skip((pageCourante - 1) * totalSizeByPage).Take(totalSizeByPage).ToList(); /******************* Méthodes *******************/
/// <summary>
/// Trie par ordre alphabétique
/// </summary>
/// <returns></returns>
public async Task TrieChanged()
{
await dataGrid.Reload();
StateHasChanged(); StateHasChanged();
} }
/// <summary>
/// Méthode de recherche
/// </summary>
/// <returns></returns>
public async Task SearchTextChange()
{
dataGrid.CurrentPage = 1;
await dataGrid.Reload();
StateHasChanged();
}
/// <summary>
/// Initialisation des données via un service
/// </summary>
/// <param name="e"></param>
/// <returns></returns>
private async Task OnReadData(DataGridReadDataEventArgs<Item> e) private async Task OnReadData(DataGridReadDataEventArgs<Item> e)
{ {
if (e.CancellationToken.IsCancellationRequested) if (e.CancellationToken.IsCancellationRequested)
@ -81,15 +108,34 @@ namespace ValblazeProject.Pages
if (!e.CancellationToken.IsCancellationRequested) if (!e.CancellationToken.IsCancellationRequested)
{ {
if (string.IsNullOrEmpty(_searchText)) /* Il est important de découper le processus en 3 étapes:
1. le filtre
2. le tri
3. la pagination
*/
items = await DataService.List();
//totalItem = items.Count();
// Search
if (!string.IsNullOrEmpty(_searchText))
{ {
items = await DataService.List(e.Page, e.PageSize); //await OnSearch();
totalItem = await DataService.Count(); items = items.Where(i => i.DisplayName.Contains(_searchText)).ToList();
} }
else
// Trie
if (_trie)
{ {
await OnSearch(); items = items.OrderBy(i => i.DisplayName).ToList();
//await SortByName();
} }
// Gestion pagination
totalItem = items.Count;
int pageCourante = dataGrid.CurrentPage;
items = items.Skip((pageCourante - 1) * totalSizeByPage).Take(totalSizeByPage).ToList();
StateHasChanged();
} }
} }

@ -20,13 +20,12 @@
margin-top: 10px; margin-top: 10px;
} }
.filtre { .LabelFiltre {
display: flex;
margin-left: 25px; margin-left: 25px;
border: none; }
.filtre {
width: 42px; width: 42px;
height: 32px; height: 32px;
background-image: url(https://cdn-icons-png.flaticon.com/512/21/21229.png);
background-size: contain;
background-repeat: no-repeat;
background-color: transparent;
} }

@ -1,4 +1,5 @@
using ValblazeProject.Components; using System.Xml.Linq;
using ValblazeProject.Components;
using ValblazeProject.Factories; using ValblazeProject.Factories;
using ValblazeProject.Models; using ValblazeProject.Models;

Loading…
Cancel
Save