diff --git a/frontend/src/components/GroupSubmissionStatus.vue b/frontend/src/components/GroupSubmissionStatus.vue
new file mode 100644
index 00000000..5641da58
--- /dev/null
+++ b/frontend/src/components/GroupSubmissionStatus.vue
@@ -0,0 +1,40 @@
+
+
+
+
+
+ {{ (data.submissions.length > 0) ? t("see-submission") : t("no-submission")}}
+
+
+
diff --git a/frontend/src/queries/assignments.ts b/frontend/src/queries/assignments.ts
index 2bb0a929..fb99c5b9 100644
--- a/frontend/src/queries/assignments.ts
+++ b/frontend/src/queries/assignments.ts
@@ -181,7 +181,7 @@ export function useAssignmentSubmissionsQuery(
return useQuery({
queryKey: computed(() => assignmentSubmissionsQueryKey(cid!, an!, f)),
- queryFn: async () => new AssignmentController(cid!).getSubmissions(gn!, f),
+ queryFn: async () => new AssignmentController(cid!).getSubmissions(an!, f),
enabled: () => checkEnabled(cid, an, gn),
});
}
diff --git a/frontend/src/views/assignments/StudentAssignment.vue b/frontend/src/views/assignments/StudentAssignment.vue
index defb8d71..077540a5 100644
--- a/frontend/src/views/assignments/StudentAssignment.vue
+++ b/frontend/src/views/assignments/StudentAssignment.vue
@@ -16,11 +16,6 @@ import {calculateProgress} from "@/utils/assignment-utils.ts";
const props = defineProps<{
classId: string;
assignmentId: number;
- useGroupsWithProgress: (
- groups: Ref,
- hruid: Ref,
- language: Ref,
- ) => { groupProgressMap: Map };
}>();
const { t } = useI18n();
@@ -38,13 +33,26 @@ import {calculateProgress} from "@/utils/assignment-utils.ts";
const submitted = ref(false); //TODO: update by fetching submissions and check if group submitted
const groupsQueryResult = useGroupsQuery(props.classId, props.assignmentId, true);
- const group = computed(() =>
- groupsQueryResult?.data.value?.groups.find((group) =>
- group.members?.some((m) => m.username === username.value),
- ),
- );
+ const group = computed(() => {
+ const groups = groupsQueryResult.data.value?.groups;
- watchEffect(() => {
+ if (!groups) return undefined;
+
+ // Sort by original groupNumber
+ const sortedGroups = [...groups].sort((a, b) => a.groupNumber - b.groupNumber);
+
+ return sortedGroups
+ .map((group, index) => ({
+ ...group,
+ groupNo: index + 1, // Renumbered index
+ }))
+ .find((group) =>
+ group.members?.some((m) => m.username === username.value),
+ );
+ });
+
+
+watchEffect(() => {
learningPath.value = assignmentQueryResult.data.value?.assignment?.learningPath;
lang.value = assignmentQueryResult.data.value?.assignment?.language as Language;
});
diff --git a/frontend/src/views/assignments/TeacherAssignment.vue b/frontend/src/views/assignments/TeacherAssignment.vue
index c4942e0f..79b9a228 100644
--- a/frontend/src/views/assignments/TeacherAssignment.vue
+++ b/frontend/src/views/assignments/TeacherAssignment.vue
@@ -1,79 +1,105 @@
@@ -113,7 +139,7 @@ import {computed, type Ref, ref, watchEffect} from "vue";
>
@@ -147,7 +173,7 @@ import {computed, type Ref, ref, watchEffect} from "vue";
-
-
- {{ item.submitted ? t("see-submission") : t("no-submission") }}
-
+
@@ -184,7 +209,7 @@ import {computed, type Ref, ref, watchEffect} from "vue";
>
{{ member.firstName + " " + member.lastName }}
+ >{{ member.firstName + " " + member.lastName }}
@@ -194,7 +219,8 @@ import {computed, type Ref, ref, watchEffect} from "vue";
CloseClose
+
@@ -216,10 +242,10 @@ import {computed, type Ref, ref, watchEffect} from "vue";