78 lines
2.0 KiB
TypeScript
78 lines
2.0 KiB
TypeScript
import { Component, OnInit } from '@angular/core';
|
|
import { CommonModule } from '@angular/common';
|
|
import { Router } from '@angular/router';
|
|
import { LucideAngularModule, BookOpen, Folder, Plus } from 'lucide-angular';
|
|
import { LoreService } from '../services/lore.service';
|
|
import { LayoutService } from '../services/layout.service';
|
|
import { Lore } from '../services/lore.model';
|
|
import { LoreCreateComponent } from './lore-create/lore-create.component';
|
|
|
|
@Component({
|
|
selector: 'app-lore',
|
|
imports: [CommonModule, LucideAngularModule, LoreCreateComponent],
|
|
templateUrl: './lore.component.html',
|
|
styleUrls: ['./lore.component.scss']
|
|
})
|
|
export class LoreComponent implements OnInit {
|
|
lores: Lore[] = [];
|
|
loading = true;
|
|
error = false;
|
|
|
|
readonly BookOpen = BookOpen;
|
|
readonly Folder = Folder;
|
|
readonly Plus = Plus;
|
|
|
|
showCreateModal = false;
|
|
|
|
constructor(
|
|
private loreService: LoreService,
|
|
private layoutService: LayoutService,
|
|
private router: Router
|
|
) {}
|
|
|
|
ngOnInit(): void {
|
|
// Liste racine de la section Lore : aucune sidebar secondaire ne doit
|
|
// subsister (sinon elle persiste depuis la section precedente — bug
|
|
// symetrique a celui de CampaignsComponent).
|
|
this.layoutService.hide();
|
|
this.loadLores();
|
|
}
|
|
|
|
loadLores(): void {
|
|
this.loreService.getAllLores().subscribe({
|
|
next: (data) => {
|
|
this.lores = data;
|
|
this.loading = false;
|
|
},
|
|
error: () => {
|
|
this.error = true;
|
|
this.loading = false;
|
|
}
|
|
});
|
|
}
|
|
|
|
openCreateModal(): void {
|
|
this.showCreateModal = true;
|
|
}
|
|
|
|
onModalClose(): void {
|
|
this.showCreateModal = false;
|
|
}
|
|
|
|
onLoreCreated(data: { name: string; description: string }): void {
|
|
this.loreService.createLore(data).subscribe({
|
|
next: () => {
|
|
this.showCreateModal = false;
|
|
this.loadLores();
|
|
},
|
|
error: () => {
|
|
console.error('Erreur lors de la création du Lore');
|
|
}
|
|
});
|
|
}
|
|
|
|
navigateToDetail(id: string): void {
|
|
this.router.navigate(['/lore', id]);
|
|
}
|
|
}
|