vbv/client/src/utils/utils.ts

63 lines
1.9 KiB
TypeScript

import type { AssignmentType } from "@/types";
import { useTranslation } from "i18next-vue";
export function assertUnreachable(msg: string): never {
throw new Error("Didn't expect to get here, " + msg);
}
export function stringifyParse(obj: any): any {
return JSON.parse(JSON.stringify(obj));
}
function createCourseUrl(courseSlug: string | undefined, specificSub: string): string {
if (!courseSlug) {
return "/";
}
if (["learn", "media", "competence", "cockpit", "mentor"].includes(specificSub)) {
return `/course/${courseSlug}/${specificSub}`;
}
return `/course/${courseSlug}`;
}
export function getCompetenceNaviUrl(courseSlug: string | undefined): string {
return createCourseUrl(courseSlug, "competence");
}
export function getMediaCenterUrl(courseSlug: string | undefined): string {
return createCourseUrl(courseSlug, "media");
}
export function getLearningPathUrl(courseSlug: string | undefined): string {
return createCourseUrl(courseSlug, "learn");
}
export function getCockpitUrl(courseSlug: string | undefined): string {
return createCourseUrl(courseSlug, "cockpit");
}
export function getLearningMentorManagementUrl(courseSlug: string | undefined): string {
return createCourseUrl(courseSlug, "mentor");
}
export function getAssignmentTypeTitle(assignmentType: AssignmentType): string {
const { t } = useTranslation();
switch (assignmentType) {
case "CASEWORK":
return t("learningContentTypes.casework");
case "PRAXIS_ASSIGNMENT":
return t("learningContentTypes.praxisAssignment");
case "PREP_ASSIGNMENT":
return t("learningContentTypes.prepAssignment");
case "REFLECTION":
return t("learningContentTypes.reflection");
case "CONDITION_ACCEPTANCE":
return t("learningContentTypes.task");
case "EDONIQ_TEST":
return t("learningContentTypes.edoniqTest");
default:
return "unknown";
}
}