Inventaire
@@ -18,17 +21,20 @@
+
-
-
diff --git a/ValblazeProject/Pages/Inventaire.razor.cs b/ValblazeProject/Pages/Inventaire.razor.cs
index ddad737..cee7a00 100644
--- a/ValblazeProject/Pages/Inventaire.razor.cs
+++ b/ValblazeProject/Pages/Inventaire.razor.cs
@@ -17,6 +17,7 @@ namespace ValblazeProject.Pages
{
public partial class Inventaire
{
+ /******************* Initialisation des attributs *******************/
private List- items;
private int totalItem;
@@ -38,40 +39,66 @@ namespace ValblazeProject.Pages
public IModalService Modal { get; set; }
private DataGrid
- dataGrid;
-
-
private string _searchText;
-
private int totalSizeByPage = 10;
+ private bool _trie = false;
+
- public string search
+ /******************* Attribut modifier *******************/
+ private string search
{
get { return _searchText; }
set
{
- _searchText = value;
- OnSearch();
- }
+ if(_searchText != value )
+ {
+ _searchText = value;
+ SearchTextChange();
+ }
+ }
}
- public async Task OnSearch()
+ private bool trieActive
{
- List
- maListe = await DataService.List();
- items.Clear();
- foreach(var item in maListe)
+ get { return _trie; }
+ set
{
- 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 *******************/
+ ///
+ /// Trie par ordre alphabétique
+ ///
+ ///
+ public async Task TrieChanged()
+ {
+ await dataGrid.Reload();
StateHasChanged();
}
+ ///
+ /// Méthode de recherche
+ ///
+ ///
+ public async Task SearchTextChange()
+ {
+ dataGrid.CurrentPage = 1;
+ await dataGrid.Reload();
+ StateHasChanged();
+ }
+
+ ///
+ /// Initialisation des données via un service
+ ///
+ ///
+ ///
private async Task OnReadData(DataGridReadDataEventArgs
- e)
{
if (e.CancellationToken.IsCancellationRequested)
@@ -81,15 +108,34 @@ namespace ValblazeProject.Pages
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);
- totalItem = await DataService.Count();
+ //await OnSearch();
+ 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();
}
}
diff --git a/ValblazeProject/Pages/Inventaire.razor.css b/ValblazeProject/Pages/Inventaire.razor.css
index 5c0ad96..0796369 100644
--- a/ValblazeProject/Pages/Inventaire.razor.css
+++ b/ValblazeProject/Pages/Inventaire.razor.css
@@ -20,13 +20,12 @@
margin-top: 10px;
}
-.filtre {
+.LabelFiltre {
+ display: flex;
margin-left: 25px;
- border: none;
+}
+
+.filtre {
width: 42px;
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;
}
\ No newline at end of file
diff --git a/ValblazeProject/Services/DataApiService.cs b/ValblazeProject/Services/DataApiService.cs
index 2744483..c8cde04 100644
--- a/ValblazeProject/Services/DataApiService.cs
+++ b/ValblazeProject/Services/DataApiService.cs
@@ -1,4 +1,5 @@
-using ValblazeProject.Components;
+using System.Xml.Linq;
+using ValblazeProject.Components;
using ValblazeProject.Factories;
using ValblazeProject.Models;