#62 Ajoute d'une configuration pour les status à considérer comme terminé
Signed-off-by: Gato <cedric@goutailler-olivier.fr>
This commit is contained in:
@@ -2,6 +2,7 @@ import { Component, computed, inject } from '@angular/core';
|
||||
import { Router } from '@angular/router';
|
||||
import { IssueEntity, IssuesStore } from '../issues/issues.store';
|
||||
import { MilestoneEntity, MilestonesStore } from '../milestones/milestones.store';
|
||||
import { StatusesStore } from '../statuses/statuses.store';
|
||||
|
||||
@Component({
|
||||
selector: 'app-dashboard',
|
||||
@@ -13,6 +14,7 @@ export class Dashboard {
|
||||
private readonly router = inject(Router);
|
||||
private readonly issuesStore = inject(IssuesStore);
|
||||
private readonly milestonesStore = inject(MilestonesStore);
|
||||
private readonly statusesStore = inject(StatusesStore);
|
||||
|
||||
constructor() {
|
||||
this.issuesStore.load();
|
||||
@@ -31,7 +33,8 @@ export class Dashboard {
|
||||
protected readonly completionRate = computed(() => {
|
||||
const total = this.totalIssues();
|
||||
if (total === 0) return 0;
|
||||
return Math.round((this.statusCounts().done / total) * 100);
|
||||
const done = this.issuesStore.issues().filter((i) => this.statusesStore.isCompleted(i.status)).length;
|
||||
return Math.round((done / total) * 100);
|
||||
});
|
||||
|
||||
protected readonly totalMilestones = computed(() => this.milestonesStore.milestones().length);
|
||||
@@ -57,7 +60,7 @@ export class Dashboard {
|
||||
protected readonly highPriorityIssues = computed(() =>
|
||||
this.issuesStore
|
||||
.issues()
|
||||
.filter((i) => (i.priority === 'HAUTE' || i.priority === 'TRES_HAUTE') && i.status !== 'done')
|
||||
.filter((i) => (i.priority === 'HAUTE' || i.priority === 'TRES_HAUTE') && !this.statusesStore.isCompleted(i.status))
|
||||
.slice(0, 6),
|
||||
);
|
||||
|
||||
@@ -75,7 +78,7 @@ export class Dashboard {
|
||||
return this.issuesStore
|
||||
.issues()
|
||||
.filter((i) => {
|
||||
if (!i.dueDate || i.status === 'done') return false;
|
||||
if (!i.dueDate || this.statusesStore.isCompleted(i.status)) return false;
|
||||
const due = new Date(i.dueDate);
|
||||
return due >= now && due <= twoWeeks;
|
||||
})
|
||||
@@ -86,7 +89,7 @@ export class Dashboard {
|
||||
protected readonly overdueCount = computed(() => {
|
||||
const now = new Date();
|
||||
return this.issuesStore.issues().filter((i) => {
|
||||
if (!i.dueDate || i.status === 'done') return false;
|
||||
if (!i.dueDate || this.statusesStore.isCompleted(i.status)) return false;
|
||||
return new Date(i.dueDate) < now;
|
||||
}).length;
|
||||
});
|
||||
@@ -95,7 +98,7 @@ export class Dashboard {
|
||||
if (milestone.issueIds.length === 0) return 0;
|
||||
const linked = this.issuesStore.issues().filter((i) => milestone.issueIds.includes(i.id));
|
||||
if (linked.length === 0) return 0;
|
||||
return Math.round((linked.filter((i) => i.status === 'done').length / linked.length) * 100);
|
||||
return Math.round((linked.filter((i) => this.statusesStore.isCompleted(i.status)).length / linked.length) * 100);
|
||||
}
|
||||
|
||||
protected formatDate(iso: string): string {
|
||||
|
||||
Reference in New Issue
Block a user