Administration des Jeux

La page d'Administration des Jeux (AdminPageComponent) offre une interface pour gérer l'ensemble des jeux disponibles dans l'application. Elle permet de visualiser tous les jeux existants, d'en créer de nouveaux, de modifier leur visibilité, d'éditer leurs caractéristiques ou de les supprimer. Cette page est accessible uniquement depuis la page d'accueil.

AdminPageComponent

Propriétés

Propriété Type Description
gamesList Game[] Liste complète des jeux disponibles
displayedGames Game[] Sous-ensemble des jeux affichés à l'écran (pagination)
startIndex number Indice de départ pour la pagination
animationDirection string Direction de l'animation ('left' ou 'right') lors du défilement
isCreateGamePopupActive boolean Contrôle l'affichage du popup de création de jeu
isValidationPopupActive boolean Contrôle l'affichage du popup de validation
validationPopupMsg string Message à afficher dans le popup de validation
selectedGameMode string | null Mode de jeu sélectionné lors de la création
selectedGridSize number | null Taille de grille sélectionnée lors de la création
isErrPopupActive boolean Contrôle l'affichage du popup d'erreur
isEditErrorPopupActive boolean Contrôle l'affichage du popup d'erreur d'édition
isDeleteGamePopupActive boolean Contrôle l'affichage du popup de confirmation de suppression
gameNameToDelete string Nom du jeu à supprimer
deleteGamePopupMsg string Message de confirmation de suppression

Méthodes

constructor(private router: Router, private gameService: GameService, private editService: EditService)

Description : Initialise le composant avec les services nécessaires.
Paramètres :

async fetchGames()

Description : Récupère tous les jeux depuis le serveur et met à jour l'affichage.
Retour : Promise<void>
Détails : Utilise le service GameService pour obtenir les jeux depuis le serveur.

ngOnInit()

Description : Initialise le composant au chargement et récupère la liste des jeux.
Retour : void

updateDisplayedGames()

Description : Met à jour la liste des jeux affichés en fonction de l'indice de départ. Retour : void Détails : Utilise DISPLAY_LIMIT (constante) pour déterminer le nombre de jeux à afficher.

prevGames()

Description : Navigue vers la page précédente de jeux.
Retour : void
Détails : Modifie l'animation et l'indice de départ pour afficher la page précédente.

nextGames()

Description : Navigue vers la page suivante de jeux.
Retour : void
Détails : Modifie l'animation et l'indice de départ pour afficher la page suivante.

createNewGame()

Description : Crée un nouveau jeu avec les paramètres sélectionnés et redirige vers la page d'édition.
Retour : void
Détails : Vérifie d'abord si les paramètres nécessaires sont sélectionnés.

closeCreateGamePopup()

Description : Ferme le popup de création de jeu.
Retour : void

validateCreateGame()

Description : Valide les paramètres pour la création d'un jeu et affiche des messages d'erreur si nécessaire.
Retour : void
Détails : Vérifie que le mode de jeu et la taille de grille sont sélectionnés.

closeValidationPopup()

Description : Ferme le popup de validation.
Retour : void

closeErrMsgPopup()

Description : Ferme le popup d'erreur et actualise la liste des jeux.
Retour : void

showEditErrorPopup()

Description : Affiche le popup d'erreur d'édition.
Retour : void

closeEditErrorPopup()

Description : Ferme le popup d'erreur d'édition et actualise la liste des jeux.
Retour : void

onGameDeleteRequested(gameName: string)

Description : Initialise le processus de suppression d'un jeu.
Paramètres :

validateDeleteGame()

Description : Confirme la suppression du jeu et gère les erreurs éventuelles.
Retour : void
Détails : Utilise le service GameService pour supprimer le jeu du serveur.

closeDeleteGamePopup()

Description : Ferme le popup de confirmation de suppression.
Retour : void

async onGameDeleted()

Description : Met à jour la liste des jeux après une suppression et ajuste la pagination si nécessaire.
Retour : Promise<void>

Éléments HTML importants

Composants utilisés

GameBoxComponent

Composant qui affiche un jeu individuel avec ses détails et options d'action.

Propriétés

Propriété Type Description
@Input() game Game Le jeu à afficher
@Input() selectedGame Game Le jeu actuellement sélectionné
@Output() gameSelected EventEmitter<Game> Événement émis lorsqu'un jeu est sélectionné
@Output() editError EventEmitter<void> Événement émis en cas d'erreur d'édition
@Output() confirmDelete EventEmitter<string> Événement émis pour confirmer la suppression
currentRoute string Route actuelle pour adapter l'affichage

