diff --git a/client/src/composables.ts b/client/src/composables.ts index d22d32f3..7df1d12a 100644 --- a/client/src/composables.ts +++ b/client/src/composables.ts @@ -10,6 +10,7 @@ import { useCourseSessionsStore } from "@/stores/courseSessions"; import { useUserStore } from "@/stores/user"; import type { ActionCompetence, + Course, CourseCompletion, CourseCompletionStatus, CourseSession, @@ -148,6 +149,7 @@ export function flatCircles(learningPath: LearningPathType) { export function useLearningPath(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 @@ -155,6 +157,7 @@ export function useLearningPath(courseSlug: string) { .toPromise(); resultPromise.then((result) => { + 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; @@ -264,6 +267,7 @@ export function useLearningPath(courseSlug: string) { return { resultPromise, + course, learningPath, actionCompetences, circles, @@ -336,11 +340,11 @@ export function useLearningPathWithCompletion( } function calcNextLearningContent(completionData: CourseCompletion[]) { + const flatLearningContents = (courseResult.circles.value ?? []).flatMap((c) => { + return circleFlatLearningContents(c); + }); const lastCompleted = findLastCompletedLearningContent(completionData); if (lastCompleted) { - const flatLearningContents = (courseResult.circles.value ?? []).flatMap((c) => { - return circleFlatLearningContents(c); - }); const lastCompletedIndex = flatLearningContents.findIndex((lc) => { return lc.id === lastCompleted.id; }); @@ -349,6 +353,8 @@ export function useLearningPathWithCompletion( } else { nextLearningContent.value = undefined; } + } else { + nextLearningContent.value = flatLearningContents[0]; } } diff --git a/client/src/gql/gql.ts b/client/src/gql/gql.ts index 68c7f7a9..554937b8 100644 --- a/client/src/gql/gql.ts +++ b/client/src/gql/gql.ts @@ -20,7 +20,7 @@ const documents = { "\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 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 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 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, }; @@ -69,7 +69,7 @@ export function graphql(source: "\n query courseSessionDetail($courseSessionId: /** * 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 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 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"]; +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 71dec2c2..d2ac2e1c 100644 --- a/client/src/gql/graphql.ts +++ b/client/src/gql/graphql.ts @@ -916,7 +916,7 @@ export type CourseQueryQueryVariables = Exact<{ }>; -export type CourseQueryQuery = { __typename?: 'Query', course?: { __typename?: 'CourseObjectType', id: string, slug: string, category_name: string, action_competences: Array<( +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 } } @@ -995,5 +995,5 @@ export const AttendanceCheckQueryDocument = {"kind":"Document","definitions":[{" 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 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":"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 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/graphql/queries.ts b/client/src/graphql/queries.ts index 156e1827..d995e4f3 100644 --- a/client/src/graphql/queries.ts +++ b/client/src/graphql/queries.ts @@ -197,6 +197,7 @@ export const COURSE_QUERY = graphql(` query courseQuery($slug: String!) { course(slug: $slug) { id + title slug category_name action_competences { diff --git a/client/src/pages/cockpit/assignmentEvaluationPage/EvaluationSummary.vue b/client/src/pages/cockpit/assignmentEvaluationPage/EvaluationSummary.vue index 47f9d73e..e0de6449 100644 --- a/client/src/pages/cockpit/assignmentEvaluationPage/EvaluationSummary.vue +++ b/client/src/pages/cockpit/assignmentEvaluationPage/EvaluationSummary.vue @@ -113,7 +113,12 @@ const evaluationUser = computed(() => { -
+
{{ $t("a.Nicht Bestanden") }} diff --git a/client/src/pages/learningPath/learningContentPage/assignment/AssignmentSubmissionView.vue b/client/src/pages/learningPath/learningContentPage/assignment/AssignmentSubmissionView.vue index d2b6120b..f528d911 100644 --- a/client/src/pages/learningPath/learningContentPage/assignment/AssignmentSubmissionView.vue +++ b/client/src/pages/learningPath/learningContentPage/assignment/AssignmentSubmissionView.vue @@ -142,7 +142,7 @@ const onSubmit = async () => { data-cy="confirm-submit-person" @toggle="state.confirmPerson = !state.confirmPerson" > -
+
Notification icon diff --git a/client/src/pages/learningPath/learningPathPage/LearningPathPage.vue b/client/src/pages/learningPath/learningPathPage/LearningPathPage.vue index d215e353..643232a5 100644 --- a/client/src/pages/learningPath/learningPathPage/LearningPathPage.vue +++ b/client/src/pages/learningPath/learningPathPage/LearningPathPage.vue @@ -26,6 +26,7 @@ const selectedView = ref( const lpQueryResult = useLearningPathWithCompletion(props.courseSlug); const learningPath = computed(() => lpQueryResult.learningPath.value); +const course = computed(() => lpQueryResult.course.value); const circlesCount = computed(() => { return lpQueryResult.circles.value?.length ?? 0; @@ -59,7 +60,7 @@ const changeViewType = (viewType: ViewType) => { {{ $t("learningPathPage.welcomeBack") }}

- {{ learningPath?.title }} + {{ course?.title }}

diff --git a/client/src/services/__tests__/circle.spec.ts b/client/src/services/__tests__/circle.spec.ts deleted file mode 100644 index e051b983..00000000 --- a/client/src/services/__tests__/circle.spec.ts +++ /dev/null @@ -1,15 +0,0 @@ -import type { WagtailCircle } from "@/types"; -import { describe, it } from "vitest"; -import { OldCircle } from "../oldCircle"; -import data from "./learning_path_json.json"; - -describe("Circle.parseJson", () => { - it("can parse circle from api response", () => { - const cirleData = data.children.find( - (c) => c.slug === "test-lehrgang-lp-circle-fahrzeug" - ) as unknown as WagtailCircle; - const circle = OldCircle.fromJson(cirleData, undefined); - expect(circle.learningSequences.length).toBe(3); - expect(circle.flatLearningContents.length).toBe(9); - }); -}); diff --git a/client/src/services/__tests__/learningPath.spec.ts b/client/src/services/__tests__/learningPath.spec.ts deleted file mode 100644 index 060b63ea..00000000 --- a/client/src/services/__tests__/learningPath.spec.ts +++ /dev/null @@ -1,15 +0,0 @@ -import { describe, it } from "vitest"; -import { LearningPath } from "../learningPath"; -import data from "./learning_path_json.json"; - -describe("LearningPath.parseJson", () => { - it("can parse learning sequences from api response", () => { - const learningPath = LearningPath.fromJson(data, [], undefined); - - expect(learningPath.circles.length).toBe(2); - expect(learningPath.circles[0].title).toBe("Fahrzeug"); - expect(learningPath.circles[1].title).toBe("Reisen"); - - expect(learningPath.topics.length).toBe(2); - }); -}); diff --git a/client/src/services/__tests__/learning_path_json.json b/client/src/services/__tests__/learning_path_json.json deleted file mode 100644 index 22bf7daa..00000000 --- a/client/src/services/__tests__/learning_path_json.json +++ /dev/null @@ -1,447 +0,0 @@ -{ - "id": 10, - "title": "Test Lernpfad", - "slug": "test-lehrgang-lp", - "content_type": "learnpath.LearningPath", - "translation_key": "9cf4fea4-9d6f-4297-ab99-68a65bf07bb5", - "frontend_url": "/course/test-lehrgang/learn", - "children": [ - { - "id": 11, - "title": "Circle \u00dcK", - "slug": "test-lehrgang-lp-topic-circle-\u00fck", - "content_type": "learnpath.Topic", - "translation_key": "983f97f7-fd68-4678-860f-7a19bab0b94d", - "frontend_url": "", - "is_visible": false - }, - { - "id": 12, - "title": "Fahrzeug", - "slug": "test-lehrgang-lp-circle-fahrzeug", - "content_type": "learnpath.Circle", - "translation_key": "0286b096-2a55-4242-a277-ba15d478b79a", - "frontend_url": "/course/test-lehrgang/learn/fahrzeug", - "children": [ - { - "id": 13, - "title": "Vorbereitung", - "slug": "test-lehrgang-lp-circle-fahrzeug-ls-vorbereitung", - "content_type": "learnpath.LearningSequence", - "translation_key": "dbc0e05f-a899-4524-b021-39a97ac1c542", - "frontend_url": "/course/test-lehrgang/learn/fahrzeug#ls-vorbereitung", - "icon": "it-icon-ls-start" - }, - { - "id": 14, - "title": "Vorbereitung", - "slug": "test-lehrgang-lp-circle-fahrzeug-lu-vorbereitung", - "content_type": "learnpath.LearningUnit", - "translation_key": "626d656a-15d6-49ce-8b20-c035482802cd", - "frontend_url": "/course/test-lehrgang/learn/fahrzeug#lu-vorbereitung", - "evaluate_url": "/course/test-lehrgang/learn/fahrzeug/evaluate/vorbereitung", - "course_category": { - "id": 1, - "title": "Allgemein", - "general": true - }, - "children": [ - { - "id": 18, - "title": "Innerhalb des Handlungsfelds \u00abFahrzeug\u00bb bin ich f\u00e4hig, die Ziele und Pl\u00e4ne des Kunden zu ergr\u00fcnden (SOLL).", - "slug": "test-lehrgang-competence-crit-x11-allgemein", - "content_type": "competence.PerformanceCriteria", - "translation_key": "d49be54d-51e5-4bf4-9238-365006c3b95d", - "frontend_url": "", - "competence_id": "X1.1" - }, - { - "id": 19, - "title": "Innerhalb des Handlungsfelds \u00abFahrzeug\u00bb bin ich f\u00e4hig, die IST-Situation des Kunden mit der geeigneten Gespr\u00e4chs-/Fragetechnik zu erfassen.", - "slug": "test-lehrgang-competence-crit-x11-allgemein-1", - "content_type": "competence.PerformanceCriteria", - "translation_key": "2fb68d58-3ab7-4192-865c-1e67ab9bcd15", - "frontend_url": "", - "competence_id": "X1.1" - } - ] - }, - { - "id": 15, - "title": "Verschaffe dir einen \u00dcberblick", - "slug": "test-lehrgang-lp-circle-fahrzeug-lc-verschaffe-dir-einen-\u00fcberblick", - "content_type": "learnpath.LearningContentPlaceholder", - "translation_key": "47698ce1-0e4f-446d-a23d-8a9e9c906ff7", - "frontend_url": "/course/test-lehrgang/learn/fahrzeug/verschaffe-dir-einen-\u00fcberblick", - "minutes": 15, - "description": "Platzhalter", - "content_url": "" - }, - { - "id": 16, - "title": "Mediathek Fahrzeug", - "slug": "test-lehrgang-lp-circle-fahrzeug-lc-mediathek-fahrzeug", - "content_type": "learnpath.LearningContentMediaLibrary", - "translation_key": "34e79a3b-c1f9-49ff-b779-0149d614f02c", - "frontend_url": "/course/test-lehrgang/learn/fahrzeug/mediathek-fahrzeug", - "minutes": 15, - "description": "", - "content_url": "/media/\u00fcberbetriebliche-kurse-media/category/fahrzeug" - }, - { - "id": 17, - "title": "Vorbereitungsauftrag", - "slug": "test-lehrgang-lp-circle-fahrzeug-lc-vorbereitungsauftrag", - "content_type": "learnpath.LearningContentPlaceholder", - "translation_key": "8feca9cd-4937-4406-b44d-564f341e8bfe", - "frontend_url": "/course/test-lehrgang/learn/fahrzeug/vorbereitungsauftrag", - "minutes": 15, - "description": "Platzhalter", - "content_url": "" - }, - { - "id": 20, - "title": "Training", - "slug": "test-lehrgang-lp-circle-fahrzeug-ls-training", - "content_type": "learnpath.LearningSequence", - "translation_key": "b09f87c7-01fb-4967-98c1-894ac3144595", - "frontend_url": "/course/test-lehrgang/learn/fahrzeug#ls-training", - "icon": "it-icon-ls-apply" - }, - { - "id": 21, - "title": "Unterlagen", - "slug": "test-lehrgang-lp-circle-fahrzeug-lu-unterlagen", - "content_type": "learnpath.LearningUnit", - "translation_key": "772d5352-87fa-46a7-8470-368d59565d3a", - "frontend_url": "/course/test-lehrgang/learn/fahrzeug#lu-unterlagen", - "evaluate_url": "/course/test-lehrgang/learn/fahrzeug/evaluate/unterlagen", - "course_category": { - "id": 1, - "title": "Allgemein", - "general": true - }, - "children": [] - }, - { - "id": 22, - "title": "Unterlagen f\u00fcr den Unterricht", - "slug": "test-lehrgang-lp-circle-fahrzeug-lc-unterlagen-f\u00fcr-den-unterricht", - "content_type": "learnpath.LearningContentPlaceholder", - "translation_key": "ace9f1e8-5cb7-4b7c-b1c8-d43f2e4f7269", - "frontend_url": "/course/test-lehrgang/learn/fahrzeug/unterlagen-f\u00fcr-den-unterricht", - "minutes": 15, - "description": "Platzhalter", - "content_url": "" - }, - { - "id": 23, - "title": "Pr\u00e4senztag", - "slug": "test-lehrgang-lp-circle-fahrzeug-lu-pr\u00e4senztag", - "content_type": "learnpath.LearningUnit", - "translation_key": "18bc5d1d-ddcf-4e54-b58c-58f1e8833af2", - "frontend_url": "/course/test-lehrgang/learn/fahrzeug#lu-pr\u00e4senztag", - "evaluate_url": "/course/test-lehrgang/learn/fahrzeug/evaluate/pr\u00e4senztag", - "course_category": { - "id": 1, - "title": "Allgemein", - "general": true - }, - "children": [] - }, - { - "id": 24, - "title": "Pr\u00e4senztag Fahrzeug", - "slug": "test-lehrgang-lp-circle-fahrzeug-lc-pr\u00e4senztag-fahrzeug", - "content_type": "learnpath.LearningContentAttendanceCourse", - "translation_key": "2441afae-83ea-4fb5-a938-8db4352ed6c5", - "frontend_url": "/course/test-lehrgang/learn/fahrzeug/pr\u00e4senztag-fahrzeug", - "minutes": 15, - "description": "Platzhalter Beschreibung", - "content_url": "" - }, - { - "id": 25, - "title": "Kompetenznachweis", - "slug": "test-lehrgang-lp-circle-fahrzeug-lu-kompetenznachweis", - "content_type": "learnpath.LearningUnit", - "translation_key": "b115d4e0-f487-4d03-a7cf-08d90bb4813d", - "frontend_url": "/course/test-lehrgang/learn/fahrzeug#lu-kompetenznachweis", - "evaluate_url": "/course/test-lehrgang/learn/fahrzeug/evaluate/kompetenznachweis", - "course_category": { - "id": 1, - "title": "Allgemein", - "general": true - }, - "children": [] - }, - { - "id": 26, - "title": "Wissens- und Verst\u00e4ndnisfragen", - "slug": "test-lehrgang-lp-circle-fahrzeug-lc-wissens-und-verst\u00e4ndnisfragen", - "content_type": "learnpath.LearningContentPlaceholder", - "translation_key": "053c32bd-6174-444b-95fe-35ad2e15edf5", - "frontend_url": "/course/test-lehrgang/learn/fahrzeug/wissens-und-verst\u00e4ndnisfragen", - "minutes": 15, - "description": "Platzhalter", - "content_url": "" - }, - { - "id": 27, - "title": "Transfer", - "slug": "test-lehrgang-lp-circle-fahrzeug-ls-transfer", - "content_type": "learnpath.LearningSequence", - "translation_key": "58939dc7-dd19-4996-b4bf-aba348be092a", - "frontend_url": "/course/test-lehrgang/learn/fahrzeug#ls-transfer", - "icon": "it-icon-ls-end" - }, - { - "id": 28, - "title": "Transfer", - "slug": "test-lehrgang-lp-circle-fahrzeug-lu-transfer", - "content_type": "learnpath.LearningUnit", - "translation_key": "185568d3-9ba3-433d-9480-4f492d9d3235", - "frontend_url": "/course/test-lehrgang/learn/fahrzeug#lu-transfer", - "evaluate_url": "/course/test-lehrgang/learn/fahrzeug/evaluate/transfer", - "course_category": { - "id": 1, - "title": "Allgemein", - "general": true - }, - "children": [] - }, - { - "id": 29, - "title": "Reflexion", - "slug": "test-lehrgang-lp-circle-fahrzeug-lc-reflexion", - "content_type": "learnpath.LearningContentPlaceholder", - "translation_key": "c62d4cf6-2505-40f7-8764-41fa1ea0057c", - "frontend_url": "/course/test-lehrgang/learn/fahrzeug/reflexion", - "minutes": 15, - "description": "Platzhalter", - "content_url": "" - }, - { - "id": 30, - "title": "\u00dcberpr\u00fcfen einer Motorfahrzeug-Versicherungspolice", - "slug": "test-lehrgang-lp-circle-fahrzeug-lc-\u00fcberpr\u00fcfen-einer-motorfahrzeug-versicherungspolice", - "content_type": "learnpath.LearningContentAssignment", - "translation_key": "53cc2b76-ea59-47a2-a15a-ebf19897e9b1", - "frontend_url": "/course/test-lehrgang/learn/fahrzeug/\u00fcberpr\u00fcfen-einer-motorfahrzeug-versicherungspolice", - "minutes": 15, - "description": "", - "content_url": "", - "content_assignment_id": 9 - }, - { - "id": 31, - "title": "Feedback", - "slug": "test-lehrgang-lp-circle-fahrzeug-lc-feedback", - "content_type": "learnpath.LearningContentFeedback", - "translation_key": "d78bded2-a760-492c-9249-283230d98ce0", - "frontend_url": "/course/test-lehrgang/learn/fahrzeug/feedback", - "minutes": 15, - "description": "", - "content_url": "" - } - ], - "description": "In diesem Circle erf\u00e4hrst du wie der Lehrgang aufgebaut ist.\nZudem lernst du die wichtigsten Grundlagen,\ndamit du erfolgreich mit deinem Lernpfad (durch-)starten kannst.", - "goals": "\n

In diesem Circle erf\u00e4hrst du wie der Lehrgang aufgebaut ist. Zudem lernst du die wichtigsten Grundlagen,\n damit du erfolgreich mit deinem Lernpfad und in deinem Job (durch-)starten kannst.

\n

Du baust das Grundlagenwissen f\u00fcr die folgenden Themenfelder auf:

\n
    \n
  • Aufbau von myVBV und wie du dich im Lernpfad zurechtfindest
  • \n
  • Worauf die Ausbildung und die Zulassungspr\u00fcfung zum/zur Versicherungsvermittler/-in VBV basieren
  • \n
  • Organisation deiner Lernreise und deiner Zusammenarbeit mit deiner Lernbegleitung und einem\n Lernpartner/einer Lernpartnerin
  • \n
  • Tipps und Tricks zur Organisation eines erfolgreichen Arbeitsalltags
  • \n
  • Umgang mit den sozialen Medien und Datenschutz
  • \n
  • Basiswissen Versicherungswirtschaft
  • \n
  • Basiswissen Versicherungsrecht
  • \n
\n

Du arbeitest an folgenden Leistungskriterien aus dem Qualifikationsprofil:

\n

Arbeitsalltag/Lerneinheit: \u00abLucas Auftritt in den sozialen Medien und der Umgang mit sensiblen Daten\u00bb

\n

Ich bin f\u00e4hig, \u2026

\n
    \n
  • A3.1: \u2026 in Zusammenarbeit mit den IT-Spezialisten und der Marketingabteilung die Inhalte f\u00fcr den zu\n realisierenden Medienauftritt zielgruppengerecht festzulegen
  • \n
  • A3.2: \u2026 f\u00fcr die verschiedenen Kundensegmente die passenden sozialen Medien zu definieren
  • \n
  • A3.3. \u2026 die Inhalte compliant zu halten
  • \n
\n " - }, - { - "id": 32, - "title": "Circle VV", - "slug": "test-lehrgang-lp-topic-circle-vv", - "content_type": "learnpath.Topic", - "translation_key": "19611237-22e1-40e6-b5b1-a34ff470df14", - "frontend_url": "", - "is_visible": false - }, - { - "id": 33, - "title": "Reisen", - "slug": "test-lehrgang-lp-circle-reisen", - "content_type": "learnpath.Circle", - "translation_key": "2aaf0215-693a-407c-9f1c-bdb80f982c92", - "frontend_url": "/course/test-lehrgang/learn/reisen", - "children": [ - { - "id": 34, - "title": "Starten", - "slug": "test-lehrgang-lp-circle-reisen-ls-starten", - "content_type": "learnpath.LearningSequence", - "translation_key": "e4b0eac3-3a7c-435f-8151-f69c40b35fd6", - "frontend_url": "/course/test-lehrgang/learn/reisen#ls-starten", - "icon": "it-icon-ls-start" - }, - { - "id": 35, - "title": "Einf\u00fchrung", - "slug": "test-lehrgang-lp-circle-reisen-lu-einf\u00fchrung", - "content_type": "learnpath.LearningUnit", - "translation_key": "9f0d6302-d058-4f93-b08e-9dbd4b8b8ed3", - "frontend_url": "/course/test-lehrgang/learn/reisen#lu-einf\u00fchrung", - "evaluate_url": "/course/test-lehrgang/learn/reisen/evaluate/einf\u00fchrung", - "course_category": { - "id": 1, - "title": "Allgemein", - "general": true - }, - "children": [] - }, - { - "id": 36, - "title": "Verschaff dir einen \u00dcberblick", - "slug": "test-lehrgang-lp-circle-reisen-lc-verschaff-dir-einen-\u00fcberblick", - "content_type": "learnpath.LearningContentVideo", - "translation_key": "e666b414-175f-439d-9dfd-e1c434a8cc0e", - "frontend_url": "/course/test-lehrgang/learn/reisen/verschaff-dir-einen-\u00fcberblick", - "minutes": 15, - "description": "Willkommen im Lehrgang Versicherungsvermitler VBV", - "content_url": "https://player.vimeo.com/video/772512710?h=30f912f15a" - }, - { - "id": 37, - "title": "Mediathek Reisen", - "slug": "test-lehrgang-lp-circle-reisen-lc-mediathek-reisen", - "content_type": "learnpath.LearningContentMediaLibrary", - "translation_key": "3b4cae41-185f-40f2-86c0-f96057214ada", - "frontend_url": "/course/test-lehrgang/learn/reisen/mediathek-reisen", - "minutes": 15, - "description": "", - "content_url": "/media/test-lehrgang-media/category/reisen" - }, - { - "id": 38, - "title": "Analyse", - "slug": "test-lehrgang-lp-circle-reisen-ls-analyse", - "content_type": "learnpath.LearningSequence", - "translation_key": "84be9e5b-6517-4a6d-85a3-1bdf90f78780", - "frontend_url": "/course/test-lehrgang/learn/reisen#ls-analyse", - "icon": "it-icon-ls-apply" - }, - { - "id": 39, - "title": "Bedarfsanalyse, Ist- und Soll-Situation", - "slug": "test-lehrgang-lp-circle-reisen-lu-reisen", - "content_type": "learnpath.LearningUnit", - "translation_key": "7cc1e966-75db-4703-8de4-1a3171372299", - "frontend_url": "/course/test-lehrgang/learn/reisen#lu-reisen", - "evaluate_url": "/course/test-lehrgang/learn/reisen/evaluate/reisen", - "course_category": { - "id": 3, - "title": "Reisen", - "general": false - }, - "children": [ - { - "id": 41, - "title": "Ich bin f\u00e4hig zu Reisen eine Gespr\u00e4chsf\u00fchrung zu machen", - "slug": "test-lehrgang-competence-crit-y11-reisen", - "content_type": "competence.PerformanceCriteria", - "translation_key": "b82dfd37-649f-488c-a78e-c6a3257c3f43", - "frontend_url": "", - "competence_id": "Y1.1" - }, - { - "id": 42, - "title": "Ich bin f\u00e4hig zu Reisen eine Analyse zu machen", - "slug": "test-lehrgang-competence-crit-y21-reisen", - "content_type": "competence.PerformanceCriteria", - "translation_key": "9cf4e552-9dc1-46f8-b3e2-800e7bfd4afe", - "frontend_url": "", - "competence_id": "Y2.1" - } - ] - }, - { - "id": 40, - "title": "Emma und Ayla campen durch Amerika - Analyse", - "slug": "test-lehrgang-lp-circle-reisen-lc-emma-und-ayla-campen-durch-amerika-analyse", - "content_type": "learnpath.LearningContentLearningModule", - "translation_key": "a2b7889c-1143-4cc1-b4f7-0e611de60ee1", - "frontend_url": "/course/test-lehrgang/learn/reisen/emma-und-ayla-campen-durch-amerika-analyse", - "minutes": 15, - "description": "", - "content_url": "https://s3.eu-central-1.amazonaws.com/myvbv-wbt.iterativ.ch/emma-und-ayla-campen-durch-amerika-analyse-xapi-FZoZOP9y/index.html" - }, - { - "id": 43, - "title": "Transfer", - "slug": "test-lehrgang-lp-circle-reisen-ls-transfer", - "content_type": "learnpath.LearningSequence", - "translation_key": "655a349d-48e4-4831-b518-872d0714d9e3", - "frontend_url": "/course/test-lehrgang/learn/reisen#ls-transfer", - "icon": "it-icon-ls-end" - }, - { - "id": 44, - "title": "Transfer, Reflexion, Feedback", - "slug": "test-lehrgang-lp-circle-reisen-lu-transfer-reflexion-feedback", - "content_type": "learnpath.LearningUnit", - "translation_key": "8d7cc58a-3a91-49ea-906f-c1de57fec0b2", - "frontend_url": "/course/test-lehrgang/learn/reisen#lu-transfer-reflexion-feedback", - "evaluate_url": "/course/test-lehrgang/learn/reisen/evaluate/transfer-reflexion-feedback", - "course_category": { - "id": 1, - "title": "Allgemein", - "general": true - }, - "children": [] - }, - { - "id": 45, - "title": "Auswandern: Woran muss ich denken?", - "slug": "test-lehrgang-lp-circle-reisen-lc-auswandern-woran-muss-ich-denken", - "content_type": "learnpath.LearningContentPlaceholder", - "translation_key": "691d7659-8bd9-4baa-92fd-022e9d418c46", - "frontend_url": "/course/test-lehrgang/learn/reisen/auswandern-woran-muss-ich-denken", - "minutes": 15, - "description": "Platzhalter", - "content_url": "" - }, - { - "id": 46, - "title": "Fachcheck Reisen", - "slug": "test-lehrgang-lp-circle-reisen-lc-fachcheck-reisen", - "content_type": "learnpath.LearningContentPlaceholder", - "translation_key": "26294bc1-9dfe-4c17-a231-02a1387e8dcf", - "frontend_url": "/course/test-lehrgang/learn/reisen/fachcheck-reisen", - "minutes": 15, - "description": "Platzhalter", - "content_url": "" - }, - { - "id": 47, - "title": "Reflexion", - "slug": "test-lehrgang-lp-circle-reisen-lc-reflexion", - "content_type": "learnpath.LearningContentPlaceholder", - "translation_key": "cd091a5d-63e8-4a4d-8178-d0224e869146", - "frontend_url": "/course/test-lehrgang/learn/reisen/reflexion", - "minutes": 15, - "description": "Platzhalter", - "content_url": "" - }, - { - "id": 48, - "title": "Feedback", - "slug": "test-lehrgang-lp-circle-reisen-lc-feedback", - "content_type": "learnpath.LearningContentFeedback", - "translation_key": "ca35688c-f8ee-4aaf-b435-6e84163d9ea6", - "frontend_url": "/course/test-lehrgang/learn/reisen/feedback", - "minutes": 15, - "description": "", - "content_url": "" - } - ], - "description": "In diesem Circle erf\u00e4hrst du wie der Lehrgang aufgebaut ist. Zudem lernst du die wichtigsten Grundlagen, damit du\nerfolgreich mit deinem Lernpfad und in deinem Job (durch-)starten kannst.", - "goals": "\n

In diesem Circle erf\u00e4hrst du wie der Lehrgang aufgebaut ist. Zudem lernst du die wichtigsten Grundlagen,\n damit du erfolgreich mit deinem Lernpfad und in deinem Job (durch-)starten kannst.

\n

Du baust das Grundlagenwissen f\u00fcr die folgenden Themenfelder auf:

\n
    \n
  • Aufbau von myVBV und wie du dich im Lernpfad zurechtfindest
  • \n
  • Worauf die Ausbildung und die Zulassungspr\u00fcfung zum/zur Versicherungsvermittler/-in VBV basieren
  • \n
  • Organisation deiner Lernreise und deiner Zusammenarbeit mit deiner Lernbegleitung und einem\n Lernpartner/einer Lernpartnerin
  • \n
  • Tipps und Tricks zur Organisation eines erfolgreichen Arbeitsalltags
  • \n
  • Umgang mit den sozialen Medien und Datenschutz
  • \n
  • Basiswissen Versicherungswirtschaft
  • \n
  • Basiswissen Versicherungsrecht
  • \n
\n

Du arbeitest an folgenden Leistungskriterien aus dem Qualifikationsprofil:

\n

Arbeitsalltag/Lerneinheit: \u00abLucas Auftritt in den sozialen Medien und der Umgang mit sensiblen Daten\u00bb

\n

Ich bin f\u00e4hig, \u2026

\n
    \n
  • A3.1: \u2026 in Zusammenarbeit mit den IT-Spezialisten und der Marketingabteilung die Inhalte f\u00fcr den zu\n realisierenden Medienauftritt zielgruppengerecht festzulegen
  • \n
  • A3.2: \u2026 f\u00fcr die verschiedenen Kundensegmente die passenden sozialen Medien zu definieren
  • \n
  • A3.3. \u2026 die Inhalte compliant zu halten
  • \n
\n " - } - ], - "course": { - "id": -1, - "title": "Test Lehrgang", - "category_name": "Handlungsfeld", - "slug": "test-lehrgang" - } -} diff --git a/server/vbv_lernwelt/course/models.py b/server/vbv_lernwelt/course/models.py index 3ea9910c..4b6b1c2d 100644 --- a/server/vbv_lernwelt/course/models.py +++ b/server/vbv_lernwelt/course/models.py @@ -27,6 +27,9 @@ class Course(models.Model): def get_course_url(self): return f"/course/{self.slug}" + def get_cockpit_url(self): + return f"/{self.get_course_url()}/cockpit" + def get_learning_path(self): from vbv_lernwelt.learnpath.models import LearningPath diff --git a/server/vbv_lernwelt/learnpath/models.py b/server/vbv_lernwelt/learnpath/models.py index 66f61cc7..c5e4088a 100644 --- a/server/vbv_lernwelt/learnpath/models.py +++ b/server/vbv_lernwelt/learnpath/models.py @@ -35,9 +35,6 @@ class LearningPath(CourseBasePage): def get_frontend_url(self): return f"/course/{self.slug.replace('-lp', '')}/learn" - def get_cockpit_url(self): - return f"/course/{self.slug.replace('-lp', '')}/cockpit" - class Topic(CourseBasePage): serialize_field_names = ["is_visible"]