import { Component, inject, signal } from '@angular/core'; import { ActivatedRoute } from '@angular/router'; type IssueStatus = 'draft' | 'todo' | 'done' | 'in-progress'; type IssueDetailModel = { id: number; assignee: string; epic: string; name: string; dueDate: string; description: string; priority: 'Basse' | 'Moyenne' | 'Haute'; status: IssueStatus; progress: number; }; @Component({ selector: 'app-issue-detail', imports: [], templateUrl: './issue-detail.html', styleUrl: './issue-detail.css', }) export class IssueDetail { private readonly route = inject(ActivatedRoute); protected readonly issue = signal(this.buildIssue()); private buildIssue(): IssueDetailModel { const idParam = this.route.snapshot.paramMap.get('id'); const draftId = this.route.snapshot.queryParamMap.get('draftId'); const resolvedId = Number(idParam ?? draftId ?? 1); const safeId = Number.isNaN(resolvedId) ? 1 : resolvedId; const existingIssues: Record = { 1: { id: 1, assignee: 'Marie', epic: 'EPIC-UI', name: 'Bug affichage menu mobile', dueDate: '2026-06-10', description: 'Corriger le comportement du menu sur petits ecrans.', priority: 'Haute', status: 'in-progress', progress: 35, }, 2: { id: 2, assignee: 'Nabil', epic: 'EPIC-FORM', name: 'Erreur validation formulaire projet', dueDate: '2026-06-12', description: 'Fiabiliser les regles de validation du formulaire projet.', priority: 'Moyenne', status: 'todo', progress: 20, }, 3: { id: 3, assignee: 'Sonia', epic: 'EPIC-CONTENT', name: 'Mise a jour message de bienvenue', dueDate: '2026-06-18', description: 'Mettre a jour le wording d accueil selon la charte produit.', priority: 'Basse', status: 'done', progress: 100, }, }; return ( existingIssues[safeId] ?? { id: safeId, assignee: 'A definir', epic: 'EPIC-WEBAPP', name: `Nouvelle issue ${safeId}`, dueDate: '2026-06-15', description: 'Decrire ici le contexte, les attentes et les criteres d acceptation.', priority: 'Moyenne', status: 'draft', progress: 0, } ); } }