diff --git a/frontend/src/assets/assignment.css b/frontend/src/assets/assignment.css new file mode 100644 index 00000000..91ebcef2 --- /dev/null +++ b/frontend/src/assets/assignment.css @@ -0,0 +1,44 @@ +.container { + display: flex; + justify-content: center; + align-items: center; + padding: 2%; + min-height: 100vh; +} + +.assignment-card { + width: 85%; + padding: 2%; + border-radius: 12px; +} + +.description { + margin-top: 2%; + line-height: 1.6; + font-size: 1.1rem; +} + +.top-right-btn { + position: absolute; + right: 2%; + color: red; +} + +.group-section { + margin-top: 2rem; +} + +.group-section h3 { + margin-bottom: 0.5rem; +} + +.group-section ul { + padding-left: 1.2rem; + list-style-type: disc; +} + +.subtitle-section { + display: flex; + align-items: center; + justify-content: space-between; +} diff --git a/frontend/src/components/assignments/AssignmentForm.vue b/frontend/src/components/assignments/AssignmentForm.vue index fa6d27ae..4442f020 100644 --- a/frontend/src/components/assignments/AssignmentForm.vue +++ b/frontend/src/components/assignments/AssignmentForm.vue @@ -13,15 +13,10 @@ import type {LearningPath} from "@/data-objects/learning-paths/learning-path.ts" import type {ClassesResponse} from "@/controllers/classes.ts"; import type {AssignmentDTO} from "@dwengo-1/common/interfaces/assignment"; import {AssignmentController} from "@/controllers/assignments.ts"; -import type {GroupDTO} from "@dwengo-1/common/interfaces/group"; -import {GroupController} from "@/controllers/groups.ts"; /*** TODO: when clicking the assign button from lp page pass the lp-object in a state: */ -const props = defineProps<{ - learningPath?: LearningPath | null; // Optional learningPath prop -}>(); const router = useRouter(); const {t, locale} = useI18n(); @@ -48,26 +43,7 @@ async function submitForm(assignmentTitle: string, //TODO: replace with query function const controller: AssignmentController = new AssignmentController(selectedClass); - const response = await controller.createAssignment(assignmentDTO); - // Create groups - for (let i = 0; i < groups.length; i++) { - const group: GroupDTO = { - assignment: response.id, - groupNumber: i, - members: groups[i] - }; - - console.log("Posting group:", group); - - const groupController: GroupController = new GroupController(selectedClass, response.id); - - try { - await groupController.createGroup(group); - console.log("Group successfully posted:", group); - } catch (err) { - console.error("Group POST failed:", err); - } - } + await controller.createAssignment(assignmentDTO); await router.push('/user/assignment'); } diff --git a/frontend/src/components/assignments/GroupSelector.vue b/frontend/src/components/assignments/GroupSelector.vue index fd7b67db..797e22cc 100644 --- a/frontend/src/components/assignments/GroupSelector.vue +++ b/frontend/src/components/assignments/GroupSelector.vue @@ -1,7 +1,7 @@ + + + + + diff --git a/frontend/src/views/assignments/SingleAssignment.vue b/frontend/src/views/assignments/SingleAssignment.vue index 57a46336..1533053c 100644 --- a/frontend/src/views/assignments/SingleAssignment.vue +++ b/frontend/src/views/assignments/SingleAssignment.vue @@ -1,162 +1,20 @@ diff --git a/frontend/src/views/assignments/StudentAssignment.vue b/frontend/src/views/assignments/StudentAssignment.vue new file mode 100644 index 00000000..dbbdfb30 --- /dev/null +++ b/frontend/src/views/assignments/StudentAssignment.vue @@ -0,0 +1,110 @@ + + + + + + diff --git a/frontend/src/views/assignments/TeacherAssignment.vue b/frontend/src/views/assignments/TeacherAssignment.vue new file mode 100644 index 00000000..5bbf4a30 --- /dev/null +++ b/frontend/src/views/assignments/TeacherAssignment.vue @@ -0,0 +1,118 @@ + + + + + + diff --git a/frontend/src/views/assignments/UserAssignments.vue b/frontend/src/views/assignments/UserAssignments.vue index 14abf295..e2ae8253 100644 --- a/frontend/src/views/assignments/UserAssignments.vue +++ b/frontend/src/views/assignments/UserAssignments.vue @@ -27,14 +27,15 @@ if (isTeacher.value) { classesQueryResults = useStudentClassesQuery(username, true); } +//TODO: replace with query from classes const classController = new ClassController(); - const assignments = asyncComputed(async () => { const classes = classesQueryResults?.data?.value?.classes; if (!classes) return []; const result = await Promise.all( (classes as ClassDTO[]).map(async (cls) => { + //TODO: replace by class queries const {assignments} = await classController.getAssignments(cls.id); return assignments.map(a => ({ id: a.id, @@ -51,8 +52,6 @@ const assignments = asyncComputed(async () => { return result.flat(); }, []); -console.log(assignments); - const goToCreateAssignment = async () => { await router.push('/assignment/create'); @@ -67,6 +66,7 @@ const goToAssignmentDetails = async (id: number, class_id: string) => { const goToDeleteAssignment = async (id: number, class_id: string) => { + //TODO: replace with query const controller = new AssignmentController(class_id); await controller.deleteAssignment(id); }; @@ -98,32 +98,30 @@ onMounted(async () => { cols="12" > - -
-
{{ assignment.title }}
-
- {{ t('class') }}: - +
+
{{ assignment.title }}
+
+ {{ t('class') }}: + {{ assignment.class.displayName }} -
+
-
+
-
- - {{ t('view-assignment') }} - - - {{ t('delete') }} - -
- +
+ + {{ t('view-assignment') }} + + + {{ t('delete') }} + +