feat(frontend): CreateAssignment.vue accepteert hruid vanuit leerpad pagina

This commit is contained in:
Joyelle Ndagijimana 2025-04-19 17:13:38 +02:00
parent a421b1996a
commit 790ef985be
8 changed files with 348 additions and 23 deletions

View file

@ -18,6 +18,7 @@
},
"dependencies": {
"@dwengo-1/common": "^0.1.1",
"@rollup/rollup-darwin-arm64": "^4.40.0",
"@tanstack/react-query": "^5.69.0",
"@tanstack/vue-query": "^5.69.0",
"@vueuse/core": "^13.1.0",

View file

@ -99,7 +99,7 @@
"loadSubmission": "Einladen",
"noSubmissionsYet": "Noch keine Lösungen eingereicht.",
"viewAsGroup": "Fortschritt ansehen von Gruppe...",
"assignLearningPath": "Als Aufgabe geben"
"assignLearningPath": "Als Aufgabe geben",
"group": "Gruppe",
"description": "Beschreibung",
"no-submission": "keine vorlage",

View file

@ -99,7 +99,7 @@
"loadSubmission": "Charger",
"noSubmissionsYet": "Pas encore de soumissions.",
"viewAsGroup": "Voir la progression du groupe...",
"assignLearningPath": "donner comme tâche"
"assignLearningPath": "donner comme tâche",
"group": "Groupe",
"description": "Description",
"no-submission": "aucune soumission",

View file

@ -99,7 +99,7 @@
"loadSubmission": "Inladen",
"noSubmissionsYet": "Nog geen indieningen.",
"viewAsGroup": "Vooruitgang bekijken van groep...",
"assignLearningPath": "Als opdracht geven"
"assignLearningPath": "Als opdracht geven",
"group": "Groep",
"description": "Beschrijving",
"no-submission": "geen indiening",

View file

@ -15,16 +15,6 @@ import type {AssignmentDTO} from "@dwengo-1/common/interfaces/assignment";
import {useCreateAssignmentMutation} from "@/queries/assignments.ts";
import {useRoute} from "vue-router";
/***
TODO: when clicking the assign button from lp page pass the lp-hruid in a query like this:
router.push({
path: "/assignment/create,
query: {
...route.query,
lp: hruid,
},
});
*/
const route = useRoute();
const router = useRouter();
@ -56,10 +46,10 @@ const classesQueryResults = useTeacherClassesQuery(username, true);
const selectedClass = ref(undefined);
const assignmentTitle = ref('');
const selectedLearningPath = ref(route.query.lp || undefined);
const selectedLearningPath = ref(route.query.hruid || undefined);
// Disable combobox when learningPath prop is passed
const lpIsSelected = route.query.lp !== undefined;
const lpIsSelected = route.query.hruid !== undefined;
const deadline = ref(null);
const description = ref('');
const groups = ref<string[][]>([]);
@ -75,7 +65,7 @@ watch(selectedClass, () => {
groups.value = [];
});
const {mutate, isSuccess} = useCreateAssignmentMutation();
const {mutate, data, isSuccess} = useCreateAssignmentMutation();
async function submitFormHandler(): Promise<void> {
const {valid} = await form.value.validate();
@ -92,7 +82,7 @@ async function submitFormHandler(): Promise<void> {
};
mutate({cid: assignmentDTO.within, data: assignmentDTO});
if (isSuccess) await router.push("/user/assignment");
if (isSuccess) await router.push(`/assignment/class/${data.value?.assignment.within}/${data.value?.assignment.id}`);
}
</script>

View file

@ -21,8 +21,8 @@ function useGroupsWithProgress(
groups: Ref<GroupDTO[]>,
hruid: Ref<string>,
language: Ref<string>
): { groupProgressMap: Record<string, number> } {
const groupProgressMap: Record<string, number> = reactive({});
): { groupProgressMap: Record<number, number> } {
const groupProgressMap: Record<number, number> = reactive({});
watchEffect(() => {
// Clear existing entries to avoid stale data
@ -30,15 +30,18 @@ function useGroupsWithProgress(
delete groupProgressMap[key];
}
const lang = language.value as Language;
const lang = ref(language.value as Language);
groups.value.forEach((group) => {
const groupKey = group.groupNumber.toString();
const query = useGetLearningPathQuery(hruid.value, lang, {
const groupKey = group.groupNumber;
const forGroup = ref({
forGroup: groupKey,
assignmentNo: assignmentId,
classId: classId,
});
const query = useGetLearningPathQuery(hruid.value, lang, forGroup);
const data = query.data.value;
groupProgressMap[groupKey] = data ? calculateProgress(data) : 0;