From 4112461c45b39def6be70e69a0e592859ced5405 Mon Sep 17 00:00:00 2001 From: "lilian.breton" Date: Sun, 18 Dec 2022 12:30:41 +0100 Subject: [PATCH 1/2] merge --- .../Minecraft.Crafting.Api/Data/items.json | 11 -- myBlazorApp/myBlazorApp.sln | 8 +- myBlazorApp/myBlazorApp/Pages/Inventory.razor | 25 +-- .../myBlazorApp/Pages/Inventory.razor.cs | 145 +++++++++++++----- .../myBlazorApp/Services/DataApiService.cs | 5 + .../myBlazorApp/Services/DataLocalService.cs | 15 ++ .../myBlazorApp/Services/IDataService.cs | 1 + myBlazorApp/myBlazorApp/myBlazorApp.csproj | 3 +- 8 files changed, 150 insertions(+), 63 deletions(-) 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 a77d941..6c7b877 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 9fcb34a..2708fbf 100644 --- a/myBlazorApp/myBlazorApp/Pages/Inventory.razor.cs +++ b/myBlazorApp/myBlazorApp/Pages/Inventory.razor.cs @@ -1,34 +1,41 @@ 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.Factories; using myBlazorApp.Modals; using myBlazorApp.Models; -using myBlazorApp.Services; - +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(); - private int totalItem; + 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; } @@ -40,39 +47,101 @@ namespace myBlazorApp.Pages [CascadingParameter] public IModalService Modal { get; set; } + + private bool isSorted = false; + private async Task OnReadData(DataGridReadDataEventArgs e) { - if (e.CancellationToken.IsCancellationRequested) - { - return; + + if (e.CancellationToken.IsCancellationRequested) + { + return; } if (!e.CancellationToken.IsCancellationRequested) { - items = await DataService.List(e.Page, e.PageSize); - itemsInv = await DataService.List(e.Page, e.PageSize); totalItem = await DataService.Count(); + items = await DataService.List(e.Page, e.PageSize); + full = await DataService.List(e.Page, totalItem); + itemsInv = await DataService.List(e.Page, e.PageSize); + 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; - - if (result.Cancelled) - { - return; - } - - await DataService.Delete(id); - - // Reload the page - NavigationManager.NavigateTo("list", true); + } + + private List choseList() + { + if (SearchText.IsNullOrEmpty()) + { + choix = items; + 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); + } + StateHasChanged(); + return choix; + } + + private void inputValue() + { + Filtered = full.Where( + itm => itm.DisplayName.ToLower().Contains(SearchText.ToLower())).ToList(); + choseList(); + } + + private void OnPress() + { + if (isSorted == true) + { + isSorted = false; + } + else isSorted = true; + SortList(); + } + + 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/DataApiService.cs b/myBlazorApp/myBlazorApp/Services/DataApiService.cs index ca17b30..07f3749 100644 --- a/myBlazorApp/myBlazorApp/Services/DataApiService.cs +++ b/myBlazorApp/myBlazorApp/Services/DataApiService.cs @@ -57,6 +57,11 @@ namespace myBlazorApp.Services { return await _http.GetFromJsonAsync>("https://localhost:8635/api/Crafting/recipe"); } + + public async Task> FullList(int pageSize) + { + return await _http.GetFromJsonAsync>("https://localhost:8635/api/Crafting/all"); + } } } diff --git a/myBlazorApp/myBlazorApp/Services/DataLocalService.cs b/myBlazorApp/myBlazorApp/Services/DataLocalService.cs index 2bbe9d9..5abbd1e 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; @@ -182,5 +183,19 @@ namespace myBlazorApp.Services return Task.FromResult(items); } + public async Task> FullList(int pageSize) + { + var currentData = await _localStorage.GetItemAsync("data"); + // Check if data exist in the local storage + if (currentData == null) + { + // this code add in the local storage the fake data + var originalData = await _http.GetFromJsonAsync($"{_navigationManager.BaseUri}fake-data.json"); + await _localStorage.SetItemAsync("data", originalData); + } + + return (await _localStorage.GetItemAsync("data")).Take(pageSize).ToList(); + } } } + diff --git a/myBlazorApp/myBlazorApp/Services/IDataService.cs b/myBlazorApp/myBlazorApp/Services/IDataService.cs index 845bcee..07d07fd 100644 --- a/myBlazorApp/myBlazorApp/Services/IDataService.cs +++ b/myBlazorApp/myBlazorApp/Services/IDataService.cs @@ -9,6 +9,7 @@ namespace myBlazorApp.Services Task Add(ItemModel model); Task Count(); Task> List(int currentPage, int pageSize); + Task> FullList(int pageSize); Task GetById(int id); Task Update(int id, ItemModel model); Task Delete(int id); 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 @@ + + From 43066e729aa4be9a12b70fc355912386b8716d9d Mon Sep 17 00:00:00 2001 From: "lilian.breton" Date: Sun, 18 Dec 2022 13:11:05 +0100 Subject: [PATCH 2/2] end of list part --- myBlazorApp/Minecraft.Crafting.Api/Data/inventory.json | 10 ++++------ myBlazorApp/myBlazorApp/Pages/Inventory.razor.cs | 3 +++ 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/myBlazorApp/Minecraft.Crafting.Api/Data/inventory.json b/myBlazorApp/Minecraft.Crafting.Api/Data/inventory.json index a562add..559c0cc 100644 --- a/myBlazorApp/Minecraft.Crafting.Api/Data/inventory.json +++ b/myBlazorApp/Minecraft.Crafting.Api/Data/inventory.json @@ -4,9 +4,8 @@ "position": 1 }, { - "itemName": "lili", - "position": 2, - "number": 11 + "itemName": "null", + "position": 2 }, { "itemName": "null", @@ -37,9 +36,8 @@ "position": 9 }, { - "itemName": "lili", - "position": 10, - "number": 11 + "itemName": "null", + "position": 10 }, { "itemName": "null", diff --git a/myBlazorApp/myBlazorApp/Pages/Inventory.razor.cs b/myBlazorApp/myBlazorApp/Pages/Inventory.razor.cs index ceef206..63b6ae1 100644 --- a/myBlazorApp/myBlazorApp/Pages/Inventory.razor.cs +++ b/myBlazorApp/myBlazorApp/Pages/Inventory.razor.cs @@ -97,6 +97,7 @@ namespace myBlazorApp.Pages if (SearchText.IsNullOrEmpty()) { choix = items; + totalItem = items.Count(); NavigationManager.NavigateTo("inventory", false); } else @@ -106,8 +107,10 @@ namespace myBlazorApp.Pages pageSize = Filtered.Count() - (currentPage - 1) * 10; } choix = Filtered.GetRange((currentPage - 1) * 10, pageSize); + totalItem = Filtered.Count(); } StateHasChanged(); + NavigationManager.NavigateTo("inventory", false); return choix; }