From 21804253238195623ebcd62deb14d98e97c302af Mon Sep 17 00:00:00 2001 From: Joyelle Ndagijimana Date: Sun, 11 May 2025 17:18:01 +0200 Subject: [PATCH] feat: kan opdracht aanmaken met deadline --- .../assignments/assignments.testdata.ts | 2 +- frontend/src/utils/assignment-rules.ts | 2 +- .../views/assignments/CreateAssignment.vue | 3 ++- .../src/views/assignments/UserAssignments.vue | 27 ++++++++++++++++--- 4 files changed, 27 insertions(+), 7 deletions(-) diff --git a/backend/tests/test_assets/assignments/assignments.testdata.ts b/backend/tests/test_assets/assignments/assignments.testdata.ts index c80ee244..f3005ae6 100644 --- a/backend/tests/test_assets/assignments/assignments.testdata.ts +++ b/backend/tests/test_assets/assignments/assignments.testdata.ts @@ -18,7 +18,7 @@ export function makeTestAssignemnts(em: EntityManager, classes: Class[]): Assign description: 'reading', learningPathHruid: 'un_ai', learningPathLanguage: Language.English, - deadline: futureDate, + deadline: new Date(), groups: [], }); diff --git a/frontend/src/utils/assignment-rules.ts b/frontend/src/utils/assignment-rules.ts index b0d29cee..a0ad9281 100644 --- a/frontend/src/utils/assignment-rules.ts +++ b/frontend/src/utils/assignment-rules.ts @@ -58,7 +58,7 @@ export const deadlineRules = [ return "Invalid date or time."; } - if (selectedDateTime <= now) { + if (selectedDateTime < now) { return "The deadline must be in the future."; } diff --git a/frontend/src/views/assignments/CreateAssignment.vue b/frontend/src/views/assignments/CreateAssignment.vue index 32cda330..10c4132a 100644 --- a/frontend/src/views/assignments/CreateAssignment.vue +++ b/frontend/src/views/assignments/CreateAssignment.vue @@ -48,7 +48,7 @@ // Disable combobox when learningPath prop is passed const lpIsSelected = route.query.hruid !== undefined; - const deadline = ref(null); + const deadline = ref(new Date()); const description = ref(""); const groups = ref([]); @@ -86,6 +86,7 @@ title: assignmentTitle.value, description: description.value, learningPath: lp || "", + deadline: deadline.value, language: language.value, groups: groups.value, }; diff --git a/frontend/src/views/assignments/UserAssignments.vue b/frontend/src/views/assignments/UserAssignments.vue index 166a836f..70e94eb0 100644 --- a/frontend/src/views/assignments/UserAssignments.vue +++ b/frontend/src/views/assignments/UserAssignments.vue @@ -108,6 +108,21 @@ }); } + function getDeadlineClass(deadline?: string | Date): string { + if (!deadline) return ""; + const date = new Date(deadline); + const now = new Date(); + const isToday = + date.getDate() === now.getDate() && + date.getMonth() === now.getMonth() && + date.getFullYear() === now.getFullYear(); + + if (date.getTime() < now.getTime()) return "deadline-passed"; + if (isToday) return "deadline-today"; + return "deadline-upcoming"; + } + + onMounted(async () => { @@ -147,14 +162,13 @@
{{ t("deadline") }}: - - {{ formatDate(assignment.deadline) }} - + {{ formatDate(assignment.deadline) }}
+
@@ -259,6 +273,11 @@ font-weight: bold; } + .assignment-deadline.deadline-today { + color: #f57c00; + font-weight: bold; + } + .spacer { flex: 1; }