style: lint + format
This commit is contained in:
		
							parent
							
								
									464b888e16
								
							
						
					
					
						commit
						569adf6518
					
				
					 3 changed files with 59 additions and 50 deletions
				
			
		| 
						 | 
				
			
			@ -3,7 +3,7 @@
 | 
			
		|||
    import authState from "@/services/auth/auth-service.ts";
 | 
			
		||||
    import { onMounted, ref } from "vue";
 | 
			
		||||
    import { useRoute } from "vue-router";
 | 
			
		||||
    import { type ClassResponse } from "@/controllers/classes";
 | 
			
		||||
    import type { ClassResponse } from "@/controllers/classes";
 | 
			
		||||
    import type { JoinRequestsResponse, StudentsResponse } from "@/controllers/students";
 | 
			
		||||
    import type { StudentDTO } from "@dwengo-1/common/interfaces/student";
 | 
			
		||||
    import UsingQueryResult from "@/components/UsingQueryResult.vue";
 | 
			
		||||
| 
						 | 
				
			
			@ -17,40 +17,41 @@
 | 
			
		|||
    const classId: string = route.params.id as string;
 | 
			
		||||
    const username = ref<string | undefined>(undefined);
 | 
			
		||||
 | 
			
		||||
    // queries used to access the backend and catch loading or errors
 | 
			
		||||
    // Queries used to access the backend and catch loading or errors
 | 
			
		||||
 | 
			
		||||
    // gets the class a teacher wants to manage
 | 
			
		||||
    // Gets the class a teacher wants to manage
 | 
			
		||||
    const getClass = useClassQuery(classId);
 | 
			
		||||
    // get all students part of the class
 | 
			
		||||
    // Get all students part of the class
 | 
			
		||||
    const getStudents = useClassStudentsQuery(classId);
 | 
			
		||||
    // get all join requests for this class
 | 
			
		||||
    // Get all join requests for this class
 | 
			
		||||
    const joinRequestsQuery = useTeacherJoinRequestsQuery(username, classId);
 | 
			
		||||
    // handle accepting or rejecting join requests
 | 
			
		||||
    // Handle accepting or rejecting join requests
 | 
			
		||||
    const { mutate } = useUpdateJoinRequestMutation();
 | 
			
		||||
    // handle deletion of a student from the class
 | 
			
		||||
    // Handle deletion of a student from the class
 | 
			
		||||
    const { mutate: deleteStudentMutation } = useClassDeleteStudentMutation();
 | 
			
		||||
 | 
			
		||||
    // load current user before rendering the page
 | 
			
		||||
    // Load current user before rendering the page
 | 
			
		||||
    onMounted(async () => {
 | 
			
		||||
        const userObject = await authState.loadUser();
 | 
			
		||||
        username.value = userObject?.profile?.preferred_username ?? undefined;
 | 
			
		||||
    });
 | 
			
		||||
 | 
			
		||||
    // used to set the visibility of the dialog
 | 
			
		||||
    // Used to set the visibility of the dialog
 | 
			
		||||
    const dialog = ref(false);
 | 
			
		||||
    // student selected for deletion
 | 
			
		||||
    // Student selected for deletion
 | 
			
		||||
    const selectedStudent = ref<StudentDTO | null>(null);
 | 
			
		||||
 | 
			
		||||
    // let the teacher verify deletion of a student
 | 
			
		||||
    // Let the teacher verify deletion of a student
 | 
			
		||||
    function showPopup(s: StudentDTO): void {
 | 
			
		||||
        selectedStudent.value = s;
 | 
			
		||||
        dialog.value = true;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    async function removeStudentFromclass(): Promise<void> {
 | 
			
		||||
        // delete student from class
 | 
			
		||||
        deleteStudentMutation({id: classId, username: selectedStudent.value!.username}, {
 | 
			
		||||
        // Delete student from class
 | 
			
		||||
        deleteStudentMutation(
 | 
			
		||||
            { id: classId, username: selectedStudent.value!.username },
 | 
			
		||||
            {
 | 
			
		||||
                onSuccess: async () => {
 | 
			
		||||
                    dialog.value = false;
 | 
			
		||||
                    await getStudents.refetch();
 | 
			
		||||
| 
						 | 
				
			
			@ -60,11 +61,12 @@
 | 
			
		|||
                    dialog.value = false;
 | 
			
		||||
                    showSnackbar(t("failed") + ": " + e.message, "error");
 | 
			
		||||
                },
 | 
			
		||||
            },)
 | 
			
		||||
            },
 | 
			
		||||
        );
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    function handleJoinRequest(c: ClassJoinRequestDTO, accepted: boolean): void {
 | 
			
		||||
        // handle acception or rejection of a join request
 | 
			
		||||
        // Handle acception or rejection of a join request
 | 
			
		||||
        mutate(
 | 
			
		||||
            {
 | 
			
		||||
                teacherUsername: username.value!,
 | 
			
		||||
| 
						 | 
				
			
			@ -74,7 +76,7 @@
 | 
			
		|||
            },
 | 
			
		||||
            {
 | 
			
		||||
                onSuccess: async () => {
 | 
			
		||||
                    if (accepted){
 | 
			
		||||
                    if (accepted) {
 | 
			
		||||
                        await joinRequestsQuery.refetch();
 | 
			
		||||
                        await getStudents.refetch();
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -91,14 +93,14 @@
 | 
			
		|||
        );
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    // default of snackbar values
 | 
			
		||||
    // Default of snackbar values
 | 
			
		||||
    const snackbar = ref({
 | 
			
		||||
        visible: false,
 | 
			
		||||
        message: "",
 | 
			
		||||
        color: "success",
 | 
			
		||||
    });
 | 
			
		||||
 | 
			
		||||
    // function to show snackbar on success or failure
 | 
			
		||||
    // Function to show snackbar on success or failure
 | 
			
		||||
    function showSnackbar(message: string, color: string): void {
 | 
			
		||||
        snackbar.value.message = message;
 | 
			
		||||
        snackbar.value.color = color;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -7,7 +7,7 @@
 | 
			
		|||
    import { useCreateJoinRequestMutation, useStudentClassesQuery } from "@/queries/students";
 | 
			
		||||
    import type { StudentDTO } from "@dwengo-1/common/interfaces/student";
 | 
			
		||||
    import type { TeacherDTO } from "@dwengo-1/common/interfaces/teacher";
 | 
			
		||||
    import { type ClassesResponse } from "@/controllers/classes";
 | 
			
		||||
    import type { ClassesResponse } from "@/controllers/classes";
 | 
			
		||||
    import UsingQueryResult from "@/components/UsingQueryResult.vue";
 | 
			
		||||
    import { useClassStudentsQuery, useClassTeachersQuery } from "@/queries/classes";
 | 
			
		||||
    import type { StudentsResponse } from "@/controllers/students";
 | 
			
		||||
| 
						 | 
				
			
			@ -44,7 +44,7 @@
 | 
			
		|||
    async function openStudentDialog(c: ClassDTO): Promise<void> {
 | 
			
		||||
        selectedClass.value = c;
 | 
			
		||||
 | 
			
		||||
        // let the component know it should show the students in a class
 | 
			
		||||
        // Let the component know it should show the students in a class
 | 
			
		||||
        getStudents.value = true;
 | 
			
		||||
        await getStudentsQuery.refetch();
 | 
			
		||||
        dialog.value = true;
 | 
			
		||||
| 
						 | 
				
			
			@ -53,7 +53,7 @@
 | 
			
		|||
    async function openTeacherDialog(c: ClassDTO): Promise<void> {
 | 
			
		||||
        selectedClass.value = c;
 | 
			
		||||
 | 
			
		||||
        // let the component know it should show teachers of a class
 | 
			
		||||
        // Let the component know it should show teachers of a class
 | 
			
		||||
        getStudents.value = false;
 | 
			
		||||
        await getTeachersQuery.refetch();
 | 
			
		||||
        dialog.value = true;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -6,7 +6,7 @@
 | 
			
		|||
    import type { ClassDTO } from "@dwengo-1/common/interfaces/class";
 | 
			
		||||
    import type { TeacherInvitationDTO } from "@dwengo-1/common/interfaces/teacher-invitation";
 | 
			
		||||
    import { useTeacherClassesQuery } from "@/queries/teachers";
 | 
			
		||||
    import { type ClassesResponse, type ClassResponse } from "@/controllers/classes";
 | 
			
		||||
    import type { ClassesResponse } from "@/controllers/classes";
 | 
			
		||||
    import UsingQueryResult from "@/components/UsingQueryResult.vue";
 | 
			
		||||
    import { useClassesQuery, useClassTeacherInvitationsQuery, useCreateClassMutation } from "@/queries/classes";
 | 
			
		||||
    import type { TeacherInvitationsResponse } from "@/controllers/teacher-invitations";
 | 
			
		||||
| 
						 | 
				
			
			@ -252,34 +252,41 @@
 | 
			
		|||
                        :query-result="getInvitationsQuery"
 | 
			
		||||
                        v-slot="invitationsResponse: { data: TeacherInvitationsResponse }"
 | 
			
		||||
                    >
 | 
			
		||||
                    <using-query-result :query-result="allClassesQuery" v-slot="classesResponse: {data: ClassesResponse}">
 | 
			
		||||
                        <tr
 | 
			
		||||
                            v-for="i in invitationsResponse.data.invitations as TeacherInvitationDTO[]"
 | 
			
		||||
                            :key="i.classId"
 | 
			
		||||
                        <using-query-result
 | 
			
		||||
                            :query-result="allClassesQuery"
 | 
			
		||||
                            v-slot="classesResponse: { data: ClassesResponse }"
 | 
			
		||||
                        >
 | 
			
		||||
                            <td>
 | 
			
		||||
                                {{ (classesResponse.data.classes as ClassDTO[]).filter((c) => c.id == i.classId)[0] }}
 | 
			
		||||
                            </td>
 | 
			
		||||
                            <td>{{ (i.sender as TeacherDTO).firstName + " " + (i.sender as TeacherDTO).lastName }}</td>
 | 
			
		||||
                            <td class="text-right">
 | 
			
		||||
                                <div>
 | 
			
		||||
                                    <v-btn
 | 
			
		||||
                                        color="green"
 | 
			
		||||
                                        @click="acceptRequest"
 | 
			
		||||
                                        class="mr-2"
 | 
			
		||||
                                    >
 | 
			
		||||
                                        {{ t("accept") }}
 | 
			
		||||
                                    </v-btn>
 | 
			
		||||
                                    <v-btn
 | 
			
		||||
                                        color="red"
 | 
			
		||||
                                        @click="denyRequest"
 | 
			
		||||
                                    >
 | 
			
		||||
                                        {{ t("deny") }}
 | 
			
		||||
                                    </v-btn>
 | 
			
		||||
                                </div>
 | 
			
		||||
                            </td>
 | 
			
		||||
                        </tr>
 | 
			
		||||
                    </using-query-result>
 | 
			
		||||
                            <tr
 | 
			
		||||
                                v-for="i in invitationsResponse.data.invitations as TeacherInvitationDTO[]"
 | 
			
		||||
                                :key="i.classId"
 | 
			
		||||
                            >
 | 
			
		||||
                                <td>
 | 
			
		||||
                                    {{
 | 
			
		||||
                                        (classesResponse.data.classes as ClassDTO[]).filter((c) => c.id == i.classId)[0]
 | 
			
		||||
                                    }}
 | 
			
		||||
                                </td>
 | 
			
		||||
                                <td>
 | 
			
		||||
                                    {{ (i.sender as TeacherDTO).firstName + " " + (i.sender as TeacherDTO).lastName }}
 | 
			
		||||
                                </td>
 | 
			
		||||
                                <td class="text-right">
 | 
			
		||||
                                    <div>
 | 
			
		||||
                                        <v-btn
 | 
			
		||||
                                            color="green"
 | 
			
		||||
                                            @click="acceptRequest"
 | 
			
		||||
                                            class="mr-2"
 | 
			
		||||
                                        >
 | 
			
		||||
                                            {{ t("accept") }}
 | 
			
		||||
                                        </v-btn>
 | 
			
		||||
                                        <v-btn
 | 
			
		||||
                                            color="red"
 | 
			
		||||
                                            @click="denyRequest"
 | 
			
		||||
                                        >
 | 
			
		||||
                                            {{ t("deny") }}
 | 
			
		||||
                                        </v-btn>
 | 
			
		||||
                                    </div>
 | 
			
		||||
                                </td>
 | 
			
		||||
                            </tr>
 | 
			
		||||
                        </using-query-result>
 | 
			
		||||
                    </using-query-result>
 | 
			
		||||
                </tbody>
 | 
			
		||||
            </v-table>
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Reference in a new issue