Fix typecheck
This commit is contained in:
parent
aca066a376
commit
05c4d471d8
|
|
@ -1,25 +1,33 @@
|
||||||
import {useCSRFFetch} from "@/fetchHelpers";
|
import { useCSRFFetch } from "@/fetchHelpers";
|
||||||
import type {CourseStatisticsType} from "@/gql/graphql";
|
import type { CourseStatisticsType } from "@/gql/graphql";
|
||||||
import {graphqlClient} from "@/graphql/client";
|
import { graphqlClient } from "@/graphql/client";
|
||||||
import {COURSE_QUERY, COURSE_SESSION_DETAIL_QUERY} from "@/graphql/queries";
|
import {
|
||||||
|
COMPETENCE_NAVI_CERTIFICATE_QUERY,
|
||||||
|
COURSE_QUERY,
|
||||||
|
COURSE_SESSION_DETAIL_QUERY,
|
||||||
|
} from "@/graphql/queries";
|
||||||
import {
|
import {
|
||||||
circleFlatChildren,
|
circleFlatChildren,
|
||||||
circleFlatLearningContents,
|
circleFlatLearningContents,
|
||||||
circleFlatLearningUnits,
|
circleFlatLearningUnits,
|
||||||
someFinishedInLearningSequence,
|
someFinishedInLearningSequence,
|
||||||
} from "@/services/circle";
|
} from "@/services/circle";
|
||||||
import type {DashboardDueDate, DashboardPersonRoleType, DashboardPersonType,} from "@/services/dashboard";
|
import type {
|
||||||
|
DashboardDueDate,
|
||||||
|
DashboardPersonRoleType,
|
||||||
|
DashboardPersonType,
|
||||||
|
} from "@/services/dashboard";
|
||||||
import {
|
import {
|
||||||
courseIdForCourseSlug,
|
courseIdForCourseSlug,
|
||||||
fetchDashboardDueDates,
|
fetchDashboardDueDates,
|
||||||
fetchDashboardPersons,
|
fetchDashboardPersons,
|
||||||
fetchStatisticData,
|
fetchStatisticData,
|
||||||
} from "@/services/dashboard";
|
} from "@/services/dashboard";
|
||||||
import {presignUpload, uploadFile} from "@/services/files";
|
import { presignUpload, uploadFile } from "@/services/files";
|
||||||
import {useCompletionStore} from "@/stores/completion";
|
import { useCompletionStore } from "@/stores/completion";
|
||||||
import {useCourseSessionsStore} from "@/stores/courseSessions";
|
import { useCourseSessionsStore } from "@/stores/courseSessions";
|
||||||
import {useDashboardStore} from "@/stores/dashboard";
|
import { useDashboardStore } from "@/stores/dashboard";
|
||||||
import {useUserStore} from "@/stores/user";
|
import { useUserStore } from "@/stores/user";
|
||||||
import type {
|
import type {
|
||||||
ActionCompetence,
|
ActionCompetence,
|
||||||
AgentParticipantRelation,
|
AgentParticipantRelation,
|
||||||
|
|
@ -36,16 +44,15 @@ import type {
|
||||||
LearningUnitPerformanceCriteria,
|
LearningUnitPerformanceCriteria,
|
||||||
PerformanceCriteria,
|
PerformanceCriteria,
|
||||||
} from "@/types";
|
} from "@/types";
|
||||||
import {useQuery} from "@urql/vue";
|
import { useQuery } from "@urql/vue";
|
||||||
import dayjs from "dayjs";
|
import dayjs from "dayjs";
|
||||||
import {t} from "i18next";
|
import { t } from "i18next";
|
||||||
import orderBy from "lodash/orderBy";
|
import orderBy from "lodash/orderBy";
|
||||||
import log from "loglevel";
|
import log from "loglevel";
|
||||||
import type {ComputedRef, Ref} from "vue";
|
import type { ComputedRef, Ref } from "vue";
|
||||||
import {computed, onMounted, ref, watchEffect} from "vue";
|
import { computed, onMounted, ref, watchEffect } from "vue";
|
||||||
import {type RouteLocationRaw, useRouter} from "vue-router";
|
import { type RouteLocationRaw, useRouter } from "vue-router";
|
||||||
import {getCertificates} from "./services/competence";
|
import { mergeCompetenceCertificates } from "./pages/competence/utils";
|
||||||
import {mergeCompetenceCertificates} from "./pages/competence/utils";
|
|
||||||
|
|
||||||
export function useCurrentCourseSession() {
|
export function useCurrentCourseSession() {
|
||||||
/**
|
/**
|
||||||
|
|
@ -177,7 +184,7 @@ export function useCourseData(courseSlug: string) {
|
||||||
|
|
||||||
// urql.useQuery is not meant to be used programmatically, so we use graphqlClient.query instead
|
// urql.useQuery is not meant to be used programmatically, so we use graphqlClient.query instead
|
||||||
const resultPromise = graphqlClient
|
const resultPromise = graphqlClient
|
||||||
.query(COURSE_QUERY, {slug: `${courseSlug}`})
|
.query(COURSE_QUERY, { slug: `${courseSlug}` })
|
||||||
.toPromise();
|
.toPromise();
|
||||||
|
|
||||||
resultPromise.then((result) => {
|
resultPromise.then((result) => {
|
||||||
|
|
@ -442,7 +449,7 @@ export function useFileUpload() {
|
||||||
const fileInfo = ref({} as { id: string; name: string; url: string });
|
const fileInfo = ref({} as { id: string; name: string; url: string });
|
||||||
|
|
||||||
async function upload(e: Event) {
|
async function upload(e: Event) {
|
||||||
const {files} = e.target as HTMLInputElement;
|
const { files } = e.target as HTMLInputElement;
|
||||||
if (!files?.length) return;
|
if (!files?.length) return;
|
||||||
|
|
||||||
try {
|
try {
|
||||||
|
|
@ -460,7 +467,7 @@ export function useFileUpload() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return {upload, error, loading, fileInfo};
|
return { upload, error, loading, fileInfo };
|
||||||
}
|
}
|
||||||
|
|
||||||
export function useMyLearningMentors() {
|
export function useMyLearningMentors() {
|
||||||
|
|
@ -470,7 +477,7 @@ export function useMyLearningMentors() {
|
||||||
|
|
||||||
const fetchMentors = async () => {
|
const fetchMentors = async () => {
|
||||||
loading.value = true;
|
loading.value = true;
|
||||||
const {data} = await useCSRFFetch(
|
const { data } = await useCSRFFetch(
|
||||||
`/api/mentor/${currentCourseSessionId}/mentors`
|
`/api/mentor/${currentCourseSessionId}/mentors`
|
||||||
).json();
|
).json();
|
||||||
learningMentors.value = data.value;
|
learningMentors.value = data.value;
|
||||||
|
|
@ -622,7 +629,7 @@ export function useCourseCircleProgress(circles: Ref<CircleType[] | undefined>)
|
||||||
return circles.value?.length ?? 0;
|
return circles.value?.length ?? 0;
|
||||||
});
|
});
|
||||||
|
|
||||||
return {inProgressCirclesCount, circlesCount};
|
return { inProgressCirclesCount, circlesCount };
|
||||||
}
|
}
|
||||||
|
|
||||||
export function useCourseStatisticsv2(courseSlug: string) {
|
export function useCourseStatisticsv2(courseSlug: string) {
|
||||||
|
|
@ -684,7 +691,7 @@ export function useCertificateQuery(
|
||||||
});
|
});
|
||||||
})();
|
})();
|
||||||
|
|
||||||
return {certificatesQuery};
|
return { certificatesQuery };
|
||||||
}
|
}
|
||||||
|
|
||||||
export function useEvaluationWithFeedback() {
|
export function useEvaluationWithFeedback() {
|
||||||
|
|
@ -695,7 +702,7 @@ export function useEvaluationWithFeedback() {
|
||||||
currentCourseSession.value.course.configuration.is_vv
|
currentCourseSession.value.course.configuration.is_vv
|
||||||
);
|
);
|
||||||
|
|
||||||
return {hasFeedback};
|
return { hasFeedback };
|
||||||
}
|
}
|
||||||
|
|
||||||
export function useVVByLink() {
|
export function useVVByLink() {
|
||||||
|
|
@ -705,11 +712,11 @@ export function useVVByLink() {
|
||||||
() =>
|
() =>
|
||||||
router.resolve({
|
router.resolve({
|
||||||
name: "accountConfirm",
|
name: "accountConfirm",
|
||||||
params: {courseType: `vv-${userStore.language}`},
|
params: { courseType: `vv-${userStore.language}` },
|
||||||
}).href as RouteLocationRaw
|
}).href as RouteLocationRaw
|
||||||
);
|
);
|
||||||
|
|
||||||
return {href};
|
return { href };
|
||||||
}
|
}
|
||||||
|
|
||||||
export function useAllCompetenceCertificates(
|
export function useAllCompetenceCertificates(
|
||||||
|
|
@ -719,14 +726,17 @@ export function useAllCompetenceCertificates(
|
||||||
const courseSessionsStore = useCourseSessionsStore();
|
const courseSessionsStore = useCourseSessionsStore();
|
||||||
const certificateQueries = courseSessionsStore.allCourseSessions.map(
|
const certificateQueries = courseSessionsStore.allCourseSessions.map(
|
||||||
(courseSession) => {
|
(courseSession) => {
|
||||||
return useCertificateQuery([userId], courseSlug, courseSession).certificatesQuery;
|
return useCertificateQuery([userId ?? ""], courseSlug, courseSession)
|
||||||
|
.certificatesQuery;
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
|
||||||
const competenceCertificatesPerCs = computed(() =>
|
const competenceCertificatesPerCs = computed(() =>
|
||||||
certificateQueries.map((query) => {
|
certificateQueries.map((query) => {
|
||||||
return getCertificates(query.data.value, userId ?? null)
|
return (
|
||||||
?.competence_certificates as unknown as CompetenceCertificate[];
|
(query.data.value?.competence_certificate_list
|
||||||
|
?.competence_certificates as unknown as CompetenceCertificate[]) ?? []
|
||||||
|
);
|
||||||
})
|
})
|
||||||
);
|
);
|
||||||
const isLoaded = computed(() => !certificateQueries.some((q) => q.fetching.value));
|
const isLoaded = computed(() => !certificateQueries.some((q) => q.fetching.value));
|
||||||
|
|
|
||||||
|
|
@ -19,7 +19,7 @@ const documents = {
|
||||||
"\n fragment CoursePageFields on CoursePageInterface {\n title\n id\n slug\n content_type\n frontend_url\n }\n": types.CoursePageFieldsFragmentDoc,
|
"\n fragment CoursePageFields on CoursePageInterface {\n title\n id\n slug\n content_type\n frontend_url\n }\n": types.CoursePageFieldsFragmentDoc,
|
||||||
"\n query attendanceCheckQuery($courseSessionId: ID!) {\n course_session_attendance_course(id: $courseSessionId) {\n id\n attendance_user_list {\n user_id\n status\n }\n }\n }\n": types.AttendanceCheckQueryDocument,
|
"\n query attendanceCheckQuery($courseSessionId: ID!) {\n course_session_attendance_course(id: $courseSessionId) {\n id\n attendance_user_list {\n user_id\n status\n }\n }\n }\n": types.AttendanceCheckQueryDocument,
|
||||||
"\n query assignmentCompletionQuery(\n $assignmentId: ID!\n $courseSessionId: ID!\n $learningContentId: ID\n $assignmentUserId: UUID\n ) {\n assignment(id: $assignmentId) {\n assignment_type\n needs_expert_evaluation\n max_points\n content_type\n effort_required\n evaluation_description\n evaluation_document_url\n evaluation_tasks\n id\n intro_text\n performance_objectives\n slug\n tasks\n title\n translation_key\n solution_sample {\n id\n url\n }\n competence_certificate {\n ...CoursePageFields\n }\n }\n assignment_completion(\n assignment_id: $assignmentId\n course_session_id: $courseSessionId\n assignment_user_id: $assignmentUserId\n learning_content_page_id: $learningContentId\n ) {\n id\n completion_status\n submitted_at\n evaluation_submitted_at\n evaluation_user {\n id\n first_name\n last_name\n }\n assignment_user {\n avatar_url\n first_name\n last_name\n id\n }\n evaluation_points\n evaluation_max_points\n evaluation_points_deducted\n evaluation_points_deducted_reason\n evaluation_points_final\n\n evaluation_passed\n edoniq_extended_time_flag\n completion_data\n task_completion_data\n }\n }\n": types.AssignmentCompletionQueryDocument,
|
"\n query assignmentCompletionQuery(\n $assignmentId: ID!\n $courseSessionId: ID!\n $learningContentId: ID\n $assignmentUserId: UUID\n ) {\n assignment(id: $assignmentId) {\n assignment_type\n needs_expert_evaluation\n max_points\n content_type\n effort_required\n evaluation_description\n evaluation_document_url\n evaluation_tasks\n id\n intro_text\n performance_objectives\n slug\n tasks\n title\n translation_key\n solution_sample {\n id\n url\n }\n competence_certificate {\n ...CoursePageFields\n }\n }\n assignment_completion(\n assignment_id: $assignmentId\n course_session_id: $courseSessionId\n assignment_user_id: $assignmentUserId\n learning_content_page_id: $learningContentId\n ) {\n id\n completion_status\n submitted_at\n evaluation_submitted_at\n evaluation_user {\n id\n first_name\n last_name\n }\n assignment_user {\n avatar_url\n first_name\n last_name\n id\n }\n evaluation_points\n evaluation_max_points\n evaluation_points_deducted\n evaluation_points_deducted_reason\n evaluation_points_final\n\n evaluation_passed\n edoniq_extended_time_flag\n completion_data\n task_completion_data\n }\n }\n": types.AssignmentCompletionQueryDocument,
|
||||||
"\n query competenceCertificateQuery($courseSlug: String!, $courseSessionId: ID!) {\n competence_certificate_list(course_slug: $courseSlug) {\n ...CoursePageFields\n competence_certificates {\n ...CoursePageFields\n assignments {\n ...CoursePageFields\n assignment_type\n max_points\n competence_certificate_weight\n completions(course_session_id: $courseSessionId) {\n id\n completion_status\n submitted_at\n evaluation_points\n evaluation_points_deducted\n evaluation_points_final\n evaluation_max_points\n evaluation_passed\n course_session {\n id\n title\n }\n }\n learning_content {\n ...CoursePageFields\n circle {\n id\n title\n slug\n }\n }\n }\n }\n }\n }\n": types.CompetenceCertificateQueryDocument,
|
"\n query competenceCertificateQuery($courseSlug: String!, $courseSessionId: ID!, $userIds: [UUID!]) {\n competence_certificate_list(course_slug: $courseSlug) {\n ...CoursePageFields\n competence_certificates {\n ...CoursePageFields\n assignments {\n ...CoursePageFields\n assignment_type\n max_points\n competence_certificate_weight\n completions(course_session_id: $courseSessionId) {\n id\n completion_status\n submitted_at\n evaluation_points\n evaluation_points_deducted\n evaluation_points_final\n evaluation_max_points\n evaluation_passed\n course_session {\n id\n title\n }\n }\n learning_content {\n ...CoursePageFields\n circle {\n id\n title\n slug\n }\n }\n }\n }\n }\n }\n": types.CompetenceCertificateQueryDocument,
|
||||||
"\n query competenceCertificateForUserQuery(\n $courseSlug: String!\n $courseSessionId: ID!\n $userIds: [UUID!]!\n ) {\n competence_certificate_list(course_slug: $courseSlug, user_ids: $userIds) {\n ...CoursePageFields\n competence_certificates {\n ...CoursePageFields\n assignments {\n ...CoursePageFields\n assignment_type\n max_points\n competence_certificate_weight\n completions(course_session_id: $courseSessionId) {\n id\n completion_status\n submitted_at\n evaluation_points\n evaluation_points_final\n evaluation_points_deducted\n evaluation_max_points\n evaluation_passed\n evaluation_percent\n assignment_user {\n id\n }\n course_session {\n id\n title\n }\n }\n learning_content {\n ...CoursePageFields\n circle {\n id\n title\n slug\n }\n }\n }\n }\n }\n }\n": types.CompetenceCertificateForUserQueryDocument,
|
"\n query competenceCertificateForUserQuery(\n $courseSlug: String!\n $courseSessionId: ID!\n $userIds: [UUID!]!\n ) {\n competence_certificate_list(course_slug: $courseSlug, user_ids: $userIds) {\n ...CoursePageFields\n competence_certificates {\n ...CoursePageFields\n assignments {\n ...CoursePageFields\n assignment_type\n max_points\n competence_certificate_weight\n completions(course_session_id: $courseSessionId) {\n id\n completion_status\n submitted_at\n evaluation_points\n evaluation_points_final\n evaluation_points_deducted\n evaluation_max_points\n evaluation_passed\n evaluation_percent\n assignment_user {\n id\n }\n course_session {\n id\n title\n }\n }\n learning_content {\n ...CoursePageFields\n circle {\n id\n title\n slug\n }\n }\n }\n }\n }\n }\n": types.CompetenceCertificateForUserQueryDocument,
|
||||||
"\n query courseSessionDetail($courseSessionId: ID!) {\n course_session(id: $courseSessionId) {\n id\n title\n course {\n id\n title\n slug\n configuration {\n id\n enable_circle_documents\n enable_learning_mentor\n enable_competence_certificates\n }\n }\n users {\n id\n user_id\n first_name\n last_name\n email\n avatar_url\n role\n circles {\n id\n title\n slug\n }\n optional_attendance\n }\n attendance_courses {\n id\n location\n trainer\n due_date {\n id\n start\n end\n }\n learning_content_id\n learning_content {\n id\n title\n circle {\n id\n title\n slug\n }\n }\n }\n assignments {\n id\n submission_deadline {\n id\n start\n }\n evaluation_deadline {\n id\n start\n }\n learning_content {\n id\n title\n content_assignment {\n id\n title\n assignment_type\n }\n }\n }\n edoniq_tests {\n id\n deadline {\n id\n start\n end\n }\n learning_content {\n id\n title\n content_assignment {\n id\n title\n assignment_type\n }\n }\n }\n }\n }\n": types.CourseSessionDetailDocument,
|
"\n query courseSessionDetail($courseSessionId: ID!) {\n course_session(id: $courseSessionId) {\n id\n title\n course {\n id\n title\n slug\n configuration {\n id\n enable_circle_documents\n enable_learning_mentor\n enable_competence_certificates\n }\n }\n users {\n id\n user_id\n first_name\n last_name\n email\n avatar_url\n role\n circles {\n id\n title\n slug\n }\n optional_attendance\n }\n attendance_courses {\n id\n location\n trainer\n due_date {\n id\n start\n end\n }\n learning_content_id\n learning_content {\n id\n title\n circle {\n id\n title\n slug\n }\n }\n }\n assignments {\n id\n submission_deadline {\n id\n start\n }\n evaluation_deadline {\n id\n start\n }\n learning_content {\n id\n title\n content_assignment {\n id\n title\n assignment_type\n }\n }\n }\n edoniq_tests {\n id\n deadline {\n id\n start\n end\n }\n learning_content {\n id\n title\n content_assignment {\n id\n title\n assignment_type\n }\n }\n }\n }\n }\n": types.CourseSessionDetailDocument,
|
||||||
"\n query courseQuery($slug: String!, $user: String) {\n course(slug: $slug) {\n id\n title\n slug\n category_name\n profiles\n course_session_users(id: $user) {\n id\n __typename\n chosen_profile\n course_session {\n id\n }\n }\n configuration {\n id\n enable_circle_documents\n enable_learning_mentor\n enable_competence_certificates\n is_uk\n is_vv\n }\n action_competences {\n competence_id\n ...CoursePageFields\n performance_criteria {\n competence_id\n learning_unit {\n id\n slug\n evaluate_url\n }\n ...CoursePageFields\n }\n }\n learning_path {\n ...CoursePageFields\n topics {\n is_visible\n ...CoursePageFields\n circles {\n description\n goals\n profiles\n is_base_circle\n ...CoursePageFields\n learning_sequences {\n icon\n ...CoursePageFields\n learning_units {\n evaluate_url\n ...CoursePageFields\n performance_criteria {\n ...CoursePageFields\n }\n learning_contents {\n can_user_self_toggle_course_completion\n content_url\n minutes\n description\n ...CoursePageFields\n ... on LearningContentAssignmentObjectType {\n assignment_type\n content_assignment {\n id\n assignment_type\n }\n competence_certificate {\n ...CoursePageFields\n }\n }\n ... on LearningContentEdoniqTestObjectType {\n checkbox_text\n has_extended_time_test\n content_assignment {\n id\n assignment_type\n }\n competence_certificate {\n ...CoursePageFields\n }\n }\n ... on LearningContentRichTextObjectType {\n text\n }\n }\n }\n }\n }\n }\n }\n }\n }\n": types.CourseQueryDocument,
|
"\n query courseQuery($slug: String!, $user: String) {\n course(slug: $slug) {\n id\n title\n slug\n category_name\n profiles\n course_session_users(id: $user) {\n id\n __typename\n chosen_profile\n course_session {\n id\n }\n }\n configuration {\n id\n enable_circle_documents\n enable_learning_mentor\n enable_competence_certificates\n is_uk\n is_vv\n }\n action_competences {\n competence_id\n ...CoursePageFields\n performance_criteria {\n competence_id\n learning_unit {\n id\n slug\n evaluate_url\n }\n ...CoursePageFields\n }\n }\n learning_path {\n ...CoursePageFields\n topics {\n is_visible\n ...CoursePageFields\n circles {\n description\n goals\n profiles\n is_base_circle\n ...CoursePageFields\n learning_sequences {\n icon\n ...CoursePageFields\n learning_units {\n evaluate_url\n ...CoursePageFields\n performance_criteria {\n ...CoursePageFields\n }\n learning_contents {\n can_user_self_toggle_course_completion\n content_url\n minutes\n description\n ...CoursePageFields\n ... on LearningContentAssignmentObjectType {\n assignment_type\n content_assignment {\n id\n assignment_type\n }\n competence_certificate {\n ...CoursePageFields\n }\n }\n ... on LearningContentEdoniqTestObjectType {\n checkbox_text\n has_extended_time_test\n content_assignment {\n id\n assignment_type\n }\n competence_certificate {\n ...CoursePageFields\n }\n }\n ... on LearningContentRichTextObjectType {\n text\n }\n }\n }\n }\n }\n }\n }\n }\n }\n": types.CourseQueryDocument,
|
||||||
|
|
@ -72,7 +72,7 @@ export function graphql(source: "\n query assignmentCompletionQuery(\n $assi
|
||||||
/**
|
/**
|
||||||
* The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients.
|
* The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients.
|
||||||
*/
|
*/
|
||||||
export function graphql(source: "\n query competenceCertificateQuery($courseSlug: String!, $courseSessionId: ID!) {\n competence_certificate_list(course_slug: $courseSlug) {\n ...CoursePageFields\n competence_certificates {\n ...CoursePageFields\n assignments {\n ...CoursePageFields\n assignment_type\n max_points\n competence_certificate_weight\n completions(course_session_id: $courseSessionId) {\n id\n completion_status\n submitted_at\n evaluation_points\n evaluation_points_deducted\n evaluation_points_final\n evaluation_max_points\n evaluation_passed\n course_session {\n id\n title\n }\n }\n learning_content {\n ...CoursePageFields\n circle {\n id\n title\n slug\n }\n }\n }\n }\n }\n }\n"): (typeof documents)["\n query competenceCertificateQuery($courseSlug: String!, $courseSessionId: ID!) {\n competence_certificate_list(course_slug: $courseSlug) {\n ...CoursePageFields\n competence_certificates {\n ...CoursePageFields\n assignments {\n ...CoursePageFields\n assignment_type\n max_points\n competence_certificate_weight\n completions(course_session_id: $courseSessionId) {\n id\n completion_status\n submitted_at\n evaluation_points\n evaluation_points_deducted\n evaluation_points_final\n evaluation_max_points\n evaluation_passed\n course_session {\n id\n title\n }\n }\n learning_content {\n ...CoursePageFields\n circle {\n id\n title\n slug\n }\n }\n }\n }\n }\n }\n"];
|
export function graphql(source: "\n query competenceCertificateQuery($courseSlug: String!, $courseSessionId: ID!, $userIds: [UUID!]) {\n competence_certificate_list(course_slug: $courseSlug) {\n ...CoursePageFields\n competence_certificates {\n ...CoursePageFields\n assignments {\n ...CoursePageFields\n assignment_type\n max_points\n competence_certificate_weight\n completions(course_session_id: $courseSessionId) {\n id\n completion_status\n submitted_at\n evaluation_points\n evaluation_points_deducted\n evaluation_points_final\n evaluation_max_points\n evaluation_passed\n course_session {\n id\n title\n }\n }\n learning_content {\n ...CoursePageFields\n circle {\n id\n title\n slug\n }\n }\n }\n }\n }\n }\n"): (typeof documents)["\n query competenceCertificateQuery($courseSlug: String!, $courseSessionId: ID!, $userIds: [UUID!]) {\n competence_certificate_list(course_slug: $courseSlug) {\n ...CoursePageFields\n competence_certificates {\n ...CoursePageFields\n assignments {\n ...CoursePageFields\n assignment_type\n max_points\n competence_certificate_weight\n completions(course_session_id: $courseSessionId) {\n id\n completion_status\n submitted_at\n evaluation_points\n evaluation_points_deducted\n evaluation_points_final\n evaluation_max_points\n evaluation_passed\n course_session {\n id\n title\n }\n }\n learning_content {\n ...CoursePageFields\n circle {\n id\n title\n slug\n }\n }\n }\n }\n }\n }\n"];
|
||||||
/**
|
/**
|
||||||
* The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients.
|
* The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients.
|
||||||
*/
|
*/
|
||||||
|
|
|
||||||
File diff suppressed because one or more lines are too long
|
|
@ -1,4 +1,4 @@
|
||||||
import {graphql} from "@/gql";
|
import { graphql } from "@/gql";
|
||||||
|
|
||||||
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
||||||
const CoursePageFragment = graphql(`
|
const CoursePageFragment = graphql(`
|
||||||
|
|
@ -90,7 +90,11 @@ export const ASSIGNMENT_COMPLETION_QUERY = graphql(`
|
||||||
`);
|
`);
|
||||||
|
|
||||||
export const COMPETENCE_NAVI_CERTIFICATE_QUERY = graphql(`
|
export const COMPETENCE_NAVI_CERTIFICATE_QUERY = graphql(`
|
||||||
query competenceCertificateQuery($courseSlug: String!, $courseSessionId: ID!) {
|
query competenceCertificateQuery(
|
||||||
|
$courseSlug: String!
|
||||||
|
$courseSessionId: ID!
|
||||||
|
$userIds: [UUID!]
|
||||||
|
) {
|
||||||
competence_certificate_list(course_slug: $courseSlug) {
|
competence_certificate_list(course_slug: $courseSlug) {
|
||||||
...CoursePageFields
|
...CoursePageFields
|
||||||
competence_certificates {
|
competence_certificates {
|
||||||
|
|
|
||||||
|
|
@ -28,8 +28,8 @@ const getIconName = () => {
|
||||||
};
|
};
|
||||||
|
|
||||||
const openInCircle = (assignment: CompetenceCertificateAssignment) => {
|
const openInCircle = (assignment: CompetenceCertificateAssignment) => {
|
||||||
if (assignment.completion?.course_session !== currentCourseSession.value) {
|
if (assignment.completions[0]?.course_session !== currentCourseSession.value) {
|
||||||
switchCourseSessionById(assignment.completion!.course_session.id);
|
switchCourseSessionById(assignment.completions[0]!.course_session.id);
|
||||||
}
|
}
|
||||||
router.push(assignment.frontend_url);
|
router.push(assignment.frontend_url);
|
||||||
};
|
};
|
||||||
|
|
@ -48,7 +48,7 @@ const openInCircle = (assignment: CompetenceCertificateAssignment) => {
|
||||||
v-if="showCourseSession"
|
v-if="showCourseSession"
|
||||||
:data-cy="`assignment-${assignment.slug}-course-session`"
|
:data-cy="`assignment-${assignment.slug}-course-session`"
|
||||||
>
|
>
|
||||||
{{ assignment?.completion?.course_session.title }}
|
{{ assignment?.completions[0]?.course_session.title }}
|
||||||
</p>
|
</p>
|
||||||
<p class="text-gray-800">
|
<p class="text-gray-800">
|
||||||
<button
|
<button
|
||||||
|
|
|
||||||
|
|
@ -57,7 +57,8 @@ const showCourseSession = computed(() => {
|
||||||
const currentCourseSession = useCurrentCourseSession();
|
const currentCourseSession = useCurrentCourseSession();
|
||||||
return props.competenceCertificate.assignments.some((assignment) => {
|
return props.competenceCertificate.assignments.some((assignment) => {
|
||||||
return (
|
return (
|
||||||
assignment.completion?.course_session.title !== currentCourseSession.value.title
|
assignment.completions[0]?.course_session.title !==
|
||||||
|
currentCourseSession.value.title
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
|
||||||
|
|
@ -1,9 +1,8 @@
|
||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
import log from "loglevel";
|
import log from "loglevel";
|
||||||
import {computed} from "vue";
|
import { computed } from "vue";
|
||||||
import type {CompetenceCertificate} from "@/types";
|
import { useAllCompetenceCertificates } from "@/composables";
|
||||||
import {useAllCompetenceCertificates} from "@/composables";
|
import { getPreviousRoute } from "@/router/history";
|
||||||
import {getPreviousRoute} from "@/router/history";
|
|
||||||
import CompetenceCertificateComponent from "@/pages/competence/CompetenceCertificateComponent.vue";
|
import CompetenceCertificateComponent from "@/pages/competence/CompetenceCertificateComponent.vue";
|
||||||
|
|
||||||
const props = defineProps<{
|
const props = defineProps<{
|
||||||
|
|
@ -14,15 +13,7 @@ const props = defineProps<{
|
||||||
|
|
||||||
log.debug("CompetenceCertificateDetailPage setup", props);
|
log.debug("CompetenceCertificateDetailPage setup", props);
|
||||||
|
|
||||||
|
const { competenceCertificates } = useAllCompetenceCertificates(
|
||||||
const competenceCertificates = computed(() => {
|
|
||||||
return (
|
|
||||||
(certificatesQuery.data.value?.competence_certificate_list
|
|
||||||
?.competence_certificates as unknown as CompetenceCertificate[]) ?? []
|
|
||||||
);
|
|
||||||
});
|
|
||||||
|
|
||||||
const {competenceCertificates} = useAllCompetenceCertificates(
|
|
||||||
props.userId,
|
props.userId,
|
||||||
props.courseSlug
|
props.courseSlug
|
||||||
);
|
);
|
||||||
|
|
|
||||||
|
|
@ -1,10 +1,13 @@
|
||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
import log from "loglevel";
|
import log from "loglevel";
|
||||||
import {computed, onMounted} from "vue";
|
import { computed, onMounted } from "vue";
|
||||||
import {useAllCompetenceCertificates} from "@/composables";
|
import { useAllCompetenceCertificates } from "@/composables";
|
||||||
import CompetenceCertificateComponent from "@/pages/competence/CompetenceCertificateComponent.vue";
|
import CompetenceCertificateComponent from "@/pages/competence/CompetenceCertificateComponent.vue";
|
||||||
import {assignmentsUserPoints, calcCompetencesTotalGrade,} from "@/pages/competence/utils";
|
import {
|
||||||
import {useRoute} from "vue-router";
|
assignmentsUserPoints,
|
||||||
|
calcCompetencesTotalGrade,
|
||||||
|
} from "@/pages/competence/utils";
|
||||||
|
import { useRoute } from "vue-router";
|
||||||
|
|
||||||
const props = defineProps<{
|
const props = defineProps<{
|
||||||
courseSlug: string;
|
courseSlug: string;
|
||||||
|
|
@ -15,8 +18,7 @@ log.debug("CompetenceCertificateListPage setup", props);
|
||||||
|
|
||||||
const route = useRoute();
|
const route = useRoute();
|
||||||
|
|
||||||
|
const { competenceCertificates } = useAllCompetenceCertificates(
|
||||||
const {competenceCertificates} = useAllCompetenceCertificates(
|
|
||||||
props.userId,
|
props.userId,
|
||||||
props.courseSlug
|
props.courseSlug
|
||||||
);
|
);
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
import log from "loglevel";
|
import log from "loglevel";
|
||||||
import {computed} from "vue";
|
import { computed } from "vue";
|
||||||
import {useAllCompetenceCertificates, useCurrentCourseSession} from "@/composables";
|
import { useAllCompetenceCertificates, useCurrentCourseSession } from "@/composables";
|
||||||
import {
|
import {
|
||||||
assignmentsUserPoints,
|
assignmentsUserPoints,
|
||||||
calcCompetenceCertificateGrade,
|
calcCompetenceCertificateGrade,
|
||||||
|
|
@ -9,10 +9,9 @@ import {
|
||||||
competenceCertificateProgressStatusCount,
|
competenceCertificateProgressStatusCount,
|
||||||
} from "@/pages/competence/utils";
|
} from "@/pages/competence/utils";
|
||||||
import ItProgress from "@/components/ui/ItProgress.vue";
|
import ItProgress from "@/components/ui/ItProgress.vue";
|
||||||
import SelfEvaluationAndFeedbackOverview
|
import SelfEvaluationAndFeedbackOverview from "@/components/selfEvaluationFeedback/SelfEvaluationAndFeedbackOverview.vue";
|
||||||
from "@/components/selfEvaluationFeedback/SelfEvaluationAndFeedbackOverview.vue";
|
import { useUserStore } from "@/stores/user";
|
||||||
import {useUserStore} from "@/stores/user";
|
import { useRouter } from "vue-router";
|
||||||
import {useRouter} from "vue-router";
|
|
||||||
|
|
||||||
const props = defineProps<{
|
const props = defineProps<{
|
||||||
courseSlug: string;
|
courseSlug: string;
|
||||||
|
|
@ -22,16 +21,7 @@ log.debug("CompetenceIndexPage setup", props);
|
||||||
|
|
||||||
const user = useUserStore();
|
const user = useUserStore();
|
||||||
|
|
||||||
const certificatesQuery = useQuery({
|
const { competenceCertificates, isLoaded } = useAllCompetenceCertificates(
|
||||||
query: COMPETENCE_NAVI_CERTIFICATE_QUERY,
|
|
||||||
variables: {
|
|
||||||
courseSlug: props.courseSlug,
|
|
||||||
courseSessionId: courseSession.value.id,
|
|
||||||
userIds: user.id,
|
|
||||||
},
|
|
||||||
});
|
|
||||||
|
|
||||||
const {competenceCertificates, isLoaded} = useAllCompetenceCertificates(
|
|
||||||
user.id,
|
user.id,
|
||||||
props.courseSlug
|
props.courseSlug
|
||||||
);
|
);
|
||||||
|
|
|
||||||
|
|
@ -120,10 +120,10 @@ export function mergeCompetenceCertificates(
|
||||||
if (!existingAssignment) {
|
if (!existingAssignment) {
|
||||||
mergedCertificate.assignments.push(assignment);
|
mergedCertificate.assignments.push(assignment);
|
||||||
} else if (
|
} else if (
|
||||||
assignment.completion != null &&
|
assignment.completions[0] != null &&
|
||||||
(existingAssignment.completion == null ||
|
(existingAssignment.completions[0] == null ||
|
||||||
dayjs(existingAssignment.completion.evaluation_submitted_at).isBefore(
|
dayjs(existingAssignment.completions[0].evaluation_submitted_at).isBefore(
|
||||||
assignment.completion.evaluation_submitted_at
|
assignment.completions[0].evaluation_submitted_at
|
||||||
))
|
))
|
||||||
) {
|
) {
|
||||||
mergedCertificate.assignments.splice(
|
mergedCertificate.assignments.splice(
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue