Files
LoreMind/web/src/app/game-systems/game-systems.component.ts

72 lines
2.2 KiB
TypeScript

import { Component, OnInit } from '@angular/core';
import { CommonModule } from '@angular/common';
import { Router } from '@angular/router';
import { LucideAngularModule, Dices, Plus, Pencil, Trash2 } from 'lucide-angular';
import { GameSystemService } from '../services/game-system.service';
import { LayoutService } from '../services/layout.service';
import { GameSystem } from '../services/game-system.model';
import { ConfirmDialogService } from '../shared/confirm-dialog/confirm-dialog.service';
@Component({
selector: 'app-game-systems',
standalone: true,
imports: [CommonModule, LucideAngularModule],
templateUrl: './game-systems.component.html',
styleUrls: ['./game-systems.component.scss']
})
export class GameSystemsComponent implements OnInit {
readonly Dices = Dices;
readonly Plus = Plus;
readonly Pencil = Pencil;
readonly Trash2 = Trash2;
gameSystems: GameSystem[] = [];
constructor(
private router: Router,
private gameSystemService: GameSystemService,
private confirmDialog: ConfirmDialogService,
private layoutService: LayoutService
) {}
ngOnInit(): void {
// Page racine : on s'assure de ne pas heriter de la sidebar d'une
// section precedente (cf. fix CampaignsComponent / LoreComponent).
this.layoutService.hide();
this.load();
}
load(): void {
this.gameSystemService.getAll().subscribe({
next: (data) => this.gameSystems = data,
error: () => this.gameSystems = []
});
}
create(): void {
this.router.navigate(['/game-systems/create']);
}
edit(id: string): void {
this.router.navigate(['/game-systems', id, 'edit']);
}
delete(system: GameSystem, event: MouseEvent): void {
event.stopPropagation();
if (!system.id) return;
this.confirmDialog.confirm({
title: 'Supprimer le système',
message: `Supprimer le système "${system.name}" ?`,
details: ['Les campagnes qui l\'utilisent ne seront plus associées à aucun système.'],
confirmLabel: 'Supprimer',
variant: 'danger'
}).then(ok => {
if (!ok || !system.id) return;
this.gameSystemService.delete(system.id).subscribe({
next: () => this.load(),
error: () => console.error('Erreur suppression GameSystem')
});
});
}
}