diff --git a/.gitignore b/.gitignore index 0daeaac9..5eb128d8 100644 --- a/.gitignore +++ b/.gitignore @@ -284,4 +284,4 @@ git-crypt-encrypted-files-check.txt /server/vbv_lernwelt/static/storybook /server/vbv_lernwelt/templates/vue/index.html /server/vbv_lernwelt/media -/client/src/gql/minifiedSchema.json +/client/src/gql/dist/minifiedSchema.json diff --git a/bitbucket-pipelines.yml b/bitbucket-pipelines.yml index 7f27808e..bc228bf0 100644 --- a/bitbucket-pipelines.yml +++ b/bitbucket-pipelines.yml @@ -77,6 +77,7 @@ js-tests: &js-tests - cd client - pwd - npm install + - npm run codegen - npm test js-linting: &js-linting diff --git a/client/codegen.ts b/client/codegen.ts index 4956f075..52694c79 100644 --- a/client/codegen.ts +++ b/client/codegen.ts @@ -11,7 +11,13 @@ const config: CodegenConfig = { "./src/gql/": { preset: "client", config: { + // avoidOptionals: true, useTypeImports: true, + scalars: { + ID: "string", + UUID: "string", + DateTime: "string", + }, }, plugins: [], }, diff --git a/client/minimizeGraphqlSchema.mjs b/client/minimizeGraphqlSchema.mjs index b4f5f7e7..d363c02a 100644 --- a/client/minimizeGraphqlSchema.mjs +++ b/client/minimizeGraphqlSchema.mjs @@ -8,4 +8,4 @@ const schema = readFileSync("./src/gql/schema.graphql", "utf-8"); const minifiedSchema = minifyIntrospectionQuery(getIntrospectedSchema(schema)); // Write the minified schema to a new file -writeFileSync("./src/gql/minifiedSchema.json", JSON.stringify(minifiedSchema)); +writeFileSync("./src/gql/dist/minifiedSchema.json", JSON.stringify(minifiedSchema)); diff --git a/client/package.json b/client/package.json index 60ed3340..69d86730 100644 --- a/client/package.json +++ b/client/package.json @@ -16,7 +16,8 @@ "storybook": "storybook dev -p 6006", "tailwind": "tailwindcss -i tailwind.css -o ../server/vbv_lernwelt/static/css/tailwind.css --watch", "test": "vitest run", - "typecheck": "npm run codegen && vue-tsc --noEmit -p tsconfig.app.json --composite false" + "typecheck": "npm run codegen && vue-tsc --noEmit -p tsconfig.app.json --composite false", + "typecheck-only": "vue-tsc --noEmit -p tsconfig.app.json --composite false" }, "dependencies": { "@headlessui/tailwindcss": "^0.1.3", diff --git a/client/src/components/dueDates/dueDatesUtils.ts b/client/src/components/dueDates/dueDatesUtils.ts index 850377f8..b2d0decd 100644 --- a/client/src/components/dueDates/dueDatesUtils.ts +++ b/client/src/components/dueDates/dueDatesUtils.ts @@ -3,7 +3,7 @@ import dayjs from "dayjs"; import LocalizedFormat from "dayjs/plugin/localizedFormat"; import i18next from "i18next"; -export const formatDueDate = (start: string, end?: string) => { +export const formatDueDate = (start: string, end?: string | null) => { dayjs.extend(LocalizedFormat); const startDayjs = dayjs(start); const startDateString = getDateString(startDayjs); diff --git a/client/src/components/feedback/feedbackSummary.vue b/client/src/components/feedback/feedbackSummary.vue deleted file mode 100644 index bccfa7bb..00000000 --- a/client/src/components/feedback/feedbackSummary.vue +++ /dev/null @@ -1,101 +0,0 @@ - - - diff --git a/client/src/components/learningPath/LearningPathDiagram.vue b/client/src/components/learningPath/LearningPathDiagram.vue index 3ba82e82..b939cab2 100644 --- a/client/src/components/learningPath/LearningPathDiagram.vue +++ b/client/src/components/learningPath/LearningPathDiagram.vue @@ -1,30 +1,38 @@ - - - diff --git a/client/src/composables.ts b/client/src/composables.ts index e2a4d99c..295718f3 100644 --- a/client/src/composables.ts +++ b/client/src/composables.ts @@ -1,9 +1,27 @@ +import { graphqlClient } from "@/graphql/client"; +import { COURSE_QUERY, COURSE_SESSION_DETAIL_QUERY } from "@/graphql/queries"; +import { + circleFlatChildren, + circleFlatLearningContents, + circleFlatLearningUnits, +} from "@/services/circle"; +import { useCompletionStore } from "@/stores/completion"; import { useCourseSessionsStore } from "@/stores/courseSessions"; -import type { CourseSession, CourseSessionDetail } from "@/types"; -import { useQuery } from "@urql/vue"; - -import { COURSE_SESSION_DETAIL_QUERY } from "@/graphql/queries"; import { useUserStore } from "@/stores/user"; +import type { + ActionCompetence, + Course, + CourseCompletion, + CourseCompletionStatus, + CourseSession, + CourseSessionDetail, + LearningContentWithCompletion, + LearningPathType, + LearningUnitPerformanceCriteria, + PerformanceCriteria, +} from "@/types"; +import { useQuery } from "@urql/vue"; +import orderBy from "lodash/orderBy"; import log from "loglevel"; import type { ComputedRef } from "vue"; import { computed, ref, watchEffect } from "vue"; @@ -56,19 +74,19 @@ export function useCourseSessionDetailQuery(courSessionId?: string) { function findAssignment(learningContentId: string) { return (courseSessionDetail.value?.assignments ?? []).find((a) => { - return a.learning_content.id === learningContentId; + return a.learning_content?.id === learningContentId; }); } function findEdoniqTest(learningContentId: string) { return (courseSessionDetail.value?.edoniq_tests ?? []).find((e) => { - return e.learning_content.id === learningContentId; + return e.learning_content?.id === learningContentId; }); } function findAttendanceCourse(learningContentId: string) { return (courseSessionDetail.value?.attendance_courses ?? []).find((e) => { - return e.learning_content.id === learningContentId; + return e.learning_content?.id === learningContentId; }); } @@ -123,3 +141,273 @@ export function useCourseSessionDetailQuery(courSessionId?: string) { filterCircleExperts, }; } + +export function flatCircles(learningPath: LearningPathType) { + return learningPath.topics.flatMap((t) => t.circles); +} + +export function useCourseData(courseSlug: string) { + const learningPath = ref(undefined); + const actionCompetences = ref([]); + const course = ref(undefined); + + // urql.useQuery is not meant to be used programmatically, so we use graphqlClient.query instead + const resultPromise = graphqlClient + .query(COURSE_QUERY, { slug: `${courseSlug}` }) + .toPromise(); + + resultPromise.then((result) => { + if (result.error) { + log.error(result.error); + } + + course.value = result.data?.course as Course; + actionCompetences.value = result.data?.course + ?.action_competences as ActionCompetence[]; + learningPath.value = result.data?.course?.learning_path as LearningPathType; + + // attach circle information to learning contents + if (learningPath.value) { + flatCircles(learningPath.value).forEach((circle) => { + circle.learning_sequences.forEach((ls, lsIndex) => { + const circleData = { + id: circle.id, + slug: circle.slug, + title: circle.title, + }; + return ls.learning_units.forEach((lu, luIndex) => { + lu.circle = Object.assign({}, circleData); + lu.learning_contents.forEach((lc, lcIndex) => { + lc.circle = Object.assign({}, circleData); + lc.continueUrl = ls.frontend_url || circle.frontend_url; + lc.firstInCircle = lcIndex === 0 && luIndex === 0 && lsIndex === 0; + lc.parentLearningUnit = { + id: lu.id, + slug: lu.slug, + title: lu.title, + }; + }); + + lu.performance_criteria.forEach((luPc) => { + luPc.circle = Object.assign({}, circleData); + const pc = findPerformanceCriterion(luPc.id); + if (pc) { + pc.circle = Object.assign({}, circleData); + } + }); + }); + }); + }); + } + }); + + const circles = computed(() => { + if (learningPath.value) { + return flatCircles(learningPath.value); + } + return undefined; + }); + + function findCircle(idOrSlug: string) { + return (circles.value ?? []).find((c) => { + return c.id === idOrSlug || c.slug.endsWith(idOrSlug); + }); + } + + function findPerformanceCriterion(id: string) { + return (actionCompetences.value ?? []) + .flatMap((ac) => { + return ac.performance_criteria; + }) + .find((pc) => { + return pc.id === id; + }) as PerformanceCriteria | undefined; + } + + function findLearningContent( + learningContentIdOrSlug: string, + circleIdOrSlug?: string + ) { + let filteredCircles = circles.value ?? []; + if (circleIdOrSlug) { + filteredCircles = filteredCircles.filter((c) => { + return c.id === circleIdOrSlug || c.slug.endsWith(circleIdOrSlug); + }); + } + + return filteredCircles + .flatMap((c) => { + return circleFlatLearningContents(c); + }) + .find((lc) => { + return ( + lc.id === learningContentIdOrSlug || lc.slug.endsWith(learningContentIdOrSlug) + ); + }); + } + + function findLearningUnit(learningUnitIdOrSlug: string, circleIdOrSlug?: string) { + let filteredCircles = circles.value ?? []; + if (circleIdOrSlug) { + filteredCircles = filteredCircles.filter((c) => { + return c.id === circleIdOrSlug || c.slug.endsWith(circleIdOrSlug); + }); + } + + return filteredCircles + .flatMap((c) => { + return circleFlatLearningUnits(c); + }) + .find((lu) => { + return lu.id === learningUnitIdOrSlug || lu.slug.endsWith(learningUnitIdOrSlug); + }); + } + + const flatPerformanceCriteria = computed(() => { + return (actionCompetences.value ?? []).flatMap((ac) => { + return ac.performance_criteria; + }) as PerformanceCriteria[]; + }); + + return { + resultPromise, + course, + learningPath, + actionCompetences, + circles, + findCircle, + findLearningContent, + findLearningUnit, + flatPerformanceCriteria, + }; +} + +export function useCourseDataWithCompletion( + courseSlug?: string, + userId?: string, + courseSessionId?: string +) { + if (!courseSlug) { + courseSlug = useCurrentCourseSession().value.course.slug; + } + if (!userId) { + userId = useUserStore().id; + } + if (!courseSessionId) { + courseSessionId = useCurrentCourseSession().value.id; + } + + const courseResult = useCourseData(courseSlug); + const completionStore = useCompletionStore(); + const nextLearningContent = ref(undefined); + const loaded = ref(false); + + function updateCompletionData() { + if (userId && courseSessionId) { + return completionStore.loadCourseSessionCompletionData(courseSessionId, userId); + } + return Promise.resolve([]); + } + + function _parseCompletionData(completionData: CourseCompletion[]) { + if (courseResult.circles.value) { + courseResult.circles.value.forEach((circle) => { + circleFlatChildren(circle).forEach((lc) => { + const pageIndex = completionData.findIndex((e) => { + return e.page_id === lc.id; + }); + if (pageIndex >= 0) { + lc.completion_status = completionData[pageIndex].completion_status; + } else { + lc.completion_status = "UNKNOWN"; + } + }); + }); + } + + if (courseResult.actionCompetences.value) { + courseResult.actionCompetences.value.forEach((ac) => { + ac.performance_criteria.forEach((pc) => { + const pageIndex = completionData.findIndex((e) => { + return e.page_id === pc.id; + }); + if (pageIndex >= 0) { + pc.completion_status = completionData[pageIndex].completion_status; + } else { + pc.completion_status = "UNKNOWN"; + } + }); + }); + } + + calcNextLearningContent(completionData); + } + + function calcNextLearningContent(completionData: CourseCompletion[]) { + const flatLearningContents = (courseResult.circles.value ?? []).flatMap((c) => { + return circleFlatLearningContents(c); + }); + const lastCompleted = findLastCompletedLearningContent(completionData); + if (lastCompleted) { + const lastCompletedIndex = flatLearningContents.findIndex((lc) => { + return lc.id === lastCompleted.id; + }); + if (flatLearningContents[lastCompletedIndex + 1]) { + nextLearningContent.value = flatLearningContents[lastCompletedIndex + 1]; + } else { + nextLearningContent.value = undefined; + } + } else { + nextLearningContent.value = flatLearningContents[0]; + } + } + + function findLastCompletedLearningContent(completionData: CourseCompletion[]) { + const latestCompletion = orderBy(completionData ?? [], ["updated_at"], "desc").find( + (c: CourseCompletion) => { + return ( + c.completion_status === "SUCCESS" && + c.page_type.startsWith("learnpath.LearningContent") + ); + } + ); + if (latestCompletion) { + return courseResult.findLearningContent(latestCompletion.page_id); + } + } + + async function markCompletion( + page: LearningContentWithCompletion | LearningUnitPerformanceCriteria, + completion_status: CourseCompletionStatus = "SUCCESS" + ) { + if (userId && courseSessionId) { + page.completion_status = completion_status; + const completionData = await completionStore.markPage( + page, + userId, + courseSessionId + ); + _parseCompletionData(completionData); + } + } + + async function _start() { + return Promise.all([courseResult.resultPromise, updateCompletionData()]).then( + // eslint-disable-next-line @typescript-eslint/no-unused-vars + ([_queryResults, completionData]) => { + _parseCompletionData(completionData); + loaded.value = true; + } + ); + } + + const resultPromise = _start(); + + return { + ...courseResult, + loaded, + resultPromise, + markCompletion, + nextLearningContent, + }; +} diff --git a/client/src/constants.ts b/client/src/constants.ts index 65dee1e9..84aaefc3 100644 --- a/client/src/constants.ts +++ b/client/src/constants.ts @@ -1,9 +1,3 @@ -import type { CourseCompletionStatus } from "@/types"; - -export const COMPLETION_SUCCESS: CourseCompletionStatus = "SUCCESS"; -export const COMPLETION_FAILURE: CourseCompletionStatus = "FAIL"; -export const COMPLETION_UNKNOWN: CourseCompletionStatus = "UNKNOWN"; - export const itCheckboxDefaultIconCheckedTailwindClass = "bg-[url(/static/icons/icon-checkbox-checked.svg)] hover:bg-[url(/static/icons/icon-checkbox-checked-hover.svg)]"; diff --git a/client/src/gql/dist/.gitkeep b/client/src/gql/dist/.gitkeep new file mode 100644 index 00000000..e69de29b diff --git a/client/src/gql/gql.ts b/client/src/gql/gql.ts index d971bb1d..554937b8 100644 --- a/client/src/gql/gql.ts +++ b/client/src/gql/gql.ts @@ -18,9 +18,9 @@ const documents = { "\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 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 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 }\n assignment_user {\n id\n }\n evaluation_points\n evaluation_max_points\n evaluation_passed\n edoniq_extended_time_flag\n completion_data\n task_completion_data\n }\n }\n": types.AssignmentCompletionQueryDocument, - "\n query courseQuery($courseId: ID!) {\n course(id: $courseId) {\n id\n slug\n title\n category_name\n learning_path {\n id\n }\n }\n }\n": types.CourseQueryDocument, - "\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 completion(course_session_id: $courseSessionId) {\n id\n completion_status\n submitted_at\n evaluation_points\n evaluation_max_points\n evaluation_passed\n }\n learning_content {\n title\n id\n slug\n content_type\n frontend_url\n circle {\n ...CoursePageFields\n }\n }\n }\n }\n }\n }\n": types.CompetenceCertificateQueryDocument, + "\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 completion(course_session_id: $courseSessionId) {\n id\n completion_status\n submitted_at\n evaluation_points\n evaluation_max_points\n evaluation_passed\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 courseSessionDetail($courseSessionId: ID!) {\n course_session(id: $courseSessionId) {\n id\n title\n course {\n id\n title\n slug\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 }\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!) {\n course(slug: $slug) {\n id\n title\n slug\n category_name\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 ...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 }\n competence_certificate {\n ...CoursePageFields\n }\n }\n ... on LearningContentEdoniqTestObjectType {\n checkbox_text\n has_extended_time_test\n content_assignment {\n id\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 mutation SendFeedbackMutation(\n $courseSessionId: ID!\n $learningContentId: ID!\n $data: GenericScalar!\n $submitted: Boolean\n ) {\n send_feedback(\n course_session_id: $courseSessionId\n learning_content_page_id: $learningContentId\n data: $data\n submitted: $submitted\n ) {\n feedback_response {\n id\n data\n submitted\n }\n errors {\n field\n messages\n }\n }\n }\n": types.SendFeedbackMutationDocument, }; @@ -61,15 +61,15 @@ 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. */ -export function graphql(source: "\n query courseQuery($courseId: ID!) {\n course(id: $courseId) {\n id\n slug\n title\n category_name\n learning_path {\n id\n }\n }\n }\n"): (typeof documents)["\n query courseQuery($courseId: ID!) {\n course(id: $courseId) {\n id\n slug\n title\n category_name\n learning_path {\n id\n }\n }\n }\n"]; -/** - * 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 completion(course_session_id: $courseSessionId) {\n id\n completion_status\n submitted_at\n evaluation_points\n evaluation_max_points\n evaluation_passed\n }\n learning_content {\n title\n id\n slug\n content_type\n frontend_url\n circle {\n ...CoursePageFields\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 completion(course_session_id: $courseSessionId) {\n id\n completion_status\n submitted_at\n evaluation_points\n evaluation_max_points\n evaluation_passed\n }\n learning_content {\n title\n id\n slug\n content_type\n frontend_url\n circle {\n ...CoursePageFields\n }\n }\n }\n }\n }\n }\n"]; +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 completion(course_session_id: $courseSessionId) {\n id\n completion_status\n submitted_at\n evaluation_points\n evaluation_max_points\n evaluation_passed\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 completion(course_session_id: $courseSessionId) {\n id\n completion_status\n submitted_at\n evaluation_points\n evaluation_max_points\n evaluation_passed\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. */ export function graphql(source: "\n query courseSessionDetail($courseSessionId: ID!) {\n course_session(id: $courseSessionId) {\n id\n title\n course {\n id\n title\n slug\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 }\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"): (typeof documents)["\n query courseSessionDetail($courseSessionId: ID!) {\n course_session(id: $courseSessionId) {\n id\n title\n course {\n id\n title\n slug\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 }\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"]; +/** + * 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 courseQuery($slug: String!) {\n course(slug: $slug) {\n id\n title\n slug\n category_name\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 ...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 }\n competence_certificate {\n ...CoursePageFields\n }\n }\n ... on LearningContentEdoniqTestObjectType {\n checkbox_text\n has_extended_time_test\n content_assignment {\n id\n }\n competence_certificate {\n ...CoursePageFields\n }\n }\n ... on LearningContentRichTextObjectType {\n text\n }\n }\n }\n }\n }\n }\n }\n }\n }\n"): (typeof documents)["\n query courseQuery($slug: String!) {\n course(slug: $slug) {\n id\n title\n slug\n category_name\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 ...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 }\n competence_certificate {\n ...CoursePageFields\n }\n }\n ... on LearningContentEdoniqTestObjectType {\n checkbox_text\n has_extended_time_test\n content_assignment {\n id\n }\n competence_certificate {\n ...CoursePageFields\n }\n }\n ... on LearningContentRichTextObjectType {\n text\n }\n }\n }\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. */ diff --git a/client/src/gql/graphql.ts b/client/src/gql/graphql.ts index 9a81624b..d2ac2e1c 100644 --- a/client/src/gql/graphql.ts +++ b/client/src/gql/graphql.ts @@ -25,7 +25,7 @@ export type Scalars = { * value as specified by * [iso8601](https://en.wikipedia.org/wiki/ISO_8601). */ - DateTime: { input: any; output: any; } + DateTime: { input: string; output: string; } /** * The `GenericScalar` scalar type represents a generic * GraphQL scalar value that could be: @@ -44,7 +44,21 @@ export type Scalars = { * Leverages the internal Python implementation of UUID (uuid.UUID) to provide native UUID objects * in fields, resolvers and input. */ - UUID: { input: any; output: any; } + UUID: { input: string; output: string; } +}; + +export type ActionCompetenceObjectType = CoursePageInterface & { + __typename?: 'ActionCompetenceObjectType'; + competence_id: Scalars['String']['output']; + content_type: Scalars['String']['output']; + course?: Maybe; + frontend_url: Scalars['String']['output']; + id: Scalars['ID']['output']; + live: Scalars['Boolean']['output']; + performance_criteria: Array; + slug: Scalars['String']['output']; + title: Scalars['String']['output']; + translation_key: Scalars['String']['output']; }; /** An enumeration. */ @@ -80,7 +94,7 @@ export type AssignmentCompletionObjectType = { __typename?: 'AssignmentCompletionObjectType'; additional_json_data: Scalars['JSONString']['output']; assignment: AssignmentObjectType; - assignment_user: UserType; + assignment_user: UserObjectType; completion_data?: Maybe; completion_status: AssignmentAssignmentCompletionCompletionStatusChoices; course_session: CourseSessionObjectType; @@ -90,7 +104,7 @@ export type AssignmentCompletionObjectType = { evaluation_passed?: Maybe; evaluation_points?: Maybe; evaluation_submitted_at?: Maybe; - evaluation_user?: Maybe; + evaluation_user?: Maybe; id: Scalars['UUID']['output']; learning_content_page_id?: Maybe; submitted_at?: Maybe; @@ -108,10 +122,9 @@ export type AssignmentCompletionStatus = export type AssignmentObjectType = CoursePageInterface & { __typename?: 'AssignmentObjectType'; assignment_type: AssignmentAssignmentAssignmentTypeChoices; - circle?: Maybe; competence_certificate?: Maybe; completion?: Maybe; - content_type?: Maybe; + content_type: Scalars['String']['output']; course?: Maybe; /** Zeitaufwand als Text */ effort_required: Scalars['String']['output']; @@ -120,20 +133,20 @@ export type AssignmentObjectType = CoursePageInterface & { /** URL zum Beurteilungsinstrument */ evaluation_document_url: Scalars['String']['output']; evaluation_tasks?: Maybe; - frontend_url?: Maybe; - id?: Maybe; + frontend_url: Scalars['String']['output']; + id: Scalars['ID']['output']; /** Erläuterung der Ausgangslage */ intro_text: Scalars['String']['output']; learning_content?: Maybe; - live?: Maybe; + live: Scalars['Boolean']['output']; max_points?: Maybe; /** Muss der Auftrag durch eine Expertin oder einen Experten beurteilt werden? */ needs_expert_evaluation: Scalars['Boolean']['output']; performance_objectives?: Maybe; - slug?: Maybe; + slug: Scalars['String']['output']; tasks?: Maybe; - title?: Maybe; - translation_key?: Maybe; + title: Scalars['String']['output']; + translation_key: Scalars['String']['output']; }; @@ -167,80 +180,52 @@ export type AttendanceUserStatus = | 'ABSENT' | 'PRESENT'; -export type CircleDocumentObjectType = { - __typename?: 'CircleDocumentObjectType'; - course_session: CourseSessionObjectType; - file_name?: Maybe; - id: Scalars['UUID']['output']; - learning_sequence: LearningSequenceObjectType; - name: Scalars['String']['output']; - url?: Maybe; +export type CircleLightObjectType = { + __typename?: 'CircleLightObjectType'; + id: Scalars['ID']['output']; + slug: Scalars['String']['output']; + title: Scalars['String']['output']; }; export type CircleObjectType = CoursePageInterface & { __typename?: 'CircleObjectType'; - circle?: Maybe; - content_type?: Maybe; + content_type: Scalars['String']['output']; course?: Maybe; description: Scalars['String']['output']; - frontend_url?: Maybe; + frontend_url: Scalars['String']['output']; goals: Scalars['String']['output']; - id?: Maybe; - learning_sequences?: Maybe>>; - live?: Maybe; - slug?: Maybe; - title?: Maybe; - translation_key?: Maybe; + id: Scalars['ID']['output']; + learning_sequences: Array; + live: Scalars['Boolean']['output']; + slug: Scalars['String']['output']; + title: Scalars['String']['output']; + translation_key: Scalars['String']['output']; }; export type CompetenceCertificateListObjectType = CoursePageInterface & { __typename?: 'CompetenceCertificateListObjectType'; - circle?: Maybe; - competence_certificates?: Maybe>>; - content_type?: Maybe; + competence_certificates: Array; + content_type: Scalars['String']['output']; course?: Maybe; - depth: Scalars['Int']['output']; - draft_title: Scalars['String']['output']; - expire_at?: Maybe; - expired: Scalars['Boolean']['output']; - first_published_at?: Maybe; - frontend_url?: Maybe; - go_live_at?: Maybe; - has_unpublished_changes: Scalars['Boolean']['output']; - id?: Maybe; - last_published_at?: Maybe; - latest_revision_created_at?: Maybe; - live?: Maybe; - locked: Scalars['Boolean']['output']; - locked_at?: Maybe; - locked_by?: Maybe; - numchild: Scalars['Int']['output']; - owner?: Maybe; - path: Scalars['String']['output']; - /** Die informative Beschreibung, dargestellt in Suchmaschinen-Ergebnissen unter der Überschrift. */ - search_description: Scalars['String']['output']; - /** Der Titel der Seite, dargestellt in Suchmaschinen-Ergebnissen als die verlinkte Überschrift. */ - seo_title: Scalars['String']['output']; - /** Ob ein Link zu dieser Seite in automatisch generierten Menüs auftaucht. */ - show_in_menus: Scalars['Boolean']['output']; - slug?: Maybe; - title?: Maybe; - translation_key?: Maybe; - url_path: Scalars['String']['output']; + frontend_url: Scalars['String']['output']; + id: Scalars['ID']['output']; + live: Scalars['Boolean']['output']; + slug: Scalars['String']['output']; + title: Scalars['String']['output']; + translation_key: Scalars['String']['output']; }; export type CompetenceCertificateObjectType = CoursePageInterface & { __typename?: 'CompetenceCertificateObjectType'; - assignments?: Maybe>>; - circle?: Maybe; - content_type?: Maybe; + assignments: Array; + content_type: Scalars['String']['output']; course?: Maybe; - frontend_url?: Maybe; - id?: Maybe; - live?: Maybe; - slug?: Maybe; - title?: Maybe; - translation_key?: Maybe; + frontend_url: Scalars['String']['output']; + id: Scalars['ID']['output']; + live: Scalars['Boolean']['output']; + slug: Scalars['String']['output']; + title: Scalars['String']['output']; + translation_key: Scalars['String']['output']; }; /** An enumeration. */ @@ -252,34 +237,43 @@ export type CoreUserLanguageChoices = /** Italiano */ | 'IT'; +/** An enumeration. */ +export type CourseCourseSessionUserRoleChoices = + /** Experte/Trainer */ + | 'EXPERT' + /** Teilnehmer */ + | 'MEMBER' + /** Lernbegleitung */ + | 'TUTOR'; + export type CourseObjectType = { __typename?: 'CourseObjectType'; + action_competences: Array; category_name: Scalars['String']['output']; id: Scalars['ID']['output']; - learning_path?: Maybe; + learning_path: LearningPathObjectType; slug: Scalars['String']['output']; title: Scalars['String']['output']; }; export type CoursePageInterface = { - circle?: Maybe; - content_type?: Maybe; + content_type: Scalars['String']['output']; course?: Maybe; - frontend_url?: Maybe; - id?: Maybe; - live?: Maybe; - slug?: Maybe; - title?: Maybe; - translation_key?: Maybe; + frontend_url: Scalars['String']['output']; + id: Scalars['ID']['output']; + live: Scalars['Boolean']['output']; + slug: Scalars['String']['output']; + title: Scalars['String']['output']; + translation_key: Scalars['String']['output']; }; export type CourseSessionAssignmentObjectType = { __typename?: 'CourseSessionAssignmentObjectType'; - course_session_id?: Maybe; + course_session_id: Scalars['ID']['output']; evaluation_deadline?: Maybe; id: Scalars['ID']['output']; - learning_content?: Maybe; - learning_content_id?: Maybe; + learning_content: LearningContentAssignmentObjectType; + learning_content_id: Scalars['ID']['output']; submission_deadline?: Maybe; }; @@ -289,7 +283,7 @@ export type CourseSessionAttendanceCourseObjectType = { course_session_id?: Maybe; due_date?: Maybe; id: Scalars['ID']['output']; - learning_content?: Maybe; + learning_content: LearningContentAttendanceCourseObjectType; learning_content_id?: Maybe; location: Scalars['String']['output']; trainer: Scalars['String']['output']; @@ -297,46 +291,45 @@ export type CourseSessionAttendanceCourseObjectType = { export type CourseSessionEdoniqTestObjectType = { __typename?: 'CourseSessionEdoniqTestObjectType'; - course_session_id?: Maybe; + course_session_id: Scalars['ID']['output']; deadline?: Maybe; id: Scalars['ID']['output']; - learning_content?: Maybe; - learning_content_id?: Maybe; + learning_content: LearningContentEdoniqTestObjectType; + learning_content_id: Scalars['ID']['output']; }; export type CourseSessionObjectType = { __typename?: 'CourseSessionObjectType'; - assignments?: Maybe>>; - attendance_courses?: Maybe>>; + assignments: Array; + attendance_courses: Array; course: CourseObjectType; created_at: Scalars['DateTime']['output']; - documents?: Maybe>>; - edoniq_tests?: Maybe>>; + edoniq_tests: Array; end_date?: Maybe; id: Scalars['ID']['output']; start_date?: Maybe; title: Scalars['String']['output']; updated_at: Scalars['DateTime']['output']; - users?: Maybe>>; + users: Array; }; export type CourseSessionUserExpertCircleType = { __typename?: 'CourseSessionUserExpertCircleType'; - id?: Maybe; - slug?: Maybe; - title?: Maybe; + id: Scalars['ID']['output']; + slug: Scalars['String']['output']; + title: Scalars['String']['output']; }; export type CourseSessionUserObjectsType = { __typename?: 'CourseSessionUserObjectsType'; - avatar_url?: Maybe; - circles?: Maybe>>; - email?: Maybe; - first_name?: Maybe; + avatar_url: Scalars['String']['output']; + circles: Array; + email: Scalars['String']['output']; + first_name: Scalars['String']['output']; id: Scalars['UUID']['output']; - last_name?: Maybe; - role?: Maybe; - user_id?: Maybe; + last_name: Scalars['String']['output']; + role: CourseCourseSessionUserRoleChoices; + user_id: Scalars['UUID']['output']; }; export type DueDateObjectType = { @@ -374,247 +367,241 @@ export type FeedbackResponseObjectType = { submitted: Scalars['Boolean']['output']; }; -export type LearningContentAssignmentObjectType = LearningContentInterface & { +export type LearningContentAssignmentObjectType = CoursePageInterface & LearningContentInterface & { __typename?: 'LearningContentAssignmentObjectType'; assignment_type: LearnpathLearningContentAssignmentAssignmentTypeChoices; - circle?: Maybe; - content?: Maybe; + can_user_self_toggle_course_completion: Scalars['Boolean']['output']; + circle?: Maybe; + competence_certificate?: Maybe; content_assignment: AssignmentObjectType; - content_type?: Maybe; + content_type: Scalars['String']['output']; + content_url: Scalars['String']['output']; course?: Maybe; - description?: Maybe; - frontend_url?: Maybe; - id?: Maybe; - live?: Maybe; + description: Scalars['String']['output']; + frontend_url: Scalars['String']['output']; + id: Scalars['ID']['output']; + live: Scalars['Boolean']['output']; minutes?: Maybe; - slug?: Maybe; - title?: Maybe; - translation_key?: Maybe; + slug: Scalars['String']['output']; + title: Scalars['String']['output']; + translation_key: Scalars['String']['output']; }; -export type LearningContentAttendanceCourseObjectType = LearningContentInterface & { +export type LearningContentAttendanceCourseObjectType = CoursePageInterface & LearningContentInterface & { __typename?: 'LearningContentAttendanceCourseObjectType'; - circle?: Maybe; - content?: Maybe; - content_type?: Maybe; + can_user_self_toggle_course_completion: Scalars['Boolean']['output']; + circle?: Maybe; + content_type: Scalars['String']['output']; + content_url: Scalars['String']['output']; course?: Maybe; - description?: Maybe; - frontend_url?: Maybe; - id?: Maybe; - live?: Maybe; + description: Scalars['String']['output']; + frontend_url: Scalars['String']['output']; + id: Scalars['ID']['output']; + live: Scalars['Boolean']['output']; minutes?: Maybe; - slug?: Maybe; - title?: Maybe; - translation_key?: Maybe; + slug: Scalars['String']['output']; + title: Scalars['String']['output']; + translation_key: Scalars['String']['output']; }; -export type LearningContentDocumentListObjectType = LearningContentInterface & { +export type LearningContentDocumentListObjectType = CoursePageInterface & LearningContentInterface & { __typename?: 'LearningContentDocumentListObjectType'; - circle?: Maybe; - content?: Maybe; - content_type?: Maybe; + can_user_self_toggle_course_completion: Scalars['Boolean']['output']; + circle?: Maybe; + content_type: Scalars['String']['output']; + content_url: Scalars['String']['output']; course?: Maybe; - description?: Maybe; - frontend_url?: Maybe; - id?: Maybe; - live?: Maybe; + description: Scalars['String']['output']; + frontend_url: Scalars['String']['output']; + id: Scalars['ID']['output']; + live: Scalars['Boolean']['output']; minutes?: Maybe; - slug?: Maybe; - title?: Maybe; - translation_key?: Maybe; + slug: Scalars['String']['output']; + title: Scalars['String']['output']; + translation_key: Scalars['String']['output']; }; -export type LearningContentEdoniqTestObjectType = LearningContentInterface & { +export type LearningContentEdoniqTestObjectType = CoursePageInterface & LearningContentInterface & { __typename?: 'LearningContentEdoniqTestObjectType'; - circle?: Maybe; - content?: Maybe; - content_assignment?: Maybe; - content_type?: Maybe; + can_user_self_toggle_course_completion: Scalars['Boolean']['output']; + checkbox_text: Scalars['String']['output']; + circle?: Maybe; + competence_certificate?: Maybe; + content_assignment: AssignmentObjectType; + content_type: Scalars['String']['output']; + content_url: Scalars['String']['output']; course?: Maybe; - description?: Maybe; - frontend_url?: Maybe; - id?: Maybe; - live?: Maybe; + description: Scalars['String']['output']; + frontend_url: Scalars['String']['output']; + has_extended_time_test: Scalars['Boolean']['output']; + id: Scalars['ID']['output']; + live: Scalars['Boolean']['output']; minutes?: Maybe; - slug?: Maybe; - title?: Maybe; - translation_key?: Maybe; + slug: Scalars['String']['output']; + title: Scalars['String']['output']; + translation_key: Scalars['String']['output']; }; -export type LearningContentFeedbackObjectType = LearningContentInterface & { +export type LearningContentFeedbackObjectType = CoursePageInterface & LearningContentInterface & { __typename?: 'LearningContentFeedbackObjectType'; - circle?: Maybe; - content?: Maybe; - content_type?: Maybe; + can_user_self_toggle_course_completion: Scalars['Boolean']['output']; + circle?: Maybe; + content_type: Scalars['String']['output']; + content_url: Scalars['String']['output']; course?: Maybe; - description?: Maybe; - frontend_url?: Maybe; - id?: Maybe; - live?: Maybe; + description: Scalars['String']['output']; + frontend_url: Scalars['String']['output']; + id: Scalars['ID']['output']; + live: Scalars['Boolean']['output']; minutes?: Maybe; - slug?: Maybe; - title?: Maybe; - translation_key?: Maybe; + slug: Scalars['String']['output']; + title: Scalars['String']['output']; + translation_key: Scalars['String']['output']; }; export type LearningContentInterface = { - circle?: Maybe; - content?: Maybe; - content_type?: Maybe; + can_user_self_toggle_course_completion: Scalars['Boolean']['output']; + circle?: Maybe; + content_type: Scalars['String']['output']; + content_url: Scalars['String']['output']; course?: Maybe; - description?: Maybe; - frontend_url?: Maybe; - id?: Maybe; - live?: Maybe; + description: Scalars['String']['output']; + frontend_url: Scalars['String']['output']; + id: Scalars['ID']['output']; + live: Scalars['Boolean']['output']; minutes?: Maybe; - slug?: Maybe; - title?: Maybe; - translation_key?: Maybe; + slug: Scalars['String']['output']; + title: Scalars['String']['output']; + translation_key: Scalars['String']['output']; }; -export type LearningContentLearningModuleObjectType = LearningContentInterface & { +export type LearningContentLearningModuleObjectType = CoursePageInterface & LearningContentInterface & { __typename?: 'LearningContentLearningModuleObjectType'; - circle?: Maybe; - content?: Maybe; - content_type?: Maybe; + can_user_self_toggle_course_completion: Scalars['Boolean']['output']; + circle?: Maybe; + content_type: Scalars['String']['output']; + content_url: Scalars['String']['output']; course?: Maybe; - description?: Maybe; - frontend_url?: Maybe; - id?: Maybe; - live?: Maybe; + description: Scalars['String']['output']; + frontend_url: Scalars['String']['output']; + id: Scalars['ID']['output']; + live: Scalars['Boolean']['output']; minutes?: Maybe; - slug?: Maybe; - title?: Maybe; - translation_key?: Maybe; + slug: Scalars['String']['output']; + title: Scalars['String']['output']; + translation_key: Scalars['String']['output']; }; -export type LearningContentMediaLibraryObjectType = LearningContentInterface & { +export type LearningContentMediaLibraryObjectType = CoursePageInterface & LearningContentInterface & { __typename?: 'LearningContentMediaLibraryObjectType'; - circle?: Maybe; - content?: Maybe; - content_type?: Maybe; + can_user_self_toggle_course_completion: Scalars['Boolean']['output']; + circle?: Maybe; + content_type: Scalars['String']['output']; + content_url: Scalars['String']['output']; course?: Maybe; - description?: Maybe; - frontend_url?: Maybe; - id?: Maybe; - live?: Maybe; + description: Scalars['String']['output']; + frontend_url: Scalars['String']['output']; + id: Scalars['ID']['output']; + live: Scalars['Boolean']['output']; minutes?: Maybe; - slug?: Maybe; - title?: Maybe; - translation_key?: Maybe; + slug: Scalars['String']['output']; + title: Scalars['String']['output']; + translation_key: Scalars['String']['output']; }; -export type LearningContentPlaceholderObjectType = LearningContentInterface & { +export type LearningContentPlaceholderObjectType = CoursePageInterface & LearningContentInterface & { __typename?: 'LearningContentPlaceholderObjectType'; - circle?: Maybe; - content?: Maybe; - content_type?: Maybe; + can_user_self_toggle_course_completion: Scalars['Boolean']['output']; + circle?: Maybe; + content_type: Scalars['String']['output']; + content_url: Scalars['String']['output']; course?: Maybe; - description?: Maybe; - frontend_url?: Maybe; - id?: Maybe; - live?: Maybe; + description: Scalars['String']['output']; + frontend_url: Scalars['String']['output']; + id: Scalars['ID']['output']; + live: Scalars['Boolean']['output']; minutes?: Maybe; - slug?: Maybe; - title?: Maybe; - translation_key?: Maybe; + slug: Scalars['String']['output']; + title: Scalars['String']['output']; + translation_key: Scalars['String']['output']; }; -export type LearningContentRichTextObjectType = LearningContentInterface & { +export type LearningContentRichTextObjectType = CoursePageInterface & LearningContentInterface & { __typename?: 'LearningContentRichTextObjectType'; - circle?: Maybe; - content?: Maybe; - content_type?: Maybe; + can_user_self_toggle_course_completion: Scalars['Boolean']['output']; + circle?: Maybe; + content_type: Scalars['String']['output']; + content_url: Scalars['String']['output']; course?: Maybe; - description?: Maybe; - frontend_url?: Maybe; - id?: Maybe; - live?: Maybe; + description: Scalars['String']['output']; + frontend_url: Scalars['String']['output']; + id: Scalars['ID']['output']; + live: Scalars['Boolean']['output']; minutes?: Maybe; - slug?: Maybe; - title?: Maybe; - translation_key?: Maybe; + slug: Scalars['String']['output']; + text: Scalars['String']['output']; + title: Scalars['String']['output']; + translation_key: Scalars['String']['output']; }; -export type LearningContentVideoObjectType = LearningContentInterface & { +export type LearningContentVideoObjectType = CoursePageInterface & LearningContentInterface & { __typename?: 'LearningContentVideoObjectType'; - circle?: Maybe; - content?: Maybe; - content_type?: Maybe; + can_user_self_toggle_course_completion: Scalars['Boolean']['output']; + circle?: Maybe; + content_type: Scalars['String']['output']; + content_url: Scalars['String']['output']; course?: Maybe; - description?: Maybe; - frontend_url?: Maybe; - id?: Maybe; - live?: Maybe; + description: Scalars['String']['output']; + frontend_url: Scalars['String']['output']; + id: Scalars['ID']['output']; + live: Scalars['Boolean']['output']; minutes?: Maybe; - slug?: Maybe; - title?: Maybe; - translation_key?: Maybe; + slug: Scalars['String']['output']; + title: Scalars['String']['output']; + translation_key: Scalars['String']['output']; }; export type LearningPathObjectType = CoursePageInterface & { __typename?: 'LearningPathObjectType'; - circle?: Maybe; - content_type?: Maybe; + content_type: Scalars['String']['output']; course?: Maybe; - depth: Scalars['Int']['output']; - draft_title: Scalars['String']['output']; - expire_at?: Maybe; - expired: Scalars['Boolean']['output']; - first_published_at?: Maybe; - frontend_url?: Maybe; - go_live_at?: Maybe; - has_unpublished_changes: Scalars['Boolean']['output']; - id?: Maybe; - last_published_at?: Maybe; - latest_revision_created_at?: Maybe; - live?: Maybe; - locked: Scalars['Boolean']['output']; - locked_at?: Maybe; - locked_by?: Maybe; - numchild: Scalars['Int']['output']; - owner?: Maybe; - path: Scalars['String']['output']; - /** Die informative Beschreibung, dargestellt in Suchmaschinen-Ergebnissen unter der Überschrift. */ - search_description: Scalars['String']['output']; - /** Der Titel der Seite, dargestellt in Suchmaschinen-Ergebnissen als die verlinkte Überschrift. */ - seo_title: Scalars['String']['output']; - /** Ob ein Link zu dieser Seite in automatisch generierten Menüs auftaucht. */ - show_in_menus: Scalars['Boolean']['output']; - slug?: Maybe; - title?: Maybe; - topics?: Maybe>>; - translation_key?: Maybe; - url_path: Scalars['String']['output']; + frontend_url: Scalars['String']['output']; + id: Scalars['ID']['output']; + live: Scalars['Boolean']['output']; + slug: Scalars['String']['output']; + title: Scalars['String']['output']; + topics: Array; + translation_key: Scalars['String']['output']; }; export type LearningSequenceObjectType = CoursePageInterface & { __typename?: 'LearningSequenceObjectType'; - circle?: Maybe; - content_type?: Maybe; + content_type: Scalars['String']['output']; course?: Maybe; - frontend_url?: Maybe; + frontend_url: Scalars['String']['output']; icon: Scalars['String']['output']; - id?: Maybe; - learning_units?: Maybe>>; - live?: Maybe; - slug?: Maybe; - title?: Maybe; - translation_key?: Maybe; + id: Scalars['ID']['output']; + learning_units: Array; + live: Scalars['Boolean']['output']; + slug: Scalars['String']['output']; + title: Scalars['String']['output']; + translation_key: Scalars['String']['output']; }; export type LearningUnitObjectType = CoursePageInterface & { __typename?: 'LearningUnitObjectType'; - circle?: Maybe; - content_type?: Maybe; + content_type: Scalars['String']['output']; course?: Maybe; - frontend_url?: Maybe; - id?: Maybe; - learning_contents?: Maybe>>; - live?: Maybe; - slug?: Maybe; - title?: Maybe; - translation_key?: Maybe; + evaluate_url: Scalars['String']['output']; + frontend_url: Scalars['String']['output']; + id: Scalars['ID']['output']; + learning_contents: Array; + live: Scalars['Boolean']['output']; + performance_criteria: Array; + slug: Scalars['String']['output']; + title: Scalars['String']['output']; + title_hidden: Scalars['Boolean']['output']; + translation_key: Scalars['String']['output']; }; /** An enumeration. */ @@ -664,11 +651,24 @@ export type MutationUpsertAssignmentCompletionArgs = { learning_content_page_id?: InputMaybe; }; +export type PerformanceCriteriaObjectType = CoursePageInterface & { + __typename?: 'PerformanceCriteriaObjectType'; + competence_id: Scalars['String']['output']; + content_type: Scalars['String']['output']; + course?: Maybe; + frontend_url: Scalars['String']['output']; + id: Scalars['ID']['output']; + learning_unit?: Maybe; + live: Scalars['Boolean']['output']; + slug: Scalars['String']['output']; + title: Scalars['String']['output']; + translation_key: Scalars['String']['output']; +}; + export type Query = { __typename?: 'Query'; assignment?: Maybe; assignment_completion?: Maybe; - circle?: Maybe; competence_certificate?: Maybe; competence_certificate_list?: Maybe; course?: Maybe; @@ -702,12 +702,6 @@ export type QueryAssignmentCompletionArgs = { }; -export type QueryCircleArgs = { - id?: InputMaybe; - slug?: InputMaybe; -}; - - export type QueryCompetenceCertificateArgs = { id?: InputMaybe; slug?: InputMaybe; @@ -724,6 +718,7 @@ export type QueryCompetenceCertificateListArgs = { export type QueryCourseArgs = { id?: InputMaybe; + slug?: InputMaybe; }; @@ -754,21 +749,20 @@ export type SendFeedbackMutation = { export type TopicObjectType = CoursePageInterface & { __typename?: 'TopicObjectType'; - circle?: Maybe; - circles?: Maybe>>; - content_type?: Maybe; + circles: Array; + content_type: Scalars['String']['output']; course?: Maybe; - frontend_url?: Maybe; - id?: Maybe; + frontend_url: Scalars['String']['output']; + id: Scalars['ID']['output']; is_visible: Scalars['Boolean']['output']; - live?: Maybe; - slug?: Maybe; - title?: Maybe; - translation_key?: Maybe; + live: Scalars['Boolean']['output']; + slug: Scalars['String']['output']; + title: Scalars['String']['output']; + translation_key: Scalars['String']['output']; }; -export type UserType = { - __typename?: 'UserType'; +export type UserObjectType = { + __typename?: 'UserObjectType'; avatar_url: Scalars['String']['output']; email: Scalars['String']['output']; first_name: Scalars['String']['output']; @@ -785,7 +779,7 @@ export type AttendanceCheckMutationMutationVariables = Exact<{ }>; -export type AttendanceCheckMutationMutation = { __typename?: 'Mutation', update_course_session_attendance_course_users?: { __typename?: 'AttendanceCourseUserMutation', course_session_attendance_course?: { __typename?: 'CourseSessionAttendanceCourseObjectType', id: string, attendance_user_list?: Array<{ __typename?: 'AttendanceUserObjectType', user_id: any, first_name?: string | null, last_name?: string | null, email?: string | null, status: AttendanceUserStatus } | null> | null } | null } | null }; +export type AttendanceCheckMutationMutation = { __typename?: 'Mutation', update_course_session_attendance_course_users?: { __typename?: 'AttendanceCourseUserMutation', course_session_attendance_course?: { __typename?: 'CourseSessionAttendanceCourseObjectType', id: string, attendance_user_list?: Array<{ __typename?: 'AttendanceUserObjectType', user_id: string, first_name?: string | null, last_name?: string | null, email?: string | null, status: AttendanceUserStatus } | null> | null } | null } | null }; export type UpsertAssignmentCompletionMutationVariables = Exact<{ assignmentId: Scalars['ID']['input']; @@ -799,32 +793,56 @@ export type UpsertAssignmentCompletionMutationVariables = Exact<{ }>; -export type UpsertAssignmentCompletionMutation = { __typename?: 'Mutation', upsert_assignment_completion?: { __typename?: 'AssignmentCompletionMutation', assignment_completion?: { __typename?: 'AssignmentCompletionObjectType', id: any, completion_status: AssignmentAssignmentCompletionCompletionStatusChoices, submitted_at?: any | null, evaluation_submitted_at?: any | null, evaluation_points?: number | null, completion_data?: any | null, task_completion_data?: any | null } | null } | null }; +export type UpsertAssignmentCompletionMutation = { __typename?: 'Mutation', upsert_assignment_completion?: { __typename?: 'AssignmentCompletionMutation', assignment_completion?: { __typename?: 'AssignmentCompletionObjectType', id: string, completion_status: AssignmentAssignmentCompletionCompletionStatusChoices, submitted_at?: string | null, evaluation_submitted_at?: string | null, evaluation_points?: number | null, completion_data?: any | null, task_completion_data?: any | null } | null } | null }; -type CoursePageFieldsAssignmentObjectTypeFragment = { __typename?: 'AssignmentObjectType', title?: string | null, id?: string | null, slug?: string | null, content_type?: string | null, frontend_url?: string | null } & { ' $fragmentName'?: 'CoursePageFieldsAssignmentObjectTypeFragment' }; +type CoursePageFieldsActionCompetenceObjectTypeFragment = { __typename?: 'ActionCompetenceObjectType', title: string, id: string, slug: string, content_type: string, frontend_url: string } & { ' $fragmentName'?: 'CoursePageFieldsActionCompetenceObjectTypeFragment' }; -type CoursePageFieldsCircleObjectTypeFragment = { __typename?: 'CircleObjectType', title?: string | null, id?: string | null, slug?: string | null, content_type?: string | null, frontend_url?: string | null } & { ' $fragmentName'?: 'CoursePageFieldsCircleObjectTypeFragment' }; +type CoursePageFieldsAssignmentObjectTypeFragment = { __typename?: 'AssignmentObjectType', title: string, id: string, slug: string, content_type: string, frontend_url: string } & { ' $fragmentName'?: 'CoursePageFieldsAssignmentObjectTypeFragment' }; -type CoursePageFieldsCompetenceCertificateListObjectTypeFragment = { __typename?: 'CompetenceCertificateListObjectType', title?: string | null, id?: string | null, slug?: string | null, content_type?: string | null, frontend_url?: string | null } & { ' $fragmentName'?: 'CoursePageFieldsCompetenceCertificateListObjectTypeFragment' }; +type CoursePageFieldsCircleObjectTypeFragment = { __typename?: 'CircleObjectType', title: string, id: string, slug: string, content_type: string, frontend_url: string } & { ' $fragmentName'?: 'CoursePageFieldsCircleObjectTypeFragment' }; -type CoursePageFieldsCompetenceCertificateObjectTypeFragment = { __typename?: 'CompetenceCertificateObjectType', title?: string | null, id?: string | null, slug?: string | null, content_type?: string | null, frontend_url?: string | null } & { ' $fragmentName'?: 'CoursePageFieldsCompetenceCertificateObjectTypeFragment' }; +type CoursePageFieldsCompetenceCertificateListObjectTypeFragment = { __typename?: 'CompetenceCertificateListObjectType', title: string, id: string, slug: string, content_type: string, frontend_url: string } & { ' $fragmentName'?: 'CoursePageFieldsCompetenceCertificateListObjectTypeFragment' }; -type CoursePageFieldsLearningPathObjectTypeFragment = { __typename?: 'LearningPathObjectType', title?: string | null, id?: string | null, slug?: string | null, content_type?: string | null, frontend_url?: string | null } & { ' $fragmentName'?: 'CoursePageFieldsLearningPathObjectTypeFragment' }; +type CoursePageFieldsCompetenceCertificateObjectTypeFragment = { __typename?: 'CompetenceCertificateObjectType', title: string, id: string, slug: string, content_type: string, frontend_url: string } & { ' $fragmentName'?: 'CoursePageFieldsCompetenceCertificateObjectTypeFragment' }; -type CoursePageFieldsLearningSequenceObjectTypeFragment = { __typename?: 'LearningSequenceObjectType', title?: string | null, id?: string | null, slug?: string | null, content_type?: string | null, frontend_url?: string | null } & { ' $fragmentName'?: 'CoursePageFieldsLearningSequenceObjectTypeFragment' }; +type CoursePageFieldsLearningContentAssignmentObjectTypeFragment = { __typename?: 'LearningContentAssignmentObjectType', title: string, id: string, slug: string, content_type: string, frontend_url: string } & { ' $fragmentName'?: 'CoursePageFieldsLearningContentAssignmentObjectTypeFragment' }; -type CoursePageFieldsLearningUnitObjectTypeFragment = { __typename?: 'LearningUnitObjectType', title?: string | null, id?: string | null, slug?: string | null, content_type?: string | null, frontend_url?: string | null } & { ' $fragmentName'?: 'CoursePageFieldsLearningUnitObjectTypeFragment' }; +type CoursePageFieldsLearningContentAttendanceCourseObjectTypeFragment = { __typename?: 'LearningContentAttendanceCourseObjectType', title: string, id: string, slug: string, content_type: string, frontend_url: string } & { ' $fragmentName'?: 'CoursePageFieldsLearningContentAttendanceCourseObjectTypeFragment' }; -type CoursePageFieldsTopicObjectTypeFragment = { __typename?: 'TopicObjectType', title?: string | null, id?: string | null, slug?: string | null, content_type?: string | null, frontend_url?: string | null } & { ' $fragmentName'?: 'CoursePageFieldsTopicObjectTypeFragment' }; +type CoursePageFieldsLearningContentDocumentListObjectTypeFragment = { __typename?: 'LearningContentDocumentListObjectType', title: string, id: string, slug: string, content_type: string, frontend_url: string } & { ' $fragmentName'?: 'CoursePageFieldsLearningContentDocumentListObjectTypeFragment' }; -export type CoursePageFieldsFragment = CoursePageFieldsAssignmentObjectTypeFragment | CoursePageFieldsCircleObjectTypeFragment | CoursePageFieldsCompetenceCertificateListObjectTypeFragment | CoursePageFieldsCompetenceCertificateObjectTypeFragment | CoursePageFieldsLearningPathObjectTypeFragment | CoursePageFieldsLearningSequenceObjectTypeFragment | CoursePageFieldsLearningUnitObjectTypeFragment | CoursePageFieldsTopicObjectTypeFragment; +type CoursePageFieldsLearningContentEdoniqTestObjectTypeFragment = { __typename?: 'LearningContentEdoniqTestObjectType', title: string, id: string, slug: string, content_type: string, frontend_url: string } & { ' $fragmentName'?: 'CoursePageFieldsLearningContentEdoniqTestObjectTypeFragment' }; + +type CoursePageFieldsLearningContentFeedbackObjectTypeFragment = { __typename?: 'LearningContentFeedbackObjectType', title: string, id: string, slug: string, content_type: string, frontend_url: string } & { ' $fragmentName'?: 'CoursePageFieldsLearningContentFeedbackObjectTypeFragment' }; + +type CoursePageFieldsLearningContentLearningModuleObjectTypeFragment = { __typename?: 'LearningContentLearningModuleObjectType', title: string, id: string, slug: string, content_type: string, frontend_url: string } & { ' $fragmentName'?: 'CoursePageFieldsLearningContentLearningModuleObjectTypeFragment' }; + +type CoursePageFieldsLearningContentMediaLibraryObjectTypeFragment = { __typename?: 'LearningContentMediaLibraryObjectType', title: string, id: string, slug: string, content_type: string, frontend_url: string } & { ' $fragmentName'?: 'CoursePageFieldsLearningContentMediaLibraryObjectTypeFragment' }; + +type CoursePageFieldsLearningContentPlaceholderObjectTypeFragment = { __typename?: 'LearningContentPlaceholderObjectType', title: string, id: string, slug: string, content_type: string, frontend_url: string } & { ' $fragmentName'?: 'CoursePageFieldsLearningContentPlaceholderObjectTypeFragment' }; + +type CoursePageFieldsLearningContentRichTextObjectTypeFragment = { __typename?: 'LearningContentRichTextObjectType', title: string, id: string, slug: string, content_type: string, frontend_url: string } & { ' $fragmentName'?: 'CoursePageFieldsLearningContentRichTextObjectTypeFragment' }; + +type CoursePageFieldsLearningContentVideoObjectTypeFragment = { __typename?: 'LearningContentVideoObjectType', title: string, id: string, slug: string, content_type: string, frontend_url: string } & { ' $fragmentName'?: 'CoursePageFieldsLearningContentVideoObjectTypeFragment' }; + +type CoursePageFieldsLearningPathObjectTypeFragment = { __typename?: 'LearningPathObjectType', title: string, id: string, slug: string, content_type: string, frontend_url: string } & { ' $fragmentName'?: 'CoursePageFieldsLearningPathObjectTypeFragment' }; + +type CoursePageFieldsLearningSequenceObjectTypeFragment = { __typename?: 'LearningSequenceObjectType', title: string, id: string, slug: string, content_type: string, frontend_url: string } & { ' $fragmentName'?: 'CoursePageFieldsLearningSequenceObjectTypeFragment' }; + +type CoursePageFieldsLearningUnitObjectTypeFragment = { __typename?: 'LearningUnitObjectType', title: string, id: string, slug: string, content_type: string, frontend_url: string } & { ' $fragmentName'?: 'CoursePageFieldsLearningUnitObjectTypeFragment' }; + +type CoursePageFieldsPerformanceCriteriaObjectTypeFragment = { __typename?: 'PerformanceCriteriaObjectType', title: string, id: string, slug: string, content_type: string, frontend_url: string } & { ' $fragmentName'?: 'CoursePageFieldsPerformanceCriteriaObjectTypeFragment' }; + +type CoursePageFieldsTopicObjectTypeFragment = { __typename?: 'TopicObjectType', title: string, id: string, slug: string, content_type: string, frontend_url: string } & { ' $fragmentName'?: 'CoursePageFieldsTopicObjectTypeFragment' }; + +export type CoursePageFieldsFragment = CoursePageFieldsActionCompetenceObjectTypeFragment | CoursePageFieldsAssignmentObjectTypeFragment | CoursePageFieldsCircleObjectTypeFragment | CoursePageFieldsCompetenceCertificateListObjectTypeFragment | CoursePageFieldsCompetenceCertificateObjectTypeFragment | CoursePageFieldsLearningContentAssignmentObjectTypeFragment | CoursePageFieldsLearningContentAttendanceCourseObjectTypeFragment | CoursePageFieldsLearningContentDocumentListObjectTypeFragment | CoursePageFieldsLearningContentEdoniqTestObjectTypeFragment | CoursePageFieldsLearningContentFeedbackObjectTypeFragment | CoursePageFieldsLearningContentLearningModuleObjectTypeFragment | CoursePageFieldsLearningContentMediaLibraryObjectTypeFragment | CoursePageFieldsLearningContentPlaceholderObjectTypeFragment | CoursePageFieldsLearningContentRichTextObjectTypeFragment | CoursePageFieldsLearningContentVideoObjectTypeFragment | CoursePageFieldsLearningPathObjectTypeFragment | CoursePageFieldsLearningSequenceObjectTypeFragment | CoursePageFieldsLearningUnitObjectTypeFragment | CoursePageFieldsPerformanceCriteriaObjectTypeFragment | CoursePageFieldsTopicObjectTypeFragment; export type AttendanceCheckQueryQueryVariables = Exact<{ courseSessionId: Scalars['ID']['input']; }>; -export type AttendanceCheckQueryQuery = { __typename?: 'Query', course_session_attendance_course?: { __typename?: 'CourseSessionAttendanceCourseObjectType', id: string, attendance_user_list?: Array<{ __typename?: 'AttendanceUserObjectType', user_id: any, status: AttendanceUserStatus } | null> | null } | null }; +export type AttendanceCheckQueryQuery = { __typename?: 'Query', course_session_attendance_course?: { __typename?: 'CourseSessionAttendanceCourseObjectType', id: string, attendance_user_list?: Array<{ __typename?: 'AttendanceUserObjectType', user_id: string, status: AttendanceUserStatus } | null> | null } | null }; export type AssignmentCompletionQueryQueryVariables = Exact<{ assignmentId: Scalars['ID']['input']; @@ -834,17 +852,10 @@ export type AssignmentCompletionQueryQueryVariables = Exact<{ }>; -export type AssignmentCompletionQueryQuery = { __typename?: 'Query', assignment?: { __typename?: 'AssignmentObjectType', assignment_type: AssignmentAssignmentAssignmentTypeChoices, needs_expert_evaluation: boolean, max_points?: number | null, content_type?: string | null, effort_required: string, evaluation_description: string, evaluation_document_url: string, evaluation_tasks?: any | null, id?: string | null, intro_text: string, performance_objectives?: any | null, slug?: string | null, tasks?: any | null, title?: string | null, translation_key?: string | null, competence_certificate?: ( +export type AssignmentCompletionQueryQuery = { __typename?: 'Query', assignment?: { __typename?: 'AssignmentObjectType', assignment_type: AssignmentAssignmentAssignmentTypeChoices, needs_expert_evaluation: boolean, max_points?: number | null, content_type: string, effort_required: string, evaluation_description: string, evaluation_document_url: string, evaluation_tasks?: any | null, id: string, intro_text: string, performance_objectives?: any | null, slug: string, tasks?: any | null, title: string, translation_key: string, competence_certificate?: ( { __typename?: 'CompetenceCertificateObjectType' } & { ' $fragmentRefs'?: { 'CoursePageFieldsCompetenceCertificateObjectTypeFragment': CoursePageFieldsCompetenceCertificateObjectTypeFragment } } - ) | null } | null, assignment_completion?: { __typename?: 'AssignmentCompletionObjectType', id: any, completion_status: AssignmentAssignmentCompletionCompletionStatusChoices, submitted_at?: any | null, evaluation_submitted_at?: any | null, evaluation_points?: number | null, evaluation_max_points?: number | null, evaluation_passed?: boolean | null, edoniq_extended_time_flag: boolean, completion_data?: any | null, task_completion_data?: any | null, evaluation_user?: { __typename?: 'UserType', id: any } | null, assignment_user: { __typename?: 'UserType', id: any } } | null }; - -export type CourseQueryQueryVariables = Exact<{ - courseId: Scalars['ID']['input']; -}>; - - -export type CourseQueryQuery = { __typename?: 'Query', course?: { __typename?: 'CourseObjectType', id: string, slug: string, title: string, category_name: string, learning_path?: { __typename?: 'LearningPathObjectType', id?: string | null } | null } | null }; + ) | null } | null, assignment_completion?: { __typename?: 'AssignmentCompletionObjectType', id: string, completion_status: AssignmentAssignmentCompletionCompletionStatusChoices, submitted_at?: string | null, evaluation_submitted_at?: string | null, evaluation_points?: number | null, evaluation_max_points?: number | null, evaluation_passed?: boolean | null, edoniq_extended_time_flag: boolean, completion_data?: any | null, task_completion_data?: any | null, evaluation_user?: { __typename?: 'UserObjectType', id: string } | null, assignment_user: { __typename?: 'UserObjectType', id: string } } | null }; export type CompetenceCertificateQueryQueryVariables = Exact<{ courseSlug: Scalars['String']['input']; @@ -853,43 +864,43 @@ export type CompetenceCertificateQueryQueryVariables = Exact<{ export type CompetenceCertificateQueryQuery = { __typename?: 'Query', competence_certificate_list?: ( - { __typename?: 'CompetenceCertificateListObjectType', competence_certificates?: Array<( - { __typename?: 'CompetenceCertificateObjectType', assignments?: Array<( - { __typename?: 'AssignmentObjectType', assignment_type: AssignmentAssignmentAssignmentTypeChoices, max_points?: number | null, completion?: { __typename?: 'AssignmentCompletionObjectType', id: any, completion_status: AssignmentAssignmentCompletionCompletionStatusChoices, submitted_at?: any | null, evaluation_points?: number | null, evaluation_max_points?: number | null, evaluation_passed?: boolean | null } | null, learning_content?: { __typename?: 'LearningContentAssignmentObjectType', title?: string | null, id?: string | null, slug?: string | null, content_type?: string | null, frontend_url?: string | null, circle?: ( - { __typename?: 'CircleObjectType' } - & { ' $fragmentRefs'?: { 'CoursePageFieldsCircleObjectTypeFragment': CoursePageFieldsCircleObjectTypeFragment } } - ) | null } | { __typename?: 'LearningContentAttendanceCourseObjectType', title?: string | null, id?: string | null, slug?: string | null, content_type?: string | null, frontend_url?: string | null, circle?: ( - { __typename?: 'CircleObjectType' } - & { ' $fragmentRefs'?: { 'CoursePageFieldsCircleObjectTypeFragment': CoursePageFieldsCircleObjectTypeFragment } } - ) | null } | { __typename?: 'LearningContentDocumentListObjectType', title?: string | null, id?: string | null, slug?: string | null, content_type?: string | null, frontend_url?: string | null, circle?: ( - { __typename?: 'CircleObjectType' } - & { ' $fragmentRefs'?: { 'CoursePageFieldsCircleObjectTypeFragment': CoursePageFieldsCircleObjectTypeFragment } } - ) | null } | { __typename?: 'LearningContentEdoniqTestObjectType', title?: string | null, id?: string | null, slug?: string | null, content_type?: string | null, frontend_url?: string | null, circle?: ( - { __typename?: 'CircleObjectType' } - & { ' $fragmentRefs'?: { 'CoursePageFieldsCircleObjectTypeFragment': CoursePageFieldsCircleObjectTypeFragment } } - ) | null } | { __typename?: 'LearningContentFeedbackObjectType', title?: string | null, id?: string | null, slug?: string | null, content_type?: string | null, frontend_url?: string | null, circle?: ( - { __typename?: 'CircleObjectType' } - & { ' $fragmentRefs'?: { 'CoursePageFieldsCircleObjectTypeFragment': CoursePageFieldsCircleObjectTypeFragment } } - ) | null } | { __typename?: 'LearningContentLearningModuleObjectType', title?: string | null, id?: string | null, slug?: string | null, content_type?: string | null, frontend_url?: string | null, circle?: ( - { __typename?: 'CircleObjectType' } - & { ' $fragmentRefs'?: { 'CoursePageFieldsCircleObjectTypeFragment': CoursePageFieldsCircleObjectTypeFragment } } - ) | null } | { __typename?: 'LearningContentMediaLibraryObjectType', title?: string | null, id?: string | null, slug?: string | null, content_type?: string | null, frontend_url?: string | null, circle?: ( - { __typename?: 'CircleObjectType' } - & { ' $fragmentRefs'?: { 'CoursePageFieldsCircleObjectTypeFragment': CoursePageFieldsCircleObjectTypeFragment } } - ) | null } | { __typename?: 'LearningContentPlaceholderObjectType', title?: string | null, id?: string | null, slug?: string | null, content_type?: string | null, frontend_url?: string | null, circle?: ( - { __typename?: 'CircleObjectType' } - & { ' $fragmentRefs'?: { 'CoursePageFieldsCircleObjectTypeFragment': CoursePageFieldsCircleObjectTypeFragment } } - ) | null } | { __typename?: 'LearningContentRichTextObjectType', title?: string | null, id?: string | null, slug?: string | null, content_type?: string | null, frontend_url?: string | null, circle?: ( - { __typename?: 'CircleObjectType' } - & { ' $fragmentRefs'?: { 'CoursePageFieldsCircleObjectTypeFragment': CoursePageFieldsCircleObjectTypeFragment } } - ) | null } | { __typename?: 'LearningContentVideoObjectType', title?: string | null, id?: string | null, slug?: string | null, content_type?: string | null, frontend_url?: string | null, circle?: ( - { __typename?: 'CircleObjectType' } - & { ' $fragmentRefs'?: { 'CoursePageFieldsCircleObjectTypeFragment': CoursePageFieldsCircleObjectTypeFragment } } - ) | null } | null } + { __typename?: 'CompetenceCertificateListObjectType', competence_certificates: Array<( + { __typename?: 'CompetenceCertificateObjectType', assignments: Array<( + { __typename?: 'AssignmentObjectType', assignment_type: AssignmentAssignmentAssignmentTypeChoices, max_points?: number | null, completion?: { __typename?: 'AssignmentCompletionObjectType', id: string, completion_status: AssignmentAssignmentCompletionCompletionStatusChoices, submitted_at?: string | null, evaluation_points?: number | null, evaluation_max_points?: number | null, evaluation_passed?: boolean | null } | null, learning_content?: ( + { __typename?: 'LearningContentAssignmentObjectType', circle?: { __typename?: 'CircleLightObjectType', id: string, title: string, slug: string } | null } + & { ' $fragmentRefs'?: { 'CoursePageFieldsLearningContentAssignmentObjectTypeFragment': CoursePageFieldsLearningContentAssignmentObjectTypeFragment } } + ) | ( + { __typename?: 'LearningContentAttendanceCourseObjectType', circle?: { __typename?: 'CircleLightObjectType', id: string, title: string, slug: string } | null } + & { ' $fragmentRefs'?: { 'CoursePageFieldsLearningContentAttendanceCourseObjectTypeFragment': CoursePageFieldsLearningContentAttendanceCourseObjectTypeFragment } } + ) | ( + { __typename?: 'LearningContentDocumentListObjectType', circle?: { __typename?: 'CircleLightObjectType', id: string, title: string, slug: string } | null } + & { ' $fragmentRefs'?: { 'CoursePageFieldsLearningContentDocumentListObjectTypeFragment': CoursePageFieldsLearningContentDocumentListObjectTypeFragment } } + ) | ( + { __typename?: 'LearningContentEdoniqTestObjectType', circle?: { __typename?: 'CircleLightObjectType', id: string, title: string, slug: string } | null } + & { ' $fragmentRefs'?: { 'CoursePageFieldsLearningContentEdoniqTestObjectTypeFragment': CoursePageFieldsLearningContentEdoniqTestObjectTypeFragment } } + ) | ( + { __typename?: 'LearningContentFeedbackObjectType', circle?: { __typename?: 'CircleLightObjectType', id: string, title: string, slug: string } | null } + & { ' $fragmentRefs'?: { 'CoursePageFieldsLearningContentFeedbackObjectTypeFragment': CoursePageFieldsLearningContentFeedbackObjectTypeFragment } } + ) | ( + { __typename?: 'LearningContentLearningModuleObjectType', circle?: { __typename?: 'CircleLightObjectType', id: string, title: string, slug: string } | null } + & { ' $fragmentRefs'?: { 'CoursePageFieldsLearningContentLearningModuleObjectTypeFragment': CoursePageFieldsLearningContentLearningModuleObjectTypeFragment } } + ) | ( + { __typename?: 'LearningContentMediaLibraryObjectType', circle?: { __typename?: 'CircleLightObjectType', id: string, title: string, slug: string } | null } + & { ' $fragmentRefs'?: { 'CoursePageFieldsLearningContentMediaLibraryObjectTypeFragment': CoursePageFieldsLearningContentMediaLibraryObjectTypeFragment } } + ) | ( + { __typename?: 'LearningContentPlaceholderObjectType', circle?: { __typename?: 'CircleLightObjectType', id: string, title: string, slug: string } | null } + & { ' $fragmentRefs'?: { 'CoursePageFieldsLearningContentPlaceholderObjectTypeFragment': CoursePageFieldsLearningContentPlaceholderObjectTypeFragment } } + ) | ( + { __typename?: 'LearningContentRichTextObjectType', circle?: { __typename?: 'CircleLightObjectType', id: string, title: string, slug: string } | null } + & { ' $fragmentRefs'?: { 'CoursePageFieldsLearningContentRichTextObjectTypeFragment': CoursePageFieldsLearningContentRichTextObjectTypeFragment } } + ) | ( + { __typename?: 'LearningContentVideoObjectType', circle?: { __typename?: 'CircleLightObjectType', id: string, title: string, slug: string } | null } + & { ' $fragmentRefs'?: { 'CoursePageFieldsLearningContentVideoObjectTypeFragment': CoursePageFieldsLearningContentVideoObjectTypeFragment } } + ) | null } & { ' $fragmentRefs'?: { 'CoursePageFieldsAssignmentObjectTypeFragment': CoursePageFieldsAssignmentObjectTypeFragment } } - ) | null> | null } + )> } & { ' $fragmentRefs'?: { 'CoursePageFieldsCompetenceCertificateObjectTypeFragment': CoursePageFieldsCompetenceCertificateObjectTypeFragment } } - ) | null> | null } + )> } & { ' $fragmentRefs'?: { 'CoursePageFieldsCompetenceCertificateListObjectTypeFragment': CoursePageFieldsCompetenceCertificateListObjectTypeFragment } } ) | null }; @@ -898,7 +909,74 @@ export type CourseSessionDetailQueryVariables = Exact<{ }>; -export type CourseSessionDetailQuery = { __typename?: 'Query', course_session?: { __typename?: 'CourseSessionObjectType', id: string, title: string, course: { __typename?: 'CourseObjectType', id: string, title: string, slug: string }, users?: Array<{ __typename?: 'CourseSessionUserObjectsType', id: any, user_id?: any | null, first_name?: string | null, last_name?: string | null, email?: string | null, avatar_url?: string | null, role?: string | null, circles?: Array<{ __typename?: 'CourseSessionUserExpertCircleType', id?: string | null, title?: string | null, slug?: string | null } | null> | null } | null> | null, attendance_courses?: Array<{ __typename?: 'CourseSessionAttendanceCourseObjectType', id: string, location: string, trainer: string, learning_content_id?: string | null, due_date?: { __typename?: 'DueDateObjectType', id: string, start?: any | null, end?: any | null } | null, learning_content?: { __typename?: 'LearningContentAttendanceCourseObjectType', id?: string | null, title?: string | null, circle?: { __typename?: 'CircleObjectType', id?: string | null, title?: string | null, slug?: string | null } | null } | null } | null> | null, assignments?: Array<{ __typename?: 'CourseSessionAssignmentObjectType', id: string, submission_deadline?: { __typename?: 'DueDateObjectType', id: string, start?: any | null } | null, evaluation_deadline?: { __typename?: 'DueDateObjectType', id: string, start?: any | null } | null, learning_content?: { __typename?: 'LearningContentAssignmentObjectType', id?: string | null, title?: string | null, content_assignment: { __typename?: 'AssignmentObjectType', id?: string | null, title?: string | null, assignment_type: AssignmentAssignmentAssignmentTypeChoices } } | null } | null> | null, edoniq_tests?: Array<{ __typename?: 'CourseSessionEdoniqTestObjectType', id: string, deadline?: { __typename?: 'DueDateObjectType', id: string, start?: any | null, end?: any | null } | null, learning_content?: { __typename?: 'LearningContentEdoniqTestObjectType', id?: string | null, title?: string | null, content_assignment?: { __typename?: 'AssignmentObjectType', id?: string | null, title?: string | null, assignment_type: AssignmentAssignmentAssignmentTypeChoices } | null } | null } | null> | null } | null }; +export type CourseSessionDetailQuery = { __typename?: 'Query', course_session?: { __typename?: 'CourseSessionObjectType', id: string, title: string, course: { __typename?: 'CourseObjectType', id: string, title: string, slug: string }, users: Array<{ __typename?: 'CourseSessionUserObjectsType', id: string, user_id: string, first_name: string, last_name: string, email: string, avatar_url: string, role: CourseCourseSessionUserRoleChoices, circles: Array<{ __typename?: 'CourseSessionUserExpertCircleType', id: string, title: string, slug: string }> }>, attendance_courses: Array<{ __typename?: 'CourseSessionAttendanceCourseObjectType', id: string, location: string, trainer: string, learning_content_id?: string | null, due_date?: { __typename?: 'DueDateObjectType', id: string, start?: string | null, end?: string | null } | null, learning_content: { __typename?: 'LearningContentAttendanceCourseObjectType', id: string, title: string, circle?: { __typename?: 'CircleLightObjectType', id: string, title: string, slug: string } | null } }>, assignments: Array<{ __typename?: 'CourseSessionAssignmentObjectType', id: string, submission_deadline?: { __typename?: 'DueDateObjectType', id: string, start?: string | null } | null, evaluation_deadline?: { __typename?: 'DueDateObjectType', id: string, start?: string | null } | null, learning_content: { __typename?: 'LearningContentAssignmentObjectType', id: string, title: string, content_assignment: { __typename?: 'AssignmentObjectType', id: string, title: string, assignment_type: AssignmentAssignmentAssignmentTypeChoices } } }>, edoniq_tests: Array<{ __typename?: 'CourseSessionEdoniqTestObjectType', id: string, deadline?: { __typename?: 'DueDateObjectType', id: string, start?: string | null, end?: string | null } | null, learning_content: { __typename?: 'LearningContentEdoniqTestObjectType', id: string, title: string, content_assignment: { __typename?: 'AssignmentObjectType', id: string, title: string, assignment_type: AssignmentAssignmentAssignmentTypeChoices } } }> } | null }; + +export type CourseQueryQueryVariables = Exact<{ + slug: Scalars['String']['input']; +}>; + + +export type CourseQueryQuery = { __typename?: 'Query', course?: { __typename?: 'CourseObjectType', id: string, title: string, slug: string, category_name: string, action_competences: Array<( + { __typename?: 'ActionCompetenceObjectType', competence_id: string, performance_criteria: Array<( + { __typename?: 'PerformanceCriteriaObjectType', competence_id: string, learning_unit?: { __typename?: 'LearningUnitObjectType', id: string, slug: string, evaluate_url: string } | null } + & { ' $fragmentRefs'?: { 'CoursePageFieldsPerformanceCriteriaObjectTypeFragment': CoursePageFieldsPerformanceCriteriaObjectTypeFragment } } + )> } + & { ' $fragmentRefs'?: { 'CoursePageFieldsActionCompetenceObjectTypeFragment': CoursePageFieldsActionCompetenceObjectTypeFragment } } + )>, learning_path: ( + { __typename?: 'LearningPathObjectType', topics: Array<( + { __typename?: 'TopicObjectType', is_visible: boolean, circles: Array<( + { __typename?: 'CircleObjectType', description: string, goals: string, learning_sequences: Array<( + { __typename?: 'LearningSequenceObjectType', icon: string, learning_units: Array<( + { __typename?: 'LearningUnitObjectType', evaluate_url: string, performance_criteria: Array<( + { __typename?: 'PerformanceCriteriaObjectType' } + & { ' $fragmentRefs'?: { 'CoursePageFieldsPerformanceCriteriaObjectTypeFragment': CoursePageFieldsPerformanceCriteriaObjectTypeFragment } } + )>, learning_contents: Array<( + { __typename?: 'LearningContentAssignmentObjectType', assignment_type: LearnpathLearningContentAssignmentAssignmentTypeChoices, can_user_self_toggle_course_completion: boolean, content_url: string, minutes?: number | null, description: string, content_assignment: { __typename?: 'AssignmentObjectType', id: string }, competence_certificate?: ( + { __typename?: 'CompetenceCertificateObjectType' } + & { ' $fragmentRefs'?: { 'CoursePageFieldsCompetenceCertificateObjectTypeFragment': CoursePageFieldsCompetenceCertificateObjectTypeFragment } } + ) | null } + & { ' $fragmentRefs'?: { 'CoursePageFieldsLearningContentAssignmentObjectTypeFragment': CoursePageFieldsLearningContentAssignmentObjectTypeFragment } } + ) | ( + { __typename?: 'LearningContentAttendanceCourseObjectType', can_user_self_toggle_course_completion: boolean, content_url: string, minutes?: number | null, description: string } + & { ' $fragmentRefs'?: { 'CoursePageFieldsLearningContentAttendanceCourseObjectTypeFragment': CoursePageFieldsLearningContentAttendanceCourseObjectTypeFragment } } + ) | ( + { __typename?: 'LearningContentDocumentListObjectType', can_user_self_toggle_course_completion: boolean, content_url: string, minutes?: number | null, description: string } + & { ' $fragmentRefs'?: { 'CoursePageFieldsLearningContentDocumentListObjectTypeFragment': CoursePageFieldsLearningContentDocumentListObjectTypeFragment } } + ) | ( + { __typename?: 'LearningContentEdoniqTestObjectType', checkbox_text: string, has_extended_time_test: boolean, can_user_self_toggle_course_completion: boolean, content_url: string, minutes?: number | null, description: string, content_assignment: { __typename?: 'AssignmentObjectType', id: string }, competence_certificate?: ( + { __typename?: 'CompetenceCertificateObjectType' } + & { ' $fragmentRefs'?: { 'CoursePageFieldsCompetenceCertificateObjectTypeFragment': CoursePageFieldsCompetenceCertificateObjectTypeFragment } } + ) | null } + & { ' $fragmentRefs'?: { 'CoursePageFieldsLearningContentEdoniqTestObjectTypeFragment': CoursePageFieldsLearningContentEdoniqTestObjectTypeFragment } } + ) | ( + { __typename?: 'LearningContentFeedbackObjectType', can_user_self_toggle_course_completion: boolean, content_url: string, minutes?: number | null, description: string } + & { ' $fragmentRefs'?: { 'CoursePageFieldsLearningContentFeedbackObjectTypeFragment': CoursePageFieldsLearningContentFeedbackObjectTypeFragment } } + ) | ( + { __typename?: 'LearningContentLearningModuleObjectType', can_user_self_toggle_course_completion: boolean, content_url: string, minutes?: number | null, description: string } + & { ' $fragmentRefs'?: { 'CoursePageFieldsLearningContentLearningModuleObjectTypeFragment': CoursePageFieldsLearningContentLearningModuleObjectTypeFragment } } + ) | ( + { __typename?: 'LearningContentMediaLibraryObjectType', can_user_self_toggle_course_completion: boolean, content_url: string, minutes?: number | null, description: string } + & { ' $fragmentRefs'?: { 'CoursePageFieldsLearningContentMediaLibraryObjectTypeFragment': CoursePageFieldsLearningContentMediaLibraryObjectTypeFragment } } + ) | ( + { __typename?: 'LearningContentPlaceholderObjectType', can_user_self_toggle_course_completion: boolean, content_url: string, minutes?: number | null, description: string } + & { ' $fragmentRefs'?: { 'CoursePageFieldsLearningContentPlaceholderObjectTypeFragment': CoursePageFieldsLearningContentPlaceholderObjectTypeFragment } } + ) | ( + { __typename?: 'LearningContentRichTextObjectType', text: string, can_user_self_toggle_course_completion: boolean, content_url: string, minutes?: number | null, description: string } + & { ' $fragmentRefs'?: { 'CoursePageFieldsLearningContentRichTextObjectTypeFragment': CoursePageFieldsLearningContentRichTextObjectTypeFragment } } + ) | ( + { __typename?: 'LearningContentVideoObjectType', can_user_self_toggle_course_completion: boolean, content_url: string, minutes?: number | null, description: string } + & { ' $fragmentRefs'?: { 'CoursePageFieldsLearningContentVideoObjectTypeFragment': CoursePageFieldsLearningContentVideoObjectTypeFragment } } + )> } + & { ' $fragmentRefs'?: { 'CoursePageFieldsLearningUnitObjectTypeFragment': CoursePageFieldsLearningUnitObjectTypeFragment } } + )> } + & { ' $fragmentRefs'?: { 'CoursePageFieldsLearningSequenceObjectTypeFragment': CoursePageFieldsLearningSequenceObjectTypeFragment } } + )> } + & { ' $fragmentRefs'?: { 'CoursePageFieldsCircleObjectTypeFragment': CoursePageFieldsCircleObjectTypeFragment } } + )> } + & { ' $fragmentRefs'?: { 'CoursePageFieldsTopicObjectTypeFragment': CoursePageFieldsTopicObjectTypeFragment } } + )> } + & { ' $fragmentRefs'?: { 'CoursePageFieldsLearningPathObjectTypeFragment': CoursePageFieldsLearningPathObjectTypeFragment } } + ) } | null }; export type SendFeedbackMutationMutationVariables = Exact<{ courseSessionId: Scalars['ID']['input']; @@ -908,14 +986,14 @@ export type SendFeedbackMutationMutationVariables = Exact<{ }>; -export type SendFeedbackMutationMutation = { __typename?: 'Mutation', send_feedback?: { __typename?: 'SendFeedbackMutation', feedback_response?: { __typename?: 'FeedbackResponseObjectType', id: any, data?: any | null, submitted: boolean } | null, errors?: Array<{ __typename?: 'ErrorType', field: string, messages: Array } | null> | null } | null }; +export type SendFeedbackMutationMutation = { __typename?: 'Mutation', send_feedback?: { __typename?: 'SendFeedbackMutation', feedback_response?: { __typename?: 'FeedbackResponseObjectType', id: string, data?: any | null, submitted: boolean } | null, errors?: Array<{ __typename?: 'ErrorType', field: string, messages: Array } | null> | null } | null }; export const CoursePageFieldsFragmentDoc = {"kind":"Document","definitions":[{"kind":"FragmentDefinition","name":{"kind":"Name","value":"CoursePageFields"},"typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"CoursePageInterface"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"title"}},{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"slug"}},{"kind":"Field","name":{"kind":"Name","value":"content_type"}},{"kind":"Field","name":{"kind":"Name","value":"frontend_url"}}]}}]} as unknown as DocumentNode; export const AttendanceCheckMutationDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"mutation","name":{"kind":"Name","value":"AttendanceCheckMutation"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"attendanceCourseId"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"ID"}}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"attendanceUserList"}},"type":{"kind":"NonNullType","type":{"kind":"ListType","type":{"kind":"NamedType","name":{"kind":"Name","value":"AttendanceUserInputType"}}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"update_course_session_attendance_course_users"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"id"},"value":{"kind":"Variable","name":{"kind":"Name","value":"attendanceCourseId"}}},{"kind":"Argument","name":{"kind":"Name","value":"attendance_user_list"},"value":{"kind":"Variable","name":{"kind":"Name","value":"attendanceUserList"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"course_session_attendance_course"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"attendance_user_list"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"user_id"}},{"kind":"Field","name":{"kind":"Name","value":"first_name"}},{"kind":"Field","name":{"kind":"Name","value":"last_name"}},{"kind":"Field","name":{"kind":"Name","value":"email"}},{"kind":"Field","name":{"kind":"Name","value":"status"}}]}}]}}]}}]}}]} as unknown as DocumentNode; export const UpsertAssignmentCompletionDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"mutation","name":{"kind":"Name","value":"UpsertAssignmentCompletion"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"assignmentId"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"ID"}}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"courseSessionId"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"ID"}}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"learningContentId"}},"type":{"kind":"NamedType","name":{"kind":"Name","value":"ID"}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"assignmentUserId"}},"type":{"kind":"NamedType","name":{"kind":"Name","value":"UUID"}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"completionStatus"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"AssignmentCompletionStatus"}}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"completionDataString"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"evaluationPoints"}},"type":{"kind":"NamedType","name":{"kind":"Name","value":"Float"}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"initializeCompletion"}},"type":{"kind":"NamedType","name":{"kind":"Name","value":"Boolean"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"upsert_assignment_completion"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"assignment_id"},"value":{"kind":"Variable","name":{"kind":"Name","value":"assignmentId"}}},{"kind":"Argument","name":{"kind":"Name","value":"course_session_id"},"value":{"kind":"Variable","name":{"kind":"Name","value":"courseSessionId"}}},{"kind":"Argument","name":{"kind":"Name","value":"learning_content_page_id"},"value":{"kind":"Variable","name":{"kind":"Name","value":"learningContentId"}}},{"kind":"Argument","name":{"kind":"Name","value":"assignment_user_id"},"value":{"kind":"Variable","name":{"kind":"Name","value":"assignmentUserId"}}},{"kind":"Argument","name":{"kind":"Name","value":"completion_status"},"value":{"kind":"Variable","name":{"kind":"Name","value":"completionStatus"}}},{"kind":"Argument","name":{"kind":"Name","value":"completion_data_string"},"value":{"kind":"Variable","name":{"kind":"Name","value":"completionDataString"}}},{"kind":"Argument","name":{"kind":"Name","value":"evaluation_points"},"value":{"kind":"Variable","name":{"kind":"Name","value":"evaluationPoints"}}},{"kind":"Argument","name":{"kind":"Name","value":"initialize_completion"},"value":{"kind":"Variable","name":{"kind":"Name","value":"initializeCompletion"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"assignment_completion"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"completion_status"}},{"kind":"Field","name":{"kind":"Name","value":"submitted_at"}},{"kind":"Field","name":{"kind":"Name","value":"evaluation_submitted_at"}},{"kind":"Field","name":{"kind":"Name","value":"evaluation_points"}},{"kind":"Field","name":{"kind":"Name","value":"completion_data"}},{"kind":"Field","name":{"kind":"Name","value":"task_completion_data"}}]}}]}}]}}]} as unknown as DocumentNode; export const AttendanceCheckQueryDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"query","name":{"kind":"Name","value":"attendanceCheckQuery"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"courseSessionId"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"ID"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"course_session_attendance_course"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"id"},"value":{"kind":"Variable","name":{"kind":"Name","value":"courseSessionId"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"attendance_user_list"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"user_id"}},{"kind":"Field","name":{"kind":"Name","value":"status"}}]}}]}}]}}]} as unknown as DocumentNode; export const AssignmentCompletionQueryDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"query","name":{"kind":"Name","value":"assignmentCompletionQuery"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"assignmentId"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"ID"}}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"courseSessionId"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"ID"}}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"learningContentId"}},"type":{"kind":"NamedType","name":{"kind":"Name","value":"ID"}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"assignmentUserId"}},"type":{"kind":"NamedType","name":{"kind":"Name","value":"UUID"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"assignment"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"id"},"value":{"kind":"Variable","name":{"kind":"Name","value":"assignmentId"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"assignment_type"}},{"kind":"Field","name":{"kind":"Name","value":"needs_expert_evaluation"}},{"kind":"Field","name":{"kind":"Name","value":"max_points"}},{"kind":"Field","name":{"kind":"Name","value":"content_type"}},{"kind":"Field","name":{"kind":"Name","value":"effort_required"}},{"kind":"Field","name":{"kind":"Name","value":"evaluation_description"}},{"kind":"Field","name":{"kind":"Name","value":"evaluation_document_url"}},{"kind":"Field","name":{"kind":"Name","value":"evaluation_tasks"}},{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"intro_text"}},{"kind":"Field","name":{"kind":"Name","value":"performance_objectives"}},{"kind":"Field","name":{"kind":"Name","value":"slug"}},{"kind":"Field","name":{"kind":"Name","value":"tasks"}},{"kind":"Field","name":{"kind":"Name","value":"title"}},{"kind":"Field","name":{"kind":"Name","value":"translation_key"}},{"kind":"Field","name":{"kind":"Name","value":"competence_certificate"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"FragmentSpread","name":{"kind":"Name","value":"CoursePageFields"}}]}}]}},{"kind":"Field","name":{"kind":"Name","value":"assignment_completion"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"assignment_id"},"value":{"kind":"Variable","name":{"kind":"Name","value":"assignmentId"}}},{"kind":"Argument","name":{"kind":"Name","value":"course_session_id"},"value":{"kind":"Variable","name":{"kind":"Name","value":"courseSessionId"}}},{"kind":"Argument","name":{"kind":"Name","value":"assignment_user_id"},"value":{"kind":"Variable","name":{"kind":"Name","value":"assignmentUserId"}}},{"kind":"Argument","name":{"kind":"Name","value":"learning_content_page_id"},"value":{"kind":"Variable","name":{"kind":"Name","value":"learningContentId"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"completion_status"}},{"kind":"Field","name":{"kind":"Name","value":"submitted_at"}},{"kind":"Field","name":{"kind":"Name","value":"evaluation_submitted_at"}},{"kind":"Field","name":{"kind":"Name","value":"evaluation_user"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}}]}},{"kind":"Field","name":{"kind":"Name","value":"assignment_user"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}}]}},{"kind":"Field","name":{"kind":"Name","value":"evaluation_points"}},{"kind":"Field","name":{"kind":"Name","value":"evaluation_max_points"}},{"kind":"Field","name":{"kind":"Name","value":"evaluation_passed"}},{"kind":"Field","name":{"kind":"Name","value":"edoniq_extended_time_flag"}},{"kind":"Field","name":{"kind":"Name","value":"completion_data"}},{"kind":"Field","name":{"kind":"Name","value":"task_completion_data"}}]}}]}},{"kind":"FragmentDefinition","name":{"kind":"Name","value":"CoursePageFields"},"typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"CoursePageInterface"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"title"}},{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"slug"}},{"kind":"Field","name":{"kind":"Name","value":"content_type"}},{"kind":"Field","name":{"kind":"Name","value":"frontend_url"}}]}}]} as unknown as DocumentNode; -export const CourseQueryDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"query","name":{"kind":"Name","value":"courseQuery"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"courseId"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"ID"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"course"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"id"},"value":{"kind":"Variable","name":{"kind":"Name","value":"courseId"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"slug"}},{"kind":"Field","name":{"kind":"Name","value":"title"}},{"kind":"Field","name":{"kind":"Name","value":"category_name"}},{"kind":"Field","name":{"kind":"Name","value":"learning_path"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}}]}}]}}]}}]} as unknown as DocumentNode; -export const CompetenceCertificateQueryDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"query","name":{"kind":"Name","value":"competenceCertificateQuery"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"courseSlug"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"courseSessionId"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"ID"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"competence_certificate_list"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"course_slug"},"value":{"kind":"Variable","name":{"kind":"Name","value":"courseSlug"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"FragmentSpread","name":{"kind":"Name","value":"CoursePageFields"}},{"kind":"Field","name":{"kind":"Name","value":"competence_certificates"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"FragmentSpread","name":{"kind":"Name","value":"CoursePageFields"}},{"kind":"Field","name":{"kind":"Name","value":"assignments"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"FragmentSpread","name":{"kind":"Name","value":"CoursePageFields"}},{"kind":"Field","name":{"kind":"Name","value":"assignment_type"}},{"kind":"Field","name":{"kind":"Name","value":"max_points"}},{"kind":"Field","name":{"kind":"Name","value":"completion"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"course_session_id"},"value":{"kind":"Variable","name":{"kind":"Name","value":"courseSessionId"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"completion_status"}},{"kind":"Field","name":{"kind":"Name","value":"submitted_at"}},{"kind":"Field","name":{"kind":"Name","value":"evaluation_points"}},{"kind":"Field","name":{"kind":"Name","value":"evaluation_max_points"}},{"kind":"Field","name":{"kind":"Name","value":"evaluation_passed"}}]}},{"kind":"Field","name":{"kind":"Name","value":"learning_content"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"title"}},{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"slug"}},{"kind":"Field","name":{"kind":"Name","value":"content_type"}},{"kind":"Field","name":{"kind":"Name","value":"frontend_url"}},{"kind":"Field","name":{"kind":"Name","value":"circle"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"FragmentSpread","name":{"kind":"Name","value":"CoursePageFields"}}]}}]}}]}}]}}]}}]}},{"kind":"FragmentDefinition","name":{"kind":"Name","value":"CoursePageFields"},"typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"CoursePageInterface"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"title"}},{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"slug"}},{"kind":"Field","name":{"kind":"Name","value":"content_type"}},{"kind":"Field","name":{"kind":"Name","value":"frontend_url"}}]}}]} as unknown as DocumentNode; +export const CompetenceCertificateQueryDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"query","name":{"kind":"Name","value":"competenceCertificateQuery"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"courseSlug"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"courseSessionId"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"ID"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"competence_certificate_list"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"course_slug"},"value":{"kind":"Variable","name":{"kind":"Name","value":"courseSlug"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"FragmentSpread","name":{"kind":"Name","value":"CoursePageFields"}},{"kind":"Field","name":{"kind":"Name","value":"competence_certificates"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"FragmentSpread","name":{"kind":"Name","value":"CoursePageFields"}},{"kind":"Field","name":{"kind":"Name","value":"assignments"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"FragmentSpread","name":{"kind":"Name","value":"CoursePageFields"}},{"kind":"Field","name":{"kind":"Name","value":"assignment_type"}},{"kind":"Field","name":{"kind":"Name","value":"max_points"}},{"kind":"Field","name":{"kind":"Name","value":"completion"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"course_session_id"},"value":{"kind":"Variable","name":{"kind":"Name","value":"courseSessionId"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"completion_status"}},{"kind":"Field","name":{"kind":"Name","value":"submitted_at"}},{"kind":"Field","name":{"kind":"Name","value":"evaluation_points"}},{"kind":"Field","name":{"kind":"Name","value":"evaluation_max_points"}},{"kind":"Field","name":{"kind":"Name","value":"evaluation_passed"}}]}},{"kind":"Field","name":{"kind":"Name","value":"learning_content"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"FragmentSpread","name":{"kind":"Name","value":"CoursePageFields"}},{"kind":"Field","name":{"kind":"Name","value":"circle"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"title"}},{"kind":"Field","name":{"kind":"Name","value":"slug"}}]}}]}}]}}]}}]}}]}},{"kind":"FragmentDefinition","name":{"kind":"Name","value":"CoursePageFields"},"typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"CoursePageInterface"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"title"}},{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"slug"}},{"kind":"Field","name":{"kind":"Name","value":"content_type"}},{"kind":"Field","name":{"kind":"Name","value":"frontend_url"}}]}}]} as unknown as DocumentNode; export const CourseSessionDetailDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"query","name":{"kind":"Name","value":"courseSessionDetail"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"courseSessionId"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"ID"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"course_session"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"id"},"value":{"kind":"Variable","name":{"kind":"Name","value":"courseSessionId"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"title"}},{"kind":"Field","name":{"kind":"Name","value":"course"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"title"}},{"kind":"Field","name":{"kind":"Name","value":"slug"}}]}},{"kind":"Field","name":{"kind":"Name","value":"users"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"user_id"}},{"kind":"Field","name":{"kind":"Name","value":"first_name"}},{"kind":"Field","name":{"kind":"Name","value":"last_name"}},{"kind":"Field","name":{"kind":"Name","value":"email"}},{"kind":"Field","name":{"kind":"Name","value":"avatar_url"}},{"kind":"Field","name":{"kind":"Name","value":"role"}},{"kind":"Field","name":{"kind":"Name","value":"circles"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"title"}},{"kind":"Field","name":{"kind":"Name","value":"slug"}}]}}]}},{"kind":"Field","name":{"kind":"Name","value":"attendance_courses"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"location"}},{"kind":"Field","name":{"kind":"Name","value":"trainer"}},{"kind":"Field","name":{"kind":"Name","value":"due_date"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"start"}},{"kind":"Field","name":{"kind":"Name","value":"end"}}]}},{"kind":"Field","name":{"kind":"Name","value":"learning_content_id"}},{"kind":"Field","name":{"kind":"Name","value":"learning_content"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"title"}},{"kind":"Field","name":{"kind":"Name","value":"circle"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"title"}},{"kind":"Field","name":{"kind":"Name","value":"slug"}}]}}]}}]}},{"kind":"Field","name":{"kind":"Name","value":"assignments"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"submission_deadline"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"start"}}]}},{"kind":"Field","name":{"kind":"Name","value":"evaluation_deadline"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"start"}}]}},{"kind":"Field","name":{"kind":"Name","value":"learning_content"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"title"}},{"kind":"Field","name":{"kind":"Name","value":"content_assignment"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"title"}},{"kind":"Field","name":{"kind":"Name","value":"assignment_type"}}]}}]}}]}},{"kind":"Field","name":{"kind":"Name","value":"edoniq_tests"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"deadline"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"start"}},{"kind":"Field","name":{"kind":"Name","value":"end"}}]}},{"kind":"Field","name":{"kind":"Name","value":"learning_content"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"title"}},{"kind":"Field","name":{"kind":"Name","value":"content_assignment"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"title"}},{"kind":"Field","name":{"kind":"Name","value":"assignment_type"}}]}}]}}]}}]}}]}}]} as unknown as DocumentNode; +export const CourseQueryDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"query","name":{"kind":"Name","value":"courseQuery"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"slug"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"course"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"slug"},"value":{"kind":"Variable","name":{"kind":"Name","value":"slug"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"title"}},{"kind":"Field","name":{"kind":"Name","value":"slug"}},{"kind":"Field","name":{"kind":"Name","value":"category_name"}},{"kind":"Field","name":{"kind":"Name","value":"action_competences"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"competence_id"}},{"kind":"FragmentSpread","name":{"kind":"Name","value":"CoursePageFields"}},{"kind":"Field","name":{"kind":"Name","value":"performance_criteria"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"competence_id"}},{"kind":"Field","name":{"kind":"Name","value":"learning_unit"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"slug"}},{"kind":"Field","name":{"kind":"Name","value":"evaluate_url"}}]}},{"kind":"FragmentSpread","name":{"kind":"Name","value":"CoursePageFields"}}]}}]}},{"kind":"Field","name":{"kind":"Name","value":"learning_path"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"FragmentSpread","name":{"kind":"Name","value":"CoursePageFields"}},{"kind":"Field","name":{"kind":"Name","value":"topics"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"is_visible"}},{"kind":"FragmentSpread","name":{"kind":"Name","value":"CoursePageFields"}},{"kind":"Field","name":{"kind":"Name","value":"circles"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"description"}},{"kind":"Field","name":{"kind":"Name","value":"goals"}},{"kind":"FragmentSpread","name":{"kind":"Name","value":"CoursePageFields"}},{"kind":"Field","name":{"kind":"Name","value":"learning_sequences"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"icon"}},{"kind":"FragmentSpread","name":{"kind":"Name","value":"CoursePageFields"}},{"kind":"Field","name":{"kind":"Name","value":"learning_units"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"evaluate_url"}},{"kind":"FragmentSpread","name":{"kind":"Name","value":"CoursePageFields"}},{"kind":"Field","name":{"kind":"Name","value":"performance_criteria"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"FragmentSpread","name":{"kind":"Name","value":"CoursePageFields"}}]}},{"kind":"Field","name":{"kind":"Name","value":"learning_contents"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"can_user_self_toggle_course_completion"}},{"kind":"Field","name":{"kind":"Name","value":"content_url"}},{"kind":"Field","name":{"kind":"Name","value":"minutes"}},{"kind":"Field","name":{"kind":"Name","value":"description"}},{"kind":"FragmentSpread","name":{"kind":"Name","value":"CoursePageFields"}},{"kind":"InlineFragment","typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"LearningContentAssignmentObjectType"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"assignment_type"}},{"kind":"Field","name":{"kind":"Name","value":"content_assignment"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}}]}},{"kind":"Field","name":{"kind":"Name","value":"competence_certificate"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"FragmentSpread","name":{"kind":"Name","value":"CoursePageFields"}}]}}]}},{"kind":"InlineFragment","typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"LearningContentEdoniqTestObjectType"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"checkbox_text"}},{"kind":"Field","name":{"kind":"Name","value":"has_extended_time_test"}},{"kind":"Field","name":{"kind":"Name","value":"content_assignment"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}}]}},{"kind":"Field","name":{"kind":"Name","value":"competence_certificate"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"FragmentSpread","name":{"kind":"Name","value":"CoursePageFields"}}]}}]}},{"kind":"InlineFragment","typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"LearningContentRichTextObjectType"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"text"}}]}}]}}]}}]}}]}}]}}]}}]}}]}},{"kind":"FragmentDefinition","name":{"kind":"Name","value":"CoursePageFields"},"typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"CoursePageInterface"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"title"}},{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"slug"}},{"kind":"Field","name":{"kind":"Name","value":"content_type"}},{"kind":"Field","name":{"kind":"Name","value":"frontend_url"}}]}}]} as unknown as DocumentNode; export const SendFeedbackMutationDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"mutation","name":{"kind":"Name","value":"SendFeedbackMutation"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"courseSessionId"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"ID"}}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"learningContentId"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"ID"}}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"data"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"GenericScalar"}}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"submitted"}},"type":{"kind":"NamedType","name":{"kind":"Name","value":"Boolean"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"send_feedback"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"course_session_id"},"value":{"kind":"Variable","name":{"kind":"Name","value":"courseSessionId"}}},{"kind":"Argument","name":{"kind":"Name","value":"learning_content_page_id"},"value":{"kind":"Variable","name":{"kind":"Name","value":"learningContentId"}}},{"kind":"Argument","name":{"kind":"Name","value":"data"},"value":{"kind":"Variable","name":{"kind":"Name","value":"data"}}},{"kind":"Argument","name":{"kind":"Name","value":"submitted"},"value":{"kind":"Variable","name":{"kind":"Name","value":"submitted"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"feedback_response"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"data"}},{"kind":"Field","name":{"kind":"Name","value":"submitted"}}]}},{"kind":"Field","name":{"kind":"Name","value":"errors"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"field"}},{"kind":"Field","name":{"kind":"Name","value":"messages"}}]}}]}}]}}]} as unknown as DocumentNode; \ No newline at end of file diff --git a/client/src/gql/schema.graphql b/client/src/gql/schema.graphql index 8120f07c..d443746f 100644 --- a/client/src/gql/schema.graphql +++ b/client/src/gql/schema.graphql @@ -1,6 +1,8 @@ type Query { learning_path(id: ID, slug: String, course_id: ID, course_slug: String): LearningPathObjectType - circle(id: ID, slug: String): CircleObjectType + course_session_attendance_course(id: ID!, assignment_user_id: ID): CourseSessionAttendanceCourseObjectType + course(id: ID, slug: String): CourseObjectType + course_session(id: ID): CourseSessionObjectType learning_content_media_library: LearningContentMediaLibraryObjectType learning_content_assignment: LearningContentAssignmentObjectType learning_content_attendance_course: LearningContentAttendanceCourseObjectType @@ -11,9 +13,6 @@ type Query { learning_content_test: LearningContentEdoniqTestObjectType learning_content_video: LearningContentVideoObjectType learning_content_document_list: LearningContentDocumentListObjectType - course_session_attendance_course(id: ID!, assignment_user_id: ID): CourseSessionAttendanceCourseObjectType - course(id: ID): CourseObjectType - course_session(id: ID): CourseSessionObjectType competence_certificate(id: ID, slug: String): CompetenceCertificateObjectType competence_certificate_list(id: ID, slug: String, course_id: ID, course_slug: String): CompetenceCertificateListObjectType assignment(id: ID, slug: String): AssignmentObjectType @@ -21,326 +20,143 @@ type Query { } type LearningPathObjectType implements CoursePageInterface { - id: ID - path: String! - depth: Int! - numchild: Int! - translation_key: String - live: Boolean - has_unpublished_changes: Boolean! - first_published_at: DateTime - last_published_at: DateTime - go_live_at: DateTime - expire_at: DateTime - expired: Boolean! - locked: Boolean! - locked_at: DateTime - locked_by: UserType - title: String - draft_title: String! - slug: String - content_type: String - url_path: String! - owner: UserType - - """ - Der Titel der Seite, dargestellt in Suchmaschinen-Ergebnissen als die verlinkte Überschrift. - """ - seo_title: String! - - """ - Ob ein Link zu dieser Seite in automatisch generierten Menüs auftaucht. - """ - show_in_menus: Boolean! - - """ - Die informative Beschreibung, dargestellt in Suchmaschinen-Ergebnissen unter der Überschrift. - """ - search_description: String! - latest_revision_created_at: DateTime - frontend_url: String - circle: CircleObjectType + id: ID! + title: String! + slug: String! + content_type: String! + live: Boolean! + translation_key: String! + frontend_url: String! course: CourseObjectType - topics: [TopicObjectType] + topics: [TopicObjectType!]! } interface CoursePageInterface { - id: ID - title: String - slug: String - content_type: String - live: Boolean - translation_key: String - frontend_url: String - circle: CircleObjectType + id: ID! + title: String! + slug: String! + content_type: String! + live: Boolean! + translation_key: String! + frontend_url: String! course: CourseObjectType } -type CircleObjectType implements CoursePageInterface { - description: String! - goals: String! - id: ID - title: String - slug: String - content_type: String - live: Boolean - translation_key: String - frontend_url: String - circle: CircleObjectType - course: CourseObjectType - learning_sequences: [LearningSequenceObjectType] -} - type CourseObjectType { id: ID! title: String! category_name: String! slug: String! - learning_path: LearningPathObjectType + learning_path: LearningPathObjectType! + action_competences: [ActionCompetenceObjectType!]! } -type LearningSequenceObjectType implements CoursePageInterface { - icon: String! - id: ID - title: String - slug: String - content_type: String - live: Boolean - translation_key: String - frontend_url: String - circle: CircleObjectType +type ActionCompetenceObjectType implements CoursePageInterface { + competence_id: String! + id: ID! + title: String! + slug: String! + content_type: String! + live: Boolean! + translation_key: String! + frontend_url: String! course: CourseObjectType - learning_units: [LearningUnitObjectType] + performance_criteria: [PerformanceCriteriaObjectType!]! +} + +type PerformanceCriteriaObjectType implements CoursePageInterface { + competence_id: String! + id: ID! + title: String! + slug: String! + content_type: String! + live: Boolean! + translation_key: String! + frontend_url: String! + course: CourseObjectType + learning_unit: LearningUnitObjectType } type LearningUnitObjectType implements CoursePageInterface { - id: ID - title: String - slug: String - content_type: String - live: Boolean - translation_key: String - frontend_url: String - circle: CircleObjectType + title_hidden: Boolean! + id: ID! + title: String! + slug: String! + content_type: String! + live: Boolean! + translation_key: String! + frontend_url: String! course: CourseObjectType - learning_contents: [LearningContentInterface] + learning_contents: [LearningContentInterface!]! + performance_criteria: [PerformanceCriteriaObjectType!]! + evaluate_url: String! } interface LearningContentInterface { - id: ID - title: String - slug: String - content_type: String - live: Boolean - translation_key: String - frontend_url: String - circle: CircleObjectType + id: ID! + title: String! + slug: String! + content_type: String! + live: Boolean! + translation_key: String! + frontend_url: String! course: CourseObjectType minutes: Int - description: String - content: String + description: String! + content_url: String! + can_user_self_toggle_course_completion: Boolean! + circle: CircleLightObjectType } -""" -The `DateTime` scalar type represents a DateTime -value as specified by -[iso8601](https://en.wikipedia.org/wiki/ISO_8601). -""" -scalar DateTime - -type UserType { - """ - Erforderlich. 150 Zeichen oder weniger. Nur Buchstaben, Ziffern und @/./+/-/_. - """ - username: String! - first_name: String! - last_name: String! - id: UUID! - avatar_url: String! - email: String! - language: CoreUserLanguageChoices! -} - -""" -Leverages the internal Python implementation of UUID (uuid.UUID) to provide native UUID objects -in fields, resolvers and input. -""" -scalar UUID - -"""An enumeration.""" -enum CoreUserLanguageChoices { - """Deutsch""" - DE - - """Français""" - FR - - """Italiano""" - IT +type CircleLightObjectType { + id: ID! + title: String! + slug: String! } type TopicObjectType implements CoursePageInterface { is_visible: Boolean! - id: ID - title: String - slug: String - content_type: String - live: Boolean - translation_key: String - frontend_url: String - circle: CircleObjectType - course: CourseObjectType - circles: [CircleObjectType] -} - -type LearningContentMediaLibraryObjectType implements LearningContentInterface { - id: ID - title: String - slug: String - content_type: String - live: Boolean - translation_key: String - frontend_url: String - circle: CircleObjectType - course: CourseObjectType - minutes: Int - description: String - content: String -} - -type LearningContentAssignmentObjectType implements LearningContentInterface { - content_assignment: AssignmentObjectType! - assignment_type: LearnpathLearningContentAssignmentAssignmentTypeChoices! - id: ID - title: String - slug: String - content_type: String - live: Boolean - translation_key: String - frontend_url: String - circle: CircleObjectType - course: CourseObjectType - minutes: Int - description: String - content: String -} - -type AssignmentObjectType implements CoursePageInterface { - assignment_type: AssignmentAssignmentAssignmentTypeChoices! - - """ - Muss der Auftrag durch eine Expertin oder einen Experten beurteilt werden? - """ - needs_expert_evaluation: Boolean! - competence_certificate: CompetenceCertificateObjectType - - """Erläuterung der Ausgangslage""" - intro_text: String! - - """Zeitaufwand als Text""" - effort_required: String! - - """Beschreibung der Bewertung""" - evaluation_description: String! - - """URL zum Beurteilungsinstrument""" - evaluation_document_url: String! - id: ID - title: String - slug: String - content_type: String - live: Boolean - translation_key: String - frontend_url: String - circle: CircleObjectType - course: CourseObjectType - tasks: JSONStreamField - evaluation_tasks: JSONStreamField - performance_objectives: JSONStreamField - max_points: Int - learning_content: LearningContentInterface - completion(course_session_id: ID!, learning_content_page_id: ID, assignment_user_id: UUID): AssignmentCompletionObjectType -} - -"""An enumeration.""" -enum AssignmentAssignmentAssignmentTypeChoices { - """CASEWORK""" - CASEWORK - - """PREP_ASSIGNMENT""" - PREP_ASSIGNMENT - - """REFLECTION""" - REFLECTION - - """CONDITION_ACCEPTANCE""" - CONDITION_ACCEPTANCE - - """EDONIQ_TEST""" - EDONIQ_TEST -} - -type CompetenceCertificateObjectType implements CoursePageInterface { - id: ID - title: String - slug: String - content_type: String - live: Boolean - translation_key: String - frontend_url: String - circle: CircleObjectType - course: CourseObjectType - assignments: [AssignmentObjectType] -} - -scalar JSONStreamField - -type AssignmentCompletionObjectType { - id: UUID! - created_at: DateTime! - updated_at: DateTime! - submitted_at: DateTime - evaluation_submitted_at: DateTime - evaluation_user: UserType - evaluation_points: Float - evaluation_max_points: Float - evaluation_passed: Boolean - edoniq_extended_time_flag: Boolean! - assignment_user: UserType! - assignment: AssignmentObjectType! - course_session: CourseSessionObjectType! - completion_status: AssignmentAssignmentCompletionCompletionStatusChoices! - completion_data: GenericScalar - additional_json_data: JSONString! - task_completion_data: GenericScalar - learning_content_page_id: ID -} - -type CourseSessionObjectType { id: ID! - created_at: DateTime! - updated_at: DateTime! - course: CourseObjectType! title: String! - start_date: Date - end_date: Date - attendance_courses: [CourseSessionAttendanceCourseObjectType] - assignments: [CourseSessionAssignmentObjectType] - edoniq_tests: [CourseSessionEdoniqTestObjectType] - documents: [CircleDocumentObjectType] - users: [CourseSessionUserObjectsType] + slug: String! + content_type: String! + live: Boolean! + translation_key: String! + frontend_url: String! + course: CourseObjectType + circles: [CircleObjectType!]! } -""" -The `Date` scalar type represents a Date -value as specified by -[iso8601](https://en.wikipedia.org/wiki/ISO_8601). -""" -scalar Date +type CircleObjectType implements CoursePageInterface { + description: String! + goals: String! + id: ID! + title: String! + slug: String! + content_type: String! + live: Boolean! + translation_key: String! + frontend_url: String! + course: CourseObjectType + learning_sequences: [LearningSequenceObjectType!]! +} + +type LearningSequenceObjectType implements CoursePageInterface { + icon: String! + id: ID! + title: String! + slug: String! + content_type: String! + live: Boolean! + translation_key: String! + frontend_url: String! + course: CourseObjectType + learning_units: [LearningUnitObjectType!]! +} type CourseSessionAttendanceCourseObjectType { id: ID! - learning_content: LearningContentAttendanceCourseObjectType + learning_content: LearningContentAttendanceCourseObjectType! due_date: DueDateObjectType location: String! trainer: String! @@ -349,19 +165,20 @@ type CourseSessionAttendanceCourseObjectType { attendance_user_list: [AttendanceUserObjectType] } -type LearningContentAttendanceCourseObjectType implements LearningContentInterface { - id: ID - title: String - slug: String - content_type: String - live: Boolean - translation_key: String - frontend_url: String - circle: CircleObjectType +type LearningContentAttendanceCourseObjectType implements CoursePageInterface & LearningContentInterface { + id: ID! + title: String! + slug: String! + content_type: String! + live: Boolean! + translation_key: String! + frontend_url: String! course: CourseObjectType minutes: Int - description: String - content: String + description: String! + content_url: String! + can_user_self_toggle_course_completion: Boolean! + circle: CircleLightObjectType } type DueDateObjectType { @@ -397,77 +214,180 @@ type DueDateObjectType { course_session: CourseSessionObjectType! } -type AttendanceUserObjectType { - user_id: UUID! - status: AttendanceUserStatus! - first_name: String - last_name: String - email: String +""" +The `DateTime` scalar type represents a DateTime +value as specified by +[iso8601](https://en.wikipedia.org/wiki/ISO_8601). +""" +scalar DateTime + +type CourseSessionObjectType { + id: ID! + created_at: DateTime! + updated_at: DateTime! + course: CourseObjectType! + title: String! + start_date: Date + end_date: Date + attendance_courses: [CourseSessionAttendanceCourseObjectType!]! + assignments: [CourseSessionAssignmentObjectType!]! + edoniq_tests: [CourseSessionEdoniqTestObjectType!]! + users: [CourseSessionUserObjectsType!]! } -"""An enumeration.""" -enum AttendanceUserStatus { - PRESENT - ABSENT -} +""" +The `Date` scalar type represents a Date +value as specified by +[iso8601](https://en.wikipedia.org/wiki/ISO_8601). +""" +scalar Date type CourseSessionAssignmentObjectType { id: ID! - learning_content: LearningContentAssignmentObjectType + learning_content: LearningContentAssignmentObjectType! submission_deadline: DueDateObjectType evaluation_deadline: DueDateObjectType - course_session_id: ID - learning_content_id: ID + course_session_id: ID! + learning_content_id: ID! } -type CourseSessionEdoniqTestObjectType { +type LearningContentAssignmentObjectType implements CoursePageInterface & LearningContentInterface { + content_assignment: AssignmentObjectType! + assignment_type: LearnpathLearningContentAssignmentAssignmentTypeChoices! id: ID! - learning_content: LearningContentEdoniqTestObjectType - deadline: DueDateObjectType - course_session_id: ID - learning_content_id: ID -} - -type LearningContentEdoniqTestObjectType implements LearningContentInterface { - content_assignment: AssignmentObjectType - id: ID - title: String - slug: String - content_type: String - live: Boolean - translation_key: String - frontend_url: String - circle: CircleObjectType + title: String! + slug: String! + content_type: String! + live: Boolean! + translation_key: String! + frontend_url: String! course: CourseObjectType minutes: Int - description: String - content: String + description: String! + content_url: String! + can_user_self_toggle_course_completion: Boolean! + circle: CircleLightObjectType + competence_certificate: CompetenceCertificateObjectType } -type CircleDocumentObjectType { +type AssignmentObjectType implements CoursePageInterface { + assignment_type: AssignmentAssignmentAssignmentTypeChoices! + + """ + Muss der Auftrag durch eine Expertin oder einen Experten beurteilt werden? + """ + needs_expert_evaluation: Boolean! + competence_certificate: CompetenceCertificateObjectType + + """Erläuterung der Ausgangslage""" + intro_text: String! + + """Zeitaufwand als Text""" + effort_required: String! + + """Beschreibung der Bewertung""" + evaluation_description: String! + + """URL zum Beurteilungsinstrument""" + evaluation_document_url: String! + id: ID! + title: String! + slug: String! + content_type: String! + live: Boolean! + translation_key: String! + frontend_url: String! + course: CourseObjectType + tasks: JSONStreamField + evaluation_tasks: JSONStreamField + performance_objectives: JSONStreamField + max_points: Int + learning_content: LearningContentInterface + completion(course_session_id: ID!, learning_content_page_id: ID, assignment_user_id: UUID): AssignmentCompletionObjectType +} + +"""An enumeration.""" +enum AssignmentAssignmentAssignmentTypeChoices { + """CASEWORK""" + CASEWORK + + """PREP_ASSIGNMENT""" + PREP_ASSIGNMENT + + """REFLECTION""" + REFLECTION + + """CONDITION_ACCEPTANCE""" + CONDITION_ACCEPTANCE + + """EDONIQ_TEST""" + EDONIQ_TEST +} + +type CompetenceCertificateObjectType implements CoursePageInterface { + id: ID! + title: String! + slug: String! + content_type: String! + live: Boolean! + translation_key: String! + frontend_url: String! + course: CourseObjectType + assignments: [AssignmentObjectType!]! +} + +scalar JSONStreamField + +type AssignmentCompletionObjectType { id: UUID! - name: String! + created_at: DateTime! + updated_at: DateTime! + submitted_at: DateTime + evaluation_submitted_at: DateTime + evaluation_user: UserObjectType + evaluation_points: Float + evaluation_max_points: Float + evaluation_passed: Boolean + edoniq_extended_time_flag: Boolean! + assignment_user: UserObjectType! + assignment: AssignmentObjectType! course_session: CourseSessionObjectType! - learning_sequence: LearningSequenceObjectType! - file_name: String - url: String + completion_status: AssignmentAssignmentCompletionCompletionStatusChoices! + completion_data: GenericScalar + additional_json_data: JSONString! + task_completion_data: GenericScalar + learning_content_page_id: ID } -type CourseSessionUserObjectsType { +""" +Leverages the internal Python implementation of UUID (uuid.UUID) to provide native UUID objects +in fields, resolvers and input. +""" +scalar UUID + +type UserObjectType { + """ + Erforderlich. 150 Zeichen oder weniger. Nur Buchstaben, Ziffern und @/./+/-/_. + """ + username: String! + first_name: String! + last_name: String! id: UUID! - role: String - user_id: UUID - first_name: String - last_name: String - email: String - avatar_url: String - circles: [CourseSessionUserExpertCircleType] + avatar_url: String! + email: String! + language: CoreUserLanguageChoices! } -type CourseSessionUserExpertCircleType { - id: ID - title: String - slug: String +"""An enumeration.""" +enum CoreUserLanguageChoices { + """Deutsch""" + DE + + """Français""" + FR + + """Italiano""" + IT } """An enumeration.""" @@ -518,138 +438,200 @@ enum LearnpathLearningContentAssignmentAssignmentTypeChoices { EDONIQ_TEST } -type LearningContentFeedbackObjectType implements LearningContentInterface { - id: ID - title: String - slug: String - content_type: String - live: Boolean - translation_key: String - frontend_url: String - circle: CircleObjectType - course: CourseObjectType - minutes: Int - description: String - content: String +type CourseSessionEdoniqTestObjectType { + id: ID! + learning_content: LearningContentEdoniqTestObjectType! + deadline: DueDateObjectType + course_session_id: ID! + learning_content_id: ID! } -type LearningContentLearningModuleObjectType implements LearningContentInterface { - id: ID - title: String - slug: String - content_type: String - live: Boolean - translation_key: String - frontend_url: String - circle: CircleObjectType +type LearningContentEdoniqTestObjectType implements CoursePageInterface & LearningContentInterface { + checkbox_text: String! + content_assignment: AssignmentObjectType! + id: ID! + title: String! + slug: String! + content_type: String! + live: Boolean! + translation_key: String! + frontend_url: String! course: CourseObjectType minutes: Int - description: String - content: String + description: String! + content_url: String! + can_user_self_toggle_course_completion: Boolean! + circle: CircleLightObjectType + competence_certificate: CompetenceCertificateObjectType + has_extended_time_test: Boolean! } -type LearningContentPlaceholderObjectType implements LearningContentInterface { - id: ID - title: String - slug: String - content_type: String - live: Boolean - translation_key: String - frontend_url: String - circle: CircleObjectType - course: CourseObjectType - minutes: Int - description: String - content: String +type CourseSessionUserObjectsType { + id: UUID! + role: CourseCourseSessionUserRoleChoices! + user_id: UUID! + first_name: String! + last_name: String! + email: String! + avatar_url: String! + circles: [CourseSessionUserExpertCircleType!]! } -type LearningContentRichTextObjectType implements LearningContentInterface { - id: ID - title: String - slug: String - content_type: String - live: Boolean - translation_key: String - frontend_url: String - circle: CircleObjectType - course: CourseObjectType - minutes: Int - description: String - content: String +"""An enumeration.""" +enum CourseCourseSessionUserRoleChoices { + """Teilnehmer""" + MEMBER + + """Experte/Trainer""" + EXPERT + + """Lernbegleitung""" + TUTOR } -type LearningContentVideoObjectType implements LearningContentInterface { - id: ID - title: String - slug: String - content_type: String - live: Boolean - translation_key: String - frontend_url: String - circle: CircleObjectType - course: CourseObjectType - minutes: Int - description: String - content: String +type CourseSessionUserExpertCircleType { + id: ID! + title: String! + slug: String! } -type LearningContentDocumentListObjectType implements LearningContentInterface { - id: ID - title: String - slug: String - content_type: String - live: Boolean - translation_key: String - frontend_url: String - circle: CircleObjectType +type AttendanceUserObjectType { + user_id: UUID! + status: AttendanceUserStatus! + first_name: String + last_name: String + email: String +} + +"""An enumeration.""" +enum AttendanceUserStatus { + PRESENT + ABSENT +} + +type LearningContentMediaLibraryObjectType implements CoursePageInterface & LearningContentInterface { + id: ID! + title: String! + slug: String! + content_type: String! + live: Boolean! + translation_key: String! + frontend_url: String! course: CourseObjectType minutes: Int - description: String - content: String + description: String! + content_url: String! + can_user_self_toggle_course_completion: Boolean! + circle: CircleLightObjectType +} + +type LearningContentFeedbackObjectType implements CoursePageInterface & LearningContentInterface { + id: ID! + title: String! + slug: String! + content_type: String! + live: Boolean! + translation_key: String! + frontend_url: String! + course: CourseObjectType + minutes: Int + description: String! + content_url: String! + can_user_self_toggle_course_completion: Boolean! + circle: CircleLightObjectType +} + +type LearningContentLearningModuleObjectType implements CoursePageInterface & LearningContentInterface { + id: ID! + title: String! + slug: String! + content_type: String! + live: Boolean! + translation_key: String! + frontend_url: String! + course: CourseObjectType + minutes: Int + description: String! + content_url: String! + can_user_self_toggle_course_completion: Boolean! + circle: CircleLightObjectType +} + +type LearningContentPlaceholderObjectType implements CoursePageInterface & LearningContentInterface { + id: ID! + title: String! + slug: String! + content_type: String! + live: Boolean! + translation_key: String! + frontend_url: String! + course: CourseObjectType + minutes: Int + description: String! + content_url: String! + can_user_self_toggle_course_completion: Boolean! + circle: CircleLightObjectType +} + +type LearningContentRichTextObjectType implements CoursePageInterface & LearningContentInterface { + text: String! + id: ID! + title: String! + slug: String! + content_type: String! + live: Boolean! + translation_key: String! + frontend_url: String! + course: CourseObjectType + minutes: Int + description: String! + content_url: String! + can_user_self_toggle_course_completion: Boolean! + circle: CircleLightObjectType +} + +type LearningContentVideoObjectType implements CoursePageInterface & LearningContentInterface { + id: ID! + title: String! + slug: String! + content_type: String! + live: Boolean! + translation_key: String! + frontend_url: String! + course: CourseObjectType + minutes: Int + description: String! + content_url: String! + can_user_self_toggle_course_completion: Boolean! + circle: CircleLightObjectType +} + +type LearningContentDocumentListObjectType implements CoursePageInterface & LearningContentInterface { + id: ID! + title: String! + slug: String! + content_type: String! + live: Boolean! + translation_key: String! + frontend_url: String! + course: CourseObjectType + minutes: Int + description: String! + content_url: String! + can_user_self_toggle_course_completion: Boolean! + circle: CircleLightObjectType } type CompetenceCertificateListObjectType implements CoursePageInterface { - id: ID - path: String! - depth: Int! - numchild: Int! - translation_key: String - live: Boolean - has_unpublished_changes: Boolean! - first_published_at: DateTime - last_published_at: DateTime - go_live_at: DateTime - expire_at: DateTime - expired: Boolean! - locked: Boolean! - locked_at: DateTime - locked_by: UserType - title: String - draft_title: String! - slug: String - content_type: String - url_path: String! - owner: UserType - - """ - Der Titel der Seite, dargestellt in Suchmaschinen-Ergebnissen als die verlinkte Überschrift. - """ - seo_title: String! - - """ - Ob ein Link zu dieser Seite in automatisch generierten Menüs auftaucht. - """ - show_in_menus: Boolean! - - """ - Die informative Beschreibung, dargestellt in Suchmaschinen-Ergebnissen unter der Überschrift. - """ - search_description: String! - latest_revision_created_at: DateTime - frontend_url: String - circle: CircleObjectType + id: ID! + title: String! + slug: String! + content_type: String! + live: Boolean! + translation_key: String! + frontend_url: String! course: CourseObjectType - competence_certificates: [CompetenceCertificateObjectType] + competence_certificates: [CompetenceCertificateObjectType!]! } type Mutation { diff --git a/client/src/gql/typenames.ts b/client/src/gql/typenames.ts index f48d2629..2302eac2 100644 --- a/client/src/gql/typenames.ts +++ b/client/src/gql/typenames.ts @@ -1,3 +1,4 @@ +export const ActionCompetenceObjectType = "ActionCompetenceObjectType"; export const AssignmentAssignmentAssignmentTypeChoices = "AssignmentAssignmentAssignmentTypeChoices"; export const AssignmentAssignmentCompletionCompletionStatusChoices = "AssignmentAssignmentCompletionCompletionStatusChoices"; export const AssignmentCompletionMutation = "AssignmentCompletionMutation"; @@ -9,11 +10,12 @@ export const AttendanceUserInputType = "AttendanceUserInputType"; export const AttendanceUserObjectType = "AttendanceUserObjectType"; export const AttendanceUserStatus = "AttendanceUserStatus"; export const Boolean = "Boolean"; -export const CircleDocumentObjectType = "CircleDocumentObjectType"; +export const CircleLightObjectType = "CircleLightObjectType"; export const CircleObjectType = "CircleObjectType"; export const CompetenceCertificateListObjectType = "CompetenceCertificateListObjectType"; export const CompetenceCertificateObjectType = "CompetenceCertificateObjectType"; export const CoreUserLanguageChoices = "CoreUserLanguageChoices"; +export const CourseCourseSessionUserRoleChoices = "CourseCourseSessionUserRoleChoices"; export const CourseObjectType = "CourseObjectType"; export const CoursePageInterface = "CoursePageInterface"; export const CourseSessionAssignmentObjectType = "CourseSessionAssignmentObjectType"; @@ -49,9 +51,10 @@ export const LearningSequenceObjectType = "LearningSequenceObjectType"; export const LearningUnitObjectType = "LearningUnitObjectType"; export const LearnpathLearningContentAssignmentAssignmentTypeChoices = "LearnpathLearningContentAssignmentAssignmentTypeChoices"; export const Mutation = "Mutation"; +export const PerformanceCriteriaObjectType = "PerformanceCriteriaObjectType"; export const Query = "Query"; export const SendFeedbackMutation = "SendFeedbackMutation"; export const String = "String"; export const TopicObjectType = "TopicObjectType"; export const UUID = "UUID"; -export const UserType = "UserType"; +export const UserObjectType = "UserObjectType"; diff --git a/client/src/graphql/client.ts b/client/src/graphql/client.ts index 67c2f5fb..2cfbd4aa 100644 --- a/client/src/graphql/client.ts +++ b/client/src/graphql/client.ts @@ -2,7 +2,7 @@ // @ts-ignore import { cacheExchange } from "@urql/exchange-graphcache"; import { Client, fetchExchange } from "@urql/vue"; -import schema from "../gql/minifiedSchema.json"; +import schema from "../gql/dist/minifiedSchema.json"; import { AssignmentCompletionMutation, AssignmentCompletionObjectType, diff --git a/client/src/graphql/queries.ts b/client/src/graphql/queries.ts index 91bfd7c7..d995e4f3 100644 --- a/client/src/graphql/queries.ts +++ b/client/src/graphql/queries.ts @@ -76,20 +76,6 @@ export const ASSIGNMENT_COMPLETION_QUERY = graphql(` } `); -export const COURSE_QUERY = graphql(` - query courseQuery($courseId: ID!) { - course(id: $courseId) { - id - slug - title - category_name - learning_path { - id - } - } - } -`); - export const COMPETENCE_NAVI_CERTIFICATE_QUERY = graphql(` query competenceCertificateQuery($courseSlug: String!, $courseSessionId: ID!) { competence_certificate_list(course_slug: $courseSlug) { @@ -109,13 +95,11 @@ export const COMPETENCE_NAVI_CERTIFICATE_QUERY = graphql(` evaluation_passed } learning_content { - title - id - slug - content_type - frontend_url + ...CoursePageFields circle { - ...CoursePageFields + id + title + slug } } } @@ -208,3 +192,79 @@ export const COURSE_SESSION_DETAIL_QUERY = graphql(` } } `); + +export const COURSE_QUERY = graphql(` + query courseQuery($slug: String!) { + course(slug: $slug) { + id + title + slug + category_name + action_competences { + competence_id + ...CoursePageFields + performance_criteria { + competence_id + learning_unit { + id + slug + evaluate_url + } + ...CoursePageFields + } + } + learning_path { + ...CoursePageFields + topics { + is_visible + ...CoursePageFields + circles { + description + goals + ...CoursePageFields + learning_sequences { + icon + ...CoursePageFields + learning_units { + evaluate_url + ...CoursePageFields + performance_criteria { + ...CoursePageFields + } + learning_contents { + can_user_self_toggle_course_completion + content_url + minutes + description + ...CoursePageFields + ... on LearningContentAssignmentObjectType { + assignment_type + content_assignment { + id + } + competence_certificate { + ...CoursePageFields + } + } + ... on LearningContentEdoniqTestObjectType { + checkbox_text + has_extended_time_test + content_assignment { + id + } + competence_certificate { + ...CoursePageFields + } + } + ... on LearningContentRichTextObjectType { + text + } + } + } + } + } + } + } + } + } +`); diff --git a/client/src/pages/AppointmentsPage.vue b/client/src/pages/AppointmentsPage.vue index 6d82d0ac..aafdc19c 100644 --- a/client/src/pages/AppointmentsPage.vue +++ b/client/src/pages/AppointmentsPage.vue @@ -1,17 +1,16 @@ @@ -46,7 +42,7 @@ const learningContentAssignment = computed(() => { diff --git a/client/src/pages/cockpit/attendanceCheckPage/AttendanceCheckPage.vue b/client/src/pages/cockpit/attendanceCheckPage/AttendanceCheckPage.vue index 7433a216..502c67b4 100644 --- a/client/src/pages/cockpit/attendanceCheckPage/AttendanceCheckPage.vue +++ b/client/src/pages/cockpit/attendanceCheckPage/AttendanceCheckPage.vue @@ -32,8 +32,8 @@ const presenceCoursesDropdownOptions = computed(() => { ({ id: attendanceCourse.id, name: `${t("Präsenzkurs")} ${ - attendanceCourse.learning_content.circle.title - } ${dayjs(attendanceCourse.due_date.start).format("DD.MM.YYYY")}`, + attendanceCourse.learning_content.circle?.title + } ${dayjs(attendanceCourse.due_date?.start).format("DD.MM.YYYY")}`, } as DropdownSelectable) ); }); diff --git a/client/src/pages/cockpit/cockpitPage/AssignmentSubmissionProgress.vue b/client/src/pages/cockpit/cockpitPage/AssignmentSubmissionProgress.vue index 66674d63..6f450b83 100644 --- a/client/src/pages/cockpit/cockpitPage/AssignmentSubmissionProgress.vue +++ b/client/src/pages/cockpit/cockpitPage/AssignmentSubmissionProgress.vue @@ -9,6 +9,7 @@ import type { } from "@/types"; import log from "loglevel"; import { onMounted, reactive } from "vue"; +import { stringifyParse } from "@/utils/utils"; const props = defineProps<{ courseSession: CourseSession; @@ -16,10 +17,7 @@ const props = defineProps<{ showTitle: boolean; }>(); -log.debug( - "AssignmentSubmissionProgress created", - props.learningContentAssignment.content_assignment_id -); +log.debug("AssignmentSubmissionProgress created", stringifyParse(props)); const state = reactive({ statusByUser: [] as { @@ -34,7 +32,7 @@ const state = reactive({ onMounted(async () => { const { assignmentSubmittedUsers, gradedUsers, total } = await loadAssignmentCompletionStatusData( - props.learningContentAssignment.content_assignment_id, + props.learningContentAssignment.content_assignment.id, props.courseSession.id, props.learningContentAssignment.id ); diff --git a/client/src/pages/cockpit/cockpitPage/CockpitPage.vue b/client/src/pages/cockpit/cockpitPage/CockpitPage.vue index f8b1188a..1f3aa6cc 100644 --- a/client/src/pages/cockpit/cockpitPage/CockpitPage.vue +++ b/client/src/pages/cockpit/cockpitPage/CockpitPage.vue @@ -1,16 +1,14 @@