Edition des issues
This commit is contained in:
@@ -0,0 +1,81 @@
|
||||
import { Injectable, signal } from '@angular/core';
|
||||
|
||||
export type IssueStatus = 'draft' | 'todo' | 'done' | 'in-progress';
|
||||
export type IssuePriority = 'Basse' | 'Moyenne' | 'Haute';
|
||||
|
||||
export type IssueEntity = {
|
||||
id: number;
|
||||
assignee: string;
|
||||
epic: string;
|
||||
name: string;
|
||||
dueDate: string;
|
||||
description: string;
|
||||
priority: IssuePriority;
|
||||
status: IssueStatus;
|
||||
progress: number;
|
||||
};
|
||||
|
||||
@Injectable({ providedIn: 'root' })
|
||||
export class IssuesStore {
|
||||
private readonly data = signal<IssueEntity[]>([
|
||||
{
|
||||
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,
|
||||
},
|
||||
{
|
||||
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,
|
||||
},
|
||||
{
|
||||
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,
|
||||
},
|
||||
]);
|
||||
|
||||
readonly issues = this.data.asReadonly();
|
||||
|
||||
getById(id: number): IssueEntity | undefined {
|
||||
return this.data().find((issue) => issue.id === id);
|
||||
}
|
||||
|
||||
getNextId(): number {
|
||||
const ids = this.data().map((issue) => issue.id);
|
||||
return ids.length > 0 ? Math.max(...ids) + 1 : 1;
|
||||
}
|
||||
|
||||
upsert(issue: IssueEntity): void {
|
||||
this.data.update((issues) => {
|
||||
const existingIndex = issues.findIndex((current) => current.id === issue.id);
|
||||
|
||||
if (existingIndex === -1) {
|
||||
return [...issues, issue];
|
||||
}
|
||||
|
||||
const updated = [...issues];
|
||||
updated[existingIndex] = issue;
|
||||
return updated;
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user