Merged develop into feature/VBV-717-teilnehmer-profil-in-dashboard-fullscreen
This commit is contained in:
commit
82f01dbcf0
|
|
@ -2,13 +2,15 @@
|
|||
import EvaluationIntro from "@/components/assignment/evaluation/EvaluationIntro.vue";
|
||||
import EvaluationSummary from "@/components/assignment/evaluation/EvaluationSummary.vue";
|
||||
import EvaluationTask from "@/components/assignment/evaluation/EvaluationTask.vue";
|
||||
import { useCourseSessionDetailQuery } from "@/composables";
|
||||
import { useCourseSessionDetailQuery, useCurrentCourseSession } from "@/composables";
|
||||
import { UPSERT_ASSIGNMENT_COMPLETION_MUTATION } from "@/graphql/mutations";
|
||||
import type {
|
||||
Assignment,
|
||||
AssignmentCompletion,
|
||||
AssignmentEvaluationTask,
|
||||
CourseSessionUser,
|
||||
} from "@/types";
|
||||
import { useMutation } from "@urql/vue";
|
||||
import { useRouteQuery } from "@vueuse/router";
|
||||
import dayjs from "dayjs";
|
||||
import { findIndex } from "lodash";
|
||||
|
|
@ -21,10 +23,12 @@ const props = defineProps<{
|
|||
assignment: Assignment;
|
||||
}>();
|
||||
|
||||
const emit = defineEmits(["close"]);
|
||||
const emit = defineEmits(["close", "reopen"]);
|
||||
|
||||
log.debug("UserEvaluation setup");
|
||||
|
||||
const courseSession = useCurrentCourseSession();
|
||||
|
||||
// 0 = introduction, 1 - n = tasks, n+1 = submission
|
||||
const stepIndex = useRouteQuery("step", "0", { transform: Number, mode: "push" });
|
||||
|
||||
|
|
@ -58,6 +62,34 @@ function editTask(task: AssignmentEvaluationTask) {
|
|||
stepIndex.value = taskIndex + 1;
|
||||
}
|
||||
|
||||
function canReopen() {
|
||||
return (
|
||||
evaluationSubmitted.value &&
|
||||
(props.assignment.assignment_type === "CASEWORK" ||
|
||||
props.assignment.assignment_type === "PRAXIS_ASSIGNMENT")
|
||||
);
|
||||
}
|
||||
|
||||
const upsertAssignmentCompletionMutation = useMutation(
|
||||
UPSERT_ASSIGNMENT_COMPLETION_MUTATION
|
||||
);
|
||||
|
||||
async function reopen() {
|
||||
log.debug("reopen");
|
||||
|
||||
await upsertAssignmentCompletionMutation.executeMutation({
|
||||
assignmentId: props.assignment.id,
|
||||
courseSessionId: courseSession.value.id,
|
||||
assignmentUserId: props.assignmentUser.id,
|
||||
completionStatus: "EVALUATION_IN_PROGRESS",
|
||||
completionDataString: JSON.stringify({}),
|
||||
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
||||
// @ts-ignore
|
||||
id: props.assignmentCompletion?.id,
|
||||
});
|
||||
stepIndex.value = 1;
|
||||
}
|
||||
|
||||
const courseSessionDetailResult = useCourseSessionDetailQuery();
|
||||
|
||||
const assignmentDetail = computed(() => {
|
||||
|
|
@ -86,22 +118,6 @@ const taskExpertDataText = computed(() => {
|
|||
return result;
|
||||
});
|
||||
|
||||
const text = computed(() => {
|
||||
if (props.assignment.assignment_type === "CASEWORK") {
|
||||
return {
|
||||
evaluationFinish: "a.Bewertung abschliessen",
|
||||
};
|
||||
} else if (props.assignment.assignment_type === "PRAXIS_ASSIGNMENT") {
|
||||
return {
|
||||
evaluationFinish: "a.Feedback abschliessen",
|
||||
};
|
||||
} else {
|
||||
return {
|
||||
evaluationFinish: "UNKNOWN ASSIGNMENT TYPE",
|
||||
};
|
||||
}
|
||||
});
|
||||
|
||||
function nextButtonEnabled() {
|
||||
if (inEvaluationTask.value) {
|
||||
return taskExpertDataText.value ?? false;
|
||||
|
|
@ -109,6 +125,15 @@ function nextButtonEnabled() {
|
|||
return true;
|
||||
}
|
||||
|
||||
function previousButtonVisible() {
|
||||
// Bei einer "bewerteten" Arbeit, kann man im letzten Schritt nicht mehr "zurück"
|
||||
// man kann aber die Bewertung wieder "bearbeiten"
|
||||
return !(
|
||||
stepIndex.value > numTasks.value &&
|
||||
props.assignmentCompletion.completion_status === "EVALUATION_SUBMITTED"
|
||||
);
|
||||
}
|
||||
|
||||
function finishButtonEnabled() {
|
||||
return props.assignmentCompletion.completion_status === "EVALUATION_SUBMITTED";
|
||||
}
|
||||
|
|
@ -150,18 +175,19 @@ function finishButtonEnabled() {
|
|||
<nav v-if="stepIndex > 0" class="sticky bottom-0 border-t bg-gray-200 p-6">
|
||||
<div class="relative flex flex-row place-content-end">
|
||||
<button
|
||||
v-if="true"
|
||||
class="btn-secondary mr-2 flex items-center"
|
||||
v-if="previousButtonVisible()"
|
||||
class="btn-secondary flex items-center"
|
||||
data-cy="previous-step"
|
||||
@click="previousPage()"
|
||||
>
|
||||
<it-icon-arrow-left class="mr-2 h-6 w-6"></it-icon-arrow-left>
|
||||
{{ $t("general.backCapitalized") }}
|
||||
</button>
|
||||
|
||||
<button
|
||||
v-if="stepIndex <= numTasks"
|
||||
:disabled="!nextButtonEnabled()"
|
||||
class="btn-secondary z-10 flex items-center"
|
||||
class="btn-secondary z-10 ml-2 flex items-center"
|
||||
data-cy="next-step"
|
||||
@click="nextPage()"
|
||||
>
|
||||
|
|
@ -170,15 +196,25 @@ function finishButtonEnabled() {
|
|||
</button>
|
||||
|
||||
<button
|
||||
v-if="stepIndex > numTasks"
|
||||
v-if="stepIndex > numTasks && canReopen()"
|
||||
class="btn-secondary z-10 ml-2"
|
||||
data-cy="btn-reopen"
|
||||
@click="reopen()"
|
||||
>
|
||||
<span class="flex items-center">
|
||||
{{ $t("a.Bewertung bearbeiten") }}
|
||||
</span>
|
||||
</button>
|
||||
|
||||
<button
|
||||
v-if="stepIndex > numTasks && finishButtonEnabled()"
|
||||
:disabled="!finishButtonEnabled()"
|
||||
class="btn-secondary z-10"
|
||||
data-cy="next-step"
|
||||
class="btn-primary z-10 ml-2"
|
||||
data-cy="btn-close"
|
||||
@click="emit('close')"
|
||||
>
|
||||
<span class="flex items-center">
|
||||
{{ $t(text.evaluationFinish) }}
|
||||
<it-icon-check class="ml-2 h-6 w-6"></it-icon-check>
|
||||
{{ $t("a.Schliessen") }}
|
||||
</span>
|
||||
</button>
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -76,30 +76,8 @@ async function startEvaluation() {
|
|||
|
||||
<template>
|
||||
<div>
|
||||
<div class="mb-4">
|
||||
{{
|
||||
$t("assignment.x hat die Ergebnisse am y um z Uhr abgegeben", {
|
||||
x: props.assignmentUser.first_name + " " + props.assignmentUser.last_name,
|
||||
y: dayjs(props.assignmentCompletion.submitted_at).format("DD.MM.YYYY"),
|
||||
z: dayjs(props.assignmentCompletion.submitted_at).format("HH.mm"),
|
||||
})
|
||||
}}
|
||||
</div>
|
||||
|
||||
<h3 data-cy="title">{{ $t(text.evaluationTitle) }}</h3>
|
||||
|
||||
<p v-if="props.dueDate" class="my-4" data-cy="evaluation-duedate">
|
||||
{{
|
||||
$t(
|
||||
"assignment.Du musst die Bewertung bis am x um y Uhr abschliessen und freigeben",
|
||||
{
|
||||
x: props.dueDate.format("DD.MM.YYYY"),
|
||||
y: props.dueDate.format("HH.mm"),
|
||||
}
|
||||
)
|
||||
}}
|
||||
</p>
|
||||
|
||||
<p class="my-4" data-cy="instruction">
|
||||
{{
|
||||
$t(text.evaluationInstruction, {
|
||||
|
|
@ -125,6 +103,11 @@ async function startEvaluation() {
|
|||
</a>
|
||||
</p>
|
||||
|
||||
<p v-if="props.dueDate" class="my-4" data-cy="evaluation-duedate">
|
||||
{{ $t("a.Freigabetermin Bewertung") }}: {{ props.dueDate.format("DD.MM.YYYY") }}
|
||||
{{ props.dueDate.format("HH.mm") }}
|
||||
</p>
|
||||
|
||||
<div>
|
||||
<button
|
||||
class="btn-primary text-large"
|
||||
|
|
@ -148,6 +131,18 @@ async function startEvaluation() {
|
|||
<span v-else>{{ $t(text.evaluationStart) }}</span>
|
||||
</button>
|
||||
</div>
|
||||
|
||||
<ol class="mt-8">
|
||||
<li
|
||||
v-for="historyEntry in props.assignmentCompletion.additional_json_data
|
||||
?.submission_history ?? []"
|
||||
:key="historyEntry.timestamp"
|
||||
>
|
||||
{{ dayjs(historyEntry.timestamp).format("DD.MM.YYYY HH.mm") }}:
|
||||
{{ $t(historyEntry.translation_key) }}
|
||||
({{ historyEntry.user_display_name }})
|
||||
</li>
|
||||
</ol>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
|
|
|
|||
|
|
@ -1,5 +1,6 @@
|
|||
<script setup lang="ts">
|
||||
import ItSuccessAlert from "@/components/ui/ItSuccessAlert.vue";
|
||||
import ItTextarea from "@/components/ui/ItTextarea.vue";
|
||||
import RichText from "@/components/ui/RichText.vue";
|
||||
import { useCurrentCourseSession } from "@/composables";
|
||||
import { UPSERT_ASSIGNMENT_COMPLETION_MUTATION } from "@/graphql/mutations";
|
||||
|
|
@ -16,7 +17,7 @@ import type {
|
|||
import { useMutation } from "@urql/vue";
|
||||
import dayjs, { Dayjs } from "dayjs";
|
||||
import * as log from "loglevel";
|
||||
import { computed, reactive } from "vue";
|
||||
import { computed, reactive, ref } from "vue";
|
||||
|
||||
const props = defineProps<{
|
||||
assignmentUser: CourseSessionUser;
|
||||
|
|
@ -40,6 +41,10 @@ const upsertAssignmentCompletionMutation = useMutation(
|
|||
UPSERT_ASSIGNMENT_COMPLETION_MUTATION
|
||||
);
|
||||
|
||||
const evaluationComment = ref(
|
||||
props.assignmentCompletion.completion_data.expert_evaluation_comment?.text ?? ""
|
||||
);
|
||||
|
||||
const text = computed(() => {
|
||||
if (props.assignment.assignment_type === "CASEWORK") {
|
||||
return {
|
||||
|
|
@ -77,7 +82,11 @@ async function submitEvaluation() {
|
|||
courseSessionId: courseSession.value.id,
|
||||
assignmentUserId: props.assignmentUser.id,
|
||||
completionStatus: "EVALUATION_SUBMITTED",
|
||||
completionDataString: JSON.stringify({}),
|
||||
completionDataString: JSON.stringify({
|
||||
expert_evaluation_comment: {
|
||||
text: evaluationComment.value,
|
||||
},
|
||||
}),
|
||||
evaluationPoints: userPoints.value,
|
||||
// next line used for urql
|
||||
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
||||
|
|
@ -112,9 +121,48 @@ const maxPoints = computed(() => {
|
|||
}
|
||||
return maxAssignmentPoints(props.assignment);
|
||||
});
|
||||
|
||||
const userPoints = computed(() =>
|
||||
userAssignmentPoints(props.assignment, props.assignmentCompletion)
|
||||
);
|
||||
|
||||
const userPointsWithDeduction = computed(() => {
|
||||
const points = userPoints.value;
|
||||
if (points && props.assignmentCompletion.evaluation_points_deducted > 0) {
|
||||
return points - props.assignmentCompletion.evaluation_points_deducted;
|
||||
}
|
||||
return points;
|
||||
});
|
||||
|
||||
const percentage = computed(() => {
|
||||
if (props.assignmentCompletion.completion_status === "EVALUATION_SUBMITTED") {
|
||||
return (
|
||||
((props.assignmentCompletion?.evaluation_points_final ??
|
||||
userPointsWithDeduction.value ??
|
||||
0) /
|
||||
(props.assignmentCompletion?.evaluation_max_points ?? 1)) *
|
||||
100
|
||||
);
|
||||
} else {
|
||||
return ((userPointsWithDeduction.value ?? 0) / (maxPoints.value ?? 1)) * 100;
|
||||
}
|
||||
});
|
||||
|
||||
const showNotPassed = computed(() => {
|
||||
if (props.assignment.assignment_type === "CASEWORK") {
|
||||
return percentage.value < 55;
|
||||
}
|
||||
|
||||
return false;
|
||||
});
|
||||
|
||||
const showPassed = computed(() => {
|
||||
if (props.assignment.assignment_type === "CASEWORK") {
|
||||
return percentage.value >= 55;
|
||||
}
|
||||
|
||||
return false;
|
||||
});
|
||||
</script>
|
||||
|
||||
<template>
|
||||
|
|
@ -136,26 +184,23 @@ const userPoints = computed(() =>
|
|||
<section v-if="props.assignment.assignment_type === 'CASEWORK'">
|
||||
<div class="flex items-center">
|
||||
<div class="heading-1 py-4" data-cy="user-points">
|
||||
<template
|
||||
v-if="
|
||||
props.assignmentCompletion.completion_status == 'EVALUATION_SUBMITTED'
|
||||
"
|
||||
>
|
||||
{{ props.assignmentCompletion.evaluation_points_final }}
|
||||
</template>
|
||||
<template v-else>
|
||||
{{ userPoints }}
|
||||
</template>
|
||||
{{ userPointsWithDeduction }}
|
||||
</div>
|
||||
<div class="pl-2" data-cy="total-points">
|
||||
{{ $t("assignment.von x Punkten", { x: maxPoints }) }}
|
||||
({{
|
||||
(
|
||||
((props.assignmentCompletion?.evaluation_points_final ?? 0) /
|
||||
(props.assignmentCompletion?.evaluation_max_points ?? 1)) *
|
||||
100
|
||||
).toFixed(0)
|
||||
}}%)
|
||||
({{ percentage.toFixed(0) }}%)
|
||||
</div>
|
||||
|
||||
<div v-if="showNotPassed" class="ml-2">
|
||||
<span class="my-2 rounded-md bg-error-red-200 px-2.5 py-0.5">
|
||||
{{ $t("a.Nicht Bestanden") }}
|
||||
</span>
|
||||
</div>
|
||||
|
||||
<div v-if="showPassed" class="ml-2">
|
||||
<span class="my-2 rounded-md bg-green-200 px-2.5 py-0.5">
|
||||
{{ $t("a.Bestanden") }}
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
|
@ -206,6 +251,11 @@ const userPoints = computed(() =>
|
|||
</p>
|
||||
</div>
|
||||
|
||||
<p v-if="props.dueDate" class="my-4" data-cy="evaluation-duedate">
|
||||
{{ $t("a.Freigabetermin Bewertung") }}: {{ props.dueDate.format("DD.MM.YYYY") }}
|
||||
{{ props.dueDate.format("HH.mm") }}
|
||||
</p>
|
||||
|
||||
<p
|
||||
v-if="
|
||||
props.assignment.assignment_type === 'PRAXIS_ASSIGNMENT' &&
|
||||
|
|
@ -214,18 +264,11 @@ const userPoints = computed(() =>
|
|||
>
|
||||
{{ $t("a.assignment.evaluationFeedbackDescriptionText") }}
|
||||
</p>
|
||||
|
||||
<div
|
||||
v-if="props.assignmentCompletion.completion_status === 'EVALUATION_SUBMITTED'"
|
||||
v-if="props.assignmentCompletion.completion_status !== 'EVALUATION_SUBMITTED'"
|
||||
class="mt-8"
|
||||
>
|
||||
{{ $t("assignment.dueDateEvaluation") }}:
|
||||
{{
|
||||
dayjs(props.assignmentCompletion.evaluation_submitted_at).format("DD.MM.YYYY")
|
||||
}}
|
||||
um
|
||||
{{ dayjs(props.assignmentCompletion.evaluation_submitted_at).format("HH.mm") }}
|
||||
Uhr
|
||||
</div>
|
||||
<div v-else>
|
||||
<button
|
||||
class="btn-primary text-large"
|
||||
data-cy="submit-evaluation"
|
||||
|
|
@ -233,6 +276,18 @@ const userPoints = computed(() =>
|
|||
>
|
||||
{{ $t(text.evaluationSubmit) }}
|
||||
</button>
|
||||
|
||||
<ItTextarea
|
||||
v-model="evaluationComment"
|
||||
class="mt-8"
|
||||
:placeholder="`${$t('a.Kommentar erfassen')}...`"
|
||||
data-cy="reason-text"
|
||||
></ItTextarea>
|
||||
</div>
|
||||
<div v-else-if="evaluationComment" class="mt-4">
|
||||
{{ $t("a.Kommentar") }}:
|
||||
<br />
|
||||
{{ evaluationComment }}
|
||||
</div>
|
||||
|
||||
<div v-if="state.showSuccessInfo" class="mt-4">
|
||||
|
|
@ -245,6 +300,21 @@ const userPoints = computed(() =>
|
|||
"
|
||||
></ItSuccessAlert>
|
||||
</div>
|
||||
|
||||
<section class="mt-4" data-cy="assignment-history">
|
||||
<ol>
|
||||
<li
|
||||
v-for="historyEntry in props.assignmentCompletion.additional_json_data
|
||||
?.submission_history ?? []"
|
||||
:key="historyEntry.timestamp"
|
||||
data-cy="assignment-history-entry"
|
||||
>
|
||||
{{ dayjs(historyEntry.timestamp).format("DD.MM.YYYY HH.mm") }}:
|
||||
{{ $t(historyEntry.translation_key) }}
|
||||
({{ historyEntry.user_display_name }})
|
||||
</li>
|
||||
</ol>
|
||||
</section>
|
||||
</section>
|
||||
|
||||
<section>
|
||||
|
|
|
|||
|
|
@ -23,7 +23,7 @@ onMounted(async () => {
|
|||
:details-link="`/course/${props.courseSlug}/learning-mentor/tasks`"
|
||||
data-cy="dashboard.mentor.openTasksCount"
|
||||
>
|
||||
<template #title>{{ $t("Zu erledigen") }}</template>
|
||||
<template #title>{{ $t("a.Zu erledigen") }}</template>
|
||||
<template #content>
|
||||
<div class="flex flex-row space-x-3 bg-white pb-6">
|
||||
<div
|
||||
|
|
@ -31,7 +31,7 @@ onMounted(async () => {
|
|||
>
|
||||
<span>{{ openTaskCount }}</span>
|
||||
</div>
|
||||
<p class="ml-3 mt-0 leading-[74px]">{{ $t("Elemente zu erledigen") }}</p>
|
||||
<p class="ml-3 mt-0 leading-[74px]">{{ $t("a.Elemente zu erledigen") }}</p>
|
||||
</div>
|
||||
</template>
|
||||
</BaseBox>
|
||||
|
|
|
|||
|
|
@ -26,7 +26,7 @@ const regionFilter = computed(() => {
|
|||
}));
|
||||
return [
|
||||
{
|
||||
name: `${t("Region")}: ${t("a.Alle")}`,
|
||||
name: `${t("a.Region")}: ${t("a.Alle")}`,
|
||||
id: "_all",
|
||||
},
|
||||
...f,
|
||||
|
|
|
|||
|
|
@ -79,7 +79,7 @@ const attendanceCountPerChosenProfile = computed(() => {
|
|||
:details-link="`/dashboard/persons?course=${courseId}&selectedPaidYear=${currentYear}`"
|
||||
data-cy="dashboard.stats.trainingResponsible.participants"
|
||||
>
|
||||
<template #title>{{ $t("Teilnehmer im") }} {{ currentYear }}</template>
|
||||
<template #title>{{ $t("a.Teilnehmer im") }} {{ currentYear }}</template>
|
||||
<template #content>
|
||||
<div class="flex flex-row space-x-3 bg-white pb-6">
|
||||
<div
|
||||
|
|
@ -89,7 +89,7 @@ const attendanceCountPerChosenProfile = computed(() => {
|
|||
<span>{{ attendanceCountInCurrentYear }}</span>
|
||||
</div>
|
||||
<p class="ml-3 mt-0 leading-[74px]">
|
||||
{{ $t("Teilnehmer") }}
|
||||
{{ $t("a.Teilnehmer") }}
|
||||
</p>
|
||||
</div>
|
||||
</template>
|
||||
|
|
@ -97,7 +97,7 @@ const attendanceCountPerChosenProfile = computed(() => {
|
|||
</div>
|
||||
<div class="my-6 space-y-6 border-t border-gray-500 py-6">
|
||||
<h2 class="text-base font-bold">
|
||||
{{ $t("Teilnehmer nach Zulassungsprofilen im") }} {{ currentYear }}
|
||||
{{ $t("a.Teilnehmer nach Zulassungsprofilen im") }} {{ currentYear }}
|
||||
</h2>
|
||||
<AttendancePerChosenProfileChart
|
||||
v-if="attendanceCountPerChosenProfile"
|
||||
|
|
|
|||
|
|
@ -38,7 +38,7 @@ const filteredDueDates = computed(() => {
|
|||
<LoadingSpinner />
|
||||
</div>
|
||||
<div v-else class="flex flex-col space-y-2">
|
||||
<h3 class="heading-3">{{ $t("Nächste Termine") }}</h3>
|
||||
<h3 class="heading-3">{{ $t("a.Nächste Termine") }}</h3>
|
||||
<div
|
||||
v-for="dueDate in filteredDueDates"
|
||||
:key="dueDate.id"
|
||||
|
|
|
|||
|
|
@ -17,7 +17,7 @@ export const formatDueDate = (start: string, end?: string | null) => {
|
|||
|
||||
// at least `start` must be provided and valid
|
||||
if (!startDayjs.isValid()) {
|
||||
return i18next.t("Termin nicht festgelegt");
|
||||
return i18next.t("a.Termin nicht festgelegt");
|
||||
}
|
||||
|
||||
// when only `start` is provided, show only the start date with time
|
||||
|
|
|
|||
|
|
@ -130,7 +130,7 @@ const mentorTabTitle = computed(() =>
|
|||
data-cy="vv-buy-link"
|
||||
@click="clickLink(vvBuyLink.href.value as string)"
|
||||
>
|
||||
{{ $t("Lernpfad kaufen") }}
|
||||
{{ $t("a.Lehrgang kaufen") }}
|
||||
</button>
|
||||
</li>
|
||||
</ul>
|
||||
|
|
|
|||
|
|
@ -70,7 +70,7 @@ const inviteMentor = async () => {
|
|||
const myLearningMentors = computed(() =>
|
||||
courseSession.value.course.configuration.is_uk
|
||||
? "Meine Praxisbildner"
|
||||
: "Meine Lernbegleiter"
|
||||
: "a.Meine Lernbegleitung"
|
||||
);
|
||||
|
||||
const inviteLearningMentor = computed(() =>
|
||||
|
|
|
|||
|
|
@ -14,11 +14,11 @@ import type { TypedDocumentNode as DocumentNode } from '@graphql-typed-document-
|
|||
*/
|
||||
const documents = {
|
||||
"\n mutation AttendanceCheckMutation(\n $attendanceCourseId: ID!\n $attendanceUserList: [AttendanceUserInputType]!\n ) {\n update_course_session_attendance_course_users(\n id: $attendanceCourseId\n attendance_user_list: $attendanceUserList\n ) {\n course_session_attendance_course {\n id\n attendance_user_list {\n user_id\n first_name\n last_name\n email\n status\n }\n }\n }\n }\n": types.AttendanceCheckMutationDocument,
|
||||
"\n mutation UpsertAssignmentCompletion(\n $assignmentId: ID!\n $courseSessionId: ID!\n $learningContentId: ID\n $assignmentUserId: UUID\n $completionStatus: AssignmentCompletionStatus!\n $completionDataString: String!\n $evaluationPoints: Float\n $initializeCompletion: Boolean\n $evaluationUserId: ID\n ) {\n upsert_assignment_completion(\n assignment_id: $assignmentId\n course_session_id: $courseSessionId\n learning_content_page_id: $learningContentId\n assignment_user_id: $assignmentUserId\n completion_status: $completionStatus\n completion_data_string: $completionDataString\n evaluation_points: $evaluationPoints\n initialize_completion: $initializeCompletion\n evaluation_user_id: $evaluationUserId\n ) {\n assignment_completion {\n id\n completion_status\n submitted_at\n evaluation_submitted_at\n evaluation_points\n completion_data\n task_completion_data\n }\n }\n }\n": types.UpsertAssignmentCompletionDocument,
|
||||
"\n mutation UpsertAssignmentCompletion(\n $assignmentId: ID!\n $courseSessionId: ID!\n $learningContentId: ID\n $assignmentUserId: UUID\n $completionStatus: AssignmentCompletionStatus!\n $completionDataString: String!\n $evaluationPoints: Float\n $initializeCompletion: Boolean\n $evaluationUserId: ID\n ) {\n upsert_assignment_completion(\n assignment_id: $assignmentId\n course_session_id: $courseSessionId\n learning_content_page_id: $learningContentId\n assignment_user_id: $assignmentUserId\n completion_status: $completionStatus\n completion_data_string: $completionDataString\n evaluation_points: $evaluationPoints\n initialize_completion: $initializeCompletion\n evaluation_user_id: $evaluationUserId\n ) {\n assignment_completion {\n id\n completion_status\n submitted_at\n evaluation_submitted_at\n evaluation_points\n evaluation_max_points\n evaluation_points_deducted\n evaluation_points_deducted_reason\n evaluation_points_final\n completion_data\n task_completion_data\n additional_json_data\n }\n }\n }\n": types.UpsertAssignmentCompletionDocument,
|
||||
"\n mutation UpdateCourseSessionProfile($input: CourseSessionProfileMutationInput!) {\n update_course_session_profile(input: $input) {\n clientMutationId\n result {\n __typename\n ... on UpdateCourseProfileSuccess {\n user {\n id\n chosen_profile\n }\n }\n ... on UpdateCourseProfileError {\n message\n }\n }\n }\n }\n": types.UpdateCourseSessionProfileDocument,
|
||||
"\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 solution_sample {\n id\n url\n }\n competence_certificate {\n ...CoursePageFields\n }\n }\n assignment_completion(\n assignment_id: $assignmentId\n course_session_id: $courseSessionId\n assignment_user_id: $assignmentUserId\n learning_content_page_id: $learningContentId\n ) {\n id\n completion_status\n submitted_at\n evaluation_submitted_at\n evaluation_user {\n id\n first_name\n last_name\n }\n assignment_user {\n avatar_url\n first_name\n last_name\n id\n }\n evaluation_points\n evaluation_max_points\n evaluation_points_deducted\n evaluation_points_deducted_reason\n evaluation_points_final\n\n evaluation_passed\n edoniq_extended_time_flag\n completion_data\n task_completion_data\n }\n }\n": types.AssignmentCompletionQueryDocument,
|
||||
"\n query assignmentCompletionQuery(\n $assignmentId: ID!\n $courseSessionId: ID!\n $learningContentId: ID\n $assignmentUserId: UUID\n ) {\n assignment(id: $assignmentId) {\n assignment_type\n needs_expert_evaluation\n max_points\n content_type\n effort_required\n evaluation_description\n evaluation_document_url\n evaluation_tasks\n id\n intro_text\n performance_objectives\n slug\n tasks\n title\n translation_key\n solution_sample {\n id\n url\n }\n competence_certificate {\n ...CoursePageFields\n }\n }\n assignment_completion(\n assignment_id: $assignmentId\n course_session_id: $courseSessionId\n assignment_user_id: $assignmentUserId\n learning_content_page_id: $learningContentId\n ) {\n id\n completion_status\n submitted_at\n evaluation_submitted_at\n evaluation_user {\n id\n first_name\n last_name\n }\n assignment_user {\n avatar_url\n first_name\n last_name\n id\n }\n evaluation_points\n evaluation_max_points\n evaluation_points_deducted\n evaluation_points_deducted_reason\n evaluation_points_final\n\n evaluation_passed\n edoniq_extended_time_flag\n completion_data\n task_completion_data\n\n additional_json_data\n }\n }\n": types.AssignmentCompletionQueryDocument,
|
||||
"\n query competenceCertificateQuery(\n $courseSlug: String!\n $courseSessionId: ID!\n $userIds: [UUID!]\n ) {\n competence_certificate_list(course_slug: $courseSlug, user_ids: $userIds) {\n ...CoursePageFields\n competence_certificates {\n ...CoursePageFields\n assignments {\n ...CoursePageFields\n assignment_type\n max_points\n competence_certificate_weight\n completions(course_session_id: $courseSessionId) {\n id\n assignment_user {\n id\n }\n completion_status\n submitted_at\n evaluation_points\n evaluation_points_deducted\n evaluation_points_final\n evaluation_max_points\n evaluation_passed\n evaluation_percent\n course_session {\n id\n title\n }\n }\n learning_content {\n ...CoursePageFields\n circle {\n id\n title\n slug\n }\n }\n }\n }\n }\n }\n": types.CompetenceCertificateQueryDocument,
|
||||
"\n query competenceCertificateForUserQuery(\n $courseSlug: String!\n $courseSessionId: ID!\n $userIds: [UUID!]!\n ) {\n competence_certificate_list(course_slug: $courseSlug, user_ids: $userIds) {\n ...CoursePageFields\n competence_certificates {\n ...CoursePageFields\n assignments {\n ...CoursePageFields\n assignment_type\n max_points\n competence_certificate_weight\n completions(course_session_id: $courseSessionId) {\n id\n completion_status\n submitted_at\n evaluation_points\n evaluation_points_final\n evaluation_points_deducted\n evaluation_max_points\n evaluation_passed\n evaluation_percent\n assignment_user {\n id\n }\n course_session {\n id\n title\n }\n }\n learning_content {\n ...CoursePageFields\n circle {\n id\n title\n slug\n }\n }\n }\n }\n }\n }\n": types.CompetenceCertificateForUserQueryDocument,
|
||||
"\n query courseSessionDetail($courseSessionId: ID!) {\n course_session(id: $courseSessionId) {\n id\n title\n course {\n id\n title\n slug\n configuration {\n id\n enable_circle_documents\n enable_learning_mentor\n enable_competence_certificates\n }\n }\n users {\n id\n user_id\n first_name\n last_name\n email\n avatar_url\n role\n circles {\n id\n title\n slug\n }\n optional_attendance\n }\n attendance_courses {\n id\n location\n trainer\n due_date {\n id\n start\n end\n }\n learning_content_id\n learning_content {\n id\n title\n circle {\n id\n title\n slug\n }\n }\n }\n assignments {\n id\n submission_deadline {\n id\n start\n }\n evaluation_deadline {\n id\n start\n }\n learning_content {\n id\n title\n content_assignment {\n id\n title\n assignment_type\n }\n }\n }\n edoniq_tests {\n id\n deadline {\n id\n start\n end\n }\n learning_content {\n id\n title\n content_assignment {\n id\n title\n assignment_type\n }\n }\n }\n }\n }\n": types.CourseSessionDetailDocument,
|
||||
|
|
@ -53,7 +53,7 @@ export function graphql(source: "\n mutation AttendanceCheckMutation(\n $att
|
|||
/**
|
||||
* The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients.
|
||||
*/
|
||||
export function graphql(source: "\n mutation UpsertAssignmentCompletion(\n $assignmentId: ID!\n $courseSessionId: ID!\n $learningContentId: ID\n $assignmentUserId: UUID\n $completionStatus: AssignmentCompletionStatus!\n $completionDataString: String!\n $evaluationPoints: Float\n $initializeCompletion: Boolean\n $evaluationUserId: ID\n ) {\n upsert_assignment_completion(\n assignment_id: $assignmentId\n course_session_id: $courseSessionId\n learning_content_page_id: $learningContentId\n assignment_user_id: $assignmentUserId\n completion_status: $completionStatus\n completion_data_string: $completionDataString\n evaluation_points: $evaluationPoints\n initialize_completion: $initializeCompletion\n evaluation_user_id: $evaluationUserId\n ) {\n assignment_completion {\n id\n completion_status\n submitted_at\n evaluation_submitted_at\n evaluation_points\n completion_data\n task_completion_data\n }\n }\n }\n"): (typeof documents)["\n mutation UpsertAssignmentCompletion(\n $assignmentId: ID!\n $courseSessionId: ID!\n $learningContentId: ID\n $assignmentUserId: UUID\n $completionStatus: AssignmentCompletionStatus!\n $completionDataString: String!\n $evaluationPoints: Float\n $initializeCompletion: Boolean\n $evaluationUserId: ID\n ) {\n upsert_assignment_completion(\n assignment_id: $assignmentId\n course_session_id: $courseSessionId\n learning_content_page_id: $learningContentId\n assignment_user_id: $assignmentUserId\n completion_status: $completionStatus\n completion_data_string: $completionDataString\n evaluation_points: $evaluationPoints\n initialize_completion: $initializeCompletion\n evaluation_user_id: $evaluationUserId\n ) {\n assignment_completion {\n id\n completion_status\n submitted_at\n evaluation_submitted_at\n evaluation_points\n completion_data\n task_completion_data\n }\n }\n }\n"];
|
||||
export function graphql(source: "\n mutation UpsertAssignmentCompletion(\n $assignmentId: ID!\n $courseSessionId: ID!\n $learningContentId: ID\n $assignmentUserId: UUID\n $completionStatus: AssignmentCompletionStatus!\n $completionDataString: String!\n $evaluationPoints: Float\n $initializeCompletion: Boolean\n $evaluationUserId: ID\n ) {\n upsert_assignment_completion(\n assignment_id: $assignmentId\n course_session_id: $courseSessionId\n learning_content_page_id: $learningContentId\n assignment_user_id: $assignmentUserId\n completion_status: $completionStatus\n completion_data_string: $completionDataString\n evaluation_points: $evaluationPoints\n initialize_completion: $initializeCompletion\n evaluation_user_id: $evaluationUserId\n ) {\n assignment_completion {\n id\n completion_status\n submitted_at\n evaluation_submitted_at\n evaluation_points\n evaluation_max_points\n evaluation_points_deducted\n evaluation_points_deducted_reason\n evaluation_points_final\n completion_data\n task_completion_data\n additional_json_data\n }\n }\n }\n"): (typeof documents)["\n mutation UpsertAssignmentCompletion(\n $assignmentId: ID!\n $courseSessionId: ID!\n $learningContentId: ID\n $assignmentUserId: UUID\n $completionStatus: AssignmentCompletionStatus!\n $completionDataString: String!\n $evaluationPoints: Float\n $initializeCompletion: Boolean\n $evaluationUserId: ID\n ) {\n upsert_assignment_completion(\n assignment_id: $assignmentId\n course_session_id: $courseSessionId\n learning_content_page_id: $learningContentId\n assignment_user_id: $assignmentUserId\n completion_status: $completionStatus\n completion_data_string: $completionDataString\n evaluation_points: $evaluationPoints\n initialize_completion: $initializeCompletion\n evaluation_user_id: $evaluationUserId\n ) {\n assignment_completion {\n id\n completion_status\n submitted_at\n evaluation_submitted_at\n evaluation_points\n evaluation_max_points\n evaluation_points_deducted\n evaluation_points_deducted_reason\n evaluation_points_final\n completion_data\n task_completion_data\n additional_json_data\n }\n }\n }\n"];
|
||||
/**
|
||||
* The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients.
|
||||
*/
|
||||
|
|
@ -69,7 +69,7 @@ export function graphql(source: "\n query attendanceCheckQuery($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 assignmentCompletionQuery(\n $assignmentId: ID!\n $courseSessionId: ID!\n $learningContentId: ID\n $assignmentUserId: UUID\n ) {\n assignment(id: $assignmentId) {\n assignment_type\n needs_expert_evaluation\n max_points\n content_type\n effort_required\n evaluation_description\n evaluation_document_url\n evaluation_tasks\n id\n intro_text\n performance_objectives\n slug\n tasks\n title\n translation_key\n solution_sample {\n id\n url\n }\n competence_certificate {\n ...CoursePageFields\n }\n }\n assignment_completion(\n assignment_id: $assignmentId\n course_session_id: $courseSessionId\n assignment_user_id: $assignmentUserId\n learning_content_page_id: $learningContentId\n ) {\n id\n completion_status\n submitted_at\n evaluation_submitted_at\n evaluation_user {\n id\n first_name\n last_name\n }\n assignment_user {\n avatar_url\n first_name\n last_name\n id\n }\n evaluation_points\n evaluation_max_points\n evaluation_points_deducted\n evaluation_points_deducted_reason\n evaluation_points_final\n\n evaluation_passed\n edoniq_extended_time_flag\n completion_data\n task_completion_data\n }\n }\n"): (typeof 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 solution_sample {\n id\n url\n }\n competence_certificate {\n ...CoursePageFields\n }\n }\n assignment_completion(\n assignment_id: $assignmentId\n course_session_id: $courseSessionId\n assignment_user_id: $assignmentUserId\n learning_content_page_id: $learningContentId\n ) {\n id\n completion_status\n submitted_at\n evaluation_submitted_at\n evaluation_user {\n id\n first_name\n last_name\n }\n assignment_user {\n avatar_url\n first_name\n last_name\n id\n }\n evaluation_points\n evaluation_max_points\n evaluation_points_deducted\n evaluation_points_deducted_reason\n evaluation_points_final\n\n evaluation_passed\n edoniq_extended_time_flag\n completion_data\n task_completion_data\n }\n }\n"];
|
||||
export function graphql(source: "\n query assignmentCompletionQuery(\n $assignmentId: ID!\n $courseSessionId: ID!\n $learningContentId: ID\n $assignmentUserId: UUID\n ) {\n assignment(id: $assignmentId) {\n assignment_type\n needs_expert_evaluation\n max_points\n content_type\n effort_required\n evaluation_description\n evaluation_document_url\n evaluation_tasks\n id\n intro_text\n performance_objectives\n slug\n tasks\n title\n translation_key\n solution_sample {\n id\n url\n }\n competence_certificate {\n ...CoursePageFields\n }\n }\n assignment_completion(\n assignment_id: $assignmentId\n course_session_id: $courseSessionId\n assignment_user_id: $assignmentUserId\n learning_content_page_id: $learningContentId\n ) {\n id\n completion_status\n submitted_at\n evaluation_submitted_at\n evaluation_user {\n id\n first_name\n last_name\n }\n assignment_user {\n avatar_url\n first_name\n last_name\n id\n }\n evaluation_points\n evaluation_max_points\n evaluation_points_deducted\n evaluation_points_deducted_reason\n evaluation_points_final\n\n evaluation_passed\n edoniq_extended_time_flag\n completion_data\n task_completion_data\n\n additional_json_data\n }\n }\n"): (typeof 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 solution_sample {\n id\n url\n }\n competence_certificate {\n ...CoursePageFields\n }\n }\n assignment_completion(\n assignment_id: $assignmentId\n course_session_id: $courseSessionId\n assignment_user_id: $assignmentUserId\n learning_content_page_id: $learningContentId\n ) {\n id\n completion_status\n submitted_at\n evaluation_submitted_at\n evaluation_user {\n id\n first_name\n last_name\n }\n assignment_user {\n avatar_url\n first_name\n last_name\n id\n }\n evaluation_points\n evaluation_max_points\n evaluation_points_deducted\n evaluation_points_deducted_reason\n evaluation_points_final\n\n evaluation_passed\n edoniq_extended_time_flag\n completion_data\n task_completion_data\n\n additional_json_data\n }\n }\n"];
|
||||
/**
|
||||
* The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients.
|
||||
*/
|
||||
|
|
|
|||
File diff suppressed because one or more lines are too long
|
|
@ -594,7 +594,7 @@ type AssignmentCompletionObjectType {
|
|||
course_session: CourseSessionObjectType!
|
||||
completion_status: AssignmentAssignmentCompletionCompletionStatusChoices!
|
||||
completion_data: GenericScalar
|
||||
additional_json_data: JSONString!
|
||||
additional_json_data: GenericScalar
|
||||
task_completion_data: GenericScalar
|
||||
learning_content_page_id: ID
|
||||
evaluation_points: Float
|
||||
|
|
@ -650,14 +650,6 @@ String, Boolean, Int, Float, List or Object.
|
|||
"""
|
||||
scalar GenericScalar
|
||||
|
||||
"""
|
||||
Allows use of a JSON String for input / output from the GraphQL schema.
|
||||
|
||||
Use of this type is *not recommended* as you lose the benefits of having a defined, static
|
||||
schema (one of the key benefits of GraphQL).
|
||||
"""
|
||||
scalar JSONString
|
||||
|
||||
type ContentDocumentObjectType {
|
||||
id: ID!
|
||||
display_text: String!
|
||||
|
|
|
|||
|
|
@ -55,7 +55,6 @@ export const GenericScalar = "GenericScalar";
|
|||
export const ID = "ID";
|
||||
export const Int = "Int";
|
||||
export const JSONStreamField = "JSONStreamField";
|
||||
export const JSONString = "JSONString";
|
||||
export const LearningContentAssignmentObjectType = "LearningContentAssignmentObjectType";
|
||||
export const LearningContentAttendanceCourseObjectType = "LearningContentAttendanceCourseObjectType";
|
||||
export const LearningContentDocumentListObjectType = "LearningContentDocumentListObjectType";
|
||||
|
|
|
|||
|
|
@ -52,8 +52,13 @@ export const UPSERT_ASSIGNMENT_COMPLETION_MUTATION = graphql(`
|
|||
submitted_at
|
||||
evaluation_submitted_at
|
||||
evaluation_points
|
||||
evaluation_max_points
|
||||
evaluation_points_deducted
|
||||
evaluation_points_deducted_reason
|
||||
evaluation_points_final
|
||||
completion_data
|
||||
task_completion_data
|
||||
additional_json_data
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -85,6 +85,8 @@ export const ASSIGNMENT_COMPLETION_QUERY = graphql(`
|
|||
edoniq_extended_time_flag
|
||||
completion_data
|
||||
task_completion_data
|
||||
|
||||
additional_json_data
|
||||
}
|
||||
}
|
||||
`);
|
||||
|
|
|
|||
|
|
@ -4,8 +4,6 @@
|
|||
"60%": "60%",
|
||||
"80%": "80%",
|
||||
"100%": "100%",
|
||||
"a.": "a.",
|
||||
"a.a.AlleCircle": "a.a.AlleCircle",
|
||||
"a.Abbrechen": "Abbrechen",
|
||||
"a.Abgabetermin": "Abgabetermin",
|
||||
"a.Abgezogene Punkte": "Abgezogene Punkte",
|
||||
|
|
@ -16,13 +14,11 @@
|
|||
"a.Aktuell hast du noch keine Person als Lernbegleitung eingeladen.": "Aktuell hast du noch keine Person als Lernbegleitung eingeladen.",
|
||||
"a.Aktuell hast du noch keine Person als Lernbegleitung eingeladen. Lade jetzt jemanden ein.": "Aktuell hast du noch keine Person als Lernbegleitung eingeladen. Lade jetzt jemanden ein.",
|
||||
"a.Aktuell hast du noch keine Person als Praxisbildner eingeladen.": "Aktuell hast du noch keine Person als Praxisbildner eingeladen.",
|
||||
"a.Aktuell hast du noch keine Person als Praxisbildner eingeladen. Lade jetzt jemanden ein.": "a.Aktuell hast du noch keine Person als Praxisbildner eingeladen. Lade jetzt jemanden ein.",
|
||||
"a.Aktuell hast du noch keine Person als Praxisbildner eingeladen. Lade jetzt jemanden ein.": "Aktuell hast du noch keine Person als Praxisbildner eingeladen. Lade jetzt jemanden ein.",
|
||||
"a.Aktueller Lehrgang": "Aktueller Lehrgang",
|
||||
"a.Allbranche": "Allbranche",
|
||||
"a.Alle": "Alle",
|
||||
"a.Alle aufklappen": "Alle aufklappen",
|
||||
"a.Alle Lehrgang": "a.Alle Lehrgang",
|
||||
"a.Alle Lehrgänge": "a.Alle Lehrgänge",
|
||||
"a.Alle Lehrgänge anzeigen": "Alle Lehrgänge anzeigen",
|
||||
"a.Alle Personen anzeigen": "Alle Personen anzeigen",
|
||||
"a.Alle Termine anzeigen": "Alle Termine anzeigen",
|
||||
|
|
@ -30,8 +26,6 @@
|
|||
"a.AlleCircle": "Circle: Alle",
|
||||
"a.AlleDurchführungen": "Durchführungen: Alle",
|
||||
"a.AlleGenerationen": "Generationen: Alle",
|
||||
"a.AlleKreise": "a.AlleKreise",
|
||||
"a.AlleRegionen": "a.AlleRegionen",
|
||||
"a.AlleTermine": "Termine",
|
||||
"a.AlleTypen": "Alle Typen",
|
||||
"a.Allgemeine Zufriedenheit": "Allgemeine Zufriedenheit",
|
||||
|
|
@ -39,6 +33,8 @@
|
|||
"a.An Durchführung teilnehmen": "An Durchführung teilnehmen",
|
||||
"a.Anmelden": "Anmelden",
|
||||
"a.Anwesenheit": "Anwesenheit",
|
||||
"a.Anwesenheit Präsenzkurse": "Anwesenheit Präsenzkurse",
|
||||
"a.Anwesenheitskontrolle Präsenzkurse": "Anwesenheitskontrolle Präsenzkurse",
|
||||
"a.Arbeiten": "Arbeiten",
|
||||
"a.assignment.evaluationFeedbackDescriptionText": "Gib dein Feedback frei, damit es mit dem Teilnehmer geteilt wird.",
|
||||
"a.assignment.evaluationInstrumentDescriptionTextFeedback": "Bitte unterstütze {{name}} und gib Feedback zum Auftrag.",
|
||||
|
|
@ -53,9 +49,9 @@
|
|||
"a.Bewertung": "Bewertung",
|
||||
"a.Bewertung abschliessen": "Bewertung abschliessen",
|
||||
"a.Bewertung ansehen": "Bewertung ansehen",
|
||||
"a.Bewertung bearbeiten": "a.Bewertung bearbeiten",
|
||||
"a.Bewertung bearbeitet": "a.Bewertung bearbeitet",
|
||||
"a.Bewertung erneut bearbeitet": "a.Bewertung erneut bearbeitet",
|
||||
"a.Bewertung bearbeiten": "Bewertung bearbeiten",
|
||||
"a.Bewertung bearbeitet": "Bewertung bearbeitet",
|
||||
"a.Bewertung erneut bearbeitet": "Bewertung erneut bearbeitet",
|
||||
"a.Bewertung fortsetzen": "Bewertung fortsetzen",
|
||||
"a.Bewertung Freigabe": "Bewertung Freigabe",
|
||||
"a.Bewertung freigeben": "Bewertung freigeben",
|
||||
|
|
@ -106,6 +102,7 @@
|
|||
"a.E-Mail Adresse": "E-Mail Adresse",
|
||||
"a.Einladung": "Einladung",
|
||||
"a.Einladung abschicken": "Einladung abschicken",
|
||||
"a.Elemente zu erledigen": "Elemente zu erledigen",
|
||||
"a.Email": "Email",
|
||||
"a.Entfernen": "Entfernen",
|
||||
"a.Erfahrungsnote üK": "Erfahrungsnote üK",
|
||||
|
|
@ -116,7 +113,7 @@
|
|||
"a.Ergebnisse bewerten": "Ergebnisse bewerten",
|
||||
"a.Ergebnisse teilen": "Ergebnisse teilen",
|
||||
"a.Erneut bearbeiten": "Erneut bearbeiten",
|
||||
"a.Experte": "",
|
||||
"a.Experte": "Experte",
|
||||
"a.Feedback abschliessen": "Feedback abschliessen",
|
||||
"a.Feedback ansehen": "Feedback ansehen",
|
||||
"a.Feedback erneut bearbeitet": "Feedback erneut bearbeitet",
|
||||
|
|
@ -134,6 +131,8 @@
|
|||
"a.Firmenanschrift": "Firmenanschrift",
|
||||
"a.Firmenname": "Firmenname",
|
||||
"a.Franzosisch": "Französisch",
|
||||
"a.Freigabetermin Bewertung": "Freigabetermin Bewertung",
|
||||
"a.Freigabetermin Bewertungen": "Freigabetermin Bewertungen",
|
||||
"a.Fremdeinschätzung anzeigen": "Fremdeinschätzung anzeigen",
|
||||
"a.Fremdeinschätzung freigeben": "Fremdeinschätzung freigeben",
|
||||
"a.Fremdeinschätzung von FEEDBACK_PROVIDER_NAME": "Fremdeinschätzung von {{FEEDBACK_PROVIDER_NAME}}",
|
||||
|
|
@ -156,18 +155,19 @@
|
|||
"a.Hast du Fragen? Schau dir unsere FAQ an oder kontaktiere uns": "Hast du Fragen? Schau dir unsere {faq} an oder kontaktiere uns",
|
||||
"a.Hast du schon ein Konto?": "Hast du schon ein Konto?",
|
||||
"a.Hausnummmer": "Hausnummmer",
|
||||
"a.Hier kannst du ausschliesslich mit einer Kreditkarte bezahlen.": "a.Hier kannst du ausschliesslich mit einer Kreditkarte bezahlen.",
|
||||
"a.Hier kannst du Personen einladen, damit sie deine Lernbegleitung werden. Zudem siehst du jederzeit eine Übersicht aller Personen, die du bereits als Lernbegleitung hinzugefügt hast.": "Hier kannst du Personen einladen, damit sie deine Lernbegleitung werden. Zudem siehst du jederzeit eine Übersicht aller Personen, die du bereits als Lernbegleitung hinzugefügt hast.",
|
||||
"a.Höchstpunktzahl": "Höchstpunktzahl",
|
||||
"a.Ich kann das": "Ich kann das",
|
||||
"a.Italienisch": "Italienisch",
|
||||
"a.Ja, NAME kann das.": "Ja, {{NAME}} kann das",
|
||||
"a.Jahr": "Jahr",
|
||||
"a.Jetzt mit Lehrgang starten": "Jetzt mit Lehrgang starten",
|
||||
"a.Kann FULLNAME das?": "Kann {{FULLNAME}} das?",
|
||||
"a.Kein Circle verfügbar oder ausgewählt.": "Kein Circle verfügbar oder ausgewählt.",
|
||||
"a.Keine Angabe": "Keine Angabe",
|
||||
"a.Kommentar": "a.Kommentar",
|
||||
"a.Kommentar erfassen": "a.Kommentar erfassen",
|
||||
"a.Keine Auftragsdetails verfügbar.": "Keine Auftragsdetails verfügbar.",
|
||||
"a.Kommentar": "Kommentar",
|
||||
"a.Kommentar erfassen": "Kommentar erfassen",
|
||||
"a.Kompetenznachweis": "Kompetenznachweis",
|
||||
"a.Kompetenznachweis-Elemente": "Kompetenznachweis-Elemente",
|
||||
"a.Kompetenznachweise": "Kompetenznachweise",
|
||||
|
|
@ -175,7 +175,6 @@
|
|||
"a.Konto erstellen": "Konto erstellen",
|
||||
"a.Kosten": "Kosten",
|
||||
"a.Kosten aller Jahre ansehen": "a.Kosten aller Jahre ansehen",
|
||||
"a.Kosten in 2024": "a.Kosten in 2024",
|
||||
"a.Krankenzusatzversicherung": "Krankenzusatzversicherung",
|
||||
"a.Krankenzusatzversicherungen": "Krankenzusatzversicherungen",
|
||||
"a.Lade ein Profilbild hoch, damit dich andere Personen auf den ersten Blick erkennen.": "Lade ein Profilbild hoch, damit dich andere Personen auf den ersten Blick erkennen.",
|
||||
|
|
@ -186,7 +185,7 @@
|
|||
"a.Lehrgang kaufen": "Lehrgang kaufen",
|
||||
"a.Leistungsziel": "Leistungsziel",
|
||||
"a.Leistungsziele": "Leistungsziele",
|
||||
"a.Lernbegleiter": "a.Lernbegleiter",
|
||||
"a.Lernbegleiter": "Lernbegleiter",
|
||||
"a.Lernbegleitung": "Lernbegleitung",
|
||||
"a.Lernbegleitung auswählen": "Lernbegleitung auswählen",
|
||||
"a.Lernbegleitung einladen": "Lernbegleitung einladen",
|
||||
|
|
@ -212,8 +211,7 @@
|
|||
"a.NUMBER Elemente abgeschlossen": "{NUMBER} Elemente abgeschlossen",
|
||||
"a.NUMBER Präsenztage abgeschlossen": "{NUMBER} Präsenztage abgeschlossen",
|
||||
"a.NUMBER Teilnehmer anwesend": "{NUMBER} Teilnehmer anwesend",
|
||||
"a.Nächste Termine": "a.Nächste Termine",
|
||||
"a.OldCircle": "a.OldCircle",
|
||||
"a.Nächste Termine": "Nächste Termine",
|
||||
"a.Optionale Anwesenheit": "Optionale Anwesenheit",
|
||||
"a.Ort": "Ort",
|
||||
"a.Personen": "Personen",
|
||||
|
|
@ -229,20 +227,20 @@
|
|||
"a.Profil bearbeiten": "Profil bearbeiten",
|
||||
"a.Profil ergänzen": "Profil ergänzen",
|
||||
"a.Profilbild": "Profilbild",
|
||||
"a.Präsenzkurs": "Präsenzkurs",
|
||||
"a.Präsenztag": "Präsenztag",
|
||||
"a.Punkte": "Punkte",
|
||||
"a.Punkte aus Bewertung": "Punkte aus Bewertung",
|
||||
"a.PunkteVonDaniel": "",
|
||||
"a.PunkteVonDaniel123": "Super Sache",
|
||||
"a.Rechnung": "Rechnung",
|
||||
"a.RechnungPaymentMethodDescription": "a.RechnungPaymentMethodDescription",
|
||||
"a.Rechnungsadresse": "Rechnungsadresse",
|
||||
"a.Rechnungsadresse hinzufügen": "Rechnungsadresse hinzufügen",
|
||||
"a.Rechnungsadresse von {organisation}": "Rechnungsadresse von {{organisation}}",
|
||||
"a.Rechnungsadresse von {organisation} hinzufügen": "Rechnungsadresse von {{organisation}} hinzufügen",
|
||||
"a.Regionenleiter": "a.Regionenleiter",
|
||||
"a.Region": "Region",
|
||||
"a.Regionenleiter": "Regionenleiter",
|
||||
"a.Resultat": "Resultat",
|
||||
"a.Schliessen": "a.Schliessen",
|
||||
"a.Rolle": "Rolle",
|
||||
"a.Schliessen": "Schliessen",
|
||||
"a.Selbst- und Fremdeinschätzungen": "Selbst- und Fremdeinschätzungen",
|
||||
"a.Selbsteinschätzung": "Selbsteinschätzung",
|
||||
"a.Selbsteinschätzung anschauen": "Selbsteinschätzung anschauen",
|
||||
|
|
@ -255,16 +253,17 @@
|
|||
"a.Selbsteinschätzungen geteilt": "Selbsteinschätzungen geteilt",
|
||||
"a.So startest du mit diesem Lehrgang": "So startest du mit diesem Lehrgang",
|
||||
"a.Standort": "Standort",
|
||||
"a.Statistik": "a.Statistik",
|
||||
"a.Statistik für alle Lernenden": "a.Statistik für alle Lernenden",
|
||||
"a.Statistik": "Statistik",
|
||||
"a.Stelle deinen Lernenden zusätzliche Inhalte zur Verfügung.": "Stelle deinen Teilnehmern zusätzliche Inhalte zur Verfügung.",
|
||||
"a.Strasse": "Strasse",
|
||||
"a.Super, nun ist alles bereit. Du bist der Durchführung «{course}» zugewiesen und kannst mit dem Lehrgang starten.": "Super, nun ist alles bereit. Du bist der Durchführung «{{course}}» zugewiesen und kannst mit dem Lehrgang starten.",
|
||||
"a.Teilnehmer": "Teilnehmer",
|
||||
"a.Teilnehmer im 2024": "a.Teilnehmer im 2024",
|
||||
"a.Teilnehmer im": "Teilnehmer im",
|
||||
"a.Teilnehmer nach Zulassungsprofilen im": "Teilnehmer nach Zulassungsprofilen im",
|
||||
"a.Telefonnummer": "Telefonnummer",
|
||||
"a.Telefonnummer hat das falsche Format": "a.Telefonnummer hat das falsche Format",
|
||||
"a.Telefonnummer hat das falsche Format": "Telefonnummer hat das falsche Format",
|
||||
"a.Termin": "Termin",
|
||||
"a.Termin nicht festgelegt": "Termin nich festgelegt",
|
||||
"a.Termine": "Termine",
|
||||
"a.Total {NUMBER} Antworten": "Total {NUMBER} Antworten",
|
||||
"a.Trainer": "Trainer",
|
||||
|
|
@ -280,7 +279,6 @@
|
|||
"a.VorschauTeilnehmer": "Vorschau Teilnehmer",
|
||||
"a.Wegleitung üK": "Wegleitung üK",
|
||||
"a.wegleitungUkUrl": "https://www.vbv.ch/fileadmin/vbv/Dokumente/Bildungsabschluesse/KV/Wegleitung_ueK_240215_de_V2.pdf",
|
||||
"a.Weiter zur Zahlung": "a.Weiter zur Zahlung",
|
||||
"a.Wir haben per E-Mail eine Bestätigung an {email} geschickt.": "Wir haben per E-Mail eine Bestätigung an {email} geschickt.",
|
||||
"a.Wähle ein Zulassungsprofil, damit du deinen Lehrgang an der richtigen Stelle beginnen kannst.": "Wähle ein Zulassungsprofil, damit du deinen Lehrgang an der richtigen Stelle beginnen kannst.",
|
||||
"a.Wähle ein Zulassungsprofil, damit du deinen Lehrgang an der richtigen Stelle beginnen kannst. Du kannst ihn später jederzeit ändern.": "Wähle ein Zulassungsprofil, damit du deinen Lehrgang an der richtigen Stelle beginnen kannst. Du kannst ihn später jederzeit ändern.",
|
||||
|
|
@ -291,7 +289,7 @@
|
|||
"a.Zulassungsprofil": "Zulassungsprofil",
|
||||
"a.Zulassungsprofil auswählen": "Zulassungsprofil auswählen",
|
||||
"a.Zum Unterlagen-Upload": "Unterlagen hochladen",
|
||||
"a.Zurück": "a.Zurück",
|
||||
"a.Zurück": "Zurück",
|
||||
"a.Zwischenstand": "Zwischenstand",
|
||||
"a.{AVG} von {MAX}": "{AVG} von {MAX}",
|
||||
"a.{NUMBER} Bestanden": "{NUMBER} Bestanden",
|
||||
|
|
@ -306,9 +304,7 @@
|
|||
"Alle": "Alle",
|
||||
"Anwesenheit": "Anwesenheit",
|
||||
"Anwesenheit bestätigen": "Anwesenheit bestätigen",
|
||||
"Anwesenheit Präsenzkurse": "Anwesenheit Präsenzkurse",
|
||||
"Anwesenheit prüfen": "Anwesenheit prüfen",
|
||||
"Anwesenheitskontrolle Präsenzkurse": "Anwesenheitskontrolle Präsenzkurse",
|
||||
"assignment.acceptConditionsDisclaimer": "Bedingungen akzeptieren und Ergebnisse abgeben",
|
||||
"assignment.assessmentDocumentDisclaimer": "Diese geleitete Fallarbeit wird auf Grund des folgenden Beurteilungsinstrument bewertet:",
|
||||
"assignment.assessmentTitle": "Bewertung",
|
||||
|
|
@ -379,7 +375,6 @@
|
|||
"circlePage.gotQuestions": "Hast du Fragen?",
|
||||
"circlePage.Im KompetenzNavi anschauen": "Im KompetenzNavi anzeigen",
|
||||
"circlePage.learnMore": "Erfahre mehr dazu",
|
||||
"Cockpit anschauen": "Cockpit anschauen",
|
||||
"cockpit.all": "Alle",
|
||||
"cockpit.examsDone": "Abgelegte Prüfungen von Teilnehmer.",
|
||||
"cockpit.feedbacksDone": "Abgeschickte Feedbacks von Teilnehmer.",
|
||||
|
|
@ -411,7 +406,6 @@
|
|||
"Der Preis für den Lehrgang «Versicherungsvermittler-/in VBV» beträgt CHF 300 exkl. MWSt.. Mit dem Kauf erhältst du Zugang zum Lernpfad und den Lernmedien.": "Nach der Bezahlung von 300 CHF exkl. MWSt. erhältst du Zugang für den gesamten Lehrgang (inkl. Prüfung).",
|
||||
"dueDates.noDueDatesAvailable": "Keine Termine vorhanden",
|
||||
"dueDates.showAllDueDates": "Alle Termine anzeigen",
|
||||
"Durchführung": "Durchführung",
|
||||
"edoniqTest.checkboxTitle": "Bedingungen akzeptieren und Test durchführen",
|
||||
"edoniqTest.deadlineInPast": "Der Test kann nicht mehr durchgeführt werden, da das Abgabedatum abgelaufen ist.",
|
||||
"edoniqTest.qualifiesForExtendedTime": "Ich bestätige, dass ich Anrecht auf einen Test mit Nachteilsausgleich habe.",
|
||||
|
|
@ -421,7 +415,6 @@
|
|||
"edoniqTest.testDescription": "Führe den folgenden Test durch. Der Test kann nur einmal durchgeführt werden und ist notenrelevant.",
|
||||
"edoniqTest.testSubmitted": "Du hast diesen Test abgeschlossen",
|
||||
"edoniqTest.viewResults": "Ergebnisse anschauen",
|
||||
"Elemente zu erledigen": "Elemente zu erledigen",
|
||||
"Ergebnisse anschauen": "Ergebnisse anschauen",
|
||||
"Ergebnisse anzeigen": "Ergebnisse anzeigen",
|
||||
"Feedback": "Feedback",
|
||||
|
|
@ -471,7 +464,6 @@
|
|||
"footer.dataProtectionText": "Datenschutzbestimmungen",
|
||||
"footer.imprintLink": "https://www.vbv.ch/de/impressum",
|
||||
"footer.imprintText": "Impressum",
|
||||
"Freigabetermin Bewertungen:": "Freigabetermin Bewertungen:",
|
||||
"Füge dein Profilbild hinzu und ergänze die fehlenden Angaben.": "Füge dein Profilbild hinzu und ergänze die fehlenden Angaben.",
|
||||
"Geleitete Fallarbeit": "Geleitete Fallarbeit",
|
||||
"general.back": "Zurück",
|
||||
|
|
@ -479,18 +471,14 @@
|
|||
"general.backToCircle": "zurück zum Circle",
|
||||
"general.backToLearningPath": "zurück zum Lernpfad",
|
||||
"general.cancel": "Abbrechen",
|
||||
"general.certificate_many": "",
|
||||
"general.certificate_one": "Zertifikat",
|
||||
"general.certificate_other": "Zertifikate",
|
||||
"general.circles": "Circles",
|
||||
"general.close": "Schliessen",
|
||||
"general.exam_many": "",
|
||||
"general.exam_one": "Prüfung",
|
||||
"general.exam_other": "Prüfungen",
|
||||
"general.examResult_many": "",
|
||||
"general.examResult_one": "Prüfungsresultat",
|
||||
"general.examResult_other": "Prüfungsresultate",
|
||||
"general.feedback_many": "",
|
||||
"general.feedback_one": "Feedback",
|
||||
"general.feedback_other": "Feedbacks",
|
||||
"general.im circle x anschauen": "Im Circle «{{x}}» anzeigen",
|
||||
|
|
@ -501,7 +489,6 @@
|
|||
"general.next": "Weiter",
|
||||
"general.nextStep": "Weiter geht's",
|
||||
"general.no": "Nein",
|
||||
"general.notification_many": "",
|
||||
"general.notification_one": "Benachrichtigung",
|
||||
"general.notification_other": "Benachrichtigungen",
|
||||
"general.profileLink": "Details anzeigen",
|
||||
|
|
@ -514,21 +501,14 @@
|
|||
"general.start": "Los geht's",
|
||||
"general.submission": "Abgabe",
|
||||
"general.title": "myVBV",
|
||||
"general.transferTask_many": "",
|
||||
"general.transferTask_one": "Transferauftrag",
|
||||
"general.transferTask_other": "Transferaufträge",
|
||||
"general.yes": "Ja",
|
||||
"Generation": "Generation",
|
||||
"Hast du Fragen?": "Hast du Fragen?",
|
||||
"Hier überprüfst und bestätigst du die Anwesenheit deiner Teilnehmenden.": "Hier überprüfst und bestätigst du die Anwesenheit deiner Teilnehmenden.",
|
||||
"Ich will die Anwesenheit der untenstehenden Personen definitiv bestätigen.": "Ich will die Anwesenheit der untenstehenden Personen definitiv bestätigen.",
|
||||
"Jahr": "Jahr",
|
||||
"Keine Auftragsdetails verfügbar.": "Keine Auftragsdetails verfügbar.",
|
||||
"Kompetenznachweise": "Kompetenznachweise",
|
||||
"Kompetenzprofil": "Kompetenzprofil",
|
||||
"Kosten im": "Kosten im",
|
||||
"Kosten in": "Kosten in",
|
||||
"Kosten in 2024": "Kosten in 2024",
|
||||
"language.de": "Deutsch",
|
||||
"language.fr": "Français",
|
||||
"language.it": "Italiano",
|
||||
|
|
@ -540,7 +520,6 @@
|
|||
"learningContentTypes.feedback": "Feedback",
|
||||
"learningContentTypes.knowledgeAssessment": "Test",
|
||||
"learningContentTypes.learningModule": "Lernmodul",
|
||||
"learningContentTypes.mandatory_casework": "learningContentTypes.mandatory_casework",
|
||||
"learningContentTypes.placeholder": "In Umsetzung",
|
||||
"learningContentTypes.praxisAssignment": "Auftrag",
|
||||
"learningContentTypes.prepAssignment": "Vorbereitungsauftrag",
|
||||
|
|
@ -558,9 +537,6 @@
|
|||
"learningPathPage.showListView": "Listenansicht anzeigen",
|
||||
"learningPathPage.topics": "Themen:",
|
||||
"learningPathPage.welcomeBack": "Willkommen zurück in deinem Lehrgang:",
|
||||
"Lehrgang": "Lehrgang",
|
||||
"Lernbegleitung einladen": "Lernbegleitung einladen",
|
||||
"Lernpfad kaufen": "",
|
||||
"login.demoLogin": "Demo Login",
|
||||
"login.guidelineFile": "Registrierung_myVBV.pdf",
|
||||
"login.guidelineText": "Erfahre wie du dich als Lernende/r registrieren kannst",
|
||||
|
|
@ -572,40 +548,31 @@
|
|||
"mainNavigation.logout": "Abmelden",
|
||||
"mainNavigation.profile": "Profil",
|
||||
"mediaLibrary.handlungsfelder.description": "Finde alle Ressourcen der Handlungsfelder wie Lernmedien, Links und andere nützliche Informationen.",
|
||||
"mediaLibrary.handlungsfelder.title_many": "",
|
||||
"mediaLibrary.handlungsfelder.title_one": "Handlungsfeld",
|
||||
"mediaLibrary.handlungsfelder.title_other": "Handlungsfelder",
|
||||
"mediaLibrary.learningMedia.description": "Finde eine vollständige Liste der Bücher und anderen Medien, auf die im Kurs verwiesen wird.",
|
||||
"mediaLibrary.learningMedia.titel": "Lernmedien",
|
||||
"mediaLibrary.show": "Mediathek anzeigen",
|
||||
"mediaLibrary.title": "Mediathek",
|
||||
"Meine Lernbegleiter": "Meine Lernbegleiter",
|
||||
"Meine Praxisbildner": "Meine Praxisbildner",
|
||||
"Member": "Teilnehmer",
|
||||
"MentorUK": "Praxisbildner/Praxisbildnerin",
|
||||
"MentorVV": "Lernbegleitung",
|
||||
"messages.sendMessage": "Nachricht schreiben",
|
||||
"MS Teams öffnen": "MS Teams öffnen",
|
||||
"Nach der Bezahlung von 300 CHF exkl. MWSt. erhältst du Zugang für den gesamten Lehrgang (inkl. Prüfung).": "Nach der Bezahlung von 300 CHF exkl. MWSt. erhältst du Zugang für den gesamten Lehrgang (inkl. Prüfung).",
|
||||
"Neuen Praxisbildner einladen": "Neuen Praxisbildner einladen",
|
||||
"Nicht bestanden": "Nicht bestanden",
|
||||
"notifications.load_more": "Mehr laden",
|
||||
"notifications.no_notifications": "Du hast derzeit keine Benachrichtigungen",
|
||||
"Nächste Termine": "Nächste Termine",
|
||||
"Passwort": "Passwort",
|
||||
"Personen": "Personen",
|
||||
"profile.": "profile.",
|
||||
"profile.all": "Allbranche",
|
||||
"profile.krankenzusatzversicherung": "Krankenzusatz",
|
||||
"profile.leben": "Leben",
|
||||
"profile.nichtleben": "Nichtleben",
|
||||
"profile.null": "profile.null",
|
||||
"Präsenzkurs": "Präsenzkurs",
|
||||
"receivedEvaluation.no": "Das musst du nochmals anschauen",
|
||||
"receivedEvaluation.yes": "Ja, du kannst das",
|
||||
"Reflexion": "Reflexion",
|
||||
"Region": "Region",
|
||||
"Rolle": "Rolle",
|
||||
"Sehr unzufrieden": "Sehr unzufrieden",
|
||||
"Sehr zufrieden": "Sehr zufrieden",
|
||||
"selfEvaluation.instruction.0": "Überprüfe, ob du in der Lernheinheit",
|
||||
|
|
@ -631,13 +598,6 @@
|
|||
"start.vvDescription": "Der Lernpfad und die Lernmedien, welche dich auf die Prüfung «Versicherungsvermittler/-in VBV» vorbereiten.",
|
||||
"Status anschauen": "Status anschauen",
|
||||
"Supervisor": "Regionenleiter",
|
||||
"Teilnehmer": "Teilnehmer",
|
||||
"Teilnehmer im": "Teilnehmer im",
|
||||
"Teilnehmer im 2024": "Teilnehmer im 2024",
|
||||
"Teilnehmer nach Zulassungsprofilen": "Teilnehmer nach Zulassungsprofilen",
|
||||
"Teilnehmer nach Zulassungsprofilen im": "Teilnehmer nach Zulassungsprofilen im",
|
||||
"Termin nicht festgelegt": "",
|
||||
"TODO: Nächste Termine": "TODO: Nächste Termine",
|
||||
"Trainer": "Trainer",
|
||||
"Trainerunterlagen": "Trainerunterlagen",
|
||||
"TrainingResponsible": "Ausbildungsverantwortlicher",
|
||||
|
|
@ -647,7 +607,6 @@
|
|||
"uk.dashboard.allClear": "Alles klar?",
|
||||
"uk.dashboard.nextSteps": "Als lernende Person wirst in den kommenden Tagen einem üK-Lehrgang zugewiesen. Dann\nerscheint hier Deine personalisierte Lehrgangs-Box mit den weiteren Informationen.",
|
||||
"uk.dashboard.welcome": "Es hat alles geklappt, du bist nun auf der digitalen Lernumgebung des Berufsbildungsverbands derVersicherungswirtschaft (VBV) registriert!",
|
||||
"UnknownRoleKey": "UnknownRoleKey",
|
||||
"unzufrieden": "unzufrieden",
|
||||
"Vorbedingung": "Vorbedingung",
|
||||
"Vorbereitungsaufgabe": "Vorbereitungsauftrag",
|
||||
|
|
@ -665,6 +624,5 @@
|
|||
"Zu erledigen": "Zu erledigen",
|
||||
"zufrieden": "zufrieden",
|
||||
"Zulassungsprofil": "Zulassungsprofil",
|
||||
"Zur Zeit sind keine Termine vorhanden": "Zur Zeit sind keine Termine vorhanden",
|
||||
"Überbetriebliche Kurse": "Überbetriebliche Kurse"
|
||||
"Zur Zeit sind keine Termine vorhanden": "Zur Zeit sind keine Termine vorhanden"
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,11 +1,9 @@
|
|||
{
|
||||
"20%": "",
|
||||
"40%": "",
|
||||
"60%": "",
|
||||
"80%": "",
|
||||
"100%": "",
|
||||
"a.": "",
|
||||
"a.a.AlleCircle": "",
|
||||
"20%": "20%",
|
||||
"40%": "40%",
|
||||
"60%": "60%",
|
||||
"80%": "80%",
|
||||
"100%": "100%",
|
||||
"a.Abbrechen": "Annuler",
|
||||
"a.Abgabetermin": "Date de remise",
|
||||
"a.Abgezogene Punkte": "Points déduits",
|
||||
|
|
@ -16,13 +14,11 @@
|
|||
"a.Aktuell hast du noch keine Person als Lernbegleitung eingeladen.": "Actuellement, tu n'as invité aucune personne comme tuteur.",
|
||||
"a.Aktuell hast du noch keine Person als Lernbegleitung eingeladen. Lade jetzt jemanden ein.": "Actuellement, tu n'as invité aucune personne comme tuteur. Invite quelqu'un maintenant.",
|
||||
"a.Aktuell hast du noch keine Person als Praxisbildner eingeladen.": "Actuellement, tu n'as pas encore invité de personne comme formateur/-trice pratique.",
|
||||
"a.Aktuell hast du noch keine Person als Praxisbildner eingeladen. Lade jetzt jemanden ein.": "",
|
||||
"a.Aktuell hast du noch keine Person als Praxisbildner eingeladen. Lade jetzt jemanden ein.": "Actuellement, tu n'as invité personne en tant que formateur pratique. Invite quelqu'un maintenant.",
|
||||
"a.Aktueller Lehrgang": "Cours en cours",
|
||||
"a.Allbranche": "Allbranche",
|
||||
"a.Alle": "Tout",
|
||||
"a.Alle aufklappen": "Tout déplier",
|
||||
"a.Alle Lehrgang": "",
|
||||
"a.Alle Lehrgänge": "",
|
||||
"a.Alle Lehrgänge anzeigen": "Afficher tous les cours",
|
||||
"a.Alle Personen anzeigen": "Afficher toutes les personnes",
|
||||
"a.Alle Termine anzeigen": "Afficher tous les dates",
|
||||
|
|
@ -30,8 +26,6 @@
|
|||
"a.AlleCircle": "Circle: Tous",
|
||||
"a.AlleDurchführungen": "Opérations: Tous",
|
||||
"a.AlleGenerationen": "Générations : Toutes",
|
||||
"a.AlleKreise": "",
|
||||
"a.AlleRegionen": "",
|
||||
"a.AlleTermine": "Rendez-vous",
|
||||
"a.AlleTypen": "Tous les types",
|
||||
"a.Allgemeine Zufriedenheit": "Satisfaction générale",
|
||||
|
|
@ -39,6 +33,8 @@
|
|||
"a.An Durchführung teilnehmen": "Participer à la session",
|
||||
"a.Anmelden": "Connexion",
|
||||
"a.Anwesenheit": "Présence",
|
||||
"a.Anwesenheit Präsenzkurse": "Présence aux cours",
|
||||
"a.Anwesenheitskontrolle Präsenzkurse": "Contrôle de présence aux cours",
|
||||
"a.Arbeiten": "Travaux",
|
||||
"a.assignment.evaluationFeedbackDescriptionText": "Valide ton feedback pour qu'il puisse être partagé aux participants.",
|
||||
"a.assignment.evaluationInstrumentDescriptionTextFeedback": "Veuillez soutenir {{name}} et donner votre avis sur la mission.",
|
||||
|
|
@ -53,9 +49,9 @@
|
|||
"a.Bewertung": "Évaluation",
|
||||
"a.Bewertung abschliessen": "Évaluation complète",
|
||||
"a.Bewertung ansehen": "Voir l'avis",
|
||||
"a.Bewertung bearbeiten": "",
|
||||
"a.Bewertung bearbeitet": "",
|
||||
"a.Bewertung erneut bearbeitet": "",
|
||||
"a.Bewertung bearbeiten": "Modifier l'évaluation",
|
||||
"a.Bewertung bearbeitet": "Évaluation modifiée",
|
||||
"a.Bewertung erneut bearbeitet": "Évaluation à nouveau modifiée",
|
||||
"a.Bewertung fortsetzen": "Continuer l'évaluation",
|
||||
"a.Bewertung Freigabe": "Libération de l'évaluation",
|
||||
"a.Bewertung freigeben": "Libérer l'évaluation",
|
||||
|
|
@ -106,7 +102,8 @@
|
|||
"a.E-Mail Adresse": "Adresse e-mail",
|
||||
"a.Einladung": "Invitation",
|
||||
"a.Einladung abschicken": "Envoyer l'invitation",
|
||||
"a.Email": "",
|
||||
"a.Elemente zu erledigen": "Eléments à faire",
|
||||
"a.Email": "Email",
|
||||
"a.Entfernen": "Supprimer",
|
||||
"a.Erfahrungsnote üK": "Note d’expérience CI",
|
||||
"a.Ergebnis bewerten": "Évaluer le résultat",
|
||||
|
|
@ -116,10 +113,10 @@
|
|||
"a.Ergebnisse bewerten": "Évaluer les résultats",
|
||||
"a.Ergebnisse teilen": "Partager les résultats",
|
||||
"a.Erneut bearbeiten": "Modifier à nouveau",
|
||||
"a.Experte": "",
|
||||
"a.Experte": "Expert",
|
||||
"a.Feedback abschliessen": "Terminer le feedback",
|
||||
"a.Feedback ansehen": "Voir le feedback",
|
||||
"a.Feedback erneut bearbeitet": "",
|
||||
"a.Feedback erneut bearbeitet": "Feedback modifié à nouveau",
|
||||
"a.Feedback fortsetzen": "Poursuivre le feedback",
|
||||
"a.Feedback Freigabe": "Validation du feedback",
|
||||
"a.Feedback freigeben": "Valider le feedback",
|
||||
|
|
@ -134,6 +131,8 @@
|
|||
"a.Firmenanschrift": "Adresse de l'entreprise",
|
||||
"a.Firmenname": "Nom de l'entreprise",
|
||||
"a.Franzosisch": "Français",
|
||||
"a.Freigabetermin Bewertung": "Date de remise d'évaluation",
|
||||
"a.Freigabetermin Bewertungen": "Date de remise des évaluations",
|
||||
"a.Fremdeinschätzung anzeigen": "Valutazione esterna",
|
||||
"a.Fremdeinschätzung freigeben": "Autoriser l'évaluation externe",
|
||||
"a.Fremdeinschätzung von FEEDBACK_PROVIDER_NAME": "Évaluation externe de {{FEEDBACK_PROVIDER_NAME}}",
|
||||
|
|
@ -156,18 +155,19 @@
|
|||
"a.Hast du Fragen? Schau dir unsere FAQ an oder kontaktiere uns": "Vous avez des questions ? Consultez notre {faq} ou contactez-nous",
|
||||
"a.Hast du schon ein Konto?": "Avez-vous déjà un compte?",
|
||||
"a.Hausnummmer": "Numéro de maison",
|
||||
"a.Hier kannst du ausschliesslich mit einer Kreditkarte bezahlen.": "",
|
||||
"a.Hier kannst du Personen einladen, damit sie deine Lernbegleitung werden. Zudem siehst du jederzeit eine Übersicht aller Personen, die du bereits als Lernbegleitung hinzugefügt hast.": "Ici, tu peux inviter des personnes pour devenir ton tuteur. De plus, tu peux toujours voir un aperçu de toutes les personnes que tu as déjà ajoutées comme tuteurs.",
|
||||
"a.Höchstpunktzahl": "Score maximum",
|
||||
"a.Ich kann das": "Je maîtrise cette question",
|
||||
"a.Italienisch": "Italien",
|
||||
"a.Ja, NAME kann das.": "Oui, {{NAME}} peut le faire",
|
||||
"a.Jahr": "Année",
|
||||
"a.Jetzt mit Lehrgang starten": "Commencez maintenant le cours",
|
||||
"a.Kann FULLNAME das?": "Peut {{FULLNAME}} faire cela?",
|
||||
"a.Kein Circle verfügbar oder ausgewählt.": "Aucun Circle disponible ou sélectionné.",
|
||||
"a.Keine Angabe": "Aucune indication",
|
||||
"a.Kommentar": "",
|
||||
"a.Kommentar erfassen": "",
|
||||
"a.Keine Auftragsdetails verfügbar.": "Aucun détail de la commande n'est disponible.",
|
||||
"a.Kommentar": "Commentaire",
|
||||
"a.Kommentar erfassen": "Saisir un commentaire",
|
||||
"a.Kompetenznachweis": "Contrôle de compétences",
|
||||
"a.Kompetenznachweis-Elemente": "Éléments de contrôle",
|
||||
"a.Kompetenznachweise": "Contrôles de compétences",
|
||||
|
|
@ -175,7 +175,6 @@
|
|||
"a.Konto erstellen": "Créer un compte",
|
||||
"a.Kosten": "Coûts",
|
||||
"a.Kosten aller Jahre ansehen": "Voir les coûts de toutes les années",
|
||||
"a.Kosten in 2024": "",
|
||||
"a.Krankenzusatzversicherung": "Assurance maladie complémentaire",
|
||||
"a.Krankenzusatzversicherungen": "Assurances maladie complémentaires",
|
||||
"a.Lade ein Profilbild hoch, damit dich andere Personen auf den ersten Blick erkennen.": "Téléchargez une photo de profil pour que les autres puissent vous reconnaître au premier coup d'œil.",
|
||||
|
|
@ -186,7 +185,7 @@
|
|||
"a.Lehrgang kaufen": "Acheter le cours",
|
||||
"a.Leistungsziel": "Objectif de valutazione",
|
||||
"a.Leistungsziele": "Objectif évaluateur",
|
||||
"a.Lernbegleiter": "",
|
||||
"a.Lernbegleiter": "Tuteur",
|
||||
"a.Lernbegleitung": "Tuteur",
|
||||
"a.Lernbegleitung auswählen": "Tutorat sélectionner",
|
||||
"a.Lernbegleitung einladen": "Inviter un tuteur",
|
||||
|
|
@ -212,8 +211,7 @@
|
|||
"a.NUMBER Elemente abgeschlossen": "{NUMBER} éléments terminés",
|
||||
"a.NUMBER Präsenztage abgeschlossen": "{NUMBER} jours de présence complétés",
|
||||
"a.NUMBER Teilnehmer anwesend": "{NUMBER} participants présents",
|
||||
"a.Nächste Termine": "",
|
||||
"a.OldCircle": "",
|
||||
"a.Nächste Termine": "Prochaines dates",
|
||||
"a.Optionale Anwesenheit": "Présence facultative",
|
||||
"a.Ort": "Ville",
|
||||
"a.Personen": "Personnes",
|
||||
|
|
@ -229,20 +227,20 @@
|
|||
"a.Profil bearbeiten": "Modifier le profil",
|
||||
"a.Profil ergänzen": "Compléter le profil",
|
||||
"a.Profilbild": "Photo de profil",
|
||||
"a.Präsenzkurs": "Cours de présence",
|
||||
"a.Präsenztag": "Jour de présence",
|
||||
"a.Punkte": "points",
|
||||
"a.Punkte aus Bewertung": "Points de l'évaluation",
|
||||
"a.PunkteVonDaniel": "",
|
||||
"a.PunkteVonDaniel123": "",
|
||||
"a.Rechnung": "Facture",
|
||||
"a.RechnungPaymentMethodDescription": "",
|
||||
"a.Rechnungsadresse": "Adresse de facturation",
|
||||
"a.Rechnungsadresse hinzufügen": "Ajouter une adresse de facturation",
|
||||
"a.Rechnungsadresse von {organisation}": "Adresse de facturation de {{organisation}}",
|
||||
"a.Rechnungsadresse von {organisation} hinzufügen": "Ajouter l'adresse de facturation de {{organisation}}",
|
||||
"a.Regionenleiter": "",
|
||||
"a.Region": "Région",
|
||||
"a.Regionenleiter": "Responsable régional",
|
||||
"a.Resultat": "Résultat",
|
||||
"a.Schliessen": "",
|
||||
"a.Rolle": "Rouleau",
|
||||
"a.Schliessen": "Fermer",
|
||||
"a.Selbst- und Fremdeinschätzungen": "Auto-évaluations et évaluations externes",
|
||||
"a.Selbsteinschätzung": "Auto-évaluation",
|
||||
"a.Selbsteinschätzung anschauen": "Voir l'auto-évaluation",
|
||||
|
|
@ -255,16 +253,17 @@
|
|||
"a.Selbsteinschätzungen geteilt": "Auto-évaluations partagées",
|
||||
"a.So startest du mit diesem Lehrgang": "C'est ainsi que tu commences ce parcours d'apprentissage",
|
||||
"a.Standort": "Emplacement",
|
||||
"a.Statistik": "",
|
||||
"a.Statistik für alle Lernenden": "",
|
||||
"a.Statistik": "Statistiques",
|
||||
"a.Stelle deinen Lernenden zusätzliche Inhalte zur Verfügung.": "Proposez à vos participants du contenu supplémentaire",
|
||||
"a.Strasse": "Rue",
|
||||
"a.Super, nun ist alles bereit. Du bist der Durchführung «{course}» zugewiesen und kannst mit dem Lehrgang starten.": "Super, tout est prêt maintenant. Vous êtes assigné à la session «{{course}}» et pouvez commencer le cours.",
|
||||
"a.Teilnehmer": "Participants",
|
||||
"a.Teilnehmer im 2024": "",
|
||||
"a.Teilnehmer im": "Participants en",
|
||||
"a.Teilnehmer nach Zulassungsprofilen im": "Participants par profil d'admission en",
|
||||
"a.Telefonnummer": "Numéro de téléphone",
|
||||
"a.Telefonnummer hat das falsche Format": "",
|
||||
"a.Telefonnummer hat das falsche Format": "Le numéro de téléphone n'est pas au bon format",
|
||||
"a.Termin": "Date",
|
||||
"a.Termin nicht festgelegt": "Date non fixée",
|
||||
"a.Termine": "Dates",
|
||||
"a.Total {NUMBER} Antworten": "Total {NUMBER} réponses",
|
||||
"a.Trainer": "Formateur / Formatrice",
|
||||
|
|
@ -280,7 +279,6 @@
|
|||
"a.VorschauTeilnehmer": "Vue des participants",
|
||||
"a.Wegleitung üK": "Directives CI",
|
||||
"a.wegleitungUkUrl": "https://www.vbv.ch/fileadmin/vbv/Dokumente/Bildungsabschluesse/KV/Wegleitung_ueK_240215_fr_V2.pdf",
|
||||
"a.Weiter zur Zahlung": "",
|
||||
"a.Wir haben per E-Mail eine Bestätigung an {email} geschickt.": "Nous avons envoyé une confirmation par e-mail à {email}.",
|
||||
"a.Wähle ein Zulassungsprofil, damit du deinen Lehrgang an der richtigen Stelle beginnen kannst.": "Choisis un profil d'admission pour que tu puisses commencer ta formation au bon endroit.",
|
||||
"a.Wähle ein Zulassungsprofil, damit du deinen Lehrgang an der richtigen Stelle beginnen kannst. Du kannst ihn später jederzeit ändern.": "Sélectionne un profil d'admission pour que tu puisses commencer ta formation au bon endroit. Tu peux le modifier à tout moment par la suite.",
|
||||
|
|
@ -291,7 +289,7 @@
|
|||
"a.Zulassungsprofil": "Profil d'admission",
|
||||
"a.Zulassungsprofil auswählen": "Choisir le profil d'admission",
|
||||
"a.Zum Unterlagen-Upload": "Télécharger des documents",
|
||||
"a.Zurück": "",
|
||||
"a.Zurück": "Retour",
|
||||
"a.Zwischenstand": "Point intermédiaire",
|
||||
"a.{AVG} von {MAX}": "{AVG} de {MAX}",
|
||||
"a.{NUMBER} Bestanden": "{NUMBER} réussi",
|
||||
|
|
@ -306,9 +304,7 @@
|
|||
"Alle": "Tout",
|
||||
"Anwesenheit": "Présence",
|
||||
"Anwesenheit bestätigen": "Confirmer la présence",
|
||||
"Anwesenheit Präsenzkurse": "Présence aux cours",
|
||||
"Anwesenheit prüfen": "Vérifier la présence",
|
||||
"Anwesenheitskontrolle Präsenzkurse": "Contrôle de présence aux cours",
|
||||
"assignment.acceptConditionsDisclaimer": "Accepter les conditions et remettre les résultats",
|
||||
"assignment.assessmentDocumentDisclaimer": "Cette étude de cas dirigée est évaluée par l’outil suivant :",
|
||||
"assignment.assessmentTitle": "Évaluation",
|
||||
|
|
@ -343,12 +339,12 @@
|
|||
"assignment.x von y Arbeiten abgeschlossen": "{{x}} sur {{y}} épreuves terminées",
|
||||
"assignment.x von y Kompetenznachweis-Elementen abgeschlossen": "{{x}} sur {{y}} éléments de contrôle de compétences terminés",
|
||||
"Aufgrund von Problemen beim Zahlungsanbieter ist ein Erwerb der myVBV-Lizenz derzeit nur mit TWINT möglich. Wir arbeiten mit Hochdruck an der Lösung des Problems. ": "En raison de problèmes avec le fournisseur de paiement, l'acquisition de la licence myAVA n'est actuellement possible qu'avec TWINT. Nous travaillons d'arrache-pied pour résoudre le problème. ",
|
||||
"Ausbildungsverantwortlicher": "",
|
||||
"Ausbildungsverantwortlicher": "Responsable de formation",
|
||||
"Benutzername": "Nom d’utilisateur",
|
||||
"Berufsbildner": "",
|
||||
"Bestanden": "",
|
||||
"Berufsbildner": "Formateur professionnel",
|
||||
"Bestanden": "Réussi",
|
||||
"Bewertung von x y": "Évaluation de {{x}} {{y}}",
|
||||
"Circle": "",
|
||||
"Circle": "Cercle",
|
||||
"circlePage.circleContentBoxTitle": "Ce que tu vas apprendre dans ce Circle",
|
||||
"circlePage.contactExpertButton": "Contacter le formateur / la formatrice",
|
||||
"circlePage.contactExpertDescription": "Échanger avec le formateur / la formatrice si tu as des questions sur le Circle {{circleName}}.",
|
||||
|
|
@ -379,7 +375,6 @@
|
|||
"circlePage.gotQuestions": "As-tu des questions?",
|
||||
"circlePage.Im KompetenzNavi anschauen": "Afficher dans la « NaviCompétence »",
|
||||
"circlePage.learnMore": "Pour en savoir plus",
|
||||
"Cockpit anschauen": "Montrer le Cockpit",
|
||||
"cockpit.all": "Tous",
|
||||
"cockpit.examsDone": "Examens remis par les participants.",
|
||||
"cockpit.feedbacksDone": "Retours envoyés par les participants.",
|
||||
|
|
@ -411,7 +406,6 @@
|
|||
"Der Preis für den Lehrgang «Versicherungsvermittler-/in VBV» beträgt CHF 300 exkl. MWSt.. Mit dem Kauf erhältst du Zugang zum Lernpfad und den Lernmedien.": "Le prix de la formation \"Intermédiaire d'assurance/intermédiaire AFA\" est de 300 CHF hors TVA. L'achat te donne accès au parcours d'apprentissage et aux médias d'apprentissage.",
|
||||
"dueDates.noDueDatesAvailable": "Pas de dates disponibles",
|
||||
"dueDates.showAllDueDates": "Afficher tous les dates",
|
||||
"Durchführung": "Volée",
|
||||
"edoniqTest.checkboxTitle": "Accepter les conditions et effectuer le test",
|
||||
"edoniqTest.deadlineInPast": "Le test ne peut plus être effectué car la date limite de soumission est dépassée.",
|
||||
"edoniqTest.qualifiesForExtendedTime": "Je confirme que j'ai droit à un test avec compensation des inégalités.",
|
||||
|
|
@ -421,7 +415,6 @@
|
|||
"edoniqTest.testDescription": "Effectuez le test suivant. Le test ne peut être effectué qu'une seule fois et est pertinent pour la note.",
|
||||
"edoniqTest.testSubmitted": "Vous avez terminé ce test",
|
||||
"edoniqTest.viewResults": "Voir les résultats",
|
||||
"Elemente zu erledigen": "Eléments à faire",
|
||||
"Ergebnisse anschauen": "Consulter les résultats",
|
||||
"Ergebnisse anzeigen": "Afficher les résultats",
|
||||
"Feedback": "Feedback",
|
||||
|
|
@ -471,7 +464,6 @@
|
|||
"footer.dataProtectionText": "Dispositions sur la protection des données",
|
||||
"footer.imprintLink": "https://www.vbv.ch/fr/impressum",
|
||||
"footer.imprintText": "Impressum",
|
||||
"Freigabetermin Bewertungen:": "Date de remise des évaluations :",
|
||||
"Füge dein Profilbild hinzu und ergänze die fehlenden Angaben.": "Ajoute ta photo de profil et complète les informations manquantes.",
|
||||
"Geleitete Fallarbeit": "Étude de cas dirigée",
|
||||
"general.back": "Retour",
|
||||
|
|
@ -479,18 +471,14 @@
|
|||
"general.backToCircle": "Revenir au Circle",
|
||||
"general.backToLearningPath": "Revenir au programme de formation",
|
||||
"general.cancel": "Annuler",
|
||||
"general.certificate_many": "Certificats",
|
||||
"general.certificate_one": "Certificat",
|
||||
"general.certificate_other": "Certificats",
|
||||
"general.circles": "Circles",
|
||||
"general.close": "Fermer",
|
||||
"general.exam_many": "Examens",
|
||||
"general.exam_one": "Examen",
|
||||
"general.exam_other": "Examens",
|
||||
"general.examResult_many": "Résultats de l’examen",
|
||||
"general.examResult_one": "Résultat de l’examen",
|
||||
"general.examResult_other": "Résultats de l’examen",
|
||||
"general.feedback_many": "Feed-backs",
|
||||
"general.feedback_one": "Feed-back",
|
||||
"general.feedback_other": "Feed-backs",
|
||||
"general.im circle x anschauen": "Regarder dans le Circle «{{x}}»",
|
||||
|
|
@ -501,7 +489,6 @@
|
|||
"general.next": "Continuer",
|
||||
"general.nextStep": "Cela continue",
|
||||
"general.no": "Non",
|
||||
"general.notification_many": "Notifications",
|
||||
"general.notification_one": "Notification",
|
||||
"general.notification_other": "Notifications",
|
||||
"general.profileLink": "Détails",
|
||||
|
|
@ -514,21 +501,14 @@
|
|||
"general.start": "C’est parti !",
|
||||
"general.submission": "Remise",
|
||||
"general.title": "myAFA",
|
||||
"general.transferTask_many": "Exercices d’application",
|
||||
"general.transferTask_one": "Exercice d’application",
|
||||
"general.transferTask_other": "Exercices d’application",
|
||||
"general.yes": "Oui",
|
||||
"Generation": "",
|
||||
"Hast du Fragen?": "As-tu des questions?",
|
||||
"Hier überprüfst und bestätigst du die Anwesenheit deiner Teilnehmenden.": "Ici, vous vérifiez et confirmez la présence de vos participants.",
|
||||
"Ich will die Anwesenheit der untenstehenden Personen definitiv bestätigen.": "Je souhaite confirmer définitivement la présence des personnes ci-dessous.",
|
||||
"Jahr": "",
|
||||
"Keine Auftragsdetails verfügbar.": "",
|
||||
"Kompetenznachweise": "",
|
||||
"Kompetenzprofil": "",
|
||||
"Kompetenznachweise": "Éléments de contrôle",
|
||||
"Kosten im": "Coûts en",
|
||||
"Kosten in": "",
|
||||
"Kosten in 2024": "",
|
||||
"language.de": "Deutsch",
|
||||
"language.fr": "Français",
|
||||
"language.it": "Italiano",
|
||||
|
|
@ -540,7 +520,6 @@
|
|||
"learningContentTypes.feedback": "Feedback",
|
||||
"learningContentTypes.knowledgeAssessment": "Test",
|
||||
"learningContentTypes.learningModule": "Module de formation",
|
||||
"learningContentTypes.mandatory_casework": "",
|
||||
"learningContentTypes.placeholder": "en cours de réalisation",
|
||||
"learningContentTypes.praxisAssignment": "Mandat",
|
||||
"learningContentTypes.prepAssignment": "Mandat de préparation",
|
||||
|
|
@ -558,9 +537,6 @@
|
|||
"learningPathPage.showListView": "Afficher la liste",
|
||||
"learningPathPage.topics": "Thèmes :",
|
||||
"learningPathPage.welcomeBack": "Cela fait plaisir de te revoir dans ta formation :",
|
||||
"Lehrgang": "Formation",
|
||||
"Lernbegleitung einladen": "",
|
||||
"Lernpfad kaufen": "",
|
||||
"login.demoLogin": "Connexion Demo",
|
||||
"login.guidelineFile": "Inscription_myAFA.pdf",
|
||||
"login.guidelineText": "Découvre comment t'inscrire en tant qu'apprenant-e",
|
||||
|
|
@ -572,40 +548,31 @@
|
|||
"mainNavigation.logout": "Se déconnecter",
|
||||
"mainNavigation.profile": "Profil",
|
||||
"mediaLibrary.handlungsfelder.description": "Trouve toutes les ressources des champs d’action, comme les outils didactiques, les liens et autres informations utiles.",
|
||||
"mediaLibrary.handlungsfelder.title_many": "Champs d’action",
|
||||
"mediaLibrary.handlungsfelder.title_one": "Champ d’action",
|
||||
"mediaLibrary.handlungsfelder.title_other": "Champs d’action",
|
||||
"mediaLibrary.learningMedia.description": "Trouve une liste complète des livres, manuels et autres outils qui ont été mentionnés pendant le cours.",
|
||||
"mediaLibrary.learningMedia.titel": "Outils didactiques ",
|
||||
"mediaLibrary.show": "Voir la médiathèque",
|
||||
"mediaLibrary.title": "Médiathèque",
|
||||
"Meine Lernbegleiter": "",
|
||||
"Meine Praxisbildner": "Mes formateurs pratiques",
|
||||
"Member": "Participants",
|
||||
"MentorUK": "Formateur/-trice pratique",
|
||||
"MentorVV": "Tuteur",
|
||||
"messages.sendMessage": "Écrire un message",
|
||||
"MS Teams öffnen": "Ouvrir MS Teams ",
|
||||
"Nach der Bezahlung von 300 CHF exkl. MWSt. erhältst du Zugang für den gesamten Lehrgang (inkl. Prüfung).": "",
|
||||
"Neuen Praxisbildner einladen": "Inviter un nouveau formateur pratique",
|
||||
"Nicht bestanden": "",
|
||||
"Nicht bestanden": "Échoué",
|
||||
"notifications.load_more": "Télécharger davantage",
|
||||
"notifications.no_notifications": "Tu n’as reçu aucune notification pour le moment",
|
||||
"Nächste Termine": "Prochaines dates",
|
||||
"Passwort": "Mot de passe",
|
||||
"Personen": "",
|
||||
"profile.": "",
|
||||
"profile.all": "Toutes branches",
|
||||
"profile.krankenzusatzversicherung": "Maladie complémentaire",
|
||||
"profile.leben": "Vie",
|
||||
"profile.nichtleben": "Non-vie",
|
||||
"profile.null": "",
|
||||
"Präsenzkurs": "",
|
||||
"receivedEvaluation.no": "Il faut que tu regardes cela encore une fois de plus près",
|
||||
"receivedEvaluation.yes": "Oui, tu peux le faire",
|
||||
"Reflexion": "",
|
||||
"Region": "",
|
||||
"Rolle": "",
|
||||
"Reflexion": "Réflexion",
|
||||
"Sehr unzufrieden": "très insatisfait",
|
||||
"Sehr zufrieden": "très satisfait",
|
||||
"selfEvaluation.instruction.0": "Überprüfe, ob du in der Lernheinheit",
|
||||
|
|
@ -631,13 +598,6 @@
|
|||
"start.vvDescription": "Le parcours d'apprentissage et les médias d'apprentissage qui te préparent à l'examen d' «intermédiare d'assurance AFA».",
|
||||
"Status anschauen": "Consulter le statut",
|
||||
"Supervisor": "Responsable CI",
|
||||
"Teilnehmer": "Participants",
|
||||
"Teilnehmer im": "Participants en",
|
||||
"Teilnehmer im 2024": "",
|
||||
"Teilnehmer nach Zulassungsprofilen": "Participants par profil d'admission",
|
||||
"Teilnehmer nach Zulassungsprofilen im": "",
|
||||
"Termin nicht festgelegt": "",
|
||||
"TODO: Nächste Termine": "TODO: prochaines dates",
|
||||
"Trainer": "Formateur / Formatrice",
|
||||
"Trainerunterlagen": "Documents du formateur / de la formatrice",
|
||||
"TrainingResponsible": "Responsable de la formation",
|
||||
|
|
@ -647,7 +607,6 @@
|
|||
"uk.dashboard.allClear": "Tout est clair ?",
|
||||
"uk.dashboard.nextSteps": "En tant que personne en formation, tu seras attribué(e) à un cours interentreprise dans les prochains jours. Puis tu verras apparaître ici ta boîte de formation personnalisée avec les informations complémentaires.",
|
||||
"uk.dashboard.welcome": "Tout s'est bien passé, tu es maintenant inscrit/e à l'environnement d'apprentissage numérique de l'Association pour la formation professionnelle en assurance (AFA) !",
|
||||
"UnknownRoleKey": "",
|
||||
"unzufrieden": "insatisfait",
|
||||
"Vorbedingung": "Condition préalable",
|
||||
"Vorbereitungsaufgabe": "Mandat de préparation",
|
||||
|
|
@ -665,6 +624,5 @@
|
|||
"Zu erledigen": "",
|
||||
"zufrieden": "satisfait",
|
||||
"Zulassungsprofil": "",
|
||||
"Zur Zeit sind keine Termine vorhanden": "Aucune réunion n’est prévue pour le moment",
|
||||
"Überbetriebliche Kurse": ""
|
||||
"Zur Zeit sind keine Termine vorhanden": "Aucune réunion n’est prévue pour le moment"
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,11 +1,9 @@
|
|||
{
|
||||
"20%": "",
|
||||
"40%": "",
|
||||
"60%": "",
|
||||
"80%": "",
|
||||
"100%": "",
|
||||
"a.": "",
|
||||
"a.a.AlleCircle": "",
|
||||
"20%": "20%",
|
||||
"40%": "40%",
|
||||
"60%": "60%",
|
||||
"80%": "80%",
|
||||
"100%": "100%",
|
||||
"a.Abbrechen": "Annullare",
|
||||
"a.Abgabetermin": "Termine di consegna",
|
||||
"a.Abgezogene Punkte": "Punti detratti",
|
||||
|
|
@ -16,13 +14,11 @@
|
|||
"a.Aktuell hast du noch keine Person als Lernbegleitung eingeladen.": "Al momento non hai invitato nessuna persona come tutor.",
|
||||
"a.Aktuell hast du noch keine Person als Lernbegleitung eingeladen. Lade jetzt jemanden ein.": "Al momento non hai invitato nessuna persona come tutor. Invita qualcuno ora.",
|
||||
"a.Aktuell hast du noch keine Person als Praxisbildner eingeladen.": "Attualmente non hai ancora invitato nessuna persona come formatore/-trice pratico/a.",
|
||||
"a.Aktuell hast du noch keine Person als Praxisbildner eingeladen. Lade jetzt jemanden ein.": "",
|
||||
"a.Aktuell hast du noch keine Person als Praxisbildner eingeladen. Lade jetzt jemanden ein.": "Attualmente non hai invitato nessuno come formatore pratico. Invita qualcuno ora.",
|
||||
"a.Aktueller Lehrgang": "Corso in corso",
|
||||
"a.Allbranche": "Tutti i settori",
|
||||
"a.Alle": "Tutto",
|
||||
"a.Alle aufklappen": "Apri tutto",
|
||||
"a.Alle Lehrgang": "",
|
||||
"a.Alle Lehrgänge": "",
|
||||
"a.Alle Lehrgänge anzeigen": "Mostra tutti i corsi",
|
||||
"a.Alle Personen anzeigen": "Mostra tutte le persone",
|
||||
"a.Alle Termine anzeigen": "Mostrare tutte le date",
|
||||
|
|
@ -30,8 +26,6 @@
|
|||
"a.AlleCircle": "Circle: Tutti",
|
||||
"a.AlleDurchführungen": "Svolgimenti: Tutti",
|
||||
"a.AlleGenerationen": "Generazioni: Tutte",
|
||||
"a.AlleKreise": "",
|
||||
"a.AlleRegionen": "",
|
||||
"a.AlleTermine": "Appuntamenti",
|
||||
"a.AlleTypen": "Tutti i tipi",
|
||||
"a.Allgemeine Zufriedenheit": "Soddisfazione generale ",
|
||||
|
|
@ -39,6 +33,8 @@
|
|||
"a.An Durchführung teilnehmen": "Partecipare alla sessione",
|
||||
"a.Anmelden": "Login",
|
||||
"a.Anwesenheit": "Presenza",
|
||||
"a.Anwesenheit Präsenzkurse": "Presenza ai corsi",
|
||||
"a.Anwesenheitskontrolle Präsenzkurse": "Controllo di presenza ai corsi",
|
||||
"a.Arbeiten": "Lavori",
|
||||
"a.assignment.evaluationFeedbackDescriptionText": "Pubblica il tuo feedback in modo che possa essere condiviso con il/la partecipante.",
|
||||
"a.assignment.evaluationInstrumentDescriptionTextFeedback": "Si prega di sostenere {{name}} e di fornire un feedback sul compito.",
|
||||
|
|
@ -53,9 +49,9 @@
|
|||
"a.Bewertung": "Valutazione",
|
||||
"a.Bewertung abschliessen": "Valutazione completa",
|
||||
"a.Bewertung ansehen": "Visualizza recensione",
|
||||
"a.Bewertung bearbeiten": "",
|
||||
"a.Bewertung bearbeitet": "",
|
||||
"a.Bewertung erneut bearbeitet": "",
|
||||
"a.Bewertung bearbeiten": "Modificare la valutazione",
|
||||
"a.Bewertung bearbeitet": "Valutazione modificata",
|
||||
"a.Bewertung erneut bearbeitet": "Valutazione modificata nuovamente",
|
||||
"a.Bewertung fortsetzen": "Continua la valutazione",
|
||||
"a.Bewertung Freigabe": "Rilascio della valutazione",
|
||||
"a.Bewertung freigeben": "Rilasciare la valutazione",
|
||||
|
|
@ -106,7 +102,8 @@
|
|||
"a.E-Mail Adresse": "Indirizzo e-mail",
|
||||
"a.Einladung": "Invito",
|
||||
"a.Einladung abschicken": "Inviare l'invito",
|
||||
"a.Email": "",
|
||||
"a.Elemente zu erledigen": "Elementi da completare",
|
||||
"a.Email": "E-mail",
|
||||
"a.Entfernen": "Rimuovere",
|
||||
"a.Erfahrungsnote üK": "Nota relativa all’insegnamento professionale CI",
|
||||
"a.Ergebnis bewerten": "Valutare il risultato",
|
||||
|
|
@ -116,10 +113,10 @@
|
|||
"a.Ergebnisse bewerten": "Valutare i risultati",
|
||||
"a.Ergebnisse teilen": "Condividere i risultati",
|
||||
"a.Erneut bearbeiten": "Modifica di nuovo",
|
||||
"a.Experte": "",
|
||||
"a.Experte": "Esperto",
|
||||
"a.Feedback abschliessen": "Completa il feedback",
|
||||
"a.Feedback ansehen": "Visualizza il feedback",
|
||||
"a.Feedback erneut bearbeitet": "",
|
||||
"a.Feedback erneut bearbeitet": "Feedback modificato nuovamente",
|
||||
"a.Feedback fortsetzen": "Prosegui il feedback",
|
||||
"a.Feedback Freigabe": "Pubblicazione del feedback",
|
||||
"a.Feedback freigeben": "Pubblica il feedback",
|
||||
|
|
@ -134,6 +131,8 @@
|
|||
"a.Firmenanschrift": "Indirizzo aziendale",
|
||||
"a.Firmenname": "Nome dell'azienda",
|
||||
"a.Franzosisch": "Francese",
|
||||
"a.Freigabetermin Bewertung": "Termine di pubblicazione della valutazione",
|
||||
"a.Freigabetermin Bewertungen": "Termine di pubblicazione delle valutazioni",
|
||||
"a.Fremdeinschätzung anzeigen": "Évaluation externe",
|
||||
"a.Fremdeinschätzung freigeben": "Rilasciare la valutazione esterna",
|
||||
"a.Fremdeinschätzung von FEEDBACK_PROVIDER_NAME": "Valutazione esterna di {{FEEDBACK_PROVIDER_NAME}}",
|
||||
|
|
@ -156,18 +155,19 @@
|
|||
"a.Hast du Fragen? Schau dir unsere FAQ an oder kontaktiere uns": "Hai domande? Consulta le nostre {faq} o contattaci",
|
||||
"a.Hast du schon ein Konto?": "Hai già un account?",
|
||||
"a.Hausnummmer": "Numero civico",
|
||||
"a.Hier kannst du ausschliesslich mit einer Kreditkarte bezahlen.": "",
|
||||
"a.Hier kannst du Personen einladen, damit sie deine Lernbegleitung werden. Zudem siehst du jederzeit eine Übersicht aller Personen, die du bereits als Lernbegleitung hinzugefügt hast.": "Qui puoi invitare persone a diventare il tuo tutor. Inoltre, puoi sempre vedere una panoramica di tutte le persone che hai già aggiunto come tutor.",
|
||||
"a.Höchstpunktzahl": "Punteggio massimo",
|
||||
"a.Ich kann das": "Ho compreso tutto",
|
||||
"a.Italienisch": "Italiano",
|
||||
"a.Ja, NAME kann das.": "Sì, {{NAME}} può farlo",
|
||||
"a.Jahr": "Anno",
|
||||
"a.Jetzt mit Lehrgang starten": "Inizia ora il corso",
|
||||
"a.Kann FULLNAME das?": "{{FULLNAME}} può farlo?",
|
||||
"a.Kein Circle verfügbar oder ausgewählt.": "Nessun Circle disponibile o selezionato.",
|
||||
"a.Keine Angabe": "Nessuna indicazione",
|
||||
"a.Kommentar": "",
|
||||
"a.Kommentar erfassen": "",
|
||||
"a.Keine Auftragsdetails verfügbar.": "Non sono disponibili i dettagli dell'ordine.",
|
||||
"a.Kommentar": "Commento",
|
||||
"a.Kommentar erfassen": "Inserisci il commento",
|
||||
"a.Kompetenznachweis": "Controllo delle competenze",
|
||||
"a.Kompetenznachweis-Elemente": "Elementi del controllo",
|
||||
"a.Kompetenznachweise": "Controlli delle competenze",
|
||||
|
|
@ -175,7 +175,6 @@
|
|||
"a.Konto erstellen": "Crea un account",
|
||||
"a.Kosten": "Costi",
|
||||
"a.Kosten aller Jahre ansehen": "Visualizza i costi per tutti gli anni",
|
||||
"a.Kosten in 2024": "",
|
||||
"a.Krankenzusatzversicherung": "Assicurazione sanitaria integrativa",
|
||||
"a.Krankenzusatzversicherungen": "Assicurazione sanitaria integrativa",
|
||||
"a.Lade ein Profilbild hoch, damit dich andere Personen auf den ersten Blick erkennen.": "Carica un'immagine del profilo così che altre persone possano riconoscerti a prima vista.",
|
||||
|
|
@ -186,7 +185,7 @@
|
|||
"a.Lehrgang kaufen": "Acquistare il corso",
|
||||
"a.Leistungsziel": "Obiettivo di valutazione",
|
||||
"a.Leistungsziele": "Obiettivo di valutazione",
|
||||
"a.Lernbegleiter": "",
|
||||
"a.Lernbegleiter": "Tutor",
|
||||
"a.Lernbegleitung": "Tutor",
|
||||
"a.Lernbegleitung auswählen": "Tutoraggio selezionare",
|
||||
"a.Lernbegleitung einladen": "Invitare un tutor",
|
||||
|
|
@ -212,8 +211,7 @@
|
|||
"a.NUMBER Elemente abgeschlossen": "{NUMBER} elementi completati",
|
||||
"a.NUMBER Präsenztage abgeschlossen": "{NUMBER} giorni di presenza completati",
|
||||
"a.NUMBER Teilnehmer anwesend": "{NUMBER} partecipanti presenti",
|
||||
"a.Nächste Termine": "",
|
||||
"a.OldCircle": "",
|
||||
"a.Nächste Termine": "Prossime date",
|
||||
"a.Optionale Anwesenheit": "Presenza opzionale",
|
||||
"a.Ort": "Città",
|
||||
"a.Personen": "Persone",
|
||||
|
|
@ -229,20 +227,20 @@
|
|||
"a.Profil bearbeiten": "Modificare il profilo",
|
||||
"a.Profil ergänzen": "Completare il profilo",
|
||||
"a.Profilbild": "Immagine del profilo",
|
||||
"a.Präsenzkurs": "Corso di presenza",
|
||||
"a.Präsenztag": "Giorno di presenza",
|
||||
"a.Punkte": "punti",
|
||||
"a.Punkte aus Bewertung": "Punti della valutazione",
|
||||
"a.PunkteVonDaniel": "",
|
||||
"a.PunkteVonDaniel123": "",
|
||||
"a.Rechnung": "Fattura",
|
||||
"a.RechnungPaymentMethodDescription": "",
|
||||
"a.Rechnungsadresse": "Indirizzo di fatturazione",
|
||||
"a.Rechnungsadresse hinzufügen": "Aggiungere un indirizzo di fatturazione",
|
||||
"a.Rechnungsadresse von {organisation}": "Indirizzo di fatturazione di {{organisation}}",
|
||||
"a.Rechnungsadresse von {organisation} hinzufügen": "Aggiungere l'indirizzo di fatturazione di {{organisation}}",
|
||||
"a.Regionenleiter": "",
|
||||
"a.Region": "Regione",
|
||||
"a.Regionenleiter": "Responsabile regionale",
|
||||
"a.Resultat": "Risultato",
|
||||
"a.Schliessen": "",
|
||||
"a.Rolle": "Ruolo",
|
||||
"a.Schliessen": "Chiudere",
|
||||
"a.Selbst- und Fremdeinschätzungen": "Autovalutazioni e valutazioni esterne",
|
||||
"a.Selbsteinschätzung": "Auto-valutazione",
|
||||
"a.Selbsteinschätzung anschauen": "Guarda l'auto-valutazione",
|
||||
|
|
@ -255,16 +253,17 @@
|
|||
"a.Selbsteinschätzungen geteilt": "Auto-valutazioni condivise",
|
||||
"a.So startest du mit diesem Lehrgang": "Ecco come iniziare questo percorso di apprendimento",
|
||||
"a.Standort": "Posizione",
|
||||
"a.Statistik": "",
|
||||
"a.Statistik für alle Lernenden": "",
|
||||
"a.Statistik": "Statistiche",
|
||||
"a.Stelle deinen Lernenden zusätzliche Inhalte zur Verfügung.": "Fornisci ai tuoi partecipanti contenuti aggiuntivi.",
|
||||
"a.Strasse": "Strada",
|
||||
"a.Super, nun ist alles bereit. Du bist der Durchführung «{course}» zugewiesen und kannst mit dem Lehrgang starten.": "Ottimo, ora è tutto pronto. Sei assegnato alla sessione «{{course}}» e puoi iniziare il corso.",
|
||||
"a.Teilnehmer": "Partecipanti",
|
||||
"a.Teilnehmer im 2024": "",
|
||||
"a.Teilnehmer im": "I partecipanti al",
|
||||
"a.Teilnehmer nach Zulassungsprofilen im": "Partecipanti per profilo di ammissione nel",
|
||||
"a.Telefonnummer": "Numero di telefono",
|
||||
"a.Telefonnummer hat das falsche Format": "",
|
||||
"a.Telefonnummer hat das falsche Format": "Il numero di telefono ha un formato sbagliato",
|
||||
"a.Termin": "Data",
|
||||
"a.Termin nicht festgelegt": "Data non fissata",
|
||||
"a.Termine": "Date",
|
||||
"a.Total {NUMBER} Antworten": "Totale {NUMBER} risposte",
|
||||
"a.Trainer": "Trainer",
|
||||
|
|
@ -280,7 +279,6 @@
|
|||
"a.VorschauTeilnehmer": "Vue des participants",
|
||||
"a.Wegleitung üK": "Guida CI",
|
||||
"a.wegleitungUkUrl": "https://www.vbv.ch/fileadmin/vbv/Dokumente/Bildungsabschluesse/KV/Wegleitung_ueK_240215_it_V2.pdf",
|
||||
"a.Weiter zur Zahlung": "",
|
||||
"a.Wir haben per E-Mail eine Bestätigung an {email} geschickt.": "Abbiamo inviato una conferma via e-mail a {email}.",
|
||||
"a.Wähle ein Zulassungsprofil, damit du deinen Lehrgang an der richtigen Stelle beginnen kannst.": "Scegli un profilo di ammissione in modo da iniziare il tuo corso nel posto giusto.",
|
||||
"a.Wähle ein Zulassungsprofil, damit du deinen Lehrgang an der richtigen Stelle beginnen kannst. Du kannst ihn später jederzeit ändern.": "Scegli un profilo di ammissione in modo da iniziare il tuo corso nel posto giusto. Potrai cambiarlo in seguito in qualsiasi momento.",
|
||||
|
|
@ -291,7 +289,7 @@
|
|||
"a.Zulassungsprofil": "Profilo di ammissione",
|
||||
"a.Zulassungsprofil auswählen": "Selezionare il profilo di ammissione",
|
||||
"a.Zum Unterlagen-Upload": "Carica documenti",
|
||||
"a.Zurück": "",
|
||||
"a.Zurück": "Indietro",
|
||||
"a.Zwischenstand": "Punto intermedio",
|
||||
"a.{AVG} von {MAX}": "{AVG} di {MAX}",
|
||||
"a.{NUMBER} Bestanden": "{NUMBER} superato",
|
||||
|
|
@ -306,9 +304,7 @@
|
|||
"Alle": "Tutto",
|
||||
"Anwesenheit": "Presenza",
|
||||
"Anwesenheit bestätigen": "Confermare la presenza",
|
||||
"Anwesenheit Präsenzkurse": "Presenza ai corsi",
|
||||
"Anwesenheit prüfen": "Verificare la presenza",
|
||||
"Anwesenheitskontrolle Präsenzkurse": "Controllo di presenza ai corsi",
|
||||
"assignment.acceptConditionsDisclaimer": "Accettare le condizioni e consegnare i risultati",
|
||||
"assignment.assessmentDocumentDisclaimer": "Questa analisi guidata del caso viene valutata sulla base del seguente strumento di valutazione:",
|
||||
"assignment.assessmentTitle": "Valutazione",
|
||||
|
|
@ -345,10 +341,10 @@
|
|||
"Aufgrund von Problemen beim Zahlungsanbieter ist ein Erwerb der myVBV-Lizenz derzeit nur mit TWINT möglich. Wir arbeiten mit Hochdruck an der Lösung des Problems. ": "A causa di problemi con il provider di pagamento, al momento è possibile acquistare la licenza myAFA solo con TWINT. Stiamo lavorando duramente per risolvere il problema.",
|
||||
"Ausbildungsverantwortlicher": "Addetto alla formazione",
|
||||
"Benutzername": "Nome utente",
|
||||
"Berufsbildner": "",
|
||||
"Bestanden": "",
|
||||
"Berufsbildner": "Formatore professionale",
|
||||
"Bestanden": "Superato",
|
||||
"Bewertung von x y": "Valutazione di {{x}} {{y}}",
|
||||
"Circle": "",
|
||||
"Circle": "Cerchio",
|
||||
"circlePage.circleContentBoxTitle": "Cosa apprenderai in questo Circle",
|
||||
"circlePage.contactExpertButton": "Contattare il/la trainer",
|
||||
"circlePage.contactExpertDescription": "Confrontati con il/la trainer per il Circle {{circleName}}.",
|
||||
|
|
@ -379,7 +375,6 @@
|
|||
"circlePage.gotQuestions": "Hai domande?",
|
||||
"circlePage.Im KompetenzNavi anschauen": "Mostra nel \"KompetenzNavi\"",
|
||||
"circlePage.learnMore": "Ottieni maggiori informazioni",
|
||||
"Cockpit anschauen": "",
|
||||
"cockpit.all": "Tutti",
|
||||
"cockpit.examsDone": "Esami sostenuti dal/dalla partecipante.",
|
||||
"cockpit.feedbacksDone": "Feedback inviati dal/dalla partecipante.",
|
||||
|
|
@ -411,7 +406,6 @@
|
|||
"Der Preis für den Lehrgang «Versicherungsvermittler-/in VBV» beträgt CHF 300 exkl. MWSt.. Mit dem Kauf erhältst du Zugang zum Lernpfad und den Lernmedien.": "Il prezzo del corso \"Intermediario/a assicurativo/a AFA\" è di 300 CHF IVA esclusa. L'acquisto ti dà accesso al percorso di apprendimento e ai supporti didattici.",
|
||||
"dueDates.noDueDatesAvailable": "Nessuna data disponibile",
|
||||
"dueDates.showAllDueDates": "Mostrare tutte le date",
|
||||
"Durchführung": "",
|
||||
"edoniqTest.checkboxTitle": "Accetta le condizioni ed esegui il test",
|
||||
"edoniqTest.deadlineInPast": "Il test non può più essere eseguito poiché la data di consegna è scaduta.",
|
||||
"edoniqTest.qualifiesForExtendedTime": "Confermo di avere diritto a un test con compensazione delli ineguaglianze",
|
||||
|
|
@ -421,7 +415,6 @@
|
|||
"edoniqTest.testDescription": "Esegui il test seguente. Il test può essere eseguito solo una volta ed è rilevante per il voto.",
|
||||
"edoniqTest.testSubmitted": "Hai completato questo test",
|
||||
"edoniqTest.viewResults": "Guarda i risultati",
|
||||
"Elemente zu erledigen": "Elementi da completare",
|
||||
"Ergebnisse anschauen": "Vedere i risultati",
|
||||
"Ergebnisse anzeigen": "Mostra i risultati",
|
||||
"Feedback": "Feedback",
|
||||
|
|
@ -471,7 +464,6 @@
|
|||
"footer.dataProtectionText": "Dichiarazione sulla protezione dei dati",
|
||||
"footer.imprintLink": "https://www.vbv.ch/it/impressum",
|
||||
"footer.imprintText": "Impressum",
|
||||
"Freigabetermin Bewertungen:": "Termine di pubblicazione delle valutazioni:",
|
||||
"Füge dein Profilbild hinzu und ergänze die fehlenden Angaben.": "Aggiungi la foto del tuo profilo e inserisci i dettagli mancanti.",
|
||||
"Geleitete Fallarbeit": "Caso di studio guidato",
|
||||
"general.back": "Indietro",
|
||||
|
|
@ -479,18 +471,14 @@
|
|||
"general.backToCircle": "Torna al Circle",
|
||||
"general.backToLearningPath": "Torna al percorso formativo",
|
||||
"general.cancel": "Annullare",
|
||||
"general.certificate_many": "Certificati",
|
||||
"general.certificate_one": "Certificato",
|
||||
"general.certificate_other": "Certificati",
|
||||
"general.circles": "Circles",
|
||||
"general.close": "Chiudere",
|
||||
"general.exam_many": "Esami",
|
||||
"general.exam_one": "Esame",
|
||||
"general.exam_other": "Esami",
|
||||
"general.examResult_many": "Risultati degli esami",
|
||||
"general.examResult_one": "Risultato dell’esame",
|
||||
"general.examResult_other": "Risultati degli esami",
|
||||
"general.feedback_many": "Feedback",
|
||||
"general.feedback_one": "Feedback",
|
||||
"general.feedback_other": "Feedback",
|
||||
"general.im circle x anschauen": "Guarda nel Circle «{{x}}»",
|
||||
|
|
@ -501,7 +489,6 @@
|
|||
"general.next": "Avanti",
|
||||
"general.nextStep": "Continua",
|
||||
"general.no": "No",
|
||||
"general.notification_many": "Notifiche",
|
||||
"general.notification_one": "Notifica",
|
||||
"general.notification_other": "Notifiche",
|
||||
"general.profileLink": "Mostrare i dettagli",
|
||||
|
|
@ -514,21 +501,14 @@
|
|||
"general.start": "Si comincia",
|
||||
"general.submission": "Consegna",
|
||||
"general.title": "myAFA",
|
||||
"general.transferTask_many": "Incarichi di trasferimento",
|
||||
"general.transferTask_one": "Incarico di trasferimento",
|
||||
"general.transferTask_other": "Incarichi di trasferimento",
|
||||
"general.yes": "Sì",
|
||||
"Generation": "",
|
||||
"Hast du Fragen?": "Hai domande?",
|
||||
"Hier überprüfst und bestätigst du die Anwesenheit deiner Teilnehmenden.": "Qui controlli e confermi la presenza dei tuoi partecipanti.",
|
||||
"Ich will die Anwesenheit der untenstehenden Personen definitiv bestätigen.": "Voglio confermare definitivamente la presenza delle persone sottostanti.",
|
||||
"Jahr": "",
|
||||
"Keine Auftragsdetails verfügbar.": "",
|
||||
"Kompetenznachweise": "",
|
||||
"Kompetenzprofil": "",
|
||||
"Kompetenznachweise": "Elementi del controllo",
|
||||
"Kosten im": "Costi nel",
|
||||
"Kosten in": "",
|
||||
"Kosten in 2024": "",
|
||||
"language.de": "Deutsch",
|
||||
"language.fr": "Français",
|
||||
"language.it": "Italiano",
|
||||
|
|
@ -540,12 +520,11 @@
|
|||
"learningContentTypes.feedback": "Feedback",
|
||||
"learningContentTypes.knowledgeAssessment": "Test",
|
||||
"learningContentTypes.learningModule": "Modulo di formazione",
|
||||
"learningContentTypes.mandatory_casework": "",
|
||||
"learningContentTypes.placeholder": "In attuazione",
|
||||
"learningContentTypes.praxisAssignment": "Ordine",
|
||||
"learningContentTypes.prepAssignment": "Incarico di preparazione",
|
||||
"learningContentTypes.reflection": "Riflessione",
|
||||
"learningContentTypes.task": "",
|
||||
"learningContentTypes.task": "Compito",
|
||||
"learningContentTypes.test": "Test",
|
||||
"learningContentTypes.text": "Testo",
|
||||
"learningContentTypes.video": "Video",
|
||||
|
|
@ -558,9 +537,6 @@
|
|||
"learningPathPage.showListView": "Mostrare la vista elenco",
|
||||
"learningPathPage.topics": "Temi:",
|
||||
"learningPathPage.welcomeBack": "Bentornato/a al tuo corso:",
|
||||
"Lehrgang": "",
|
||||
"Lernbegleitung einladen": "",
|
||||
"Lernpfad kaufen": "",
|
||||
"login.demoLogin": "Login Demo",
|
||||
"login.guidelineFile": "Registrazione_myAFA.pdf",
|
||||
"login.guidelineText": "Scopri come iscriverti come apprendista professionale",
|
||||
|
|
@ -572,40 +548,31 @@
|
|||
"mainNavigation.logout": "Logout",
|
||||
"mainNavigation.profile": "Profilo",
|
||||
"mediaLibrary.handlungsfelder.description": "Trova tutte le risorse dei campi d’azione, come materiali didattici, link e altre informazioni utili.",
|
||||
"mediaLibrary.handlungsfelder.title_many": "Campi d’azione",
|
||||
"mediaLibrary.handlungsfelder.title_one": "Campo d’azione",
|
||||
"mediaLibrary.handlungsfelder.title_other": "Campi d’azione",
|
||||
"mediaLibrary.learningMedia.description": "Trova un elenco completo di libri e altri materiali a cui si rimanda nel corso.",
|
||||
"mediaLibrary.learningMedia.titel": "Materiali didattici",
|
||||
"mediaLibrary.show": "Visualizza la libreria mediateca",
|
||||
"mediaLibrary.title": "Mediateca",
|
||||
"Meine Lernbegleiter": "",
|
||||
"Meine Praxisbildner": "I miei formatori pratici",
|
||||
"Member": "Partecipanti",
|
||||
"MentorUK": "Formatore/-trice pratico/a",
|
||||
"MentorVV": "Tutor",
|
||||
"messages.sendMessage": "Scrivere un messaggio",
|
||||
"MS Teams öffnen": "Aprire MS Teams",
|
||||
"Nach der Bezahlung von 300 CHF exkl. MWSt. erhältst du Zugang für den gesamten Lehrgang (inkl. Prüfung).": "",
|
||||
"Neuen Praxisbildner einladen": "Invitare un nuovo formatore pratico",
|
||||
"Nicht bestanden": "",
|
||||
"Nicht bestanden": "Non superato",
|
||||
"notifications.load_more": "Caricare altro",
|
||||
"notifications.no_notifications": "Al momento non hai nessuna notifica",
|
||||
"Nächste Termine": "Prossime date",
|
||||
"Passwort": "Password",
|
||||
"Personen": "",
|
||||
"profile.": "",
|
||||
"profile.all": "Multiramo",
|
||||
"profile.krankenzusatzversicherung": "Malattie complementare",
|
||||
"profile.leben": "Vita",
|
||||
"profile.nichtleben": "Non vita",
|
||||
"profile.null": "",
|
||||
"Präsenzkurs": "",
|
||||
"receivedEvaluation.no": "Devi riguardarlo ancora una volta",
|
||||
"receivedEvaluation.yes": " Sì, puoi farlo",
|
||||
"Reflexion": "",
|
||||
"Region": "",
|
||||
"Rolle": "",
|
||||
"Reflexion": "Riflessione",
|
||||
"Sehr unzufrieden": "molto insoddisfatto",
|
||||
"Sehr zufrieden": "molto soddisfatto",
|
||||
"selfEvaluation.instruction.0": "Überprüfe, ob du in der Lernheinheit",
|
||||
|
|
@ -631,13 +598,6 @@
|
|||
"start.vvDescription": "Il percorso di apprendimento e i supporti didattici che ti preparano all'esame «Intermediario/a assicurativo/a AFA».",
|
||||
"Status anschauen": "Vedere lo stato",
|
||||
"Supervisor": "Responsabile CI",
|
||||
"Teilnehmer": "",
|
||||
"Teilnehmer im": "I partecipanti al",
|
||||
"Teilnehmer im 2024": "",
|
||||
"Teilnehmer nach Zulassungsprofilen": "Partecipanti secondo i profili di ammissione",
|
||||
"Teilnehmer nach Zulassungsprofilen im": "",
|
||||
"Termin nicht festgelegt": "",
|
||||
"TODO: Nächste Termine": "TODO: prossime date",
|
||||
"Trainer": "Trainer",
|
||||
"Trainerunterlagen": "Documenti del/della trainer",
|
||||
"TrainingResponsible": "Addetto alla formazione",
|
||||
|
|
@ -647,7 +607,6 @@
|
|||
"uk.dashboard.allClear": "È tutto chiaro?",
|
||||
"uk.dashboard.nextSteps": "In qualità di apprendista, nei prossimi giorni sarai assegnata/o a un corso interaziendale. Poi il riquadro di formazione personalizzato del corso apparirà qui con ulteriori informazioni.",
|
||||
"uk.dashboard.welcome": "Tutto ha funzionato, ora sei registrata/o nell'ambiente di apprendimento digitale dell'Associazione per la formazione professionale nell'assicurazione (AFA)!",
|
||||
"UnknownRoleKey": "",
|
||||
"unzufrieden": "insoddisfatto",
|
||||
"Vorbedingung": "Condizione preliminare",
|
||||
"Vorbereitungsaufgabe": "Incarico di preparazione",
|
||||
|
|
@ -665,6 +624,5 @@
|
|||
"Zu erledigen": "",
|
||||
"zufrieden": "soddisfatto",
|
||||
"Zulassungsprofil": "",
|
||||
"Zur Zeit sind keine Termine vorhanden": "Al momento non ci sono scadenze",
|
||||
"Überbetriebliche Kurse": ""
|
||||
"Zur Zeit sind keine Termine vorhanden": "Al momento non ci sono scadenze"
|
||||
}
|
||||
|
|
|
|||
|
|
@ -114,12 +114,12 @@ function generateCertificatesLink(userId: string) {
|
|||
</span>
|
||||
<template v-if="assignmentDetail.evaluation_deadline?.start">
|
||||
<br />
|
||||
{{ $t("Freigabetermin Bewertungen:") }}
|
||||
{{ $t("a.Freigabetermin Bewertungen") }}:
|
||||
{{ formatDueDate(assignmentDetail.evaluation_deadline?.start) }}
|
||||
</template>
|
||||
</div>
|
||||
<div v-else>
|
||||
{{ $t("Keine Auftragsdetails verfügbar.") }}
|
||||
{{ $t("a.Keine Auftragsdetails verfügbar.") }}
|
||||
</div>
|
||||
|
||||
<div class="mt-4">
|
||||
|
|
|
|||
|
|
@ -43,7 +43,7 @@ const presenceCoursesDropdownOptions = computed(() => {
|
|||
(attendanceCourse) =>
|
||||
({
|
||||
id: attendanceCourse.id,
|
||||
name: `${t("Präsenzkurs")} ${
|
||||
name: `${t("a.Präsenzkurs")} ${
|
||||
attendanceCourse.learning_content.circle?.title
|
||||
} ${dayjs(attendanceCourse.due_date?.start).format("DD.MM.YYYY")}`,
|
||||
}) as DropdownSelectable
|
||||
|
|
@ -165,7 +165,7 @@ watch(
|
|||
</router-link>
|
||||
</nav>
|
||||
<div class="flex items-center justify-between">
|
||||
<h3 class="pb-4 text-xl font-bold">{{ $t("Anwesenheit Präsenzkurse") }}</h3>
|
||||
<h3 class="pb-4 text-xl font-bold">{{ $t("a.Anwesenheit Präsenzkurse") }}</h3>
|
||||
<button
|
||||
v-if="state.attendanceSaved"
|
||||
class="flex"
|
||||
|
|
|
|||
|
|
@ -83,7 +83,7 @@ const courseSessionDetailResult = useCourseSessionDetailQuery();
|
|||
<div class="my-4 flex flex-col justify-between bg-white p-6 lg:my-0">
|
||||
<div>
|
||||
<h3 class="heading-3 mb-4 flex items-center gap-2">
|
||||
{{ $t("Anwesenheitskontrolle Präsenzkurse") }}
|
||||
{{ $t("a.Anwesenheitskontrolle Präsenzkurse") }}
|
||||
</h3>
|
||||
<div class="mb-4">
|
||||
{{
|
||||
|
|
|
|||
|
|
@ -31,7 +31,7 @@ const courses = computed(() => {
|
|||
return [
|
||||
{
|
||||
id: UNFILTERED,
|
||||
name: `${t("Lehrgang")}: ${t("a.Alle")}`,
|
||||
name: `${t("a.Lehrgang")}: ${t("a.Alle")}`,
|
||||
slug: "",
|
||||
},
|
||||
..._(dashboardDueDates.value)
|
||||
|
|
|
|||
|
|
@ -91,7 +91,7 @@ const regions = computed(() => {
|
|||
return [
|
||||
{
|
||||
id: UNFILTERED,
|
||||
name: `${t("Region")}: ${t("a.Alle")}`,
|
||||
name: `${t("a.Region")}: ${t("a.Alle")}`,
|
||||
},
|
||||
...values,
|
||||
];
|
||||
|
|
@ -141,7 +141,7 @@ const generations = computed(() => {
|
|||
return [
|
||||
{
|
||||
id: UNFILTERED,
|
||||
name: `${t("Generation")}: ${t("a.Alle")}`,
|
||||
name: `${t("a.Generation")}: ${t("a.Alle")}`,
|
||||
},
|
||||
...values,
|
||||
];
|
||||
|
|
@ -164,7 +164,7 @@ const roles = computed(() => {
|
|||
return [
|
||||
{
|
||||
id: UNFILTERED,
|
||||
name: `${t("Rolle")}: ${t("a.Alle")}`,
|
||||
name: `${t("a.Rolle")}: ${t("a.Alle")}`,
|
||||
},
|
||||
...values,
|
||||
];
|
||||
|
|
@ -186,7 +186,7 @@ const chosenProfiles = computed(() => {
|
|||
return [
|
||||
{
|
||||
id: UNFILTERED,
|
||||
name: `${t("Zulassungsprofil")}: ${t("a.Alle")}`,
|
||||
name: `${t("a.Zulassungsprofil")}: ${t("a.Alle")}`,
|
||||
},
|
||||
...values,
|
||||
];
|
||||
|
|
@ -210,7 +210,7 @@ const paidYears = computed(() => {
|
|||
return [
|
||||
{
|
||||
id: UNFILTERED,
|
||||
name: `${t("Jahr")}: ${t("a.Alle")}`,
|
||||
name: `${t("a.Jahr")}: ${t("a.Alle")}`,
|
||||
},
|
||||
...values,
|
||||
];
|
||||
|
|
|
|||
|
|
@ -0,0 +1,145 @@
|
|||
import { TEST_STUDENT1_USER_ID, TEST_TRAINER1_USER_ID } from "../../consts";
|
||||
import { EXPERT_COCKPIT_URL, login } from "../helpers";
|
||||
|
||||
describe("assignmentTrainer.cy.js", () => {
|
||||
beforeEach(() => {
|
||||
cy.manageCommand(
|
||||
"cypress_reset --create-assignment-completion --create-assignment-evaluation",
|
||||
);
|
||||
login("test-trainer1@example.com", "test");
|
||||
});
|
||||
|
||||
describe("Can reevaluation assignment", () => {
|
||||
it("can start evaluation and store evaluation results", () => {
|
||||
cy.visit(EXPERT_COCKPIT_URL);
|
||||
cy.get(
|
||||
'[data-cy="show-details-btn-test-lehrgang-lp-circle-fahrzeug-lc-überprüfen-einer-motorfahrzeug-versicherungspolice"]',
|
||||
).click();
|
||||
|
||||
cy.get('[data-cy="Student1"]').find('[data-cy="show-results"]').click();
|
||||
|
||||
// on EvaluationSummary page
|
||||
cy.get(
|
||||
'[data-cy="assignment-history"] [data-cy="assignment-history-entry"]',
|
||||
).should("have.length", 2);
|
||||
cy.get('[data-cy="assignment-history"]')
|
||||
.should("contain", "Ergebnisse abgegeben")
|
||||
.should("contain", "Bewertung freigegeben");
|
||||
cy.get('[data-cy="user-points"]').should("contain", "24");
|
||||
cy.get('[data-cy="total-points"]').should("contain", "100%");
|
||||
|
||||
// reevaluation
|
||||
cy.get('[data-cy="btn-reopen"]').click();
|
||||
|
||||
cy.get('[data-cy="evaluation-task"]').should(
|
||||
"contain",
|
||||
"Beurteilungskriterium 1 / 5",
|
||||
);
|
||||
cy.get('[data-cy="subtask-4"]').click();
|
||||
cy.wait(500);
|
||||
cy.get('[data-cy="next-step"]').click();
|
||||
|
||||
cy.get('[data-cy="evaluation-task"]').should(
|
||||
"contain",
|
||||
"Beurteilungskriterium 2 / 5",
|
||||
);
|
||||
cy.get('[data-cy="next-step"]').click();
|
||||
|
||||
cy.get('[data-cy="evaluation-task"]').should(
|
||||
"contain",
|
||||
"Beurteilungskriterium 3 / 5",
|
||||
);
|
||||
cy.get('[data-cy="subtask-4"]').click();
|
||||
cy.wait(500);
|
||||
cy.get('[data-cy="next-step"]').click();
|
||||
|
||||
cy.get('[data-cy="evaluation-task"]').should(
|
||||
"contain",
|
||||
"Beurteilungskriterium 4 / 5",
|
||||
);
|
||||
cy.get('[data-cy="subtask-2"]').click();
|
||||
cy.wait(500);
|
||||
cy.get('[data-cy="next-step"]').click();
|
||||
|
||||
cy.get('[data-cy="evaluation-task"]').should(
|
||||
"contain",
|
||||
"Beurteilungskriterium 5 / 5",
|
||||
);
|
||||
cy.get('[data-cy="next-step"]').click();
|
||||
|
||||
cy.get('[data-cy="user-points"]').should("contain", "19");
|
||||
cy.get('[data-cy="total-points"]').should("contain", "79%");
|
||||
|
||||
cy.get('[data-cy="reason-text"]').type("nochmal bewertet");
|
||||
cy.get(
|
||||
'[data-cy="assignment-history"] [data-cy="assignment-history-entry"]',
|
||||
).should("have.length", 3);
|
||||
cy.get('[data-cy="assignment-history"]')
|
||||
.should("contain", "Ergebnisse abgegeben")
|
||||
.should("contain", "Bewertung freigegeben")
|
||||
.should("contain", "Bewertung erneut bearbeitet");
|
||||
|
||||
cy.get('[data-cy="submit-evaluation"]').click();
|
||||
|
||||
// check stored data
|
||||
cy.get('[data-cy="result-section"]').should(
|
||||
"contain",
|
||||
"Deine Bewertung für Test Student1 wurde freigegeben",
|
||||
);
|
||||
cy.reload();
|
||||
cy.get(
|
||||
'[data-cy="assignment-history"] [data-cy="assignment-history-entry"]',
|
||||
).should("have.length", 4);
|
||||
|
||||
cy.loadAssignmentCompletion(
|
||||
"evaluation_user_id",
|
||||
TEST_TRAINER1_USER_ID,
|
||||
).then((ac) => {
|
||||
expect(ac.completion_status).to.equal("EVALUATION_SUBMITTED");
|
||||
expect(ac.evaluation_points).to.equal(19);
|
||||
expect(ac.completion_data.expert_evaluation_comment.text).to.equal(
|
||||
"nochmal bewertet",
|
||||
);
|
||||
expect(ac.additional_json_data.submission_history).to.have.length(4);
|
||||
expect(ac.additional_json_data.submission_history[0].status).to.equal(
|
||||
"SUBMITTED",
|
||||
);
|
||||
expect(ac.additional_json_data.submission_history[1].status).to.equal(
|
||||
"EVALUATION_SUBMITTED",
|
||||
);
|
||||
expect(ac.additional_json_data.submission_history[2].status).to.equal(
|
||||
"EVALUATION_IN_PROGRESS",
|
||||
);
|
||||
expect(ac.additional_json_data.submission_history[3].status).to.equal(
|
||||
"EVALUATION_SUBMITTED",
|
||||
);
|
||||
|
||||
// check AssignmentCompletionAuditLog
|
||||
cy.task(
|
||||
"runSql",
|
||||
`select * from assignment_assignmentcompletionauditlog
|
||||
where assignment_slug = 'test-lehrgang-assignment-überprüfen-einer-motorfahrzeugs-versicherungspolice'
|
||||
and assignment_user_id = '${TEST_STUDENT1_USER_ID}'
|
||||
order by created_at asc;`,
|
||||
).then((res) => {
|
||||
console.log(res);
|
||||
expect(res.rows).to.have.length(3);
|
||||
expect(res.rows[0].completion_status).to.equal("SUBMITTED");
|
||||
|
||||
expect(res.rows[1].completion_status).to.equal(
|
||||
"EVALUATION_SUBMITTED",
|
||||
);
|
||||
expect(res.rows[1].evaluation_points).to.equal(24);
|
||||
|
||||
expect(res.rows[2].completion_status).to.equal(
|
||||
"EVALUATION_SUBMITTED",
|
||||
);
|
||||
expect(res.rows[2].evaluation_points).to.equal(19);
|
||||
expect(res.rows[2].completion_data.expert_evaluation_comment.text).to.equal(
|
||||
"nochmal bewertet",
|
||||
);
|
||||
});
|
||||
});
|
||||
});
|
||||
});
|
||||
});
|
||||
|
|
@ -100,7 +100,7 @@ describe("courseSpecificSettings.cy.js", () => {
|
|||
"Lernbegleitung"
|
||||
);
|
||||
cy.get('[data-cy="navigation-learning-mentor-link"]').click();
|
||||
cy.get('[data-cy="lm-my-lms-title"]').contains("Meine Lernbegleiter");
|
||||
cy.get('[data-cy="lm-my-lms-title"]').contains("Meine Lernbegleitung");
|
||||
cy.get('[data-cy="lm-invite-mentor-button"]').contains(
|
||||
"Neue Lernbegleitung einladen"
|
||||
);
|
||||
|
|
|
|||
|
|
@ -100,7 +100,7 @@ describe("praxisauftrag.cy.js", () => {
|
|||
cy.get('[data-cy="next-step"]').click();
|
||||
|
||||
cy.get('[data-cy="submit-evaluation"]').click();
|
||||
cy.get('[data-cy="next-step"]').click();
|
||||
cy.get('[data-cy="btn-close"]').click();
|
||||
|
||||
cy.visit("/");
|
||||
|
||||
|
|
|
|||
|
|
@ -63,7 +63,7 @@ describe("memberOnly.cy.js", () => {
|
|||
it("uses term Lernbegleitung in VV-course", () => {
|
||||
cy.visit(MENTOR_MENTEES_URL_VV);
|
||||
cy.get(MAIN_NAVIGATION_MENTOR_LINK).should("contain", "Lernbegleitung");
|
||||
cy.get(MENTEE_MENTORS_TITLE).should("contain", "Meine Lernbegleiter");
|
||||
cy.get(MENTEE_MENTORS_TITLE).should("contain", "Meine Lernbegleitung");
|
||||
cy.get(MENTEE_INVITE_MENTOR).should(
|
||||
"contain",
|
||||
"Neue Lernbegleitung einladen"
|
||||
|
|
|
|||
|
|
@ -59,6 +59,7 @@ DATABASES = {
|
|||
default="postgres://postgres@localhost:5432/vbv_lernwelt",
|
||||
)
|
||||
}
|
||||
|
||||
DATABASES["default"]["ATOMIC_REQUESTS"] = env.bool(
|
||||
"DATABASE_ATOMIC_REQUESTS", default=True
|
||||
)
|
||||
|
|
|
|||
|
|
@ -1,7 +1,11 @@
|
|||
from django.contrib import admin
|
||||
from django.db.models import JSONField
|
||||
|
||||
from vbv_lernwelt.assignment.models import AssignmentCompletion
|
||||
from vbv_lernwelt.assignment.models import (
|
||||
AssignmentCompletion,
|
||||
AssignmentCompletionAuditLog,
|
||||
)
|
||||
from vbv_lernwelt.core.admin import LogAdmin
|
||||
from vbv_lernwelt.core.admin_utils import PrettyJSONWidget
|
||||
|
||||
|
||||
|
|
@ -16,6 +20,7 @@ class AssignmentCompletionAdmin(admin.ModelAdmin):
|
|||
"assignment",
|
||||
"get_circle",
|
||||
"assignment_user",
|
||||
"evaluation_user",
|
||||
"course_session",
|
||||
"completion_status",
|
||||
"evaluation_points",
|
||||
|
|
@ -27,7 +32,14 @@ class AssignmentCompletionAdmin(admin.ModelAdmin):
|
|||
"course_session__course",
|
||||
"course_session",
|
||||
]
|
||||
search_fields = ["assignment_user__email"]
|
||||
search_fields = [
|
||||
"assignment_user__email",
|
||||
"assignment_user__first_name",
|
||||
"assignment_user__last_name",
|
||||
"evaluation_user__email",
|
||||
"evaluation_user__first_name",
|
||||
"evaluation_user__last_name",
|
||||
]
|
||||
readonly_fields = [
|
||||
"assignment_user",
|
||||
"assignment",
|
||||
|
|
@ -53,3 +65,40 @@ class AssignmentCompletionAdmin(admin.ModelAdmin):
|
|||
if change and "evaluation_points_deducted" in form.changed_data:
|
||||
obj.evaluation_points_deducted_user = request.user
|
||||
super().save_model(request, obj, form, change)
|
||||
|
||||
|
||||
@admin.register(AssignmentCompletionAuditLog)
|
||||
class AssignmentCompletionAuditLogAdmin(LogAdmin):
|
||||
date_hierarchy = "created_at"
|
||||
list_display = [
|
||||
"created_at",
|
||||
"assignment",
|
||||
"get_circle",
|
||||
"assignment_user",
|
||||
"evaluation_user",
|
||||
"course_session",
|
||||
"completion_status",
|
||||
"evaluation_points",
|
||||
]
|
||||
list_filter = [
|
||||
"completion_status",
|
||||
"assignment__assignment_type",
|
||||
"course_session__course",
|
||||
"course_session",
|
||||
]
|
||||
search_fields = [
|
||||
"assignment_user__email",
|
||||
"assignment_user__first_name",
|
||||
"assignment_user__last_name",
|
||||
"evaluation_user__email",
|
||||
"evaluation_user__first_name",
|
||||
"evaluation_user__last_name",
|
||||
]
|
||||
|
||||
def get_circle(self, obj):
|
||||
try:
|
||||
return obj.learning_content_page.specific.get_circle().title
|
||||
except Exception:
|
||||
return ""
|
||||
|
||||
get_circle.short_description = "Circle"
|
||||
|
|
|
|||
|
|
@ -16,6 +16,7 @@ class AssignmentCompletionObjectType(DjangoObjectType):
|
|||
completion_data = GenericScalar()
|
||||
task_completion_data = GenericScalar()
|
||||
learning_content_page_id = graphene.ID(source="learning_content_page_id")
|
||||
additional_json_data = GenericScalar()
|
||||
|
||||
# rounded to sensible representation
|
||||
evaluation_points = graphene.Float()
|
||||
|
|
|
|||
|
|
@ -0,0 +1,71 @@
|
|||
import djclick as click
|
||||
import structlog
|
||||
|
||||
from vbv_lernwelt.assignment.models import AssignmentCompletion
|
||||
|
||||
logger = structlog.get_logger(__name__)
|
||||
|
||||
|
||||
def create_initial_submission_history(apps=None, schema_editor=None):
|
||||
if apps is None:
|
||||
# pylint: disable=import-outside-toplevel
|
||||
from vbv_lernwelt.assignment.models import AssignmentCompletion
|
||||
else:
|
||||
AssignmentCompletion = apps.get_model("assignment", "AssignmentCompletion")
|
||||
|
||||
for ac in AssignmentCompletion.objects.filter(
|
||||
assignment__assignment_type__in=["PRAXIS_ASSIGNMENT", "CASEWORK"]
|
||||
):
|
||||
num_entries = ac_create_initial_submission_history(ac)
|
||||
# print(f"Created initial submission history for {ac} {num_entries}")
|
||||
|
||||
|
||||
def ac_create_initial_submission_history(ac: AssignmentCompletion):
|
||||
submission_history = ac.additional_json_data.get("submission_history", [])
|
||||
|
||||
num_entries = 0
|
||||
|
||||
if len(submission_history) > 0:
|
||||
return num_entries
|
||||
|
||||
if ac.submitted_at:
|
||||
entry = {
|
||||
"timestamp": ac.submitted_at.isoformat(),
|
||||
"status": "SUBMITTED",
|
||||
"translation_key": "a.Ergebnisse abgegeben",
|
||||
"user_id": str(ac.assignment_user.id),
|
||||
"user_email": ac.assignment_user.email,
|
||||
"user_display_name": (
|
||||
f"{ac.assignment_user.first_name} {ac.assignment_user.last_name}"
|
||||
),
|
||||
}
|
||||
submission_history.append(entry)
|
||||
num_entries += 1
|
||||
|
||||
if ac.evaluation_submitted_at:
|
||||
translation_key = "a.Bewertung freigegeben"
|
||||
if ac.assignment.assignment_type == "PRAXIS_ASSIGNMENT":
|
||||
translation_key = "Feedback freigegeben"
|
||||
|
||||
entry = {
|
||||
"timestamp": ac.evaluation_submitted_at.isoformat(),
|
||||
"status": "EVALUATION_SUBMITTED",
|
||||
"translation_key": translation_key,
|
||||
"user_id": str(ac.evaluation_user.id),
|
||||
"user_email": ac.evaluation_user.email,
|
||||
"user_display_name": (
|
||||
f"{ac.evaluation_user.first_name} {ac.evaluation_user.last_name}"
|
||||
),
|
||||
}
|
||||
submission_history.append(entry)
|
||||
num_entries += 1
|
||||
|
||||
ac.additional_json_data["submission_history"] = submission_history
|
||||
ac.save()
|
||||
|
||||
return num_entries
|
||||
|
||||
|
||||
@click.command()
|
||||
def command():
|
||||
create_initial_submission_history()
|
||||
|
|
@ -0,0 +1,43 @@
|
|||
# Generated by Django 4.2.13 on 2024-09-16 12:00
|
||||
|
||||
import django.db.models.deletion
|
||||
from django.conf import settings
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
dependencies = [
|
||||
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
|
||||
("assignment", "0014_evaluation_points_deducted"),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AddField(
|
||||
model_name="assignmentcompletionauditlog",
|
||||
name="evaluation_points_deducted",
|
||||
field=models.FloatField(default=0.0, verbose_name="Punkteabzug"),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name="assignmentcompletionauditlog",
|
||||
name="evaluation_points_deducted_reason",
|
||||
field=models.TextField(
|
||||
blank=True, default="", verbose_name="Punkteabzug Begründung"
|
||||
),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name="assignmentcompletionauditlog",
|
||||
name="evaluation_points_deducted_user",
|
||||
field=models.ForeignKey(
|
||||
blank=True,
|
||||
null=True,
|
||||
on_delete=django.db.models.deletion.SET_NULL,
|
||||
related_name="+",
|
||||
to=settings.AUTH_USER_MODEL,
|
||||
),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name="assignmentcompletionauditlog",
|
||||
name="evaluation_points_deducted_user_email",
|
||||
field=models.CharField(blank=True, default="", max_length=255),
|
||||
),
|
||||
]
|
||||
|
|
@ -0,0 +1,18 @@
|
|||
# Generated by Django 4.2.13 on 2024-09-17 11:37
|
||||
|
||||
from django.db import migrations
|
||||
|
||||
from vbv_lernwelt.assignment.management.commands.assignment_create_initial_submission_history import (
|
||||
create_initial_submission_history,
|
||||
)
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
dependencies = [
|
||||
(
|
||||
"assignment",
|
||||
"0015_assignmentcompletionauditlog_evaluation_points_deducted_and_more",
|
||||
),
|
||||
]
|
||||
|
||||
operations = [migrations.RunPython(create_initial_submission_history)]
|
||||
|
|
@ -485,6 +485,23 @@ class AssignmentCompletionAuditLog(models.Model):
|
|||
evaluation_max_points = models.FloatField(null=True, blank=True)
|
||||
evaluation_passed = models.BooleanField(null=True, blank=True)
|
||||
|
||||
evaluation_points_deducted = models.FloatField(
|
||||
default=0.0, verbose_name="Punkteabzug"
|
||||
)
|
||||
evaluation_points_deducted_reason = models.TextField(
|
||||
default="", blank=True, verbose_name="Punkteabzug Begründung"
|
||||
)
|
||||
evaluation_points_deducted_user = models.ForeignKey(
|
||||
User,
|
||||
on_delete=models.SET_NULL,
|
||||
null=True,
|
||||
blank=True,
|
||||
related_name="+",
|
||||
)
|
||||
evaluation_points_deducted_user_email = models.CharField(
|
||||
max_length=255, blank=True, default=""
|
||||
)
|
||||
|
||||
|
||||
def recalculate_assignment_passed(ac: AssignmentCompletion):
|
||||
if ac.evaluation_points_final is not None and ac.evaluation_max_points is not None:
|
||||
|
|
|
|||
|
|
@ -142,6 +142,13 @@ def update_assignment_completion(
|
|||
}
|
||||
)
|
||||
|
||||
evaluation_reopened = False
|
||||
if (
|
||||
completion_status == AssignmentCompletionStatus.EVALUATION_IN_PROGRESS
|
||||
and ac.completion_status == "EVALUATION_SUBMITTED"
|
||||
):
|
||||
evaluation_reopened = True
|
||||
|
||||
if evaluation_max_points is None:
|
||||
ac.evaluation_max_points = assignment.get_max_points()
|
||||
else:
|
||||
|
|
@ -229,9 +236,16 @@ def update_assignment_completion(
|
|||
evaluation_points=evaluation_points,
|
||||
evaluation_max_points=ac.evaluation_max_points,
|
||||
evaluation_passed=ac.evaluation_passed,
|
||||
evaluation_points_deducted=ac.evaluation_points_deducted,
|
||||
evaluation_points_deducted_reason=ac.evaluation_points_deducted_reason,
|
||||
evaluation_points_deducted_user=ac.evaluation_points_deducted_user,
|
||||
)
|
||||
if evaluation_user:
|
||||
acl.evaluation_user_email = evaluation_user.email
|
||||
if ac.evaluation_points_deducted_user:
|
||||
acl.evaluation_points_deducted_user_email = (
|
||||
ac.evaluation_points_deducted_user.email
|
||||
)
|
||||
|
||||
# copy over the question data, so that we don't lose the context
|
||||
subtasks = assignment.get_input_tasks()
|
||||
|
|
@ -241,23 +255,66 @@ def update_assignment_completion(
|
|||
acl.completion_data[key].update(task_data)
|
||||
acl.save()
|
||||
|
||||
if completion_status in [
|
||||
if (
|
||||
completion_status
|
||||
in [
|
||||
AssignmentCompletionStatus.EVALUATION_SUBMITTED,
|
||||
AssignmentCompletionStatus.EVALUATION_IN_PROGRESS,
|
||||
AssignmentCompletionStatus.SUBMITTED,
|
||||
]:
|
||||
learning_content = (
|
||||
learning_content_page
|
||||
if learning_content_page
|
||||
else assignment.find_attached_learning_content()
|
||||
]
|
||||
or evaluation_reopened
|
||||
) and assignment.assignment_type != AssignmentType.EDONIQ_TEST.value:
|
||||
# make history entry
|
||||
submission_history = ac.additional_json_data.get("submission_history", [])
|
||||
entry = {
|
||||
"timestamp": timezone.now().isoformat(),
|
||||
"status": completion_status.value,
|
||||
}
|
||||
|
||||
if completion_status == AssignmentCompletionStatus.SUBMITTED:
|
||||
entry["translation_key"] = "a.Ergebnisse abgegeben"
|
||||
entry["user_id"] = str(assignment_user.id)
|
||||
entry["user_email"] = assignment_user.email
|
||||
entry["user_display_name"] = (
|
||||
f"{assignment_user.first_name} {assignment_user.last_name}"
|
||||
)
|
||||
else:
|
||||
entry["user_id"] = str(evaluation_user.id)
|
||||
entry["user_email"] = evaluation_user.email
|
||||
entry["user_display_name"] = (
|
||||
f"{evaluation_user.first_name} {evaluation_user.last_name}"
|
||||
)
|
||||
if completion_status == AssignmentCompletionStatus.EVALUATION_SUBMITTED:
|
||||
if assignment.assignment_type == AssignmentType.PRAXIS_ASSIGNMENT.value:
|
||||
entry["translation_key"] = "a.Feedback freigegeben"
|
||||
else:
|
||||
entry["translation_key"] = "a.Bewertung freigegeben"
|
||||
elif completion_status == AssignmentCompletionStatus.EVALUATION_IN_PROGRESS:
|
||||
if assignment.assignment_type == AssignmentType.PRAXIS_ASSIGNMENT.value:
|
||||
entry["translation_key"] = "a.Feedback erneut bearbeitet"
|
||||
else:
|
||||
entry["translation_key"] = "a.Bewertung erneut bearbeitet"
|
||||
|
||||
submission_history.append(entry)
|
||||
ac.additional_json_data["submission_history"] = submission_history
|
||||
ac.save()
|
||||
|
||||
if completion_status in [
|
||||
AssignmentCompletionStatus.EVALUATION_SUBMITTED,
|
||||
AssignmentCompletionStatus.EVALUATION_IN_PROGRESS,
|
||||
AssignmentCompletionStatus.SUBMITTED,
|
||||
]:
|
||||
learning_content = (
|
||||
learning_content_page
|
||||
if learning_content_page
|
||||
else assignment.find_attached_learning_content()
|
||||
)
|
||||
if learning_content:
|
||||
mark_course_completion(
|
||||
user=assignment_user,
|
||||
page=learning_content,
|
||||
course_session=course_session,
|
||||
completion_status=CourseCompletionStatus.SUCCESS.value,
|
||||
)
|
||||
if learning_content:
|
||||
mark_course_completion(
|
||||
user=assignment_user,
|
||||
page=learning_content,
|
||||
course_session=course_session,
|
||||
completion_status=CourseCompletionStatus.SUCCESS.value,
|
||||
)
|
||||
|
||||
return ac, created
|
||||
|
||||
|
|
@ -267,7 +324,8 @@ def _remove_unknown_entries(assignment, completion_data):
|
|||
Removes all entries from completion_data which are not known to the assignment
|
||||
"""
|
||||
input_task_ids = [task["id"] for task in assignment.get_input_tasks()]
|
||||
keys = set(input_task_ids) | {"expert_evaluation_comment"}
|
||||
filtered_completion_data = {
|
||||
key: value for key, value in completion_data.items() if key in input_task_ids
|
||||
key: value for key, value in completion_data.items() if key in keys
|
||||
}
|
||||
return filtered_completion_data
|
||||
|
|
|
|||
|
|
@ -190,6 +190,13 @@ class UpdateAssignmentCompletionTestCase(TestCase):
|
|||
"test-lehrgang-assignment-überprüfen-einer-motorfahrzeugs-versicherungspolice",
|
||||
)
|
||||
|
||||
# will create submission_history entry
|
||||
submission_history = ac.additional_json_data.get("submission_history", [])
|
||||
self.assertEqual(len(submission_history), 1)
|
||||
entry = submission_history[0]
|
||||
self.assertEqual(entry["status"], "SUBMITTED")
|
||||
self.assertEqual(entry["user_email"], "student")
|
||||
|
||||
# AssignmentCompletionAuditLog entry will remain event after deletion of foreign keys
|
||||
ac.delete()
|
||||
self.user.delete()
|
||||
|
|
@ -512,6 +519,13 @@ class UpdateAssignmentCompletionTestCase(TestCase):
|
|||
user_input["user_data"], {"text": "Ich würde nichts weiteres empfehlen."}
|
||||
)
|
||||
|
||||
# will create submission_history entry
|
||||
submission_history = ac.additional_json_data.get("submission_history", [])
|
||||
self.assertEqual(len(submission_history), 1)
|
||||
entry = submission_history[0]
|
||||
self.assertEqual(entry["status"], "EVALUATION_SUBMITTED")
|
||||
self.assertEqual(entry["user_email"], "admin")
|
||||
|
||||
# will create AssignmentCompletionAuditLog entry
|
||||
acl = AssignmentCompletionAuditLog.objects.get(
|
||||
assignment_user=self.user,
|
||||
|
|
@ -553,3 +567,156 @@ class UpdateAssignmentCompletionTestCase(TestCase):
|
|||
)
|
||||
self.assertIsNone(acl.assignment_user)
|
||||
self.assertIsNone(acl.assignment)
|
||||
|
||||
def test_can_reopen_evaluated_submission(self):
|
||||
subtasks = self.assignment.filter_user_subtasks(
|
||||
subtask_types=["user_text_input"]
|
||||
)
|
||||
user_text_input = find_first(
|
||||
subtasks,
|
||||
pred=lambda x: (value := x.get("value"))
|
||||
and value.get("text", "").startswith(
|
||||
"Gibt es zusätzliche Deckungen, die du der Person empfehlen würdest?"
|
||||
),
|
||||
)
|
||||
|
||||
ac = AssignmentCompletion.objects.create(
|
||||
assignment_user=self.user,
|
||||
assignment=self.assignment,
|
||||
course_session=self.course_session,
|
||||
completion_status=AssignmentCompletionStatus.SUBMITTED.value,
|
||||
completion_data={
|
||||
user_text_input["id"]: {
|
||||
"user_data": {"text": "Ich würde nichts weiteres empfehlen."}
|
||||
},
|
||||
},
|
||||
)
|
||||
|
||||
evaluation_task = self.assignment.get_evaluation_tasks()[0]
|
||||
|
||||
update_assignment_completion(
|
||||
assignment_user=self.user,
|
||||
assignment=self.assignment,
|
||||
course_session=self.course_session,
|
||||
completion_data={
|
||||
evaluation_task["id"]: {
|
||||
"expert_data": {"points": 2, "text": "Gut gemacht!"}
|
||||
},
|
||||
},
|
||||
completion_status=AssignmentCompletionStatus.EVALUATION_IN_PROGRESS,
|
||||
evaluation_user=self.trainer,
|
||||
)
|
||||
|
||||
update_assignment_completion(
|
||||
assignment_user=self.user,
|
||||
assignment=self.assignment,
|
||||
course_session=self.course_session,
|
||||
completion_data={},
|
||||
completion_status=AssignmentCompletionStatus.EVALUATION_SUBMITTED,
|
||||
evaluation_user=self.trainer,
|
||||
evaluation_points=16,
|
||||
)
|
||||
|
||||
ac = AssignmentCompletion.objects.get(
|
||||
assignment_user=self.user,
|
||||
assignment=self.assignment,
|
||||
course_session=self.course_session,
|
||||
)
|
||||
|
||||
self.assertEqual(ac.completion_status, "EVALUATION_SUBMITTED")
|
||||
self.assertEqual(ac.evaluation_points, 16)
|
||||
self.assertEqual(ac.evaluation_max_points, 24)
|
||||
self.assertTrue(ac.evaluation_passed)
|
||||
trainer_input = ac.completion_data[evaluation_task["id"]]
|
||||
self.assertDictEqual(
|
||||
trainer_input["expert_data"], {"points": 2, "text": "Gut gemacht!"}
|
||||
)
|
||||
user_input = ac.completion_data[user_text_input["id"]]
|
||||
self.assertDictEqual(
|
||||
user_input["user_data"], {"text": "Ich würde nichts weiteres empfehlen."}
|
||||
)
|
||||
|
||||
update_assignment_completion(
|
||||
assignment_user=self.user,
|
||||
assignment=self.assignment,
|
||||
course_session=self.course_session,
|
||||
completion_data={},
|
||||
completion_status=AssignmentCompletionStatus.EVALUATION_IN_PROGRESS,
|
||||
evaluation_user=self.trainer,
|
||||
)
|
||||
|
||||
ac = AssignmentCompletion.objects.get(
|
||||
assignment_user=self.user,
|
||||
assignment=self.assignment,
|
||||
course_session=self.course_session,
|
||||
)
|
||||
self.assertEqual(ac.completion_status, "EVALUATION_IN_PROGRESS")
|
||||
|
||||
update_assignment_completion(
|
||||
assignment_user=self.user,
|
||||
assignment=self.assignment,
|
||||
course_session=self.course_session,
|
||||
completion_data={
|
||||
evaluation_task["id"]: {
|
||||
"expert_data": {
|
||||
"points": 2,
|
||||
"text": "Gut gemacht. Ich musste es noch einmal anschauen.",
|
||||
}
|
||||
},
|
||||
},
|
||||
completion_status=AssignmentCompletionStatus.EVALUATION_IN_PROGRESS,
|
||||
evaluation_user=self.trainer,
|
||||
)
|
||||
|
||||
# will create submission_history entry
|
||||
submission_history = ac.additional_json_data.get("submission_history", [])
|
||||
self.assertEqual(len(submission_history), 2)
|
||||
entry = submission_history[1]
|
||||
self.assertEqual(entry["status"], "EVALUATION_IN_PROGRESS")
|
||||
self.assertEqual(entry["user_email"], "admin")
|
||||
|
||||
update_assignment_completion(
|
||||
assignment_user=self.user,
|
||||
assignment=self.assignment,
|
||||
course_session=self.course_session,
|
||||
completion_data={},
|
||||
completion_status=AssignmentCompletionStatus.EVALUATION_SUBMITTED,
|
||||
evaluation_user=self.trainer,
|
||||
evaluation_points=16,
|
||||
)
|
||||
|
||||
ac = AssignmentCompletion.objects.get(
|
||||
assignment_user=self.user,
|
||||
assignment=self.assignment,
|
||||
course_session=self.course_session,
|
||||
)
|
||||
|
||||
# will create submission_history entry
|
||||
submission_history = ac.additional_json_data.get("submission_history", [])
|
||||
self.assertEqual(len(submission_history), 3)
|
||||
entry = submission_history[2]
|
||||
self.assertEqual(entry["status"], "EVALUATION_SUBMITTED")
|
||||
self.assertEqual(entry["user_email"], "admin")
|
||||
|
||||
self.assertEqual(ac.completion_status, "EVALUATION_SUBMITTED")
|
||||
self.assertEqual(ac.evaluation_points, 16)
|
||||
self.assertEqual(ac.evaluation_max_points, 24)
|
||||
self.assertTrue(ac.evaluation_passed)
|
||||
trainer_input = ac.completion_data[evaluation_task["id"]]
|
||||
self.assertDictEqual(
|
||||
trainer_input["expert_data"],
|
||||
{"points": 2, "text": "Gut gemacht. Ich musste es noch einmal anschauen."},
|
||||
)
|
||||
user_input = ac.completion_data[user_text_input["id"]]
|
||||
self.assertDictEqual(
|
||||
user_input["user_data"], {"text": "Ich würde nichts weiteres empfehlen."}
|
||||
)
|
||||
|
||||
# it will have created another AssignmentCompletionAuditLog entry
|
||||
acl_qs = AssignmentCompletionAuditLog.objects.filter(
|
||||
assignment_user=self.user,
|
||||
assignment=self.assignment,
|
||||
course_session=self.course_session,
|
||||
completion_status="EVALUATION_SUBMITTED",
|
||||
)
|
||||
self.assertEqual(acl_qs.count(), 2)
|
||||
|
|
|
|||
|
|
@ -6,7 +6,11 @@ from django.contrib.auth.hashers import make_password
|
|||
from django.db import connection
|
||||
from django.utils import timezone
|
||||
|
||||
from vbv_lernwelt.assignment.models import Assignment, AssignmentCompletion
|
||||
from vbv_lernwelt.assignment.models import (
|
||||
Assignment,
|
||||
AssignmentCompletion,
|
||||
AssignmentCompletionAuditLog,
|
||||
)
|
||||
from vbv_lernwelt.competence.models import PerformanceCriteria
|
||||
from vbv_lernwelt.core.constants import (
|
||||
TEST_COURSE_SESSION_BERN_ID,
|
||||
|
|
@ -183,6 +187,7 @@ def command(
|
|||
CourseCompletion.objects.all().delete()
|
||||
Notification.objects.all().delete()
|
||||
AssignmentCompletion.objects.all().delete()
|
||||
AssignmentCompletionAuditLog.objects.all().delete()
|
||||
FeedbackResponse.objects.all().delete()
|
||||
CourseSessionAttendanceCourse.objects.all().update(attendance_user_list=[])
|
||||
|
||||
|
|
|
|||
|
|
@ -291,8 +291,8 @@ class CourseSessionObjectType(DjangoObjectType):
|
|||
_add_course_session_user(rel.participant)
|
||||
|
||||
if self.course.configuration.is_uk:
|
||||
# happy path, members and experts
|
||||
if me_csu:
|
||||
# VBV-708: Teilnehmer und Trainer haben Zugriff auf alle Teilnehmer im Ük
|
||||
for course_session_user in CourseSessionUser.objects.filter(
|
||||
course_session_id=self.id
|
||||
).distinct():
|
||||
|
|
@ -300,6 +300,45 @@ class CourseSessionObjectType(DjangoObjectType):
|
|||
user.id for user in course_session_users_resolved
|
||||
]:
|
||||
_add_course_session_user(course_session_user)
|
||||
elif CourseSessionGroup.objects.filter(
|
||||
supervisor=info.context.user, course_session=self
|
||||
).exists():
|
||||
# VBV-708: Supervisor (Regionenleiter) has access to all users and circles
|
||||
for course_session_user in CourseSessionUser.objects.filter(
|
||||
course_session_id=self.id
|
||||
).distinct():
|
||||
if course_session_user.id not in [
|
||||
user.id for user in course_session_users_resolved
|
||||
]:
|
||||
_add_course_session_user(course_session_user)
|
||||
|
||||
circles = (
|
||||
self.course.get_learning_path()
|
||||
.get_descendants()
|
||||
.live()
|
||||
.specific()
|
||||
.exact_type(Circle)
|
||||
)
|
||||
user = info.context.user
|
||||
course_session_users_resolved.append(
|
||||
CourseSessionUserObjectsType(
|
||||
id=f"{user.id}-{self.id}-as-ephemeral-supervisor", # noqa
|
||||
user_id=user.id, # noqa
|
||||
first_name=user.first_name, # noqa
|
||||
last_name=user.last_name, # noqa
|
||||
email=user.email, # noqa
|
||||
avatar_url=user.avatar_url, # noqa
|
||||
role=CourseSessionUser.Role.EXPERT, # noqa
|
||||
circles=[ # noqa
|
||||
CourseSessionUserExpertCircleType( # noqa
|
||||
id=circle.id, # noqa
|
||||
title=circle.title, # noqa
|
||||
slug=circle.slug, # noqa
|
||||
)
|
||||
for circle in circles
|
||||
],
|
||||
)
|
||||
)
|
||||
else:
|
||||
# VBV-708: user has only "AgentParticipantRole" and is not in the list of users
|
||||
for rel in AgentParticipantRelation.objects.filter(
|
||||
|
|
@ -310,67 +349,4 @@ class CourseSessionObjectType(DjangoObjectType):
|
|||
]:
|
||||
_add_course_session_user(rel.participant)
|
||||
|
||||
# workaround for supervisor
|
||||
# add supervisor to the list of users (as expert)
|
||||
course_session_id = self.id # noqa
|
||||
user = info.context.user # noqa
|
||||
|
||||
if CourseSessionGroup.objects.filter(
|
||||
course_session=course_session_id, supervisor=user
|
||||
).exists():
|
||||
if course_session := CourseSession.objects.filter(
|
||||
id=course_session_id
|
||||
).first():
|
||||
circles = (
|
||||
course_session.course.get_learning_path()
|
||||
.get_descendants()
|
||||
.live()
|
||||
.specific()
|
||||
.exact_type(Circle)
|
||||
)
|
||||
|
||||
course_session_users_resolved.append(
|
||||
CourseSessionUserObjectsType(
|
||||
id=f"{user.id}-as-ephemeral-supervisor", # noqa
|
||||
user_id=user.id, # noqa
|
||||
first_name=user.first_name, # noqa
|
||||
last_name=user.last_name, # noqa
|
||||
email=user.email, # noqa
|
||||
avatar_url=user.avatar_url, # noqa
|
||||
role=CourseSessionUser.Role.EXPERT, # noqa
|
||||
circles=[ # noqa
|
||||
CourseSessionUserExpertCircleType( # noqa
|
||||
id=circle.id, # noqa
|
||||
title=circle.title, # noqa
|
||||
slug=circle.slug, # noqa
|
||||
)
|
||||
for circle in circles
|
||||
],
|
||||
)
|
||||
)
|
||||
|
||||
return course_session_users_resolved
|
||||
|
||||
def _add_course_session_user(
|
||||
self, course_session_user, course_session_users_resolved
|
||||
):
|
||||
course_session_users_resolved.append(
|
||||
CourseSessionUserObjectsType(
|
||||
id=course_session_user.id, # noqa
|
||||
user_id=course_session_user.user.id, # noqa
|
||||
first_name=course_session_user.user.first_name, # noqa
|
||||
last_name=course_session_user.user.last_name, # noqa
|
||||
email=course_session_user.user.email, # noqa
|
||||
avatar_url=course_session_user.user.avatar_url, # noqa
|
||||
role=course_session_user.role, # noqa
|
||||
circles=[ # noqa
|
||||
CourseSessionUserExpertCircleType( # noqa
|
||||
id=circle.id, # noqa
|
||||
title=circle.title, # noqa
|
||||
slug=circle.slug, # noqa
|
||||
)
|
||||
for circle in course_session_user.expert.all() # noqa
|
||||
],
|
||||
optional_attendance=course_session_user.optional_attendance, # noqa
|
||||
)
|
||||
)
|
||||
|
|
|
|||
Loading…
Reference in New Issue