Suppression d'une issue
This commit is contained in:
@@ -17,6 +17,33 @@ export class IssueDetail {
|
||||
protected issue: IssueEntity = this.buildIssue();
|
||||
protected isEditing = this.route.snapshot.queryParamMap.get('mode') === 'edit';
|
||||
private issueBeforeEdit: IssueEntity | null = null;
|
||||
protected readonly issues = this.issuesStore.issues;
|
||||
protected moreMenuOpen = false;
|
||||
|
||||
protected readonly statusOptions: IssueEntity['status'][] = [
|
||||
'draft',
|
||||
'todo',
|
||||
'in-progress',
|
||||
'done',
|
||||
];
|
||||
|
||||
protected get dependencyIds(): number[] {
|
||||
return this.issue.dependsOnIds;
|
||||
}
|
||||
|
||||
protected set dependencyIds(value: number[]) {
|
||||
this.issue.dependsOnIds = Array.isArray(value)
|
||||
? value.filter((dependencyId): dependencyId is number => typeof dependencyId === 'number')
|
||||
: [];
|
||||
}
|
||||
|
||||
protected get estimatedTimeValue(): number | null {
|
||||
return this.issue.estimatedTime;
|
||||
}
|
||||
|
||||
protected set estimatedTimeValue(value: number | null) {
|
||||
this.issue.estimatedTime = value === null || value === undefined ? null : Number(value);
|
||||
}
|
||||
|
||||
constructor() {
|
||||
if (this.isEditing) {
|
||||
@@ -43,6 +70,40 @@ export class IssueDetail {
|
||||
this.router.navigate(['/issues', this.issue.id]);
|
||||
}
|
||||
|
||||
protected deleteIssue(): void {
|
||||
this.issuesStore.deleteById(this.issue.id);
|
||||
this.router.navigate(['/issues']);
|
||||
}
|
||||
|
||||
protected updateStatus(status: IssueEntity['status']): void {
|
||||
this.issue.status = status;
|
||||
this.issuesStore.upsert(this.issue);
|
||||
}
|
||||
|
||||
protected toggleMoreMenu(): void {
|
||||
this.moreMenuOpen = !this.moreMenuOpen;
|
||||
}
|
||||
|
||||
protected closeMoreMenu(): void {
|
||||
this.moreMenuOpen = false;
|
||||
}
|
||||
|
||||
protected resolveDependencyLabels(issueIds: number[]): string {
|
||||
if (issueIds.length === 0) {
|
||||
return '-';
|
||||
}
|
||||
|
||||
return issueIds
|
||||
.map((issueId) => this.issues().find((issue) => issue.id === issueId))
|
||||
.filter((issue): issue is IssueEntity => Boolean(issue))
|
||||
.map((issue) => `#${issue.id} - ${issue.name || 'Sans nom'}`)
|
||||
.join(', ');
|
||||
}
|
||||
|
||||
protected get dependencyCandidates(): IssueEntity[] {
|
||||
return this.issues().filter((issue) => issue.id !== this.issue.id);
|
||||
}
|
||||
|
||||
private cloneIssue(issue: IssueEntity): IssueEntity {
|
||||
return { ...issue };
|
||||
}
|
||||
@@ -63,6 +124,8 @@ export class IssueDetail {
|
||||
name: '',
|
||||
dueDate: '',
|
||||
description: '',
|
||||
estimatedTime: null,
|
||||
dependsOnIds: [],
|
||||
priority: 'Moyenne',
|
||||
status: 'draft',
|
||||
progress: 0,
|
||||
@@ -79,6 +142,8 @@ export class IssueDetail {
|
||||
name: '',
|
||||
dueDate: '',
|
||||
description: '',
|
||||
estimatedTime: null,
|
||||
dependsOnIds: [],
|
||||
priority: 'Moyenne',
|
||||
status: 'draft',
|
||||
progress: 0,
|
||||
|
||||
Reference in New Issue
Block a user