From 81ff697b492cc510c64df31d8ad02456b22a84dc Mon Sep 17 00:00:00 2001 From: Lucas Delanier Date: Wed, 28 Dec 2022 14:58:10 +0100 Subject: [PATCH] add inventory page --- Sources/BlazorApp/.vs/BlazorApp/v17/.suo | Bin 234496 -> 309760 bytes Sources/BlazorApp/BlazorApp.sln | 10 +- Sources/BlazorApp/BlazorApp/BlazorApp.csproj | 1 - .../BlazorApp/Components/InventoryAction.cs | 11 ++ .../Components/InventoryComponent.razor | 76 ++++++++++++ .../Components/InventoryComponent.razor.cs | 55 +++++++++ .../Components/InventoryComponent.razor.css | 52 +++++++++ .../Components/InventoryComponent.razor.js | 16 +++ .../BlazorApp/Components/InventoryItem.razor | 14 +++ .../Components/InventoryItem.razor.cs | 65 +++++++++++ .../Components/InventoryItem.razor.css | 10 ++ .../BlazorApp/Components/ItemInInventory.cs | 11 ++ .../BlazorApp/Models/ItemInventory.cs | 6 + Sources/BlazorApp/BlazorApp/Pages/Index.razor | 16 +-- .../BlazorApp/BlazorApp/Pages/Index.razor.cs | 37 +++--- .../BlazorApp/BlazorApp/Pages/Inventory.razor | 8 ++ .../BlazorApp/Pages/Inventory.razor.cs | 31 +++++ .../BlazorApp/Services/DataApiService.cs | 5 + .../BlazorApp/Services/DataLocalService.cs | 5 + .../BlazorApp/Services/IDataService.cs | 5 +- .../BlazorApp/BlazorApp/Shared/NavMenu.razor | 22 ++-- Sources/BlazorApp/BlazorApp/_Imports.razor | 1 + .../BlazorApp/bin/Debug/net6.0/BlazorApp.dll | Bin 109568 -> 119808 bytes .../BlazorApp/bin/Debug/net6.0/BlazorApp.pdb | Bin 67960 -> 75488 bytes .../BlazorApp.staticwebassets.runtime.json | 2 +- .../obj/BlazorApp.csproj.nuget.dgspec.json | 10 +- ....GeneratedMSBuildEditorConfig.editorconfig | 50 +++++--- .../obj/Debug/net6.0/BlazorApp.assets.cache | Bin 9647 -> 9647 bytes .../BlazorApp.csproj.CoreCompileInputs.cache | 2 +- .../BlazorApp.csproj.FileListAbsolute.txt | 52 +++++++++ .../BlazorApp/obj/Debug/net6.0/BlazorApp.dll | Bin 109568 -> 119808 bytes .../net6.0/BlazorApp.genruntimeconfig.cache | 2 +- .../BlazorApp/obj/Debug/net6.0/BlazorApp.pdb | Bin 67960 -> 75488 bytes .../obj/Debug/net6.0/ref/BlazorApp.dll | Bin 30208 -> 33280 bytes .../obj/Debug/net6.0/refint/BlazorApp.dll | Bin 30208 -> 33280 bytes .../scopedcss/bundle/BlazorApp.styles.css | 64 ++++++++++ .../projectbundle/BlazorApp.bundle.scp.css | 64 ++++++++++ .../Debug/net6.0/staticwebassets.build.json | 109 ++++++++++-------- .../net6.0/staticwebassets.development.json | 2 +- .../BlazorApp/obj/project.assets.json | 6 +- .../BlazorApp/obj/project.nuget.cache | 4 +- .../obj/staticwebassets.pack.sentinel | 4 + ....GeneratedMSBuildEditorConfig.editorconfig | 4 +- .../Minecraft.Crafting.Api.assets.cache | Bin 2562 -> 2562 bytes ...raft.Crafting.Api.csproj.nuget.dgspec.json | 10 +- .../obj/project.assets.json | 6 +- .../obj/project.nuget.cache | 4 +- 47 files changed, 712 insertions(+), 140 deletions(-) create mode 100644 Sources/BlazorApp/BlazorApp/Components/InventoryAction.cs create mode 100644 Sources/BlazorApp/BlazorApp/Components/InventoryComponent.razor create mode 100644 Sources/BlazorApp/BlazorApp/Components/InventoryComponent.razor.cs create mode 100644 Sources/BlazorApp/BlazorApp/Components/InventoryComponent.razor.css create mode 100644 Sources/BlazorApp/BlazorApp/Components/InventoryComponent.razor.js create mode 100644 Sources/BlazorApp/BlazorApp/Components/InventoryItem.razor create mode 100644 Sources/BlazorApp/BlazorApp/Components/InventoryItem.razor.cs create mode 100644 Sources/BlazorApp/BlazorApp/Components/InventoryItem.razor.css create mode 100644 Sources/BlazorApp/BlazorApp/Components/ItemInInventory.cs create mode 100644 Sources/BlazorApp/BlazorApp/Models/ItemInventory.cs create mode 100644 Sources/BlazorApp/BlazorApp/Pages/Inventory.razor create mode 100644 Sources/BlazorApp/BlazorApp/Pages/Inventory.razor.cs diff --git a/Sources/BlazorApp/.vs/BlazorApp/v17/.suo b/Sources/BlazorApp/.vs/BlazorApp/v17/.suo index 543d27474ac6ba2e1204ba9cefa5d2afbe4a780d..522ca5b5525e170d6ff2657eb851d621191f8dfe 100644 GIT binary patch literal 309760 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≫AG%mz$w6~ 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 delta 15663 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 OgN{$rT?Dy__WuvYZ&xA! diff --git a/Sources/BlazorApp/BlazorApp.sln b/Sources/BlazorApp/BlazorApp.sln index 5917ee8..5973cb2 100644 --- a/Sources/BlazorApp/BlazorApp.sln +++ b/Sources/BlazorApp/BlazorApp.sln @@ -5,7 +5,7 @@ VisualStudioVersion = 17.3.32929.385 MinimumVisualStudioVersion = 10.0.40219.1 Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "BlazorApp", "BlazorApp\BlazorApp.csproj", "{F86AB906-298D-4275-BC1C-FFC1BB19DFFD}" EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Minecraft.Crafting.Api", "..\Minecraft.Crafting.Api\Minecraft.Crafting.Api.csproj", "{B90B4831-9749-4C1E-8F20-D6076A440E6B}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Minecraft.Crafting.Api", "..\..\..\..\..\Downloads\Minecraft.Crafting.Api-5626d14b585890fe00fb9fd86ef287f4 (1)\Minecraft.Crafting.Api\Minecraft.Crafting.Api.csproj", "{618D1D3A-FC9D-4D7B-84A1-E85E4C53D9AB}" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution @@ -17,10 +17,10 @@ Global {F86AB906-298D-4275-BC1C-FFC1BB19DFFD}.Debug|Any CPU.Build.0 = Debug|Any CPU {F86AB906-298D-4275-BC1C-FFC1BB19DFFD}.Release|Any CPU.ActiveCfg = Release|Any CPU {F86AB906-298D-4275-BC1C-FFC1BB19DFFD}.Release|Any CPU.Build.0 = Release|Any CPU - {B90B4831-9749-4C1E-8F20-D6076A440E6B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {B90B4831-9749-4C1E-8F20-D6076A440E6B}.Debug|Any CPU.Build.0 = Debug|Any CPU - {B90B4831-9749-4C1E-8F20-D6076A440E6B}.Release|Any CPU.ActiveCfg = Release|Any CPU - {B90B4831-9749-4C1E-8F20-D6076A440E6B}.Release|Any CPU.Build.0 = Release|Any CPU + {618D1D3A-FC9D-4D7B-84A1-E85E4C53D9AB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {618D1D3A-FC9D-4D7B-84A1-E85E4C53D9AB}.Debug|Any CPU.Build.0 = Debug|Any CPU + {618D1D3A-FC9D-4D7B-84A1-E85E4C53D9AB}.Release|Any CPU.ActiveCfg = Release|Any CPU + {618D1D3A-FC9D-4D7B-84A1-E85E4C53D9AB}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE diff --git a/Sources/BlazorApp/BlazorApp/BlazorApp.csproj b/Sources/BlazorApp/BlazorApp/BlazorApp.csproj index 7dc1fda..58db655 100644 --- a/Sources/BlazorApp/BlazorApp/BlazorApp.csproj +++ b/Sources/BlazorApp/BlazorApp/BlazorApp.csproj @@ -24,7 +24,6 @@ - diff --git a/Sources/BlazorApp/BlazorApp/Components/InventoryAction.cs b/Sources/BlazorApp/BlazorApp/Components/InventoryAction.cs new file mode 100644 index 0000000..681ea9d --- /dev/null +++ b/Sources/BlazorApp/BlazorApp/Components/InventoryAction.cs @@ -0,0 +1,11 @@ +using BlazorApp.Models; + +namespace BlazorApp.Components +{ + public class InventoryAction + { + public string Action { get; set; } + public int Index { get; set; } + public Item Item { get; set; } + } +} diff --git a/Sources/BlazorApp/BlazorApp/Components/InventoryComponent.razor b/Sources/BlazorApp/BlazorApp/Components/InventoryComponent.razor new file mode 100644 index 0000000..36718b5 --- /dev/null +++ b/Sources/BlazorApp/BlazorApp/Components/InventoryComponent.razor @@ -0,0 +1,76 @@ +@using BlazorApp.Models; + + +

+ \ No newline at end of file diff --git a/Sources/BlazorApp/BlazorApp/Components/InventoryComponent.razor.cs b/Sources/BlazorApp/BlazorApp/Components/InventoryComponent.razor.cs new file mode 100644 index 0000000..ba45304 --- /dev/null +++ b/Sources/BlazorApp/BlazorApp/Components/InventoryComponent.razor.cs @@ -0,0 +1,55 @@ +using BlazorApp.Models; +using BlazorApp.Services; +using Microsoft.AspNetCore.Components; +using Microsoft.JSInterop; +using System.Collections.ObjectModel; +using System.Collections.Specialized; + +namespace BlazorApp.Components +{ + public partial class InventoryComponent + { + [Inject] + public IDataService DataService { get; set; } + + private int totalItem; + + public Item CurrentDragItem { get; set; } + + [CascadingParameter] + public InventoryComponent Parent { get; set; } + public List RecipeItems { get; set; } + public List Items { get; set; } = new List(); + public ObservableCollection Actions { get; set; } + + [Inject] + internal IJSRuntime JavaScriptRuntime { get; set; } + + public InventoryComponent() + { + Actions = new ObservableCollection(); + Actions.CollectionChanged += OnActionsCollectionChanged; + this.RecipeItems = new List { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null }; + } + + protected override async Task OnAfterRenderAsync(bool firstRender) + { + base.OnAfterRenderAsync(firstRender); + + if (!firstRender) + { + return; + } + + Items = await DataService.getAll(); + totalItem = await DataService.Count(); + + StateHasChanged(); + } + private void OnActionsCollectionChanged(object? sender, NotifyCollectionChangedEventArgs e) + { + JavaScriptRuntime.InvokeVoidAsync("Crafting.AddActions", e.NewItems); + } + + } +} diff --git a/Sources/BlazorApp/BlazorApp/Components/InventoryComponent.razor.css b/Sources/BlazorApp/BlazorApp/Components/InventoryComponent.razor.css new file mode 100644 index 0000000..d132796 --- /dev/null +++ b/Sources/BlazorApp/BlazorApp/Components/InventoryComponent.razor.css @@ -0,0 +1,52 @@ +.css-grid { + grid-template-columns: repeat(1,minmax(0,1fr)); + gap: 10px; + display: grid; + width: 500px; +} +h1 { + margin: 5px 10px; + padding-inline-end: 300px; + font-family: 'VT323', monospace; + font-size: 24px; + color: #404040; +} +.content { + width: 100%; + height: 100%; + display: flex; + justify-content: center; + align-items: center; + flex-direction: column; +} +.slotSpace { + margin: 10px 10px; + display: flex; + flex-wrap: wrap; +} + +.css-inv { + grid-template-columns: repeat(6,minmax(0,1fr)); + gap: 10px; + width: 410px; + background: #c6c6c6; + border-radius: 3px; + box-shadow: 5px 5px 0px #555555, inset 4px 4px 0px #fefefe; + padding-top: 5px; + padding-left: 5px; + margin-bottom: 10px; +} + +.actions { + border: 1px solid black; + height: 250px; + overflow: scroll; +} + +.body { + display: flex; + background: #ccc; + box-sizing: border-box; + width: 100%; + height: 80vh; +} diff --git a/Sources/BlazorApp/BlazorApp/Components/InventoryComponent.razor.js b/Sources/BlazorApp/BlazorApp/Components/InventoryComponent.razor.js new file mode 100644 index 0000000..e9dc10c --- /dev/null +++ b/Sources/BlazorApp/BlazorApp/Components/InventoryComponent.razor.js @@ -0,0 +1,16 @@ +window.Inventory = +{ + AddActions: function (data) { + + data.forEach(element => { + var div = document.createElement('div'); + div.innerHTML = 'Aaction: ' + element.action + ' - Index: ' + element.index; + + if (element.item) { + div.innerHTML += ' - Item Name: ' + element.item.name; + } + + document.getElementById('actions').appendChild(div); + }); + } +} \ No newline at end of file diff --git a/Sources/BlazorApp/BlazorApp/Components/InventoryItem.razor b/Sources/BlazorApp/BlazorApp/Components/InventoryItem.razor new file mode 100644 index 0000000..1e1470b --- /dev/null +++ b/Sources/BlazorApp/BlazorApp/Components/InventoryItem.razor @@ -0,0 +1,14 @@ +
+ + @if (Item != null) + { + @Item.DisplayName + } +
\ No newline at end of file diff --git a/Sources/BlazorApp/BlazorApp/Components/InventoryItem.razor.cs b/Sources/BlazorApp/BlazorApp/Components/InventoryItem.razor.cs new file mode 100644 index 0000000..f9c3497 --- /dev/null +++ b/Sources/BlazorApp/BlazorApp/Components/InventoryItem.razor.cs @@ -0,0 +1,65 @@ +using BlazorApp.Models; +using BlazorApp.Pages; +using Blazorise; +using Microsoft.AspNetCore.Components; + +namespace BlazorApp.Components +{ + public partial class InventoryItem + { + [Parameter] + public int Index { get; set; } + + [Parameter] + public Item Item { get; set; } + + + + [Parameter] + public bool NoDrop { get; set; } + + [CascadingParameter] + public InventoryComponent Parent { get; set; } + + internal void OnDragEnter() + { + if (NoDrop) + { + return; + } + + Parent.Actions.Add(new InventoryAction { Action = "Drag Enter", Item = this.Item, Index = this.Index }); + } + + internal void OnDragLeave() + { + if (NoDrop) + { + return; + } + + Parent.Actions.Add(new InventoryAction { Action = "Drag Leave", Item = this.Item, Index = this.Index }); + } + + internal void OnDrop() + { + if (NoDrop) + { + return; + } + + this.Item = Parent.CurrentDragItem; + + + Parent.Actions.Add(new InventoryAction { Action = "Drop", Item = this.Item, Index = this.Index }); + + } + + private void OnDragStart() + { + Parent.CurrentDragItem = this.Item; + + Parent.Actions.Add(new InventoryAction { Action = "Drag Start", Item = this.Item, Index = this.Index }); + } + } +} diff --git a/Sources/BlazorApp/BlazorApp/Components/InventoryItem.razor.css b/Sources/BlazorApp/BlazorApp/Components/InventoryItem.razor.css new file mode 100644 index 0000000..e9f2861 --- /dev/null +++ b/Sources/BlazorApp/BlazorApp/Components/InventoryItem.razor.css @@ -0,0 +1,10 @@ +.item { + width: 64px; + height: 64px; + border: 1px solid; + + display: flex; + justify-content: center; + background: #8b8b8b; + box-shadow: inset 1.5px 1.5px 0px rgba(55, 55, 55, 0.8), inset -2px -2px 0px #ffffff; +} diff --git a/Sources/BlazorApp/BlazorApp/Components/ItemInInventory.cs b/Sources/BlazorApp/BlazorApp/Components/ItemInInventory.cs new file mode 100644 index 0000000..d13437b --- /dev/null +++ b/Sources/BlazorApp/BlazorApp/Components/ItemInInventory.cs @@ -0,0 +1,11 @@ +using BlazorApp.Models; + +namespace BlazorApp.Components +{ + public class ItemInInventory + { + public int Index { get; set; } + public Item? Item { get; set; } + + } +} \ No newline at end of file diff --git a/Sources/BlazorApp/BlazorApp/Models/ItemInventory.cs b/Sources/BlazorApp/BlazorApp/Models/ItemInventory.cs new file mode 100644 index 0000000..715cbb3 --- /dev/null +++ b/Sources/BlazorApp/BlazorApp/Models/ItemInventory.cs @@ -0,0 +1,6 @@ +namespace BlazorAppClean.Models +{ + public class ItemInventory + { + } +} diff --git a/Sources/BlazorApp/BlazorApp/Pages/Index.razor b/Sources/BlazorApp/BlazorApp/Pages/Index.razor index 812dbbd..d8a9cb3 100644 --- a/Sources/BlazorApp/BlazorApp/Pages/Index.razor +++ b/Sources/BlazorApp/BlazorApp/Pages/Index.razor @@ -1,24 +1,12 @@ @page "/" @using System.Globalization @using BlazorApp.Components - Index - -

Hello, world!

- -Welcome to your new app. - - -

CurrentCulture: @CultureInfo.CurrentCulture

+

Hello, world!

- -
Content of my TestRenderFragment
-
-
- -
\ No newline at end of file + \ No newline at end of file diff --git a/Sources/BlazorApp/BlazorApp/Pages/Index.razor.cs b/Sources/BlazorApp/BlazorApp/Pages/Index.razor.cs index 15359e2..2cfcbf1 100644 --- a/Sources/BlazorApp/BlazorApp/Pages/Index.razor.cs +++ b/Sources/BlazorApp/BlazorApp/Pages/Index.razor.cs @@ -1,31 +1,34 @@ -namespace BlazorApp.Pages; + using BlazorApp.Components; using BlazorApp.Models; using BlazorApp.Services; using Microsoft.AspNetCore.Components; -public partial class Index +namespace BlazorApp.Pages { - [Inject] - public IDataService DataService { get; set; } - - public List Items { get; set; } = new List(); + public partial class Index + { + [Inject] + public IDataService DataService { get; set; } - private List Recipes { get; set; } = new List(); + public List Items { get; set; } = new List(); - protected override async Task OnAfterRenderAsync(bool firstRender) - { - base.OnAfterRenderAsync(firstRender); + private List Recipes { get; set; } = new List(); - if (!firstRender) + protected override async Task OnAfterRenderAsync(bool firstRender) { - return; - } + base.OnAfterRenderAsync(firstRender); + + if (!firstRender) + { + return; + } - Items = await DataService.List(0, await DataService.Count()); - Recipes = await DataService.GetRecipes(); + Items = await DataService.List(0, await DataService.Count()); + Recipes = await DataService.GetRecipes(); - StateHasChanged(); + StateHasChanged(); + } } -} \ No newline at end of file +} diff --git a/Sources/BlazorApp/BlazorApp/Pages/Inventory.razor b/Sources/BlazorApp/BlazorApp/Pages/Inventory.razor new file mode 100644 index 0000000..c808087 --- /dev/null +++ b/Sources/BlazorApp/BlazorApp/Pages/Inventory.razor @@ -0,0 +1,8 @@ +@page "/inventory" +@using System.Globalization +@using BlazorApp.Components +

My Inventory

+ + + + diff --git a/Sources/BlazorApp/BlazorApp/Pages/Inventory.razor.cs b/Sources/BlazorApp/BlazorApp/Pages/Inventory.razor.cs new file mode 100644 index 0000000..62878ad --- /dev/null +++ b/Sources/BlazorApp/BlazorApp/Pages/Inventory.razor.cs @@ -0,0 +1,31 @@ + + +using BlazorApp.Components; +using BlazorApp.Models; +using BlazorApp.Services; +using Microsoft.AspNetCore.Components; + +namespace BlazorApp.Pages +{ + public partial class Inventory + { + [Inject] + public IDataService DataService { get; set; } + + public List Items { get; set; } = new List(); + + protected override async Task OnAfterRenderAsync(bool firstRender) + { + base.OnAfterRenderAsync(firstRender); + + if (!firstRender) + { + return; + } + + Items = await DataService.getAll(); + + StateHasChanged(); + } + } +} diff --git a/Sources/BlazorApp/BlazorApp/Services/DataApiService.cs b/Sources/BlazorApp/BlazorApp/Services/DataApiService.cs index 471de79..8882f50 100644 --- a/Sources/BlazorApp/BlazorApp/Services/DataApiService.cs +++ b/Sources/BlazorApp/BlazorApp/Services/DataApiService.cs @@ -54,5 +54,10 @@ namespace BlazorApp.Services { return await _http.GetFromJsonAsync>("https://localhost:7234/api/Crafting/recipe"); } + + public async Task> getAll() + { + return await _http.GetFromJsonAsync>($"https://codefirst.iut.uca.fr/containers/container-blazor-web-api-marcchevaldonne/api/Crafting/all"); + } } } diff --git a/Sources/BlazorApp/BlazorApp/Services/DataLocalService.cs b/Sources/BlazorApp/BlazorApp/Services/DataLocalService.cs index 281f0a8..eaee8b0 100644 --- a/Sources/BlazorApp/BlazorApp/Services/DataLocalService.cs +++ b/Sources/BlazorApp/BlazorApp/Services/DataLocalService.cs @@ -152,4 +152,9 @@ public class DataLocalService : IDataService return Task.FromResult(items); } + public async Task> getAll() + { + return await _http.GetFromJsonAsync>($"https://codefirst.iut.uca.fr/containers/container-blazor-web-api-marcchevaldonne/api/Crafting/all"); + } + } \ No newline at end of file diff --git a/Sources/BlazorApp/BlazorApp/Services/IDataService.cs b/Sources/BlazorApp/BlazorApp/Services/IDataService.cs index 8a9b667..159a3af 100644 --- a/Sources/BlazorApp/BlazorApp/Services/IDataService.cs +++ b/Sources/BlazorApp/BlazorApp/Services/IDataService.cs @@ -9,10 +9,13 @@ public interface IDataService Task Count(); Task> List(int currentPage, int pageSize); - Task GetById(int id); Task Update(int id, ItemModel model); + Task Delete(int id); + Task> GetRecipes(); + + Task> getAll(); } \ No newline at end of file diff --git a/Sources/BlazorApp/BlazorApp/Shared/NavMenu.razor b/Sources/BlazorApp/BlazorApp/Shared/NavMenu.razor index 15c6c22..bf25669 100644 --- a/Sources/BlazorApp/BlazorApp/Shared/NavMenu.razor +++ b/Sources/BlazorApp/BlazorApp/Shared/NavMenu.razor @@ -1,6 +1,6 @@