Méthodes

constructor(private gameService: GameService, private router: Router, private editService: EditService)

Description : Initialise le composant avec les services nécessaires.

onGameSelected()

Description : Émet un événement lorsqu'un jeu est sélectionné.
Retour : void

async changeVisibility(name: string)

Description : Change la visibilité d'un jeu.
Paramètres -> name: Nom du jeu
Retour : Promise<void>
Détails : Communique avec le serveur via GameService.

editGame()

Description : Prépare l'édition d'un jeu et redirige vers la page d'édition.
Retour : void
Détails : Vérifie d'abord si le jeu existe toujours.

confirmDeleteGame(name: string)

Description : Émet un événement pour confirmer la suppression d'un jeu.
Paramètres -> name: Nom du jeu à supprimer
Retour : void

Liaison HTML importante

OneButtonPopupComponent

Composant de popup simple avec un seul bouton.

Propriétés

Propriété Type Description
@Input() isPopupActive boolean Contrôle l'affichage du popup
@Input() popupMessage string Message à afficher
@Input() closePopup () => void Fonction de fermeture

Méthodes

onClose()

Description : Appelle la fonction de fermeture fournie.
Retour : void

TwoButtonsPopupComponent

Composant de popup avec deux boutons (confirmation et annulation).

Propriétés

Propriété Type Description
@Input() isPopupActive boolean Contrôle l'affichage du popup
@Input() popupMessage string Message à afficher
@Input() validatePopup () => void Fonction de validation
@Input() closePopup () => void Fonction de fermeture

Méthodes

onValidate()

Description : Appelle la fonction de validation fournie.
Retour : void

onClose()

Description : Appelle la fonction de fermeture fournie.
Retour : void

Services utilisés

GameService

Service responsable de la communication avec le serveur pour les opérations CRUD sur les jeux.

Méthodes

constructor(private router: Router)

Description : Initialise le service avec le routeur.

async getVisibleGames()

Description : Récupère tous les jeux visibles depuis le serveur.
Retour : Promise<Game[]> - Liste des jeux visibles
Détails : Communique avec le serveur via une requête HTTP GET.

async getAllGames()

Description : Récupère tous les jeux (visibles et non visibles) depuis le serveur.
Retour : Promise<Game[]> - Liste complète des jeux
Détails : Communique avec le serveur via une requête HTTP GET.

async verifVisibility(gameName: string)

Description : Vérifie si un jeu est visible.
Paramètres ->gameName: Nom du jeu
Retour : Promise<boolean> - Vrai si le jeu est visible
Détails : Communique avec le serveur via une requête HTTP GET.

async changeVisibility(name: string)

Description : Change la visibilité d'un jeu.
Paramètres ->name: Nom du jeu
Retour : Promise<void>
Détails : Communique avec le serveur via une requête HTTP PATCH.

async deleteGame(name: string)

Description : Supprime un jeu.
Paramètres ->name: Nom du jeu
Retour : Promise<void>
Détails : Communique avec le serveur via une requête HTTP DELETE.

EditService

Service responsable de la gestion de l'édition des jeux.

Propriétés

Propriété Type Description
selectedCopyGameSubject BehaviorSubject<Game | null> Subject contenant le jeu en cours d'édition
selectedCopyGame$ Observable<Game | null> Observable du jeu en cours d'édition

Méthodes

setSelectedGame(game: Game | null)

Description : Définit le jeu à éditer.
Paramètres :game: Jeu à éditer
Retour : void
Détails : Crée une copie profonde du jeu pour l'édition.

Communication avec le Serveur

Le GameService communique avec le serveur via des requêtes HTTP:

  1. GET /game-manager : Récupère la liste des jeux
  2. GET /game-manager/visibility/:name : Vérifie la visibilité d'un jeu
  3. PATCH /game-manager/visibility/:name : Change la visibilité d'un jeu
  4. DELETE /game-manager/:name : Supprime un jeu

Ces opérations sont effectuées de manière asynchrone avec des gestions d'erreurs appropriées.

Navigation

La page d'Administration des Jeux peut rediriger vers:

  1. Page d'Accueil (MainPageComponent) - Avec le bouton "RETOUR"
  2. Page d'Édition (EditionPageComponent) - Lors de la création d'un nouveau jeu ou de l'édition d'un jeu existant

Animations

Le composant utilise des animations Angular pour les transitions entre les jeux: