diff --git a/myBlazorApp/Minecraft.Crafting.Api/Data/inventory.json b/myBlazorApp/Minecraft.Crafting.Api/Data/inventory.json index 45ccd38..47655a9 100644 --- a/myBlazorApp/Minecraft.Crafting.Api/Data/inventory.json +++ b/myBlazorApp/Minecraft.Crafting.Api/Data/inventory.json @@ -4,10 +4,10 @@ "position": 1 }, { - "itemName": "toto", + "itemName": "lili", "position": 2, - "number": 3, - "stackSize": 6 + "number": 11, + "stackSize": 64 }, { "itemName": "lulu", @@ -36,20 +36,16 @@ "position": 8 }, { - "itemName": "toto", - "position": 9, - "number": 3, - "stackSize": 6 + "itemName": "null", + "position": 9 }, { "itemName": "null", "position": 10 }, { - "itemName": "lili", - "position": 11, - "number": 11, - "stackSize": 64 + "itemName": "null", + "position": 11 }, { "itemName": "null", diff --git a/myBlazorApp/Minecraft.Crafting.Api/Data/items.json b/myBlazorApp/Minecraft.Crafting.Api/Data/items.json index 3ef3c46..9a6df2e 100644 --- a/myBlazorApp/Minecraft.Crafting.Api/Data/items.json +++ b/myBlazorApp/Minecraft.Crafting.Api/Data/items.json @@ -1,15 +1,4 @@ [ - { - "createdDate": "2022-11-25T15:00:27.815637+01:00", - "displayName": "Stone", - "enchantCategories": [], - "id": 1, - "imageBase64": "iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAACXBIWXMAAAsTAAALEwEAmpwYAAAKT2lDQ1BQaG90b3Nob3AgSUNDIHByb2ZpbGUAAHjanVNnVFPpFj333vRCS4iAlEtvUhUIIFJCi4AUkSYqIQkQSoghodkVUcERRUUEG8igiAOOjoCMFVEsDIoK2AfkIaKOg6OIisr74Xuja9a89\u002BbN/rXXPues852zzwfACAyWSDNRNYAMqUIeEeCDx8TG4eQuQIEKJHAAEAizZCFz/SMBAPh\u002BPDwrIsAHvgABeNMLCADATZvAMByH/w/qQplcAYCEAcB0kThLCIAUAEB6jkKmAEBGAYCdmCZTAKAEAGDLY2LjAFAtAGAnf\u002BbTAICd\u002BJl7AQBblCEVAaCRACATZYhEAGg7AKzPVopFAFgwABRmS8Q5ANgtADBJV2ZIALC3AMDOEAuyAAgMADBRiIUpAAR7AGDIIyN4AISZABRG8lc88SuuEOcqAAB4mbI8uSQ5RYFbCC1xB1dXLh4ozkkXKxQ2YQJhmkAuwnmZGTKBNA/g88wAAKCRFRHgg/P9eM4Ors7ONo62Dl8t6r8G/yJiYuP\u002B5c\u002BrcEAAAOF0ftH\u002BLC\u002BzGoA7BoBt/qIl7gRoXgugdfeLZrIPQLUAoOnaV/Nw\u002BH48PEWhkLnZ2eXk5NhKxEJbYcpXff5nwl/AV/1s\u002BX48/Pf14L7iJIEyXYFHBPjgwsz0TKUcz5IJhGLc5o9H/LcL//wd0yLESWK5WCoU41EScY5EmozzMqUiiUKSKcUl0v9k4t8s\u002BwM\u002B3zUAsGo\u002BAXuRLahdYwP2SycQWHTA4vcAAPK7b8HUKAgDgGiD4c93/\u002B8//UegJQCAZkmScQAAXkQkLlTKsz/HCAAARKCBKrBBG/TBGCzABhzBBdzBC/xgNoRCJMTCQhBCCmSAHHJgKayCQiiGzbAdKmAv1EAdNMBRaIaTcA4uwlW4Dj1wD/phCJ7BKLyBCQRByAgTYSHaiAFiilgjjggXmYX4IcFIBBKLJCDJiBRRIkuRNUgxUopUIFVIHfI9cgI5h1xGupE7yAAygvyGvEcxlIGyUT3UDLVDuag3GoRGogvQZHQxmo8WoJvQcrQaPYw2oefQq2gP2o8\u002BQ8cwwOgYBzPEbDAuxsNCsTgsCZNjy7EirAyrxhqwVqwDu4n1Y8\u002BxdwQSgUXACTYEd0IgYR5BSFhMWE7YSKggHCQ0EdoJNwkDhFHCJyKTqEu0JroR\u002BcQYYjIxh1hILCPWEo8TLxB7iEPENyQSiUMyJ7mQAkmxpFTSEtJG0m5SI\u002BksqZs0SBojk8naZGuyBzmULCAryIXkneTD5DPkG\u002BQh8lsKnWJAcaT4U\u002BIoUspqShnlEOU05QZlmDJBVaOaUt2ooVQRNY9aQq2htlKvUYeoEzR1mjnNgxZJS6WtopXTGmgXaPdpr\u002Bh0uhHdlR5Ol9BX0svpR\u002BiX6AP0dwwNhhWDx4hnKBmbGAcYZxl3GK\u002BYTKYZ04sZx1QwNzHrmOeZD5lvVVgqtip8FZHKCpVKlSaVGyovVKmqpqreqgtV81XLVI\u002BpXlN9rkZVM1PjqQnUlqtVqp1Q61MbU2epO6iHqmeob1Q/pH5Z/YkGWcNMw09DpFGgsV/jvMYgC2MZs3gsIWsNq4Z1gTXEJrHN2Xx2KruY/R27iz2qqaE5QzNKM1ezUvOUZj8H45hx\u002BJx0TgnnKKeX836K3hTvKeIpG6Y0TLkxZVxrqpaXllirSKtRq0frvTau7aedpr1Fu1n7gQ5Bx0onXCdHZ4/OBZ3nU9lT3acKpxZNPTr1ri6qa6UbobtEd79up\u002B6Ynr5egJ5Mb6feeb3n\u002Bhx9L/1U/W36p/VHDFgGswwkBtsMzhg8xTVxbzwdL8fb8VFDXcNAQ6VhlWGX4YSRudE8o9VGjUYPjGnGXOMk423GbcajJgYmISZLTepN7ppSTbmmKaY7TDtMx83MzaLN1pk1mz0x1zLnm\u002Beb15vft2BaeFostqi2uGVJsuRaplnutrxuhVo5WaVYVVpds0atna0l1rutu6cRp7lOk06rntZnw7Dxtsm2qbcZsOXYBtuutm22fWFnYhdnt8Wuw\u002B6TvZN9un2N/T0HDYfZDqsdWh1\u002Bc7RyFDpWOt6azpzuP33F9JbpL2dYzxDP2DPjthPLKcRpnVOb00dnF2e5c4PziIuJS4LLLpc\u002BLpsbxt3IveRKdPVxXeF60vWdm7Obwu2o26/uNu5p7ofcn8w0nymeWTNz0MPIQ\u002BBR5dE/C5\u002BVMGvfrH5PQ0\u002BBZ7XnIy9jL5FXrdewt6V3qvdh7xc\u002B9j5yn\u002BM\u002B4zw33jLeWV/MN8C3yLfLT8Nvnl\u002BF30N/I/9k/3r/0QCngCUBZwOJgUGBWwL7\u002BHp8Ib\u002BOPzrbZfay2e1BjKC5QRVBj4KtguXBrSFoyOyQrSH355jOkc5pDoVQfujW0Adh5mGLw34MJ4WHhVeGP45wiFga0TGXNXfR3ENz30T6RJZE3ptnMU85ry1KNSo\u002Bqi5qPNo3ujS6P8YuZlnM1VidWElsSxw5LiquNm5svt/87fOH4p3iC\u002BN7F5gvyF1weaHOwvSFpxapLhIsOpZATIhOOJTwQRAqqBaMJfITdyWOCnnCHcJnIi/RNtGI2ENcKh5O8kgqTXqS7JG8NXkkxTOlLOW5hCepkLxMDUzdmzqeFpp2IG0yPTq9MYOSkZBxQqohTZO2Z\u002Bpn5mZ2y6xlhbL\u002BxW6Lty8elQfJa7OQrAVZLQq2QqboVFoo1yoHsmdlV2a/zYnKOZarnivN7cyzytuQN5zvn//tEsIS4ZK2pYZLVy0dWOa9rGo5sjxxedsK4xUFK4ZWBqw8uIq2Km3VT6vtV5eufr0mek1rgV7ByoLBtQFr6wtVCuWFfevc1\u002B1dT1gvWd\u002B1YfqGnRs\u002BFYmKrhTbF5cVf9go3HjlG4dvyr\u002BZ3JS0qavEuWTPZtJm6ebeLZ5bDpaql\u002BaXDm4N2dq0Dd9WtO319kXbL5fNKNu7g7ZDuaO/PLi8ZafJzs07P1SkVPRU\u002BlQ27tLdtWHX\u002BG7R7ht7vPY07NXbW7z3/T7JvttVAVVN1WbVZftJ\u002B7P3P66Jqun4lvttXa1ObXHtxwPSA/0HIw6217nU1R3SPVRSj9Yr60cOxx\u002B\u002B/p3vdy0NNg1VjZzG4iNwRHnk6fcJ3/ceDTradox7rOEH0x92HWcdL2pCmvKaRptTmvtbYlu6T8w\u002B0dbq3nr8R9sfD5w0PFl5SvNUyWna6YLTk2fyz4ydlZ19fi753GDborZ752PO32oPb\u002B\u002B6EHTh0kX/i\u002Bc7vDvOXPK4dPKy2\u002BUTV7hXmq86X23qdOo8/pPTT8e7nLuarrlca7nuer21e2b36RueN87d9L158Rb/1tWeOT3dvfN6b/fF9/XfFt1\u002Bcif9zsu72Xcn7q28T7xf9EDtQdlD3YfVP1v\u002B3Njv3H9qwHeg89HcR/cGhYPP/pH1jw9DBY\u002BZj8uGDYbrnjg\u002BOTniP3L96fynQ89kzyaeF/6i/suuFxYvfvjV69fO0ZjRoZfyl5O/bXyl/erA6xmv28bCxh6\u002ByXgzMV70VvvtwXfcdx3vo98PT\u002BR8IH8o/2j5sfVT0Kf7kxmTk/8EA5jz/GMzLdsAAAAgY0hSTQAAeiUAAICDAAD5/wAAgOkAAHUwAADqYAAAOpgAABdvkl/FRgAAAwBJREFUeNoky8lOG3cAwOHf7LsN9hhoqkKdBgJ2UaTeqqruK0TqA/RY9S36eOkhCYoKyCEEA7ZZbM94m\u002BU/M57pod/9k/76849qs9kwHD2Qp4JOt4NhGgSzGbIkc355wQ/tl6yjiNbuDnmasVwvURQZkJCDWcjkaUowCWg0G1DBVf8KWZGxbQfbtLm7H5FmGV/7X3iePGPbFu2Xh0CFHEUR4XzB29/fUt\u002BqkYiY1q7P5GmKbuoUZUmjsUWv16Nz2qUEJtOA/vkFjuUi/fLzT1W328EybAASEROGczynRhgGgITnOfi\u002BT5Im6JpBFK\u002B5HdwRixT5pNMhnM6J0hiAsgLLMomSNQcHB0RJhKqqJGmCSHOQ4PHxCc002G21UMcPD1RF8X/eLhFpSpZlFFnB\u002B7OPvD58RZKkaKaBV3N5//EDnlfj22/2cBwX1VB0oixnU20QacpytUIIgaKobNXqrNYr6vU6pmYwHo5RZY3NpkBRNbJMIOumRpoKqhJGwwcW8yWKJFHzXObLBfeDIeF0ztXNNUVRYHs2hmHw/PhEs9lCnS8WGJpGvsmwHIv9/e8YD8f4jSZlXpJmgtFohG6a7LXb5EWGZZropsE/794hl6LAdT12/B1Ojo6QJXjz5g2fzs9ptLbZ3qrj1j1azSaJSMjyDMu2UWSFdvt7VNUy2Huxw3Q6w3JMgiAgCALa\u002B/tcXPYBkJAwdMFGJJi6ThLHKKqCZdvIiizx9PiM7zdZrWN83wdA5Bm//drj5PgIQ9Ponp5yfHhImmXc3Az4cnWNIsvIYRjit5pEUYRjmwCoqoah6axWS\u002B7v7lE1hev\u002BZ8qyotfr4boOruPy78UFarfb4eZ6gOlY6IbJYj7D1E0s1\u002BHD2RlbtTrdH095fnzgevCV29sB\u002B/sHBOGcvRe7KMevX/3daDYIJjNEJpCQGI7HUFTIqsJytcLzHLI8x9J1SiqiaE0Sx0RxjOy6HkIITMuiKDYkScxuqwVSxcnREa7r0r/8DIDjOhQip6wqbMdB01T\u002BGwBNw21\u002BlKYonwAAAABJRU5ErkJggg==", - "maxDurability": 1, - "name": "stone", - "repairWith": [], - "stackSize": 64 - }, { "displayName": "Grass Block", "enchantCategories": [], diff --git a/myBlazorApp/myBlazorApp.sln b/myBlazorApp/myBlazorApp.sln index fe5f3da..e017d19 100644 --- a/myBlazorApp/myBlazorApp.sln +++ b/myBlazorApp/myBlazorApp.sln @@ -1,11 +1,11 @@  Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio Version 16 -VisualStudioVersion = 25.0.1703.8 +# Visual Studio Version 17 +VisualStudioVersion = 17.3.32929.385 MinimumVisualStudioVersion = 10.0.40219.1 -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "myBlazorApp", "myBlazorApp\myBlazorApp.csproj", "{B9317D91-B843-4D1A-A34F-AB423CA49376}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "myBlazorApp", "myBlazorApp\myBlazorApp.csproj", "{B9317D91-B843-4D1A-A34F-AB423CA49376}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Minecraft.Crafting.Api", "Minecraft.Crafting.Api\Minecraft.Crafting.Api.csproj", "{2CBB101E-B0BD-4637-AD7C-779FBA91E87B}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Minecraft.Crafting.Api", "Minecraft.Crafting.Api\Minecraft.Crafting.Api.csproj", "{2CBB101E-B0BD-4637-AD7C-779FBA91E87B}" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution diff --git a/myBlazorApp/myBlazorApp/Pages/Inventory.razor b/myBlazorApp/myBlazorApp/Pages/Inventory.razor index 76f911c..cc16521 100644 --- a/myBlazorApp/myBlazorApp/Pages/Inventory.razor +++ b/myBlazorApp/myBlazorApp/Pages/Inventory.razor @@ -1,9 +1,10 @@ @page "/inventory" @using myBlazorApp.Components @using System.Globalization -@using myBlazorApp.Models; - -
+@using myBlazorApp.Models; +@using Syncfusion.Blazor.Grids; + +
@@ -11,18 +12,23 @@

List of Items

- @*SearchBar*@ + + + + + - - - + + @if (!string.IsNullOrWhiteSpace(context.ImageBase64)) { @@ -34,7 +40,8 @@ } +
-
+
\ No newline at end of file diff --git a/myBlazorApp/myBlazorApp/Pages/Inventory.razor.cs b/myBlazorApp/myBlazorApp/Pages/Inventory.razor.cs index c6c5ee5..63b6ae1 100644 --- a/myBlazorApp/myBlazorApp/Pages/Inventory.razor.cs +++ b/myBlazorApp/myBlazorApp/Pages/Inventory.razor.cs @@ -1,7 +1,11 @@ using System; +using System.ComponentModel; +using System.Runtime.CompilerServices; using Blazored.Modal; using Blazored.Modal.Services; +using Blazorise; using Blazorise.DataGrid; +using Blazorise.Extensions; using Microsoft.AspNetCore.Components; using Microsoft.Extensions.Localization; using myBlazorApp.Components; @@ -9,27 +13,32 @@ using myBlazorApp.Factories; using myBlazorApp.Modals; using myBlazorApp.Models; using myBlazorApp.Services; +using IModalService = Blazored.Modal.Services.IModalService; namespace myBlazorApp.Pages { - public partial class Inventory + public partial class Inventory { public List itemsInv = new List(); private List items = new List(); - /*[Parameter] - public int Id { get; set; } - */ + private List full = new List(); - private ItemModel itemModel = new() - { - EnchantCategories = new List(), - RepairWith = new List() - }; + private List choix = new List(); + + public string SearchText = ""; private int totalItem; + private int currentPage; + + private int pageSize; + + List Filtered = new List(); + + List Sorted = new List(); + [Inject] public IDataService DataService { get; set; } @@ -42,8 +51,12 @@ namespace myBlazorApp.Pages [CascadingParameter] public IModalService Modal { get; set; } + private bool isSorted = false; + + private async Task OnReadData(DataGridReadDataEventArgs e) { + if (e.CancellationToken.IsCancellationRequested) { return; @@ -51,29 +64,90 @@ namespace myBlazorApp.Pages if (!e.CancellationToken.IsCancellationRequested) { - items = await DataService.List(e.Page, e.PageSize); totalItem = await DataService.Count(); - itemsInv = await DataService.GetInventoryItems(); + items = await DataService.List(e.Page, e.PageSize); + full = await DataService.List(e.Page, totalItem); + itemsInv = await DataService.GetInventoryItems(); + currentPage = e.Page; + pageSize = e.PageSize; + if(isSorted==false) + { + choix = items; + } + else + { + choix = SortList(); + return; + } + if (SearchText.IsNullOrEmpty()) + { + choix = items; + } + else + { + choix = choseList(); + return; + } + StateHasChanged(); } - } - - private async void OnDelete(int id) - { - var parameters = new ModalParameters(); - parameters.Add(nameof(Item.Id), id); + } - var modal = Modal.Show("Delete Confirmation", parameters); - var result = await modal.Result; + private List choseList() + { + if (SearchText.IsNullOrEmpty()) + { + choix = items; + totalItem = items.Count(); + NavigationManager.NavigateTo("inventory", false); + } + else + { + if (Filtered.Count() < (currentPage - 1) * 10 + pageSize) + { + pageSize = Filtered.Count() - (currentPage - 1) * 10; + } + choix = Filtered.GetRange((currentPage - 1) * 10, pageSize); + totalItem = Filtered.Count(); + } + StateHasChanged(); + NavigationManager.NavigateTo("inventory", false); + return choix; + } - if (result.Cancelled) - { - return; - } + private void inputValue() + { + Filtered = full.Where( + itm => itm.DisplayName.ToLower().Contains(SearchText.ToLower())).ToList(); + choseList(); + } - await DataService.Delete(id); + private void OnPress() + { + if (isSorted == true) + { + isSorted = false; + } + else isSorted = true; + SortList(); + } - // Reload the page - NavigationManager.NavigateTo("list", true); + private List SortList() + { + if (isSorted == false) + { + choix = items; + NavigationManager.NavigateTo("inventory", true); + } + else + { + if(Sorted.IsNullOrEmpty()) + { + Sorted = full; + } + Sorted.Sort((x, y) => string.Compare(x.DisplayName, y.DisplayName)); + choix = Sorted.GetRange((currentPage - 1) * 10, pageSize); + } + return choix; } } } diff --git a/myBlazorApp/myBlazorApp/Services/DataLocalService.cs b/myBlazorApp/myBlazorApp/Services/DataLocalService.cs index 82e2857..05f43ab 100644 --- a/myBlazorApp/myBlazorApp/Services/DataLocalService.cs +++ b/myBlazorApp/myBlazorApp/Services/DataLocalService.cs @@ -1,4 +1,5 @@  using System; +using System.Linq; using Blazored.LocalStorage; using Microsoft.AspNetCore.Components; using myBlazorApp.Components; diff --git a/myBlazorApp/myBlazorApp/myBlazorApp.csproj b/myBlazorApp/myBlazorApp/myBlazorApp.csproj index 4bb3daa..234a850 100644 --- a/myBlazorApp/myBlazorApp/myBlazorApp.csproj +++ b/myBlazorApp/myBlazorApp/myBlazorApp.csproj @@ -32,7 +32,6 @@ - @@ -42,6 +41,8 @@ + +