diff --git a/client/src/components/competences/PerformanceCriteriaRow.vue b/client/src/components/competences/PerformanceCriteriaRow.vue index a0ecd306..7bdc099a 100644 --- a/client/src/components/competences/PerformanceCriteriaRow.vue +++ b/client/src/components/competences/PerformanceCriteriaRow.vue @@ -19,10 +19,10 @@ const props = withDefaults(defineProps(), {
diff --git a/client/src/components/ui/ItProgress.stories.ts b/client/src/components/ui/ItProgress.stories.ts index 1a814dfb..6864ba26 100644 --- a/client/src/components/ui/ItProgress.stories.ts +++ b/client/src/components/ui/ItProgress.stories.ts @@ -17,9 +17,9 @@ type Story = StoryObj; export const NoProgress: Story = { args: { statusCount: { - fail: 0, - success: 0, - unknown: 10, + FAIL: 0, + SUCCESS: 0, + UNKNOWN: 10, }, }, }; @@ -27,9 +27,9 @@ export const NoProgress: Story = { export const FiftyPrecentSuccessProgress: Story = { args: { statusCount: { - fail: 0, - success: 5, - unknown: 5, + FAIL: 0, + SUCCESS: 5, + UNKNOWN: 5, }, }, }; @@ -37,9 +37,9 @@ export const FiftyPrecentSuccessProgress: Story = { export const FiftyPrecentFailProgress: Story = { args: { statusCount: { - fail: 5, - success: 0, - unknown: 5, + FAIL: 5, + SUCCESS: 0, + UNKNOWN: 5, }, }, }; diff --git a/client/src/components/ui/ItProgress.vue b/client/src/components/ui/ItProgress.vue index 37403218..fba9ec6b 100644 --- a/client/src/components/ui/ItProgress.vue +++ b/client/src/components/ui/ItProgress.vue @@ -1,7 +1,7 @@ diff --git a/client/src/constants.ts b/client/src/constants.ts index 4c7d1916..0b981057 100644 --- a/client/src/constants.ts +++ b/client/src/constants.ts @@ -1,5 +1,5 @@ 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 COMPLETION_SUCCESS: CourseCompletionStatus = "SUCCESS"; +export const COMPLETION_FAILURE: CourseCompletionStatus = "FAIL"; +export const COMPLETION_UNKNOWN: CourseCompletionStatus = "UNKNOWN"; diff --git a/client/src/gql/graphql.ts b/client/src/gql/graphql.ts index 158e17c7..4f4a6d63 100644 --- a/client/src/gql/graphql.ts +++ b/client/src/gql/graphql.ts @@ -108,6 +108,30 @@ export type AssignmentObjectType = CoursePageInterface & { translation_key?: Maybe; }; +export type AttendanceCourseUserMutation = { + __typename?: 'AttendanceCourseUserMutation'; + course_session_attendance_course?: Maybe; +}; + +export type AttendanceUserInputType = { + status: AttendanceUserStatus; + user_id: Scalars['ID']['input']; +}; + +/** An enumeration. */ +export type AttendanceUserStatus = + | 'ABSENT' + | 'PRESENT'; + +export type AttendanceUserType = { + __typename?: 'AttendanceUserType'; + email?: Maybe; + first_name?: Maybe; + last_name?: Maybe; + status: AttendanceUserStatus; + user_id: Scalars['ID']['output']; +}; + /** An enumeration. */ export type CoreUserLanguageChoices = /** Deutsch */ @@ -127,6 +151,19 @@ export type CoursePageInterface = { translation_key?: Maybe; }; +export type CourseSessionAttendanceCourseType = { + __typename?: 'CourseSessionAttendanceCourseType'; + attendance_user_list?: Maybe>>; + course_session_id?: Maybe; + due_date_id?: Maybe; + end?: Maybe; + id: Scalars['ID']['output']; + learning_content_id?: Maybe; + location: Scalars['String']['output']; + start?: Maybe; + trainer: Scalars['String']['output']; +}; + export type CourseType = { __typename?: 'CourseType'; category_name: Scalars['String']['output']; @@ -186,6 +223,7 @@ export type LearningPathType = CoursePageInterface & { export type Mutation = { __typename?: 'Mutation'; send_feedback?: Maybe; + update_course_session_attendance_course_users?: Maybe; upsert_assignment_completion?: Maybe; }; @@ -195,6 +233,12 @@ export type MutationSendFeedbackArgs = { }; +export type MutationUpdateCourseSessionAttendanceCourseUsersArgs = { + attendance_user_list: Array>; + id: Scalars['ID']['input']; +}; + + export type MutationUpsertAssignmentCompletionArgs = { assignment_id: Scalars['ID']['input']; assignment_user_id?: InputMaybe; @@ -216,6 +260,7 @@ export type Query = { assignment?: Maybe; assignment_completion?: Maybe; course?: Maybe; + course_session_attendance_course?: Maybe; }; @@ -236,6 +281,12 @@ export type QueryCourseArgs = { id?: InputMaybe; }; + +export type QueryCourseSessionAttendanceCourseArgs = { + assignment_user_id?: InputMaybe; + id: Scalars['ID']['input']; +}; + export type SendFeedbackInput = { clientMutationId?: InputMaybe; course_session: Scalars['Int']['input']; diff --git a/client/src/gql/schema.graphql b/client/src/gql/schema.graphql index ab93d32e..dc34a318 100644 --- a/client/src/gql/schema.graphql +++ b/client/src/gql/schema.graphql @@ -1,9 +1,43 @@ type Query { + course_session_attendance_course(id: ID!, assignment_user_id: ID): CourseSessionAttendanceCourseType course(id: Int): CourseType assignment(id: ID, slug: String): AssignmentObjectType assignment_completion(assignment_id: ID!, course_session_id: ID!, assignment_user_id: ID): AssignmentCompletionObjectType } +type CourseSessionAttendanceCourseType { + id: ID! + location: String! + trainer: String! + course_session_id: ID + learning_content_id: ID + due_date_id: ID + end: DateTime + start: DateTime + attendance_user_list: [AttendanceUserType] +} + +""" +The `DateTime` scalar type represents a DateTime +value as specified by +[iso8601](https://en.wikipedia.org/wiki/ISO_8601). +""" +scalar DateTime + +type AttendanceUserType { + user_id: ID! + status: AttendanceUserStatus! + first_name: String + last_name: String + email: String +} + +"""An enumeration.""" +enum AttendanceUserStatus { + PRESENT + ABSENT +} + type CourseType { id: ID! title: String! @@ -63,13 +97,6 @@ interface CoursePageInterface { frontend_url: String } -""" -The `DateTime` scalar type represents a DateTime -value as specified by -[iso8601](https://en.wikipedia.org/wiki/ISO_8601). -""" -scalar DateTime - type UserType { id: ID! @@ -184,6 +211,7 @@ scalar JSONString type Mutation { send_feedback(input: SendFeedbackInput!): SendFeedbackPayload + update_course_session_attendance_course_users(attendance_user_list: [AttendanceUserInputType]!, id: ID!): AttendanceCourseUserMutation upsert_assignment_completion(assignment_id: ID!, assignment_user_id: ID, completion_data_string: String, completion_status: AssignmentCompletionStatus, course_session_id: ID!, evaluation_grade: Float, evaluation_points: Float): AssignmentCompletionMutation } @@ -220,6 +248,15 @@ input SendFeedbackInput { clientMutationId: String } +type AttendanceCourseUserMutation { + course_session_attendance_course: CourseSessionAttendanceCourseType +} + +input AttendanceUserInputType { + user_id: ID! + status: AttendanceUserStatus! +} + type AssignmentCompletionMutation { assignment_completion: AssignmentCompletionObjectType } diff --git a/client/src/gql/typenames.ts b/client/src/gql/typenames.ts index 00c8620f..7743de82 100644 --- a/client/src/gql/typenames.ts +++ b/client/src/gql/typenames.ts @@ -4,9 +4,14 @@ export const AssignmentCompletionMutation = "AssignmentCompletionMutation"; export const AssignmentCompletionObjectType = "AssignmentCompletionObjectType"; export const AssignmentCompletionStatus = "AssignmentCompletionStatus"; export const AssignmentObjectType = "AssignmentObjectType"; +export const AttendanceCourseUserMutation = "AttendanceCourseUserMutation"; +export const AttendanceUserInputType = "AttendanceUserInputType"; +export const AttendanceUserStatus = "AttendanceUserStatus"; +export const AttendanceUserType = "AttendanceUserType"; export const Boolean = "Boolean"; export const CoreUserLanguageChoices = "CoreUserLanguageChoices"; export const CoursePageInterface = "CoursePageInterface"; +export const CourseSessionAttendanceCourseType = "CourseSessionAttendanceCourseType"; export const CourseType = "CourseType"; export const DateTime = "DateTime"; export const ErrorType = "ErrorType"; diff --git a/client/src/pages/cockpit/assignmentsPage/AssignmentDetails.vue b/client/src/pages/cockpit/assignmentsPage/AssignmentDetails.vue index 515ad009..b36b0fdb 100644 --- a/client/src/pages/cockpit/assignmentsPage/AssignmentDetails.vue +++ b/client/src/pages/cockpit/assignmentsPage/AssignmentDetails.vue @@ -129,7 +129,7 @@ const assignmentDetail = computed(() =>