From a20cfd8b02fb13ffbe976de0b903de080739c2d6 Mon Sep 17 00:00:00 2001 From: Augustin Date: Tue, 28 Feb 2023 22:47:36 +0100 Subject: [PATCH] Correction commentaire --- .../Composants/InventoryComponent.razor | 2 +- .../Composants/InventoryComponent.razor.cs | 100 +++++++++++++----- .../BlazorT/Composants/InventoryItem.razor.cs | 69 +++++++----- .../Composants/InventoryItemTR.razor.cs | 25 ++++- 4 files changed, 142 insertions(+), 54 deletions(-) diff --git a/Sources/BlazorT/Composants/InventoryComponent.razor b/Sources/BlazorT/Composants/InventoryComponent.razor index 3635f22..f88191d 100644 --- a/Sources/BlazorT/Composants/InventoryComponent.razor +++ b/Sources/BlazorT/Composants/InventoryComponent.razor @@ -4,7 +4,7 @@
-

My ìnventory

+

My inventory

diff --git a/Sources/BlazorT/Composants/InventoryComponent.razor.cs b/Sources/BlazorT/Composants/InventoryComponent.razor.cs index 923d2d5..91e0b46 100644 --- a/Sources/BlazorT/Composants/InventoryComponent.razor.cs +++ b/Sources/BlazorT/Composants/InventoryComponent.razor.cs @@ -37,7 +37,7 @@ namespace BlazorT.Composants [Parameter] public List Items { get; set; } - + [Parameter] public int NombreRecipes { get; set; } @@ -69,35 +69,30 @@ namespace BlazorT.Composants [Inject] internal IJSRuntime JavaScriptRuntime { get; set; } - - - protected override void OnInitialized() - { - base.OnInitialized(); - StateHasChanged(); - } - protected override void OnAfterRender(bool firstRender) - { - base.OnAfterRender(firstRender); - - } + // Fonction permettant de vérifier si la combinaison actuelle d'objets correspond à une recette existante + // Elle ne retourne rien public void CheckRecipe() { RecipeResult = null; - // Get the current model + // Obtenir le modèle actuel var currentModel = string.Join("|", this.RecipeItems.Select(s => s != null ? s.Name : string.Empty)); + // Ajouter l'action dans la liste des actions this.Actions.Add(new InventoryAction { Action = $"Items : {currentModel}" }); - _logger.LogInformation("Recipe checking....."); + _logger.LogInformation("Vérification de la recette....."); + + // Vérifier chaque recette foreach (var inventoryRecipe in Recipes) { - // Get the recipe model + // Obtenir le modèle de la recette var recipeModel = string.Join("|", inventoryRecipe.Have.SelectMany(s => s)); - this.Actions.Add(new InventoryAction { Action = $"Recipe model : {recipeModel}" }); + // Ajouter l'action dans la liste des actions + this.Actions.Add(new InventoryAction { Action = $"Modèle de la recette : {recipeModel}" }); + // Si le modèle actuel correspond au modèle de la recette, attribuer la valeur Give de la recette à RecipeResult if (currentModel == recipeModel) { RecipeResult = inventoryRecipe.Give; @@ -105,6 +100,15 @@ namespace BlazorT.Composants } } + + + + /// + /// Override method that is called whenever the component's parameters are updated. + /// Sets the items list to the current Items property and initializes the RecipeItems list with null items. + /// Calls the onSearching method to filter the items based on the search value. + /// Logs a message indicating that the parameters have been set. + /// protected override void OnParametersSet() { base.OnParametersSet(); @@ -114,62 +118,104 @@ namespace BlazorT.Composants _logger.LogInformation("Parameters set: Items, RecipeItems"); } + + /// + /// Event handler for searching. Filters the items list based on the search value and updates the UI. + /// + /// The search string. private void onSearching(string e) { + // Set the search value and reset the page to 1. searchValue = e; _customFilterRef.Page = 1; + + // If the search string is not empty, filter the items list by name or display name and log a message. if (!string.IsNullOrEmpty(searchValue)) { Items = items.Where(q => q.Name.ToLower().Contains(searchValue.ToLower()) || q.DisplayName.ToLower().Contains(searchValue.ToLower())).ToList(); _logger.LogInformation($"Searching... {e}"); } + // If the search string is empty, retrieve the first 20 items and log a message. else { Items = items.Take(20).ToList(); _logger.LogInformation("Fetching All ..."); } + + // Notify the UI that the state has changed. StateHasChanged(); } - + + + /// + /// Event handler for a collection changed event. Invokes a JavaScript function to add new items to the inventory. + /// + /// The object that raised the event. + /// The collection changed event arguments. private void OnActionsCollectionChanged(object? sender, NotifyCollectionChangedEventArgs e) { + // Invoke a JavaScript function to add the new items to the inventory. JavaScriptRuntime.InvokeVoidAsync("Inventory.AddActions", e.NewItems); } - + + /// + /// Récupère une liste d'objets Item à partir d'une demande de données en fonction des paramètres de filtrage et de tri spécifiés. + /// + /// L'objet DataRequest contenant les paramètres de filtrage et de tri. + /// Un tuple contenant une liste d'objets Item et un entier représentant le nombre total d'objets. private async Task<(IEnumerable, int)> FetchItems(DataRequest dataRequest) { - var count = items.Count; + // Initialisation du compteur avec la taille actuelle de la liste d'objets items + var count = items.Count;// Vérification si les propriétés de filtrage sont spécifiées if (dataRequest.FilterColumnProperty != null && dataRequest.Filter != null) { - + // Filtrer la liste d'objets Items pour obtenir tous les objets correspondant aux paramètres de filtrage spécifiés var data = Items.Where(q => - (q.Name.ToLower().Contains(dataRequest.Filter) && nameof(q.Name) == dataRequest.FilterColumn) + (q.Name.ToLower().Contains(dataRequest.Filter) && nameof(q.Name) == dataRequest.FilterColumn) ).ToList(); + + // Mise à jour du compteur avec le nombre total d'objets filtrés count = data.Count(); + + // Enregistrement d'un message d'information dans le journal des événements _logger.LogInformation($"Fetching for {dataRequest.FilterColumnProperty} - {dataRequest.Filter}"); + + // Retourne une liste d'objets Item filtrés ainsi que leur nombre total return (data, count); } + + // Vérification si la propriété de tri est spécifiée if (dataRequest.SortColumnProperty != null) { + // Vérification si le tri doit être effectué dans l'ordre décroissant if (dataRequest.Descending) { + // Enregistrement d'un message d'information dans le journal des événements _logger.LogInformation($"Column Sort : {dataRequest.SortColumnProperty} - Descending"); + // Retourne une liste d'objets Item triés dans l'ordre décroissant ainsi que leur nombre total, limités à la page spécifiée par DataRequest return (Items.OrderByDescending(x => dataRequest.SortColumnProperty.GetValue(x)).Skip(dataRequest.Page * 20).Take(20).ToList(), count); } + else // Le tri doit être effectué dans l'ordre croissant + { + // Enregistrement d'un message d'information dans le journal des événements + _logger.LogInformation($"Column Sort : {dataRequest.SortColumnProperty} - Ascending"); - _logger.LogInformation($"Column Sort : {dataRequest.SortColumnProperty} - Ascending"); - - return (Items.OrderBy(x => dataRequest.SortColumnProperty.GetValue(x)).Skip(dataRequest.Page * 20).Take(20).ToList(), count); + // Retourne une liste d'objets Item triés dans l'ordre croissant ainsi que leur nombre total, limités à la page spécifiée par DataRequest + return (Items.OrderBy(x => dataRequest.SortColumnProperty.GetValue(x)).Skip(dataRequest.Page * 20).Take(20).ToList(), count); + } } + + // Aucune propriété de filtrage ou de tri n'est spécifiée, renvoie simplement une page de 20 objets de la liste Items. _logger.LogInformation("Fetching or Sort : Empty"); return (Items.Skip(dataRequest.Page * 20).Take(20).ToList(), count); - } + + } } -} +} \ No newline at end of file diff --git a/Sources/BlazorT/Composants/InventoryItem.razor.cs b/Sources/BlazorT/Composants/InventoryItem.razor.cs index 5a97926..1df9da2 100644 --- a/Sources/BlazorT/Composants/InventoryItem.razor.cs +++ b/Sources/BlazorT/Composants/InventoryItem.razor.cs @@ -20,59 +20,80 @@ namespace BlazorT.Composants [CascadingParameter] public InventoryComponent Parent { get; set; } - internal void OnDragEnter() + /// + /// Gère l'événement de glisser-déposer d'un élément sur la case de l'inventaire. + /// + internal void OnDrop() { if (NoDrop) { return; } - - Parent.Actions.Add(new InventoryAction { Action = "Drag Enter", Item = this.Item, Index = this.Index }); + + // Incrémente le compteur si l'élément glissé correspond à celui déjà présent dans la case. + if (this.Item != null && this.Item.Name == Parent.CurrentDragItem.Name) + { + Count += 1; + } + // Ajoute l'élément glissé dans la case si celle-ci est vide. + else if (this.Item == null) + { + this.Item = Parent.CurrentDragItem; + Parent.RecipeItems[this.Index] = this.Item; + Count = 1; + } + + // Ajoute une action à l'historique pour signaler le glisser-déposer. + Parent.Actions.Add(new InventoryAction { Action = "Drop", Item = this.Item, Index = this.Index }); + + // Vérifie si une recette correspond à la combinaison d'éléments. + Parent.CheckRecipe(); } - internal void OnDragLeave() + /// + /// Gère l'événement de glisser-déposer d'un élément entrant dans la zone de la case de l'inventaire. + /// + internal void OnDragEnter() { if (NoDrop) { return; } - Count = 0; - Item = null; - Parent.Actions.Add(new InventoryAction { Action = "Drag Leave", Item = this.Item, Index = this.Index }); + + // Ajoute une action à l'historique pour signaler l'entrée d'un élément. + Parent.Actions.Add(new InventoryAction { Action = "Drag Enter", Item = this.Item, Index = this.Index }); } - internal void OnDrop() + /// + /// Gère l'événement de glisser-déposer d'un élément sortant de la zone de la case de l'inventaire. + /// + internal void OnDragLeave() { if (NoDrop) { return; } - if(this.Item != null && this.Item.Name == Parent.CurrentDragItem.Name ) - { - Count += 1; - } - else if(this.Item == null) - { - this.Item = Parent.CurrentDragItem; - Parent.RecipeItems[this.Index] = this.Item; - Count = 1; - } - - - - Parent.Actions.Add(new InventoryAction { Action = "Drop", Item = this.Item, Index = this.Index }); + // Réinitialise la case si l'élément glissé en sort. + Count = 0; + Item = null; - // Check recipe - Parent.CheckRecipe(); + // Ajoute une action à l'historique pour signaler la sortie de l'élément. + Parent.Actions.Add(new InventoryAction { Action = "Drag Leave", Item = this.Item, Index = this.Index }); } + /// + /// Gère l'événement de démarrage d'un glisser-déposer d'un élément sur la case de l'inventaire. + /// private void OnDragStart() { + // Stocke l'élément en cours de glisser-déposer dans l'inventaire parent. Parent.CurrentDragItem = this.Item; + // Ajoute une action à l'historique pour signaler le début du glisser-déposer. Parent.Actions.Add(new InventoryAction { Action = "Drag Start", Item = this.Item, Index = this.Index }); } + } } diff --git a/Sources/BlazorT/Composants/InventoryItemTR.razor.cs b/Sources/BlazorT/Composants/InventoryItemTR.razor.cs index 0711354..684062c 100644 --- a/Sources/BlazorT/Composants/InventoryItemTR.razor.cs +++ b/Sources/BlazorT/Composants/InventoryItemTR.razor.cs @@ -33,7 +33,10 @@ namespace BlazorT.Composants [Inject] public NavigationManager NavigationManager { get; set; } - + /// + /// Gère l'événement de glisser-déposer lorsqu'un élément est glissé sur la case. + /// Ajoute une action d'inventaire pour enregistrer l'événement. + /// internal void OnDragEnter() { if (NoDrop) @@ -45,6 +48,10 @@ namespace BlazorT.Composants Parent.Actions.Add(new InventoryAction { Action = "Drag Enter", Item = this.Item, Index = this.Index }); } + /// + /// Gère l'événement de glisser-déposer lorsqu'un élément est glissé hors de la case. + /// Ajoute une action d'inventaire pour enregistrer l'événement. + /// internal void OnDragLeave() { if (NoDrop) @@ -57,6 +64,10 @@ namespace BlazorT.Composants Parent.Actions.Add(new InventoryAction { Action = "Drag Leave", Item = this.Item, Index = this.Index }); } + /// + /// Gère l'événement de glisser-déposer lorsqu'un élément est déposé sur la case. + /// Ajoute une action d'inventaire pour enregistrer l'événement, met à jour l'élément de la case et vérifie si une recette est possible. + /// internal void OnDrop() { if (NoDrop) @@ -77,6 +88,10 @@ namespace BlazorT.Composants Parent.CheckRecipe(); } + /// + /// Gère l'événement de glisser-déposer lorsqu'un élément est déplacé. + /// Ajoute une action d'inventaire pour enregistrer l'événement. + /// private void OnDragStart() { Parent.CurrentDragItem = this.Item; @@ -85,7 +100,12 @@ namespace BlazorT.Composants Parent.Actions.Add(new InventoryAction { Action = "Drag Start", Item = this.Item, Index = this.Index }); } - + /// + /// Gère l'événement de suppression d'un élément. + /// Affiche une fenêtre modale de confirmation et supprime l'élément s'il est confirmé. + /// Ajoute une action d'inventaire pour enregistrer l'événement et recharge la page. + /// + /// ID de l'élément à supprimer private async Task OnDeleteAsync(int id) { var parameters = new ModalParameters(); @@ -106,6 +126,7 @@ namespace BlazorT.Composants NavigationManager.NavigateTo("inventory", true); } + } } -- 2.36.3