diff --git a/src/app/components/decision-form/decision-form.component.html b/src/app/components/decision-form/decision-form.component.html index 4467ca5..19b3cac 100644 --- a/src/app/components/decision-form/decision-form.component.html +++ b/src/app/components/decision-form/decision-form.component.html @@ -28,6 +28,11 @@

{{ isEditMode ? 'Edit Decision' : 'Create New Decision' }}

+ +
+ + +
diff --git a/src/app/components/decision-form/decision-form.component.ts b/src/app/components/decision-form/decision-form.component.ts index c48d6a2..d06aa83 100644 --- a/src/app/components/decision-form/decision-form.component.ts +++ b/src/app/components/decision-form/decision-form.component.ts @@ -28,7 +28,8 @@ export class DecisionFormComponent implements OnInit { this.decisionForm = this.fb.group({ title: ['', Validators.required], description: [''], - status: ['DRAFT', Validators.required] + status: ['DRAFT', Validators.required], + dueDate: [''] }); } @@ -53,7 +54,8 @@ export class DecisionFormComponent implements OnInit { this.decisionForm.patchValue({ title: decision.title, description: decision.description, - status: decision.status + status: decision.status, + dueDate: decision.dueDate ? new Date(decision.dueDate).toISOString().split('T')[0] : '' }); } else { this.router.navigate(['../'], { relativeTo: this.route }); diff --git a/src/app/components/decision-list/decision-list.component.css b/src/app/components/decision-list/decision-list.component.css index 9cc4ed3..7cb3995 100644 --- a/src/app/components/decision-list/decision-list.component.css +++ b/src/app/components/decision-list/decision-list.component.css @@ -110,7 +110,22 @@ } .decision-meta { - font-size: 12px; - color: #666; - margin-bottom: 10px; + display: flex; + justify-content: space-between; + font-size: 0.85rem; + color: #6c757d; + margin-bottom: 1.5rem; +} + +.due-date { + display: flex; + align-items: center; + font-weight: 500; +} + +.due-date.overdue { + color: #dc3545; + background-color: #f8dbdf; + padding: 2px 6px; + border-radius: 4px; } diff --git a/src/app/components/decision-list/decision-list.component.html b/src/app/components/decision-list/decision-list.component.html index 926b067..9561bfe 100644 --- a/src/app/components/decision-list/decision-list.component.html +++ b/src/app/components/decision-list/decision-list.component.html @@ -20,6 +20,9 @@

{{ decision.title }}

{{ decision.description || 'No description provided.' }}

Created: {{ decision.createdAt | date:'shortDate' }} + + Due: {{ decision.dueDate | date:'shortDate' }} +
Edit diff --git a/src/app/components/decision-list/decision-list.component.ts b/src/app/components/decision-list/decision-list.component.ts index 13f6809..261ca5c 100644 --- a/src/app/components/decision-list/decision-list.component.ts +++ b/src/app/components/decision-list/decision-list.component.ts @@ -33,6 +33,13 @@ export class DecisionListComponent implements OnInit { } } + isOverdue(decision: Decision): boolean { + if (!decision.dueDate || decision.status === 'CLOSED') { + return false; + } + return new Date(decision.dueDate) < new Date(); + } + private getWorkspaceIdFromRoute(): string | null { for (const route of this.route.pathFromRoot) { const id = route.snapshot.paramMap.get('id'); diff --git a/src/app/models/decision.model.ts b/src/app/models/decision.model.ts index 515b0c1..ae96bf4 100644 --- a/src/app/models/decision.model.ts +++ b/src/app/models/decision.model.ts @@ -5,6 +5,7 @@ export interface Decision { status: 'DRAFT' | 'OPEN' | 'CLOSED'; workspaceId: string; userId: string; + dueDate?: Date; createdAt: Date; updatedAt: Date; isDeleted: boolean; diff --git a/src/app/services/decision.service.ts b/src/app/services/decision.service.ts index 0bb6719..db018fb 100644 --- a/src/app/services/decision.service.ts +++ b/src/app/services/decision.service.ts @@ -20,6 +20,7 @@ export class DecisionService { status: 'CLOSED', workspaceId: 'ws-1', userId: 'user-1', + dueDate: new Date('2023-11-01'), createdAt: new Date('2023-10-25'), updatedAt: new Date('2023-10-26'), isDeleted: false @@ -63,6 +64,7 @@ export class DecisionService { status: decision.status || 'DRAFT', workspaceId: decision.workspaceId, userId: 'user-1', // Mock user + dueDate: decision.dueDate, createdAt: new Date(), updatedAt: new Date(), isDeleted: false