diff --git a/src/app/app.routes.ts b/src/app/app.routes.ts index a6d8045..846b0c0 100644 --- a/src/app/app.routes.ts +++ b/src/app/app.routes.ts @@ -6,6 +6,7 @@ import { Issues } from './issues/issues'; import { MilestoneDetail } from './milestones/milestone-detail/milestone-detail'; import { Milestones } from './milestones/milestones'; import { Projects } from './projects/projects'; +import { Settings } from './settings/settings'; import { authGuard } from './auth/auth.guard'; export const routes: Routes = [ @@ -20,5 +21,6 @@ export const routes: Routes = [ { path: 'milestones/new', component: MilestoneDetail, canActivate: [authGuard] }, { path: 'milestones/:id', component: MilestoneDetail, canActivate: [authGuard] }, { path: 'milestones', component: Milestones, canActivate: [authGuard] }, + { path: 'settings', component: Settings, canActivate: [authGuard] }, { path: '**', redirectTo: 'home' }, ]; diff --git a/src/app/issues/issue-comments/issue-comments.spec.ts b/src/app/issues/issue-comments/issue-comments.spec.ts index 5aeb88b..417e34c 100644 --- a/src/app/issues/issue-comments/issue-comments.spec.ts +++ b/src/app/issues/issue-comments/issue-comments.spec.ts @@ -578,7 +578,7 @@ describe('IssueComments', () => { describe('statusLabel', () => { it('returns label and colors for done status', () => { const s = (component as any).statusLabel('done'); - expect(s.label).toBe('Terminé'); + expect(s.label).toBe('TERMINÉ'); expect(s.color).toBe('#166534'); }); }); diff --git a/src/app/issues/issue-comments/issue-comments.ts b/src/app/issues/issue-comments/issue-comments.ts index a4687b6..4b2dda4 100644 --- a/src/app/issues/issue-comments/issue-comments.ts +++ b/src/app/issues/issue-comments/issue-comments.ts @@ -5,6 +5,7 @@ import { DomSanitizer, SafeHtml } from '@angular/platform-browser'; import { marked } from 'marked'; import { handleImagePaste, insertAtSelection } from '../paste-image.util'; import { IssueComment, IssueEntity, IssuesStore } from '../issues.store'; +import { StatusEntity, StatusesStore } from '../../settings/statuses/statuses.store'; @Component({ selector: 'app-issue-comments', @@ -15,6 +16,7 @@ import { IssueComment, IssueEntity, IssuesStore } from '../issues.store'; export class IssueComments { private readonly issuesStore = inject(IssuesStore); private readonly sanitizer = inject(DomSanitizer); + private readonly statusesStore = inject(StatusesStore); readonly issueId = input.required(); @@ -140,14 +142,8 @@ export class IssueComments { return map[type] ?? { letter: '?', bg: '#6b7280' }; } - protected statusLabel(status: IssueEntity['status']): { label: string; bg: string; color: string } { - const map: Record = { - draft: { label: 'Brouillon', bg: '#e2e8f0', color: '#475569' }, - todo: { label: 'À faire', bg: '#dbeafe', color: '#1d4ed8' }, - 'in-progress': { label: 'En cours', bg: '#ffedd5', color: '#9a3412' }, - done: { label: 'Terminé', bg: '#dcfce7', color: '#166534' }, - }; - return map[status] ?? { label: status, bg: '#e2e8f0', color: '#475569' }; + protected statusLabel(status: IssueEntity['status']): StatusEntity { + return this.statusesStore.getById(status) ?? { id: status, label: status, bg: '#e2e8f0', color: '#475569', order: 99 }; } protected startCreateTask(commentId: number): void { diff --git a/src/app/issues/issue-detail/issue-detail.html b/src/app/issues/issue-detail/issue-detail.html index 34eabad..90858c4 100644 --- a/src/app/issues/issue-detail/issue-detail.html +++ b/src/app/issues/issue-detail/issue-detail.html @@ -29,19 +29,19 @@ @if (statusMenuOpen) {