commit
c0998e0371
|
|
@ -64,9 +64,10 @@ python-linting: &python-linting
|
|||
script:
|
||||
- source ./env/bitbucket/prepare_for_test.sh
|
||||
- pip install -r server/requirements/requirements-dev.txt
|
||||
- ruff check server
|
||||
- ruff format server --check
|
||||
- git-crypt status -e | sort > git-crypt-encrypted-files-check.txt && diff -w git-crypt-encrypted-files.txt git-crypt-encrypted-files-check.txt
|
||||
- trufflehog --exclude_paths trufflehog-exclude-patterns.txt --allow trufflehog-allow.json --entropy=True --max_depth=100 .
|
||||
- ufmt check server
|
||||
|
||||
js-tests: &js-tests
|
||||
name: js tests
|
||||
|
|
|
|||
|
|
@ -2,7 +2,11 @@
|
|||
"htmlWhitespaceSensitivity": "ignore",
|
||||
"jsonRecursiveSort": true,
|
||||
"organizeImportsSkipDestructiveCodeActions": true,
|
||||
"plugins": ["prettier-plugin-sort-json", "prettier-plugin-tailwindcss"],
|
||||
"plugins": [
|
||||
"prettier-plugin-sort-json",
|
||||
"prettier-plugin-organize-imports",
|
||||
"prettier-plugin-tailwindcss"
|
||||
],
|
||||
"printWidth": 88,
|
||||
"semi": true,
|
||||
"singleQuote": false,
|
||||
|
|
|
|||
|
|
@ -5723,6 +5723,7 @@
|
|||
"version": "3.0.2",
|
||||
"resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz",
|
||||
"integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"fill-range": "^7.0.1"
|
||||
},
|
||||
|
|
@ -8258,6 +8259,7 @@
|
|||
"version": "7.0.1",
|
||||
"resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz",
|
||||
"integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"to-regex-range": "^5.0.1"
|
||||
},
|
||||
|
|
@ -9316,6 +9318,7 @@
|
|||
"version": "2.1.1",
|
||||
"resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
|
||||
"integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==",
|
||||
"dev": true,
|
||||
"engines": {
|
||||
"node": ">=0.10.0"
|
||||
}
|
||||
|
|
@ -9332,6 +9335,7 @@
|
|||
"version": "4.0.3",
|
||||
"resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz",
|
||||
"integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"is-extglob": "^2.1.1"
|
||||
},
|
||||
|
|
@ -9385,6 +9389,7 @@
|
|||
"version": "7.0.0",
|
||||
"resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
|
||||
"integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",
|
||||
"dev": true,
|
||||
"engines": {
|
||||
"node": ">=0.12.0"
|
||||
}
|
||||
|
|
@ -10330,6 +10335,7 @@
|
|||
"version": "4.0.5",
|
||||
"resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz",
|
||||
"integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"braces": "^3.0.2",
|
||||
"picomatch": "^2.3.1"
|
||||
|
|
@ -11067,6 +11073,7 @@
|
|||
"version": "2.3.1",
|
||||
"resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz",
|
||||
"integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==",
|
||||
"dev": true,
|
||||
"engines": {
|
||||
"node": ">=8.6"
|
||||
},
|
||||
|
|
@ -12666,6 +12673,7 @@
|
|||
"version": "5.0.1",
|
||||
"resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
|
||||
"integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"is-number": "^7.0.0"
|
||||
},
|
||||
|
|
@ -18799,6 +18807,7 @@
|
|||
"version": "3.0.2",
|
||||
"resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz",
|
||||
"integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"fill-range": "^7.0.1"
|
||||
}
|
||||
|
|
@ -20659,6 +20668,7 @@
|
|||
"version": "7.0.1",
|
||||
"resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz",
|
||||
"integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"to-regex-range": "^5.0.1"
|
||||
}
|
||||
|
|
@ -21416,7 +21426,8 @@
|
|||
"is-extglob": {
|
||||
"version": "2.1.1",
|
||||
"resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
|
||||
"integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ=="
|
||||
"integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==",
|
||||
"dev": true
|
||||
},
|
||||
"is-fullwidth-code-point": {
|
||||
"version": "3.0.0",
|
||||
|
|
@ -21427,6 +21438,7 @@
|
|||
"version": "4.0.3",
|
||||
"resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz",
|
||||
"integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"is-extglob": "^2.1.1"
|
||||
}
|
||||
|
|
@ -21464,7 +21476,8 @@
|
|||
"is-number": {
|
||||
"version": "7.0.0",
|
||||
"resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
|
||||
"integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng=="
|
||||
"integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",
|
||||
"dev": true
|
||||
},
|
||||
"is-number-object": {
|
||||
"version": "1.0.7",
|
||||
|
|
@ -22162,6 +22175,7 @@
|
|||
"version": "4.0.5",
|
||||
"resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz",
|
||||
"integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"braces": "^3.0.2",
|
||||
"picomatch": "^2.3.1"
|
||||
|
|
@ -22714,7 +22728,8 @@
|
|||
"picomatch": {
|
||||
"version": "2.3.1",
|
||||
"resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz",
|
||||
"integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA=="
|
||||
"integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==",
|
||||
"dev": true
|
||||
},
|
||||
"pify": {
|
||||
"version": "2.3.0",
|
||||
|
|
@ -23810,6 +23825,7 @@
|
|||
"version": "5.0.1",
|
||||
"resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
|
||||
"integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"is-number": "^7.0.0"
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,9 +1,9 @@
|
|||
<script setup lang="ts">
|
||||
import { SUPPORT_LOCALES } from "@/i18nextWrapper";
|
||||
import type { AvailableLanguages } from "@/stores/user";
|
||||
import { useUserStore } from "@/stores/user";
|
||||
import { Menu, MenuButton, MenuItem, MenuItems } from "@headlessui/vue";
|
||||
import * as log from "loglevel";
|
||||
import { SUPPORT_LOCALES } from "@/i18nextWrapper";
|
||||
|
||||
log.debug("AppFooter created");
|
||||
|
||||
|
|
|
|||
|
|
@ -8,9 +8,9 @@ import type {
|
|||
LearningContentAssignment,
|
||||
LearningContentEdoniqTest,
|
||||
} from "@/types";
|
||||
import { stringifyParse } from "@/utils/utils";
|
||||
import log from "loglevel";
|
||||
import { computed, onMounted, reactive } from "vue";
|
||||
import { stringifyParse } from "@/utils/utils";
|
||||
|
||||
const props = defineProps<{
|
||||
courseSession: CourseSession;
|
||||
|
|
|
|||
|
|
@ -2,6 +2,7 @@
|
|||
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 type {
|
||||
Assignment,
|
||||
AssignmentCompletion,
|
||||
|
|
@ -13,7 +14,6 @@ import dayjs from "dayjs";
|
|||
import { findIndex } from "lodash";
|
||||
import * as log from "loglevel";
|
||||
import { computed, onMounted } from "vue";
|
||||
import { useCourseSessionDetailQuery } from "@/composables";
|
||||
|
||||
const props = defineProps<{
|
||||
assignmentUser: CourseSessionUser;
|
||||
|
|
|
|||
|
|
@ -3,9 +3,9 @@ import { useCurrentCourseSession } from "@/composables";
|
|||
import { UPSERT_ASSIGNMENT_COMPLETION_MUTATION } from "@/graphql/mutations";
|
||||
import type { Assignment, AssignmentCompletion, CourseSessionUser } from "@/types";
|
||||
import { useMutation } from "@urql/vue";
|
||||
import { computed } from "vue";
|
||||
import dayjs, { Dayjs } from "dayjs";
|
||||
import * as log from "loglevel";
|
||||
import { computed } from "vue";
|
||||
|
||||
const props = defineProps<{
|
||||
assignmentUser: CourseSessionUser;
|
||||
|
|
|
|||
|
|
@ -1,5 +1,6 @@
|
|||
<script setup lang="ts">
|
||||
import ItSuccessAlert from "@/components/ui/ItSuccessAlert.vue";
|
||||
import RichText from "@/components/ui/RichText.vue";
|
||||
import { useCurrentCourseSession } from "@/composables";
|
||||
import { UPSERT_ASSIGNMENT_COMPLETION_MUTATION } from "@/graphql/mutations";
|
||||
import {
|
||||
|
|
@ -16,7 +17,6 @@ import { useMutation } from "@urql/vue";
|
|||
import dayjs, { Dayjs } from "dayjs";
|
||||
import * as log from "loglevel";
|
||||
import { computed, reactive } from "vue";
|
||||
import RichText from "@/components/ui/RichText.vue";
|
||||
|
||||
const props = defineProps<{
|
||||
assignmentUser: CourseSessionUser;
|
||||
|
|
|
|||
|
|
@ -1,5 +1,6 @@
|
|||
<script setup lang="ts">
|
||||
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";
|
||||
import type {
|
||||
|
|
@ -13,7 +14,6 @@ import { useMutation } from "@urql/vue";
|
|||
import { useDebounceFn } from "@vueuse/core";
|
||||
import * as log from "loglevel";
|
||||
import { computed } from "vue";
|
||||
import RichText from "@/components/ui/RichText.vue";
|
||||
|
||||
const props = defineProps<{
|
||||
assignmentUser: CourseSessionUser;
|
||||
|
|
|
|||
|
|
@ -1,5 +1,11 @@
|
|||
<script setup lang="ts">
|
||||
import AssignmentSubmissionProgress from "@/components/assignment/AssignmentSubmissionProgress.vue";
|
||||
import FeedbackSubmissionProgress from "@/components/selfEvaluationFeedback/FeedbackSubmissionProgress.vue";
|
||||
import {
|
||||
useCourseDataWithCompletion,
|
||||
useCourseSessionDetailQuery,
|
||||
} from "@/composables";
|
||||
import { circleFlatLearningContents } from "@/services/circle";
|
||||
import type {
|
||||
CourseSession,
|
||||
LearningContent,
|
||||
|
|
@ -7,17 +13,11 @@ import type {
|
|||
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
||||
LearningContentEdoniqTest,
|
||||
} from "@/types";
|
||||
import { learningContentTypeData } from "@/utils/typeMaps";
|
||||
import { getCockpitUrl } from "@/utils/utils";
|
||||
import { useTranslation } from "i18next-vue";
|
||||
import log from "loglevel";
|
||||
import { computed } from "vue";
|
||||
import { useTranslation } from "i18next-vue";
|
||||
import FeedbackSubmissionProgress from "@/components/selfEvaluationFeedback/FeedbackSubmissionProgress.vue";
|
||||
import { learningContentTypeData } from "@/utils/typeMaps";
|
||||
import {
|
||||
useCourseDataWithCompletion,
|
||||
useCourseSessionDetailQuery,
|
||||
} from "@/composables";
|
||||
import { circleFlatLearningContents } from "@/services/circle";
|
||||
import { getCockpitUrl } from "@/utils/utils";
|
||||
|
||||
interface Submittable {
|
||||
id: string;
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
<script setup lang="ts">
|
||||
import { useCourseDataWithCompletion } from "@/composables";
|
||||
import { computed } from "vue";
|
||||
import { calcPerformanceCriteriaStatusCount } from "@/services/competence";
|
||||
import { computed } from "vue";
|
||||
|
||||
const props = defineProps<{
|
||||
courseSlug: string;
|
||||
|
|
|
|||
|
|
@ -1,8 +1,8 @@
|
|||
<script setup lang="ts">
|
||||
import BaseBox from "@/components/dashboard/BaseBox.vue";
|
||||
import { fetchMenteeCount } from "@/services/dashboard";
|
||||
import type { Ref } from "vue";
|
||||
import { onMounted, ref } from "vue";
|
||||
import { fetchMenteeCount } from "@/services/dashboard";
|
||||
import BaseBox from "@/components/dashboard/BaseBox.vue";
|
||||
|
||||
const props = withDefaults(
|
||||
defineProps<{
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
<script setup lang="ts">
|
||||
import { computed } from "vue";
|
||||
import ItProgress from "@/components/ui/ItProgress.vue";
|
||||
import BaseBox from "@/components/dashboard/BaseBox.vue";
|
||||
import ItProgress from "@/components/ui/ItProgress.vue";
|
||||
import { computed } from "vue";
|
||||
|
||||
const props = defineProps<{
|
||||
detailsLink: string;
|
||||
|
|
|
|||
|
|
@ -1,9 +1,9 @@
|
|||
<script setup lang="ts">
|
||||
import type { Ref } from "vue";
|
||||
import { computed, onMounted, ref } from "vue";
|
||||
import AssignmentProgressSummaryBox from "@/components/dashboard/AssignmentProgressSummaryBox.vue";
|
||||
import type { ProgressDashboardAssignmentType } from "@/gql/graphql";
|
||||
import { fetchProgressData } from "@/services/dashboard";
|
||||
import AssignmentProgressSummaryBox from "@/components/dashboard/AssignmentProgressSummaryBox.vue";
|
||||
import type { Ref } from "vue";
|
||||
import { computed, onMounted, ref } from "vue";
|
||||
|
||||
const props = defineProps<{
|
||||
courseId: string;
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
<script setup lang="ts">
|
||||
import BaseBox from "@/components/dashboard/BaseBox.vue";
|
||||
import ItProgress from "@/components/ui/ItProgress.vue";
|
||||
import { computed } from "vue";
|
||||
import BaseBox from "@/components/dashboard/BaseBox.vue";
|
||||
|
||||
const props = defineProps<{
|
||||
assignmentsCompleted: number;
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
<script setup lang="ts">
|
||||
import BaseBox from "@/components/dashboard/BaseBox.vue";
|
||||
import ItProgress from "@/components/ui/ItProgress.vue";
|
||||
import { computed } from "vue";
|
||||
import BaseBox from "@/components/dashboard/BaseBox.vue";
|
||||
|
||||
const props = defineProps<{
|
||||
daysCompleted: number;
|
||||
|
|
|
|||
|
|
@ -1,15 +1,15 @@
|
|||
<script setup lang="ts">
|
||||
import { computed, onMounted, ref } from "vue";
|
||||
import AgentConnectionCount from "@/components/dashboard/AgentConnectionCount.vue";
|
||||
import AssignmentSummaryBox from "@/components/dashboard/AssignmentSummaryBox.vue";
|
||||
import BaseBox from "@/components/dashboard/BaseBox.vue";
|
||||
import LoadingSpinner from "@/components/ui/LoadingSpinner.vue";
|
||||
import type { BaseStatisticsType } from "@/gql/graphql";
|
||||
import { percentToRoundedGrade } from "@/services/assignmentService";
|
||||
import {
|
||||
type DashboardRoleKeyType,
|
||||
fetchMentorCompetenceSummary,
|
||||
} from "@/services/dashboard";
|
||||
import type { BaseStatisticsType } from "@/gql/graphql";
|
||||
import LoadingSpinner from "@/components/ui/LoadingSpinner.vue";
|
||||
import AssignmentSummaryBox from "@/components/dashboard/AssignmentSummaryBox.vue";
|
||||
import BaseBox from "@/components/dashboard/BaseBox.vue";
|
||||
import { percentToRoundedGrade } from "@/services/assignmentService";
|
||||
import AgentConnectionCount from "@/components/dashboard/AgentConnectionCount.vue";
|
||||
import { computed, onMounted, ref } from "vue";
|
||||
|
||||
const props = defineProps<{
|
||||
courseSlug: string;
|
||||
|
|
|
|||
|
|
@ -1,9 +1,9 @@
|
|||
<script setup lang="ts">
|
||||
import CompetenceSummaryBox from "@/components/dashboard/CompetenceSummaryBox.vue";
|
||||
import type { ProgressDashboardCompetenceType } from "@/gql/graphql";
|
||||
import { fetchProgressData } from "@/services/dashboard";
|
||||
import type { Ref } from "vue";
|
||||
import { computed, onMounted, ref } from "vue";
|
||||
import type { ProgressDashboardCompetenceType } from "@/gql/graphql";
|
||||
import CompetenceSummaryBox from "@/components/dashboard/CompetenceSummaryBox.vue";
|
||||
import { fetchProgressData } from "@/services/dashboard";
|
||||
|
||||
const props = defineProps<{
|
||||
courseId: string;
|
||||
|
|
|
|||
|
|
@ -1,15 +1,15 @@
|
|||
<script setup lang="ts">
|
||||
import { computed } from "vue";
|
||||
import type { DashboardCourseConfigType, WidgetType } from "@/services/dashboard";
|
||||
import LearningPathDiagram from "@/components/learningPath/LearningPathDiagram.vue";
|
||||
import CompetenceSummary from "@/components/dashboard/CompetenceSummary.vue";
|
||||
import AssignmentSummary from "@/components/dashboard/AssignmentSummary.vue";
|
||||
import MentorOpenTasksCount from "@/components/dashboard/MentorOpenTasksCount.vue";
|
||||
import AgentConnectionCount from "@/components/dashboard/AgentConnectionCount.vue";
|
||||
import MentorCompetenceSummary from "@/components/dashboard/MentorCompetenceSummary.vue";
|
||||
import { getCockpitUrl, getLearningMentorUrl, getLearningPathUrl } from "@/utils/utils";
|
||||
import UkStatistics from "@/components/dashboard/UkStatistics.vue";
|
||||
import AssignmentSummary from "@/components/dashboard/AssignmentSummary.vue";
|
||||
import BerufsbildnerStatistics from "@/components/dashboard/BerufsbildnerStatistics.vue";
|
||||
import CompetenceSummary from "@/components/dashboard/CompetenceSummary.vue";
|
||||
import MentorCompetenceSummary from "@/components/dashboard/MentorCompetenceSummary.vue";
|
||||
import MentorOpenTasksCount from "@/components/dashboard/MentorOpenTasksCount.vue";
|
||||
import UkStatistics from "@/components/dashboard/UkStatistics.vue";
|
||||
import LearningPathDiagram from "@/components/learningPath/LearningPathDiagram.vue";
|
||||
import type { DashboardCourseConfigType, WidgetType } from "@/services/dashboard";
|
||||
import { getCockpitUrl, getLearningMentorUrl, getLearningPathUrl } from "@/utils/utils";
|
||||
import { computed } from "vue";
|
||||
|
||||
const mentorWidgets = [
|
||||
"MentorTasksWidget",
|
||||
|
|
|
|||
|
|
@ -1,11 +1,11 @@
|
|||
<script setup lang="ts">
|
||||
import { computed, onMounted, ref } from "vue";
|
||||
import BaseBox from "@/components/dashboard/BaseBox.vue";
|
||||
import type { BaseStatisticsType } from "@/gql/graphql";
|
||||
import {
|
||||
type DashboardRoleKeyType,
|
||||
fetchMentorCompetenceSummary,
|
||||
} from "@/services/dashboard";
|
||||
import type { BaseStatisticsType } from "@/gql/graphql";
|
||||
import BaseBox from "@/components/dashboard/BaseBox.vue";
|
||||
import { computed, onMounted, ref } from "vue";
|
||||
|
||||
const props = defineProps<{
|
||||
courseId: string;
|
||||
|
|
|
|||
|
|
@ -1,8 +1,8 @@
|
|||
<script setup lang="ts">
|
||||
import BaseBox from "@/components/dashboard/BaseBox.vue";
|
||||
import { fetchOpenTasksCount } from "@/services/dashboard";
|
||||
import type { Ref } from "vue";
|
||||
import { onMounted, ref } from "vue";
|
||||
import { fetchOpenTasksCount } from "@/services/dashboard";
|
||||
import BaseBox from "@/components/dashboard/BaseBox.vue";
|
||||
|
||||
const props = defineProps<{
|
||||
courseId: string;
|
||||
|
|
|
|||
|
|
@ -1,10 +1,10 @@
|
|||
<script setup lang="ts">
|
||||
import { computed, ref, watch } from "vue";
|
||||
import ItDropdownSelect from "@/components/ui/ItDropdownSelect.vue";
|
||||
import { useTranslation } from "i18next-vue";
|
||||
import type { StatisticsCourseSessionPropertiesType } from "@/gql/graphql";
|
||||
import type { StatisticsFilterItem } from "@/types";
|
||||
import { useTranslation } from "i18next-vue";
|
||||
import _ from "lodash";
|
||||
import { computed, ref, watch } from "vue";
|
||||
|
||||
const { t } = useTranslation();
|
||||
|
||||
|
|
|
|||
|
|
@ -1,12 +1,12 @@
|
|||
<script setup lang="ts">
|
||||
import AssignmentSummaryBox from "@/components/dashboard/AssignmentSummaryBox.vue";
|
||||
import AttendanceSummaryBox from "@/components/dashboard/AttendanceSummaryBox.vue";
|
||||
import CompetenceSummaryBox from "@/components/dashboard/CompetenceSummaryBox.vue";
|
||||
import FeedbackSummaryBox from "@/components/dashboard/FeedbackSummaryBox.vue";
|
||||
import LoadingSpinner from "@/components/ui/LoadingSpinner.vue";
|
||||
import type { CourseStatisticsType } from "@/gql/graphql";
|
||||
import { useDashboardStore } from "@/stores/dashboard";
|
||||
import { computed, onMounted, ref } from "vue";
|
||||
import AttendanceSummaryBox from "@/components/dashboard/AttendanceSummaryBox.vue";
|
||||
import type { CourseStatisticsType } from "@/gql/graphql";
|
||||
import AssignmentSummaryBox from "@/components/dashboard/AssignmentSummaryBox.vue";
|
||||
import FeedbackSummaryBox from "@/components/dashboard/FeedbackSummaryBox.vue";
|
||||
import CompetenceSummaryBox from "@/components/dashboard/CompetenceSummaryBox.vue";
|
||||
import LoadingSpinner from "@/components/ui/LoadingSpinner.vue";
|
||||
|
||||
const props = defineProps<{
|
||||
courseId: string;
|
||||
|
|
|
|||
|
|
@ -1,9 +1,9 @@
|
|||
<script lang="ts" setup>
|
||||
import { useDashboardPersonsDueDates } from "@/composables";
|
||||
import { computed } from "vue";
|
||||
import _ from "lodash";
|
||||
import LoadingSpinner from "@/components/ui/LoadingSpinner.vue";
|
||||
import DueDateSingle from "@/components/dueDates/DueDateSingle.vue";
|
||||
import LoadingSpinner from "@/components/ui/LoadingSpinner.vue";
|
||||
import { useDashboardPersonsDueDates } from "@/composables";
|
||||
import _ from "lodash";
|
||||
import { computed } from "vue";
|
||||
|
||||
const props = withDefaults(
|
||||
defineProps<{
|
||||
|
|
|
|||
|
|
@ -1,8 +1,8 @@
|
|||
<script lang="ts" setup>
|
||||
import { useTranslation } from "i18next-vue";
|
||||
import type { DashboardDueDate } from "@/services/dashboard";
|
||||
import { computed } from "vue";
|
||||
import dayjs from "dayjs";
|
||||
import { useTranslation } from "i18next-vue";
|
||||
import { computed } from "vue";
|
||||
|
||||
const props = defineProps<{
|
||||
dueDate: DashboardDueDate;
|
||||
|
|
|
|||
|
|
@ -1,8 +1,8 @@
|
|||
<script setup lang="ts">
|
||||
import { useTranslation } from "i18next-vue";
|
||||
import { useRouteLookups } from "@/utils/route";
|
||||
import { useCurrentCourseSession } from "@/composables";
|
||||
import { useRouteLookups } from "@/utils/route";
|
||||
import { getCompetenceNaviUrl, getLearningPathUrl } from "@/utils/utils";
|
||||
import { useTranslation } from "i18next-vue";
|
||||
|
||||
const { inCompetenceProfile, inLearningPath } = useRouteLookups();
|
||||
const courseSession = useCurrentCourseSession();
|
||||
|
|
|
|||
|
|
@ -1,20 +1,16 @@
|
|||
<script setup lang="ts">
|
||||
import log from "loglevel";
|
||||
import { getLoginURL } from "@/router/utils";
|
||||
import AccountMenu from "@/components/header/AccountMenu.vue";
|
||||
import CoursePreviewBar from "@/components/header/CoursePreviewBar.vue";
|
||||
import MobileMenu from "@/components/header/MobileMenu.vue";
|
||||
import NotificationPopover from "@/components/notifications/NotificationPopover.vue";
|
||||
import NotificationPopoverContent from "@/components/notifications/NotificationPopoverContent.vue";
|
||||
import ItFullScreenModal from "@/components/ui/ItFullScreenModal.vue";
|
||||
import { useVVByLink } from "@/composables";
|
||||
import { getLoginURL } from "@/router/utils";
|
||||
import { useCourseSessionsStore } from "@/stores/courseSessions";
|
||||
import { useNotificationsStore } from "@/stores/notifications";
|
||||
import { useUserStore } from "@/stores/user";
|
||||
import { useRouteLookups } from "@/utils/route";
|
||||
import { Popover, PopoverButton, PopoverPanel } from "@headlessui/vue";
|
||||
import { breakpointsTailwind, useBreakpoints } from "@vueuse/core";
|
||||
import { computed, onMounted, reactive } from "vue";
|
||||
import { useTranslation } from "i18next-vue";
|
||||
import CoursePreviewBar from "@/components/header/CoursePreviewBar.vue";
|
||||
import {
|
||||
getCockpitUrl,
|
||||
getCompetenceNaviUrl,
|
||||
|
|
@ -23,7 +19,11 @@ import {
|
|||
getMediaCenterUrl,
|
||||
isVVLearningMentor,
|
||||
} from "@/utils/utils";
|
||||
import { useVVByLink } from "@/composables";
|
||||
import { Popover, PopoverButton, PopoverPanel } from "@headlessui/vue";
|
||||
import { breakpointsTailwind, useBreakpoints } from "@vueuse/core";
|
||||
import { useTranslation } from "i18next-vue";
|
||||
import log from "loglevel";
|
||||
import { computed, onMounted, reactive } from "vue";
|
||||
|
||||
log.debug("MainNavigationBar created");
|
||||
|
||||
|
|
|
|||
|
|
@ -1,8 +1,9 @@
|
|||
<script setup lang="ts">
|
||||
import ItFullScreenModal from "@/components/ui/ItFullScreenModal.vue";
|
||||
import { useVVByLink } from "@/composables";
|
||||
import { useCourseSessionsStore } from "@/stores/courseSessions";
|
||||
import type { User } from "@/stores/user";
|
||||
import type { CourseSession } from "@/types";
|
||||
import { useRouter } from "vue-router";
|
||||
import {
|
||||
getCockpitUrl,
|
||||
getCompetenceNaviUrl,
|
||||
|
|
@ -12,8 +13,7 @@ import {
|
|||
isVVLearningMentor,
|
||||
} from "@/utils/utils";
|
||||
import { computed } from "vue";
|
||||
import { useCourseSessionsStore } from "@/stores/courseSessions";
|
||||
import { useVVByLink } from "@/composables";
|
||||
import { useRouter } from "vue-router";
|
||||
|
||||
const router = useRouter();
|
||||
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
<script setup lang="ts">
|
||||
import type { RouteLocationRaw } from "vue-router";
|
||||
import { computed } from "vue";
|
||||
import type { RouteLocationRaw } from "vue-router";
|
||||
|
||||
const props = defineProps<{
|
||||
taskTitle: string;
|
||||
|
|
|
|||
|
|
@ -1,9 +1,9 @@
|
|||
<script setup lang="ts">
|
||||
import { useLearningMentees } from "@/services/learningMentees";
|
||||
import LoadingSpinner from "@/components/ui/LoadingSpinner.vue";
|
||||
import { useCurrentCourseSession } from "@/composables";
|
||||
import { useCSRFFetch } from "@/fetchHelpers";
|
||||
import { useLearningMentees } from "@/services/learningMentees";
|
||||
import { computed } from "vue";
|
||||
import LoadingSpinner from "@/components/ui/LoadingSpinner.vue";
|
||||
|
||||
const courseSession = useCurrentCourseSession();
|
||||
const { isLoading, summary, fetchData } = useLearningMentees(courseSession.value.id);
|
||||
|
|
|
|||
|
|
@ -1,9 +1,9 @@
|
|||
<script setup lang="ts">
|
||||
import { useCurrentCourseSession } from "@/composables";
|
||||
import ItModal from "@/components/ui/ItModal.vue";
|
||||
import { computed, ref } from "vue";
|
||||
import { useCurrentCourseSession } from "@/composables";
|
||||
import { useCSRFFetch } from "@/fetchHelpers";
|
||||
import { useUserStore } from "@/stores/user";
|
||||
import { computed, ref } from "vue";
|
||||
|
||||
const courseSession = useCurrentCourseSession();
|
||||
|
||||
|
|
|
|||
|
|
@ -1,4 +1,6 @@
|
|||
<script setup lang="ts">
|
||||
import LoadingSpinner from "@/components/ui/LoadingSpinner.vue";
|
||||
import { useCourseCircleProgress, useCourseDataWithCompletion } from "@/composables";
|
||||
import LearningPathCircle from "@/pages/learningPath/learningPathPage/LearningPathCircle.vue";
|
||||
import {
|
||||
calculateCircleSectorData,
|
||||
|
|
@ -6,8 +8,6 @@ import {
|
|||
useCourseFilter,
|
||||
} from "@/pages/learningPath/learningPathPage/utils";
|
||||
import { computed } from "vue";
|
||||
import { useCourseCircleProgress, useCourseDataWithCompletion } from "@/composables";
|
||||
import LoadingSpinner from "@/components/ui/LoadingSpinner.vue";
|
||||
|
||||
export type DiagramType = "horizontal" | "horizontalSmall" | "singleSmall";
|
||||
|
||||
|
|
|
|||
|
|
@ -11,12 +11,12 @@ import * as log from "loglevel";
|
|||
import { useCourseDataWithCompletion, useCurrentCourseSession } from "@/composables";
|
||||
import LearningContentContainer from "@/pages/learningPath/learningContentPage/LearningContentContainer.vue";
|
||||
import LearningContentMultiLayout from "@/pages/learningPath/learningContentPage/layouts/LearningContentMultiLayout.vue";
|
||||
import SelfEvaluationRequestFeedbackPage from "@/pages/learningPath/selfEvaluationPage/SelfEvaluationRequestFeedbackPage.vue";
|
||||
import { getPreviousRoute } from "@/router/history";
|
||||
import eventBus from "@/utils/eventBus";
|
||||
import { getCompetenceNaviUrl } from "@/utils/utils";
|
||||
import { useRouteQuery } from "@vueuse/router";
|
||||
import { computed, onUnmounted } from "vue";
|
||||
import { getPreviousRoute } from "@/router/history";
|
||||
import { getCompetenceNaviUrl } from "@/utils/utils";
|
||||
import SelfEvaluationRequestFeedbackPage from "@/pages/learningPath/selfEvaluationPage/SelfEvaluationRequestFeedbackPage.vue";
|
||||
|
||||
log.debug("LearningContent.vue setup");
|
||||
|
||||
|
|
|
|||
|
|
@ -1,17 +1,17 @@
|
|||
<script setup lang="ts">
|
||||
import ItCheckbox from "@/components/ui/ItCheckbox.vue";
|
||||
import { computed, reactive } from "vue";
|
||||
import type { CourseSessionUserObjectsType } from "@/gql/graphql";
|
||||
import dayjs from "dayjs";
|
||||
import DateEmbedding from "@/components/dueDates/DateEmbedding.vue";
|
||||
import ItButton from "@/components/ui/ItButton.vue";
|
||||
import { useMutation } from "@urql/vue";
|
||||
import ItCheckbox from "@/components/ui/ItCheckbox.vue";
|
||||
import { bustItGetCache } from "@/fetchHelpers";
|
||||
import type { CourseSessionUserObjectsType } from "@/gql/graphql";
|
||||
import { UPSERT_ASSIGNMENT_COMPLETION_MUTATION } from "@/graphql/mutations";
|
||||
import { useUserStore } from "@/stores/user";
|
||||
import { bustItGetCache } from "@/fetchHelpers";
|
||||
import eventBus from "@/utils/eventBus";
|
||||
import log from "loglevel";
|
||||
import type { Assignment } from "@/types";
|
||||
import eventBus from "@/utils/eventBus";
|
||||
import { useMutation } from "@urql/vue";
|
||||
import dayjs from "dayjs";
|
||||
import log from "loglevel";
|
||||
import { computed, reactive } from "vue";
|
||||
|
||||
const props = defineProps<{
|
||||
evaluationDocumentUrl: string;
|
||||
|
|
|
|||
|
|
@ -1,20 +1,20 @@
|
|||
<script setup lang="ts">
|
||||
import ItButton from "@/components/ui/ItButton.vue";
|
||||
import ItCheckbox from "@/components/ui/ItCheckbox.vue";
|
||||
import { ref } from "vue";
|
||||
import { bustItGetCache } from "@/fetchHelpers";
|
||||
import { useUserStore } from "@/stores/user";
|
||||
import eventBus from "@/utils/eventBus";
|
||||
import log from "loglevel";
|
||||
import dayjs from "dayjs";
|
||||
import log from "loglevel";
|
||||
import { ref } from "vue";
|
||||
|
||||
import { useMutation } from "@urql/vue";
|
||||
import SampleSolution from "@/components/assignment/SampleSolution.vue";
|
||||
import DateEmbedding from "@/components/dueDates/DateEmbedding.vue";
|
||||
import NoMentorInformationPanel from "@/components/learningMentor/NoMentorInformationPanel.vue";
|
||||
import { useMyLearningMentors } from "@/composables";
|
||||
import { UPSERT_ASSIGNMENT_COMPLETION_MUTATION } from "@/graphql/mutations";
|
||||
import type { Assignment } from "@/types";
|
||||
import DateEmbedding from "@/components/dueDates/DateEmbedding.vue";
|
||||
import { useMyLearningMentors } from "@/composables";
|
||||
import NoMentorInformationPanel from "@/components/learningMentor/NoMentorInformationPanel.vue";
|
||||
import SampleSolution from "@/components/assignment/SampleSolution.vue";
|
||||
import { useMutation } from "@urql/vue";
|
||||
|
||||
const props = defineProps<{
|
||||
submissionDeadlineStart?: string | null;
|
||||
|
|
|
|||
|
|
@ -1,14 +1,14 @@
|
|||
<script setup lang="ts">
|
||||
import ItButton from "@/components/ui/ItButton.vue";
|
||||
import ItCheckbox from "@/components/ui/ItCheckbox.vue";
|
||||
import { ref } from "vue";
|
||||
import { bustItGetCache } from "@/fetchHelpers";
|
||||
import { useUserStore } from "@/stores/user";
|
||||
import eventBus from "@/utils/eventBus";
|
||||
import log from "loglevel";
|
||||
import { useMutation } from "@urql/vue";
|
||||
import { UPSERT_ASSIGNMENT_COMPLETION_MUTATION } from "@/graphql/mutations";
|
||||
import { useUserStore } from "@/stores/user";
|
||||
import type { Assignment } from "@/types";
|
||||
import eventBus from "@/utils/eventBus";
|
||||
import { useMutation } from "@urql/vue";
|
||||
import log from "loglevel";
|
||||
import { ref } from "vue";
|
||||
|
||||
const props = defineProps<{
|
||||
courseSessionId: string;
|
||||
|
|
|
|||
|
|
@ -9,8 +9,8 @@
|
|||
</template>
|
||||
|
||||
<script>
|
||||
import { ref, computed, onMounted } from "vue";
|
||||
import { getLocalSessionKey } from "@/statistics";
|
||||
import { computed, onMounted, ref } from "vue";
|
||||
|
||||
export default {
|
||||
// code needed for Datatrans/Cembra device fingerprinting
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
<script setup lang="ts">
|
||||
import { computed } from "vue";
|
||||
import { useEntities } from "@/services/entities";
|
||||
import { computed } from "vue";
|
||||
|
||||
const props = defineProps<{
|
||||
modelValue: {
|
||||
|
|
|
|||
|
|
@ -1,9 +1,9 @@
|
|||
<script setup lang="ts">
|
||||
import { computed } from "vue";
|
||||
import ItDatePicker from "@/components/ui/ItDatePicker.vue";
|
||||
import { useEntities } from "@/services/entities";
|
||||
import "@vuepic/vue-datepicker/dist/main.css";
|
||||
import { t } from "i18next";
|
||||
import ItDatePicker from "@/components/ui/ItDatePicker.vue";
|
||||
import { computed } from "vue";
|
||||
|
||||
const props = defineProps<{
|
||||
modelValue: {
|
||||
|
|
|
|||
|
|
@ -1,8 +1,8 @@
|
|||
<script setup lang="ts">
|
||||
import ItNavigationProgress from "@/components/ui/ItNavigationProgress.vue";
|
||||
import { isString, startsWith } from "lodash";
|
||||
import { computed } from "vue";
|
||||
import { useRoute } from "vue-router";
|
||||
import { isString, startsWith } from "lodash";
|
||||
|
||||
const route = useRoute();
|
||||
const props = defineProps<{
|
||||
|
|
|
|||
|
|
@ -1,8 +1,8 @@
|
|||
<script setup lang="ts">
|
||||
import { SUPPORT_LOCALES } from "@/i18nextWrapper";
|
||||
import { Menu, MenuButton, MenuItem, MenuItems } from "@headlessui/vue";
|
||||
import type { AvailableLanguages } from "@/stores/user";
|
||||
import { useUserStore } from "@/stores/user";
|
||||
import { Menu, MenuButton, MenuItem, MenuItems } from "@headlessui/vue";
|
||||
|
||||
const props = defineProps<{
|
||||
courseName: string;
|
||||
|
|
|
|||
|
|
@ -1,10 +1,10 @@
|
|||
<script setup lang="ts">
|
||||
import { useEntities } from "@/services/entities";
|
||||
import AvatarImage from "@/components/ui/AvatarImage.vue";
|
||||
import { ref } from "vue";
|
||||
import { type User, useUserStore } from "@/stores/user";
|
||||
import ItDatePicker from "@/components/ui/ItDatePicker.vue";
|
||||
import { useEntities } from "@/services/entities";
|
||||
import { type User, useUserStore } from "@/stores/user";
|
||||
import { normalizeSwissPhoneNumber } from "@/utils/phone";
|
||||
import { ref } from "vue";
|
||||
|
||||
const emit = defineEmits(["cancel", "save"]);
|
||||
|
||||
|
|
|
|||
|
|
@ -1,10 +1,10 @@
|
|||
<script setup lang="ts">
|
||||
import { useUserStore } from "@/stores/user";
|
||||
import { computed } from "vue";
|
||||
import { useEntities } from "@/services/entities";
|
||||
import { useTranslation } from "i18next-vue";
|
||||
import dayjs from "dayjs";
|
||||
import { useUserStore } from "@/stores/user";
|
||||
import { displaySwissPhoneNumber } from "@/utils/phone";
|
||||
import dayjs from "dayjs";
|
||||
import { useTranslation } from "i18next-vue";
|
||||
import { computed } from "vue";
|
||||
|
||||
const { t } = useTranslation();
|
||||
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
<script setup lang="ts">
|
||||
import { computed } from "vue";
|
||||
import type { LearningUnitSummary } from "@/services/selfEvaluationFeedback";
|
||||
import SmileyCell from "@/components/selfEvaluationFeedback/SmileyCell.vue";
|
||||
import type { LearningUnitSummary } from "@/services/selfEvaluationFeedback";
|
||||
import { computed } from "vue";
|
||||
|
||||
const props = defineProps<{
|
||||
summary: LearningUnitSummary;
|
||||
|
|
|
|||
|
|
@ -1,11 +1,11 @@
|
|||
<script setup lang="ts">
|
||||
import { computed } from "vue";
|
||||
import {
|
||||
type FeedbackRequest,
|
||||
getFeedbackEvaluationCaption,
|
||||
getSelfEvaluationCaption,
|
||||
getSmiley,
|
||||
} from "@/services/selfEvaluationFeedback";
|
||||
import { computed } from "vue";
|
||||
|
||||
const props = defineProps<{
|
||||
feedback: FeedbackRequest;
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
<script setup lang="ts">
|
||||
import type { FeedbackRequest } from "@/services/selfEvaluationFeedback";
|
||||
import FeedbackProvided from "@/components/selfEvaluationFeedback/FeedbackProvided.vue";
|
||||
import ItButton from "@/components/ui/ItButton.vue";
|
||||
import type { FeedbackRequest } from "@/services/selfEvaluationFeedback";
|
||||
|
||||
defineProps<{
|
||||
feedback: FeedbackRequest;
|
||||
|
|
|
|||
|
|
@ -1,11 +1,11 @@
|
|||
<script setup lang="ts">
|
||||
import { computed } from "vue";
|
||||
import {
|
||||
type FeedbackRequest,
|
||||
getFeedbackReceivedCaption,
|
||||
getSelfEvaluationCaption,
|
||||
getSmiley,
|
||||
} from "@/services/selfEvaluationFeedback";
|
||||
import { computed } from "vue";
|
||||
|
||||
const props = defineProps<{
|
||||
feedback: FeedbackRequest;
|
||||
|
|
|
|||
|
|
@ -1,10 +1,10 @@
|
|||
<script setup lang="ts">
|
||||
import ItProgress from "@/components/ui/ItProgress.vue";
|
||||
import { useCourseSessionDetailQuery } from "@/composables";
|
||||
import { itGet } from "@/fetchHelpers";
|
||||
import type { CourseSession } from "@/types";
|
||||
import log from "loglevel";
|
||||
import { computed, onMounted, ref } from "vue";
|
||||
import ItProgress from "@/components/ui/ItProgress.vue";
|
||||
import { itGet } from "@/fetchHelpers";
|
||||
import { useCourseSessionDetailQuery } from "@/composables";
|
||||
|
||||
const props = defineProps<{
|
||||
courseSession: CourseSession;
|
||||
|
|
|
|||
|
|
@ -1,11 +1,11 @@
|
|||
<script setup lang="ts">
|
||||
import { useSelfEvaluationFeedbackSummaries } from "@/services/selfEvaluationFeedback";
|
||||
import { useCurrentCourseSession, useEvaluationWithFeedback } from "@/composables";
|
||||
import { computed, ref } from "vue";
|
||||
import FeedbackByLearningUnitSummary from "@/components/selfEvaluationFeedback/FeedbackByLearningUnitSummary.vue";
|
||||
import ItDropdownSelect from "@/components/ui/ItDropdownSelect.vue";
|
||||
import { t } from "i18next";
|
||||
import { useCurrentCourseSession, useEvaluationWithFeedback } from "@/composables";
|
||||
import { useSelfEvaluationFeedbackSummaries } from "@/services/selfEvaluationFeedback";
|
||||
import { useUserStore } from "@/stores/user";
|
||||
import { t } from "i18next";
|
||||
import { computed, ref } from "vue";
|
||||
|
||||
const props = defineProps<{
|
||||
profileUserId: string;
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
<script setup lang="ts">
|
||||
import { computed } from "vue";
|
||||
import { useSelfEvaluationFeedbackSummaries } from "@/services/selfEvaluationFeedback";
|
||||
import { useCurrentCourseSession, useEvaluationWithFeedback } from "@/composables";
|
||||
import { useSelfEvaluationFeedbackSummaries } from "@/services/selfEvaluationFeedback";
|
||||
import { computed } from "vue";
|
||||
|
||||
const emit = defineEmits(["showAll"]);
|
||||
|
||||
|
|
|
|||
|
|
@ -1,10 +1,10 @@
|
|||
<script setup lang="ts">
|
||||
import type { CheckboxItem } from "@/components/ui/checkbox.types";
|
||||
import log from "loglevel";
|
||||
import {
|
||||
itCheckboxDefaultIconCheckedTailwindClass,
|
||||
itCheckboxDefaultIconUncheckedTailwindClass,
|
||||
} from "@/constants";
|
||||
import log from "loglevel";
|
||||
|
||||
interface Props {
|
||||
checkboxItem: CheckboxItem<any>;
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@
|
|||
import { useUserStore } from "@/stores/user";
|
||||
import VueDatePicker from "@vuepic/vue-datepicker";
|
||||
import "@vuepic/vue-datepicker/dist/main.css";
|
||||
import { defineProps, withDefaults, defineModel } from "vue";
|
||||
import { defineModel, defineProps, withDefaults } from "vue";
|
||||
|
||||
const model = defineModel<string>();
|
||||
|
||||
|
|
|
|||
|
|
@ -73,11 +73,11 @@
|
|||
|
||||
<script setup lang="ts">
|
||||
import QuestionSummary from "@/components/ui/QuestionSummary.vue";
|
||||
import { getBlendedColorForRating } from "@/utils/ratingToColor";
|
||||
import { Popover, PopoverButton, PopoverPanel } from "@headlessui/vue";
|
||||
import { computed } from "vue";
|
||||
import { useTranslation } from "i18next-vue";
|
||||
import log from "loglevel";
|
||||
import { getBlendedColorForRating } from "@/utils/ratingToColor";
|
||||
import { computed } from "vue";
|
||||
|
||||
const { t } = useTranslation();
|
||||
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
<script setup lang="ts">
|
||||
import { computed } from "vue";
|
||||
import { setExternalLinksToOpenInNewTab } from "@/utils/dom";
|
||||
import { computed } from "vue";
|
||||
|
||||
const props = withDefaults(
|
||||
defineProps<{
|
||||
|
|
|
|||
|
|
@ -11,9 +11,9 @@ import ItToggleSwitch from "@/components/ui/ItToggleSwitch.vue";
|
|||
import RatingScale from "@/components/ui/RatingScale.vue";
|
||||
import VerticalBarChart from "@/components/ui/VerticalBarChart.vue";
|
||||
import LearningPathCircle from "@/pages/learningPath/learningPathPage/LearningPathCircle.vue";
|
||||
import "@vuepic/vue-datepicker/dist/main.css";
|
||||
import logger from "loglevel";
|
||||
import { reactive, ref } from "vue";
|
||||
import "@vuepic/vue-datepicker/dist/main.css";
|
||||
|
||||
const state = reactive({
|
||||
checkboxValue: true,
|
||||
|
|
|
|||
|
|
@ -1,16 +1,16 @@
|
|||
<script setup lang="ts">
|
||||
import EvaluationContainer from "@/components/assignment/evaluation/EvaluationContainer.vue";
|
||||
import { useCurrentCourseSession } from "@/composables";
|
||||
import { ASSIGNMENT_COMPLETION_QUERY } from "@/graphql/queries";
|
||||
import EvaluationContainer from "@/components/assignment/evaluation/EvaluationContainer.vue";
|
||||
import AssignmentSubmissionResponses from "@/pages/learningPath/learningContentPage/assignment/AssignmentSubmissionResponses.vue";
|
||||
import { getPreviousRoute } from "@/router/history";
|
||||
import type { Assignment, AssignmentCompletion, CourseSessionUser } from "@/types";
|
||||
import { useQuery } from "@urql/vue";
|
||||
import { useTranslation } from "i18next-vue";
|
||||
import log from "loglevel";
|
||||
import { computed, onMounted } from "vue";
|
||||
import { useRouter } from "vue-router";
|
||||
import { getPreviousRoute } from "@/router/history";
|
||||
import { getAssignmentTypeTitle } from "../../utils/utils";
|
||||
import { useTranslation } from "i18next-vue";
|
||||
|
||||
const props = defineProps<{
|
||||
courseSlug: string;
|
||||
|
|
|
|||
|
|
@ -1,9 +1,9 @@
|
|||
<script setup lang="ts">
|
||||
import { useCourseSessionDetailQuery } from "@/composables";
|
||||
import { useExpertCockpitPageData } from "@/pages/cockpit/cockpitPage/composables";
|
||||
import CirclePage from "@/pages/learningPath/circlePage/CirclePage.vue";
|
||||
import * as log from "loglevel";
|
||||
import { computed, onMounted } from "vue";
|
||||
import { useCourseSessionDetailQuery } from "@/composables";
|
||||
import { useExpertCockpitPageData } from "@/pages/cockpit/cockpitPage/composables";
|
||||
|
||||
const props = defineProps<{
|
||||
userId: string;
|
||||
|
|
|
|||
|
|
@ -42,15 +42,15 @@
|
|||
<script setup lang="ts">
|
||||
import { useCurrentCourseSession } from "@/composables";
|
||||
import { itGet } from "@/fetchHelpers";
|
||||
import * as log from "loglevel";
|
||||
import { onMounted, ref } from "vue";
|
||||
import type { FeedbackData, FeedbackType } from "@/types";
|
||||
import FeedbackPageVV from "@/pages/cockpit/FeedbackPageVV.vue";
|
||||
import FeedbackPageUK from "@/pages/cockpit/FeedbackPageUK.vue";
|
||||
import FeedbackPageVV from "@/pages/cockpit/FeedbackPageVV.vue";
|
||||
import { useExpertCockpitPageData } from "@/pages/cockpit/cockpitPage/composables";
|
||||
import { exportFeedback } from "@/services/dashboard";
|
||||
import { useUserStore } from "@/stores/user";
|
||||
import type { FeedbackData, FeedbackType } from "@/types";
|
||||
import { openDataAsXls } from "@/utils/export";
|
||||
import * as log from "loglevel";
|
||||
import { onMounted, ref } from "vue";
|
||||
|
||||
const props = defineProps<{
|
||||
courseSlug: string;
|
||||
|
|
|
|||
|
|
@ -12,8 +12,8 @@
|
|||
<script setup lang="ts">
|
||||
import FeedbackResults from "@/pages/cockpit/FeedbackResults.vue";
|
||||
import type { FeedbackData } from "@/types";
|
||||
import * as log from "loglevel";
|
||||
import { useTranslation } from "i18next-vue";
|
||||
import * as log from "loglevel";
|
||||
|
||||
defineProps<{
|
||||
feedbackData: FeedbackData;
|
||||
|
|
|
|||
|
|
@ -12,8 +12,8 @@
|
|||
<script setup lang="ts">
|
||||
import FeedbackResults from "@/pages/cockpit/FeedbackResults.vue";
|
||||
import type { FeedbackData } from "@/types";
|
||||
import * as log from "loglevel";
|
||||
import { useTranslation } from "i18next-vue";
|
||||
import * as log from "loglevel";
|
||||
|
||||
defineProps<{
|
||||
feedbackData: FeedbackData;
|
||||
|
|
|
|||
|
|
@ -1,6 +1,8 @@
|
|||
<script setup lang="ts">
|
||||
import AssignmentSubmissionProgress from "@/components/assignment/AssignmentSubmissionProgress.vue";
|
||||
import ItPersonRow from "@/components/ui/ItPersonRow.vue";
|
||||
import type { StatusCount } from "@/components/ui/ItProgress.vue";
|
||||
import { useCourseSessionDetailQuery } from "@/composables";
|
||||
import type { GradedUser } from "@/services/assignmentService";
|
||||
import { loadAssignmentCompletionStatusData } from "@/services/assignmentService";
|
||||
import type {
|
||||
|
|
@ -9,13 +11,11 @@ import type {
|
|||
LearningContentAssignment,
|
||||
LearningContentEdoniqTest,
|
||||
} from "@/types";
|
||||
import log from "loglevel";
|
||||
import { computed, onMounted, reactive } from "vue";
|
||||
import AssignmentSubmissionProgress from "@/components/assignment/AssignmentSubmissionProgress.vue";
|
||||
import { useCourseSessionDetailQuery } from "@/composables";
|
||||
import { formatDueDate } from "../../../components/dueDates/dueDatesUtils";
|
||||
import { stringifyParse } from "@/utils/utils";
|
||||
import { useTranslation } from "i18next-vue";
|
||||
import log from "loglevel";
|
||||
import { computed, onMounted, reactive } from "vue";
|
||||
import { formatDueDate } from "../../../components/dueDates/dueDatesUtils";
|
||||
|
||||
const { t } = useTranslation();
|
||||
|
||||
|
|
|
|||
|
|
@ -1,11 +1,11 @@
|
|||
<script setup lang="ts">
|
||||
import { useCourseData, useCurrentCourseSession } from "@/composables";
|
||||
import AssignmentDetails from "@/pages/cockpit/assignmentsPage/AssignmentDetails.vue";
|
||||
import * as log from "loglevel";
|
||||
import { computed, onMounted } from "vue";
|
||||
import type { LearningContentAssignment, LearningContentEdoniqTest } from "@/types";
|
||||
import { useExpertCockpitPageData } from "@/pages/cockpit/cockpitPage/composables";
|
||||
import { getPreviousRoute } from "@/router/history";
|
||||
import type { LearningContentAssignment, LearningContentEdoniqTest } from "@/types";
|
||||
import * as log from "loglevel";
|
||||
import { computed, onMounted } from "vue";
|
||||
|
||||
const props = defineProps<{
|
||||
courseSlug: string;
|
||||
|
|
|
|||
|
|
@ -4,18 +4,18 @@ import ItDropdownSelect from "@/components/ui/ItDropdownSelect.vue";
|
|||
import ItPersonRow from "@/components/ui/ItPersonRow.vue";
|
||||
import { useCourseSessionDetailQuery, useCurrentCourseSession } from "@/composables";
|
||||
import type { AttendanceUserStatus } from "@/gql/graphql";
|
||||
import { graphqlClient } from "@/graphql/client";
|
||||
import { ATTENDANCE_CHECK_MUTATION } from "@/graphql/mutations";
|
||||
import { ATTENDANCE_CHECK_QUERY } from "@/graphql/queries";
|
||||
import { exportAttendance } from "@/services/dashboard";
|
||||
import { useUserStore } from "@/stores/user";
|
||||
import type { DropdownSelectable } from "@/types";
|
||||
import { openDataAsXls } from "@/utils/export";
|
||||
import { useMutation } from "@urql/vue";
|
||||
import dayjs from "dayjs";
|
||||
import { useTranslation } from "i18next-vue";
|
||||
import log from "loglevel";
|
||||
import { computed, onMounted, reactive, watch } from "vue";
|
||||
import { useTranslation } from "i18next-vue";
|
||||
import { ATTENDANCE_CHECK_QUERY } from "@/graphql/queries";
|
||||
import { graphqlClient } from "@/graphql/client";
|
||||
import { exportAttendance } from "@/services/dashboard";
|
||||
import { openDataAsXls } from "@/utils/export";
|
||||
import { useUserStore } from "@/stores/user";
|
||||
|
||||
const { t } = useTranslation();
|
||||
const attendanceMutation = useMutation(ATTENDANCE_CHECK_MUTATION);
|
||||
|
|
|
|||
|
|
@ -2,14 +2,14 @@
|
|||
import LearningPathDiagram from "@/components/learningPath/LearningPathDiagram.vue";
|
||||
import ItPersonRow from "@/components/ui/ItPersonRow.vue";
|
||||
|
||||
import { useCourseSessionDetailQuery, useCurrentCourseSession } from "@/composables";
|
||||
import SubmissionsOverview from "@/components/cockpit/SubmissionsOverview.vue";
|
||||
import UserStatusCount from "@/components/cockpit/UserStatusCount.vue";
|
||||
import CourseSessionDueDatesList from "@/components/dueDates/CourseSessionDueDatesList.vue";
|
||||
import ItDropdownSelect from "@/components/ui/ItDropdownSelect.vue";
|
||||
import { useCourseSessionDetailQuery, useCurrentCourseSession } from "@/composables";
|
||||
import { useExpertCockpitPageData } from "@/pages/cockpit/cockpitPage/composables";
|
||||
import { useExpertCockpitStore } from "@/stores/expertCockpit";
|
||||
import log from "loglevel";
|
||||
import ItDropdownSelect from "@/components/ui/ItDropdownSelect.vue";
|
||||
import UserStatusCount from "@/components/cockpit/UserStatusCount.vue";
|
||||
import { useExpertCockpitPageData } from "@/pages/cockpit/cockpitPage/composables";
|
||||
import CourseSessionDueDatesList from "@/components/dueDates/CourseSessionDueDatesList.vue";
|
||||
|
||||
const props = defineProps<{
|
||||
courseSlug: string;
|
||||
|
|
|
|||
|
|
@ -1,22 +1,22 @@
|
|||
<script setup lang="ts">
|
||||
import { useCourseData, useCurrentCourseSession } from "@/composables";
|
||||
import DocumentListItem from "@/components/circle/DocumentListItem.vue";
|
||||
import ItDropdownSelect from "@/components/ui/ItDropdownSelect.vue";
|
||||
import { useExpertCockpitStore } from "@/stores/expertCockpit";
|
||||
import ItModal from "@/components/ui/ItModal.vue";
|
||||
import { useCourseData, useCurrentCourseSession } from "@/composables";
|
||||
import { useExpertCockpitPageData } from "@/pages/cockpit/cockpitPage/composables";
|
||||
import DocumentUploadForm from "@/pages/cockpit/documentPage/DocumentUploadForm.vue";
|
||||
import { computed, onMounted, ref, watch } from "vue";
|
||||
import { useTranslation } from "i18next-vue";
|
||||
import type { CircleDocument, DocumentUploadData } from "@/types";
|
||||
import dialog from "@/utils/confirm-dialog";
|
||||
import log from "loglevel";
|
||||
import {
|
||||
deleteCircleDocument,
|
||||
fetchCourseSessionDocuments,
|
||||
uploadCircleDocument,
|
||||
} from "@/services/files";
|
||||
import { useCourseSessionsStore } from "@/stores/courseSessions";
|
||||
import DocumentListItem from "@/components/circle/DocumentListItem.vue";
|
||||
import { useExpertCockpitPageData } from "@/pages/cockpit/cockpitPage/composables";
|
||||
import { useExpertCockpitStore } from "@/stores/expertCockpit";
|
||||
import type { CircleDocument, DocumentUploadData } from "@/types";
|
||||
import dialog from "@/utils/confirm-dialog";
|
||||
import { useTranslation } from "i18next-vue";
|
||||
import log from "loglevel";
|
||||
import { computed, onMounted, ref, watch } from "vue";
|
||||
|
||||
const cockpitStore = useExpertCockpitStore();
|
||||
const courseSession = useCurrentCourseSession();
|
||||
|
|
|
|||
|
|
@ -1,8 +1,8 @@
|
|||
<script setup lang="ts">
|
||||
import ItDropdownSelect from "@/components/ui/ItDropdownSelect.vue";
|
||||
import type { DocumentUploadData, DropdownSelectable } from "@/types";
|
||||
import { reactive } from "vue";
|
||||
import { useTranslation } from "i18next-vue";
|
||||
import { reactive } from "vue";
|
||||
|
||||
export interface Props {
|
||||
learningSequences?: DropdownSelectable[];
|
||||
|
|
|
|||
|
|
@ -1,9 +1,9 @@
|
|||
<script setup lang="ts">
|
||||
import ItToggleArrow from "@/components/ui/ItToggleArrow.vue";
|
||||
import log from "loglevel";
|
||||
import { ref, watch } from "vue";
|
||||
import SinglePerformanceCriteriaRow from "@/pages/competence/SinglePerformanceCriteriaRow.vue";
|
||||
import type { ActionCompetence } from "@/types";
|
||||
import log from "loglevel";
|
||||
import { ref, watch } from "vue";
|
||||
|
||||
interface Props {
|
||||
competence: ActionCompetence;
|
||||
|
|
|
|||
|
|
@ -1,8 +1,8 @@
|
|||
<script setup lang="ts">
|
||||
import { useCourseDataWithCompletion } from "@/composables";
|
||||
import CompetenceDetail from "@/pages/competence/ActionCompetenceDetail.vue";
|
||||
import * as log from "loglevel";
|
||||
import { ref } from "vue";
|
||||
import { useCourseDataWithCompletion } from "@/composables";
|
||||
|
||||
log.debug("CompetenceListPage created");
|
||||
|
||||
|
|
|
|||
|
|
@ -1,15 +1,15 @@
|
|||
<script setup lang="ts">
|
||||
import * as log from "loglevel";
|
||||
import type { CompetenceCertificate } from "@/types";
|
||||
import CompetenceAssignmentRow from "@/pages/competence/CompetenceAssignmentRow.vue";
|
||||
import { computed } from "vue";
|
||||
import ItProgress from "@/components/ui/ItProgress.vue";
|
||||
import { useCurrentCourseSession } from "@/composables";
|
||||
import CompetenceAssignmentRow from "@/pages/competence/CompetenceAssignmentRow.vue";
|
||||
import {
|
||||
assignmentsUserPoints,
|
||||
calcCompetenceCertificateGrade,
|
||||
competenceCertificateProgressStatusCount,
|
||||
} from "@/pages/competence/utils";
|
||||
import { useCurrentCourseSession } from "@/composables";
|
||||
import type { CompetenceCertificate } from "@/types";
|
||||
import * as log from "loglevel";
|
||||
import { computed } from "vue";
|
||||
|
||||
log.debug("CompetenceCertificateComponent setup");
|
||||
|
||||
|
|
|
|||
|
|
@ -1,10 +1,10 @@
|
|||
<script setup lang="ts">
|
||||
import { useAllCompetenceCertificates } from "@/composables";
|
||||
import CompetenceCertificateComponent from "@/pages/competence/CompetenceCertificateComponent.vue";
|
||||
import { getPreviousRoute } from "@/router/history";
|
||||
import { useUserStore } from "@/stores/user";
|
||||
import log from "loglevel";
|
||||
import { computed } from "vue";
|
||||
import { useAllCompetenceCertificates } from "@/composables";
|
||||
import { getPreviousRoute } from "@/router/history";
|
||||
import CompetenceCertificateComponent from "@/pages/competence/CompetenceCertificateComponent.vue";
|
||||
import { useUserStore } from "@/stores/user";
|
||||
|
||||
const props = defineProps<{
|
||||
courseSlug: string;
|
||||
|
|
|
|||
|
|
@ -1,14 +1,14 @@
|
|||
<script setup lang="ts">
|
||||
import log from "loglevel";
|
||||
import { computed, onMounted } from "vue";
|
||||
import { useAllCompetenceCertificates } from "@/composables";
|
||||
import CompetenceCertificateComponent from "@/pages/competence/CompetenceCertificateComponent.vue";
|
||||
import {
|
||||
assignmentsUserPoints,
|
||||
calcCompetencesTotalGrade,
|
||||
} from "@/pages/competence/utils";
|
||||
import { useRoute } from "vue-router";
|
||||
import { useUserStore } from "@/stores/user";
|
||||
import log from "loglevel";
|
||||
import { computed, onMounted } from "vue";
|
||||
import { useRoute } from "vue-router";
|
||||
|
||||
const props = defineProps<{
|
||||
courseSlug: string;
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
<script setup lang="ts">
|
||||
import log from "loglevel";
|
||||
import { computed } from "vue";
|
||||
import SelfEvaluationAndFeedbackOverview from "@/components/selfEvaluationFeedback/SelfEvaluationAndFeedbackOverview.vue";
|
||||
import ItProgress from "@/components/ui/ItProgress.vue";
|
||||
import { useAllCompetenceCertificates, useCurrentCourseSession } from "@/composables";
|
||||
import {
|
||||
assignmentsUserPoints,
|
||||
|
|
@ -8,9 +8,9 @@ import {
|
|||
calcCompetencesTotalGrade,
|
||||
competenceCertificateProgressStatusCount,
|
||||
} from "@/pages/competence/utils";
|
||||
import ItProgress from "@/components/ui/ItProgress.vue";
|
||||
import SelfEvaluationAndFeedbackOverview from "@/components/selfEvaluationFeedback/SelfEvaluationAndFeedbackOverview.vue";
|
||||
import { useUserStore } from "@/stores/user";
|
||||
import log from "loglevel";
|
||||
import { computed } from "vue";
|
||||
import { useRouter } from "vue-router";
|
||||
|
||||
const props = defineProps<{
|
||||
|
|
|
|||
|
|
@ -1,8 +1,8 @@
|
|||
<script setup lang="ts">
|
||||
import { useCurrentCourseSession, useEvaluationWithFeedback } from "@/composables";
|
||||
import * as log from "loglevel";
|
||||
import { onMounted } from "vue";
|
||||
import { useRoute } from "vue-router";
|
||||
import { useCurrentCourseSession, useEvaluationWithFeedback } from "@/composables";
|
||||
|
||||
log.debug("CompetenceParentPage created");
|
||||
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
<script setup lang="ts">
|
||||
import { useUserStore } from "@/stores/user";
|
||||
import SelfEvaluationAndFeedbackList from "@/components/selfEvaluationFeedback/SelfEvaluationAndFeedbackList.vue";
|
||||
import { useUserStore } from "@/stores/user";
|
||||
|
||||
const userId = useUserStore().id;
|
||||
</script>
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
<script setup lang="ts">
|
||||
import { getCockpitUrl } from "@/utils/utils";
|
||||
import { useDashboardStore } from "@/stores/dashboard";
|
||||
import { getCockpitUrl } from "@/utils/utils";
|
||||
|
||||
const dashboardStore = useDashboardStore();
|
||||
</script>
|
||||
|
|
|
|||
|
|
@ -1,10 +1,10 @@
|
|||
<script setup lang="ts">
|
||||
import LoadingSpinner from "@/components/ui/LoadingSpinner.vue";
|
||||
import log from "loglevel";
|
||||
import { useDashboardPersonsDueDates } from "@/composables";
|
||||
import { computed } from "vue";
|
||||
import _ from "lodash";
|
||||
import DueDateSingle from "@/components/dueDates/DueDateSingle.vue";
|
||||
import LoadingSpinner from "@/components/ui/LoadingSpinner.vue";
|
||||
import { useDashboardPersonsDueDates } from "@/composables";
|
||||
import _ from "lodash";
|
||||
import log from "loglevel";
|
||||
import { computed } from "vue";
|
||||
|
||||
log.debug("DashboardAsideWidget created");
|
||||
|
||||
|
|
|
|||
|
|
@ -1,14 +1,14 @@
|
|||
<script setup lang="ts">
|
||||
import LoadingSpinner from "@/components/ui/LoadingSpinner.vue";
|
||||
import log from "loglevel";
|
||||
import { useDashboardPersonsDueDates } from "@/composables";
|
||||
import DueDateSingle from "@/components/dueDates/DueDateSingle.vue";
|
||||
import ItDropdownSelect from "@/components/ui/ItDropdownSelect.vue";
|
||||
import { computed, ref, watch } from "vue";
|
||||
import LoadingSpinner from "@/components/ui/LoadingSpinner.vue";
|
||||
import { useDashboardPersonsDueDates } from "@/composables";
|
||||
import { getPreviousRoute } from "@/router/history";
|
||||
import { useRouteQuery } from "@vueuse/router";
|
||||
import { useTranslation } from "i18next-vue";
|
||||
import _ from "lodash";
|
||||
import { useRouteQuery } from "@vueuse/router";
|
||||
import DueDateSingle from "@/components/dueDates/DueDateSingle.vue";
|
||||
import { getPreviousRoute } from "@/router/history";
|
||||
import log from "loglevel";
|
||||
import { computed, ref, watch } from "vue";
|
||||
|
||||
log.debug("DashboardPersonsPage created");
|
||||
|
||||
|
|
|
|||
|
|
@ -1,11 +1,11 @@
|
|||
<script setup lang="ts">
|
||||
import { onMounted } from "vue";
|
||||
import { useDashboardStore } from "@/stores/dashboard";
|
||||
import type { DashboardCourseConfigType } from "@/services/dashboard";
|
||||
import LoadingSpinner from "@/components/ui/LoadingSpinner.vue";
|
||||
import NoCourseSession from "@/components/dashboard/NoCourseSession.vue";
|
||||
import CoursePanel from "@/components/dashboard/CoursePanel.vue";
|
||||
import NoCourseSession from "@/components/dashboard/NoCourseSession.vue";
|
||||
import LoadingSpinner from "@/components/ui/LoadingSpinner.vue";
|
||||
import DashboardAsideWidget from "@/pages/dashboard/DashboardAsideWidget.vue";
|
||||
import type { DashboardCourseConfigType } from "@/services/dashboard";
|
||||
import { useDashboardStore } from "@/stores/dashboard";
|
||||
import { onMounted } from "vue";
|
||||
|
||||
const dashboardStore = useDashboardStore();
|
||||
|
||||
|
|
|
|||
|
|
@ -1,19 +1,19 @@
|
|||
<script setup lang="ts">
|
||||
import LoadingSpinner from "@/components/ui/LoadingSpinner.vue";
|
||||
import log from "loglevel";
|
||||
import { useDashboardPersonsDueDates } from "@/composables";
|
||||
import ItDropdownSelect from "@/components/ui/ItDropdownSelect.vue";
|
||||
import { computed, ref, watch } from "vue";
|
||||
import { useTranslation } from "i18next-vue";
|
||||
import _ from "lodash";
|
||||
import LoadingSpinner from "@/components/ui/LoadingSpinner.vue";
|
||||
import { useDashboardPersonsDueDates } from "@/composables";
|
||||
import {
|
||||
type DashboardPersonCourseSessionType,
|
||||
exportPersons,
|
||||
} from "@/services/dashboard";
|
||||
import { useRouteQuery } from "@vueuse/router";
|
||||
import type { DashboardPersonsPageMode, StatisticsFilterItem } from "@/types";
|
||||
import { useUserStore } from "@/stores/user";
|
||||
import type { DashboardPersonsPageMode, StatisticsFilterItem } from "@/types";
|
||||
import { exportDataAsXls } from "@/utils/export";
|
||||
import { useRouteQuery } from "@vueuse/router";
|
||||
import { useTranslation } from "i18next-vue";
|
||||
import _ from "lodash";
|
||||
import log from "loglevel";
|
||||
import { computed, ref, watch } from "vue";
|
||||
|
||||
log.debug("DashboardPersonsPage created");
|
||||
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
<script setup lang="ts">
|
||||
import { getLearningMentorUrl } from "@/utils/utils";
|
||||
import { useDashboardStore } from "@/stores/dashboard";
|
||||
import { getLearningMentorUrl } from "@/utils/utils";
|
||||
|
||||
const dashboardStore = useDashboardStore();
|
||||
</script>
|
||||
|
|
|
|||
|
|
@ -1,15 +1,15 @@
|
|||
<script setup lang="ts">
|
||||
import { useDashboardStore } from "@/stores/dashboard";
|
||||
import { computed } from "vue";
|
||||
import AssignmentProgressSummaryBox from "@/components/dashboard/AssignmentProgressSummaryBox.vue";
|
||||
import CompetenceSummaryBox from "@/components/dashboard/CompetenceSummaryBox.vue";
|
||||
import LearningPathDiagram from "@/components/learningPath/LearningPathDiagram.vue";
|
||||
import { getLearningPathUrl } from "@/utils/utils";
|
||||
import type {
|
||||
CourseProgressType,
|
||||
ProgressDashboardAssignmentType,
|
||||
ProgressDashboardCompetenceType,
|
||||
} from "@/gql/graphql";
|
||||
import CompetenceSummaryBox from "@/components/dashboard/CompetenceSummaryBox.vue";
|
||||
import AssignmentProgressSummaryBox from "@/components/dashboard/AssignmentProgressSummaryBox.vue";
|
||||
import { useDashboardStore } from "@/stores/dashboard";
|
||||
import { getLearningPathUrl } from "@/utils/utils";
|
||||
import { computed } from "vue";
|
||||
|
||||
const dashboardStore = useDashboardStore();
|
||||
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
<script setup lang="ts">
|
||||
import { getCockpitUrl } from "@/utils/utils";
|
||||
import { useDashboardStore } from "@/stores/dashboard";
|
||||
import { getCockpitUrl } from "@/utils/utils";
|
||||
|
||||
const dashboardStore = useDashboardStore();
|
||||
</script>
|
||||
|
|
|
|||
|
|
@ -1,10 +1,10 @@
|
|||
<script setup lang="ts">
|
||||
import { useCourseData, useCurrentCourseSession } from "@/composables";
|
||||
import AssignmentDetails from "@/pages/cockpit/assignmentsPage/AssignmentDetails.vue";
|
||||
import { useExpertCockpitPageData } from "@/pages/cockpit/cockpitPage/composables";
|
||||
import type { LearningContentAssignment, LearningContentEdoniqTest } from "@/types";
|
||||
import * as log from "loglevel";
|
||||
import { computed } from "vue";
|
||||
import type { LearningContentAssignment, LearningContentEdoniqTest } from "@/types";
|
||||
import { useExpertCockpitPageData } from "@/pages/cockpit/cockpitPage/composables";
|
||||
|
||||
const props = defineProps<{
|
||||
courseSlug: string;
|
||||
|
|
|
|||
|
|
@ -1,9 +1,9 @@
|
|||
<script setup lang="ts">
|
||||
import { useCurrentCourseSession } from "@/composables";
|
||||
import AgentAssignmentDetail from "@/pages/dashboard/agentAssignment/AgentAssignmentDetail.vue";
|
||||
import { fetchDashboardPersons } from "@/services/dashboard";
|
||||
import * as log from "loglevel";
|
||||
import { onMounted, ref } from "vue";
|
||||
import { fetchDashboardPersons } from "@/services/dashboard";
|
||||
import AgentAssignmentDetail from "@/pages/dashboard/agentAssignment/AgentAssignmentDetail.vue";
|
||||
|
||||
const props = defineProps<{
|
||||
courseSlug: string;
|
||||
|
|
|
|||
|
|
@ -1,14 +1,14 @@
|
|||
<script setup lang="ts">
|
||||
import log from "loglevel";
|
||||
import { onMounted, ref } from "vue";
|
||||
import LoadingSpinner from "@/components/ui/LoadingSpinner.vue";
|
||||
import type { BaseStatisticsType } from "@/gql/graphql";
|
||||
import AssignmentList from "@/pages/dashboard/statistic/AssignmentList.vue";
|
||||
import {
|
||||
courseIdForCourseSlug,
|
||||
fetchMentorCompetenceSummary,
|
||||
} from "@/services/dashboard";
|
||||
import type { BaseStatisticsType } from "@/gql/graphql";
|
||||
import { useDashboardStore } from "@/stores/dashboard";
|
||||
import LoadingSpinner from "@/components/ui/LoadingSpinner.vue";
|
||||
import AssignmentList from "@/pages/dashboard/statistic/AssignmentList.vue";
|
||||
import log from "loglevel";
|
||||
import { onMounted, ref } from "vue";
|
||||
|
||||
const dashboardStore = useDashboardStore();
|
||||
|
||||
|
|
|
|||
|
|
@ -1,15 +1,15 @@
|
|||
<script setup lang="ts">
|
||||
import LoadingSpinner from "@/components/ui/LoadingSpinner.vue";
|
||||
import type { CompetenceCertificateObjectType } from "@/gql/graphql";
|
||||
import { graphqlClient } from "@/graphql/client";
|
||||
import { COMPETENCE_NAVI_CERTIFICATE_QUERY } from "@/graphql/queries";
|
||||
import { calcCompetenceCertificateGrade } from "@/pages/competence/utils";
|
||||
import { percentToRoundedGrade } from "@/services/assignmentService";
|
||||
import { type DashboardPersonType, fetchDashboardPersons } from "@/services/dashboard";
|
||||
import type { CompetenceCertificateAssignment } from "@/types";
|
||||
import _ from "lodash";
|
||||
import log from "loglevel";
|
||||
import { computed, onMounted, ref } from "vue";
|
||||
import { type DashboardPersonType, fetchDashboardPersons } from "@/services/dashboard";
|
||||
import LoadingSpinner from "@/components/ui/LoadingSpinner.vue";
|
||||
import { COMPETENCE_NAVI_CERTIFICATE_QUERY } from "@/graphql/queries";
|
||||
import { graphqlClient } from "@/graphql/client";
|
||||
import type { CompetenceCertificateObjectType } from "@/gql/graphql";
|
||||
import { calcCompetenceCertificateGrade } from "@/pages/competence/utils";
|
||||
import _ from "lodash";
|
||||
import type { CompetenceCertificateAssignment } from "@/types";
|
||||
import { percentToRoundedGrade } from "@/services/assignmentService";
|
||||
|
||||
const props = defineProps<{
|
||||
agentRole: string;
|
||||
|
|
|
|||
|
|
@ -1,17 +1,17 @@
|
|||
<script setup lang="ts">
|
||||
import log from "loglevel";
|
||||
import { computed, onMounted, type Ref, ref } from "vue";
|
||||
import StatisticFilterList from "@/components/dashboard/StatisticFilterList.vue";
|
||||
import LoadingSpinner from "@/components/ui/LoadingSpinner.vue";
|
||||
import type { AssignmentStatisticsRecordType, BaseStatisticsType } from "@/gql/graphql";
|
||||
import { percentToRoundedGrade } from "@/services/assignmentService";
|
||||
import {
|
||||
courseIdForCourseSlug,
|
||||
fetchMentorCompetenceSummary,
|
||||
} from "@/services/dashboard";
|
||||
import type { AssignmentStatisticsRecordType, BaseStatisticsType } from "@/gql/graphql";
|
||||
import { useDashboardStore } from "@/stores/dashboard";
|
||||
import LoadingSpinner from "@/components/ui/LoadingSpinner.vue";
|
||||
import _ from "lodash";
|
||||
import { percentToRoundedGrade } from "@/services/assignmentService";
|
||||
import StatisticFilterList from "@/components/dashboard/StatisticFilterList.vue";
|
||||
import type { StatisticsFilterItem } from "@/types";
|
||||
import _ from "lodash";
|
||||
import log from "loglevel";
|
||||
import { computed, onMounted, type Ref, ref } from "vue";
|
||||
|
||||
const dashboardStore = useDashboardStore();
|
||||
|
||||
|
|
|
|||
|
|
@ -1,18 +1,18 @@
|
|||
<script setup lang="ts">
|
||||
import StatisticFilterList from "@/components/dashboard/StatisticFilterList.vue";
|
||||
import { getDateString } from "@/components/dueDates/dueDatesUtils";
|
||||
import ItProgress from "@/components/ui/ItProgress.vue";
|
||||
import type {
|
||||
AssignmentCompletionMetricsType,
|
||||
AssignmentStatisticsRecordType,
|
||||
BaseStatisticsType,
|
||||
StatisticsCircleDataType,
|
||||
} from "@/gql/graphql";
|
||||
import StatisticFilterList from "@/components/dashboard/StatisticFilterList.vue";
|
||||
import { getDateString } from "@/components/dueDates/dueDatesUtils";
|
||||
import dayjs from "dayjs";
|
||||
import ItProgress from "@/components/ui/ItProgress.vue";
|
||||
import { type Ref, ref } from "vue";
|
||||
import { exportDataAsXls } from "@/utils/export";
|
||||
import { exportCompetenceElements } from "@/services/dashboard";
|
||||
import { useUserStore } from "@/stores/user";
|
||||
import { exportDataAsXls } from "@/utils/export";
|
||||
import dayjs from "dayjs";
|
||||
import { type Ref, ref } from "vue";
|
||||
|
||||
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
||||
const props = defineProps<{
|
||||
|
|
|
|||
|
|
@ -1,17 +1,17 @@
|
|||
<script setup lang="ts">
|
||||
import StatisticFilterList from "@/components/dashboard/StatisticFilterList.vue";
|
||||
import { getDateString } from "@/components/dueDates/dueDatesUtils";
|
||||
import ItProgress from "@/components/ui/ItProgress.vue";
|
||||
import type {
|
||||
CourseStatisticsType,
|
||||
PresenceRecordStatisticsType,
|
||||
StatisticsCircleDataType,
|
||||
} from "@/gql/graphql";
|
||||
import StatisticFilterList from "@/components/dashboard/StatisticFilterList.vue";
|
||||
import ItProgress from "@/components/ui/ItProgress.vue";
|
||||
import { getDateString } from "@/components/dueDates/dueDatesUtils";
|
||||
import dayjs from "dayjs";
|
||||
import { ref, type Ref } from "vue";
|
||||
import { exportDataAsXls } from "@/utils/export";
|
||||
import { exportAttendance } from "@/services/dashboard";
|
||||
import { useUserStore } from "@/stores/user";
|
||||
import { exportDataAsXls } from "@/utils/export";
|
||||
import dayjs from "dayjs";
|
||||
import { ref, type Ref } from "vue";
|
||||
|
||||
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
||||
const props = defineProps<{
|
||||
|
|
|
|||
|
|
@ -1,10 +1,10 @@
|
|||
<script setup lang="ts">
|
||||
import StatisticFilterList from "@/components/dashboard/StatisticFilterList.vue";
|
||||
import type {
|
||||
CompetenceRecordStatisticsType,
|
||||
CourseStatisticsType,
|
||||
StatisticsCircleDataType,
|
||||
} from "@/gql/graphql";
|
||||
import StatisticFilterList from "@/components/dashboard/StatisticFilterList.vue";
|
||||
|
||||
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
||||
const props = defineProps<{
|
||||
|
|
|
|||
|
|
@ -1,16 +1,16 @@
|
|||
<script setup lang="ts">
|
||||
import StatisticFilterList from "@/components/dashboard/StatisticFilterList.vue";
|
||||
import type {
|
||||
CourseStatisticsType,
|
||||
FeedbackStatisticsRecordType,
|
||||
PresenceRecordStatisticsType,
|
||||
StatisticsCircleDataType,
|
||||
} from "@/gql/graphql";
|
||||
import StatisticFilterList from "@/components/dashboard/StatisticFilterList.vue";
|
||||
import { getBlendedColorForRating } from "@/utils/ratingToColor";
|
||||
import { ref, type Ref } from "vue";
|
||||
import { exportDataAsXls } from "@/utils/export";
|
||||
import { exportFeedback } from "@/services/dashboard";
|
||||
import { useUserStore } from "@/stores/user";
|
||||
import { exportDataAsXls } from "@/utils/export";
|
||||
import { getBlendedColorForRating } from "@/utils/ratingToColor";
|
||||
import { ref, type Ref } from "vue";
|
||||
|
||||
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
||||
const props = defineProps<{
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
<script setup lang="ts">
|
||||
import { useRoute, useRouter } from "vue-router";
|
||||
import { useCurrentCourseSession } from "@/composables";
|
||||
import { onMounted } from "vue";
|
||||
import { useRoute, useRouter } from "vue-router";
|
||||
|
||||
const route = useRoute();
|
||||
const router = useRouter();
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
<script setup lang="ts">
|
||||
import ItDropdownSelect from "@/components/ui/ItDropdownSelect.vue";
|
||||
import PraxisAssignmentItem from "@/components/learningMentor/PraxisAssignmentItem.vue";
|
||||
import SelfAssignmentFeedbackAssignmentItem from "@/components/learningMentor/SelfAssignmentFeedbackAssignmentItem.vue";
|
||||
import ItDropdownSelect from "@/components/ui/ItDropdownSelect.vue";
|
||||
import { useAssignmentTodoListStore } from "@/stores/learningMentor/assignmentTodoList";
|
||||
|
||||
const assignmentTodoListStore = useAssignmentTodoListStore();
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
<script setup lang="ts">
|
||||
import { useCurrentCourseSession } from "@/composables";
|
||||
import MyMentors from "@/components/learningMentor/MyMentors.vue";
|
||||
import MyMentees from "@/components/learningMentor/MyMentees.vue";
|
||||
import MyMentors from "@/components/learningMentor/MyMentors.vue";
|
||||
import { useCurrentCourseSession } from "@/composables";
|
||||
import { computed } from "vue";
|
||||
|
||||
const courseSession = useCurrentCourseSession();
|
||||
|
|
|
|||
|
|
@ -1,9 +1,9 @@
|
|||
<script setup lang="ts">
|
||||
import { useCurrentCourseSession } from "@/composables";
|
||||
import type { Assignment, UserShort } from "@/services/learningMentees";
|
||||
import { useLearningMentees } from "@/services/learningMentees";
|
||||
import { computed, onMounted, type Ref } from "vue";
|
||||
import { useCurrentCourseSession } from "@/composables";
|
||||
import log from "loglevel";
|
||||
import { computed, onMounted, type Ref } from "vue";
|
||||
|
||||
const props = defineProps<{
|
||||
praxisAssignmentId: string;
|
||||
|
|
|
|||
|
|
@ -1,8 +1,8 @@
|
|||
<script setup lang="ts">
|
||||
import { useCurrentCourseSession } from "@/composables";
|
||||
import type { Assignment, UserShort } from "@/services/learningMentees";
|
||||
import { useLearningMentees } from "@/services/learningMentees";
|
||||
import { computed, type Ref } from "vue";
|
||||
import { useCurrentCourseSession } from "@/composables";
|
||||
|
||||
const props = defineProps<{
|
||||
learningUnitId: string;
|
||||
|
|
|
|||
|
|
@ -1,16 +1,16 @@
|
|||
<script setup lang="ts">
|
||||
import FeedbackProviderRankCriteria from "@/components/selfEvaluationFeedback/FeedbackProviderRankCriteria.vue";
|
||||
import FeedbackProviderReleaseOverview from "@/components/selfEvaluationFeedback/FeedbackProviderReleaseOverview.vue";
|
||||
import LearningContentMultiLayout from "@/pages/learningPath/learningContentPage/layouts/LearningContentMultiLayout.vue";
|
||||
import LearningContentContainer from "@/pages/learningPath/learningContentPage/LearningContentContainer.vue";
|
||||
import { useRouter } from "vue-router";
|
||||
import { computed, ref, watch } from "vue";
|
||||
import {
|
||||
type Criterion,
|
||||
useSelfEvaluationFeedback,
|
||||
} from "@/services/selfEvaluationFeedback";
|
||||
import { useRouteQuery } from "@vueuse/router";
|
||||
import FeedbackProviderRankCriteria from "@/components/selfEvaluationFeedback/FeedbackProviderRankCriteria.vue";
|
||||
import FeedbackProviderReleaseOverview from "@/components/selfEvaluationFeedback/FeedbackProviderReleaseOverview.vue";
|
||||
import log from "loglevel";
|
||||
import { computed, ref, watch } from "vue";
|
||||
import { useRouter } from "vue-router";
|
||||
|
||||
const router = useRouter();
|
||||
const props = defineProps<{
|
||||
|
|
|
|||
|
|
@ -9,11 +9,11 @@ import { computed, onMounted } from "vue";
|
|||
// @ts-ignore
|
||||
import colors from "@/colors.json";
|
||||
|
||||
import type { CircleType, LearningSequence } from "@/types";
|
||||
import {
|
||||
allFinishedInLearningSequence,
|
||||
someFinishedInLearningSequence,
|
||||
} from "@/services/circle";
|
||||
import type { CircleType, LearningSequence } from "@/types";
|
||||
|
||||
const props = defineProps<{
|
||||
circle: CircleType;
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
<script setup lang="ts">
|
||||
import ItFullScreenModal from "@/components/ui/ItFullScreenModal.vue";
|
||||
import type { CircleType } from "@/types";
|
||||
import RichText from "@/components/ui/RichText.vue";
|
||||
import type { CircleType } from "@/types";
|
||||
|
||||
defineProps<{
|
||||
circle: CircleType;
|
||||
|
|
|
|||
|
|
@ -1,20 +1,20 @@
|
|||
<script setup lang="ts">
|
||||
import {
|
||||
useCourseDataWithCompletion,
|
||||
useCourseSessionDetailQuery,
|
||||
useCurrentCourseSession,
|
||||
} from "@/composables";
|
||||
import { useCSRFFetch } from "@/fetchHelpers";
|
||||
import LearningSequence from "@/pages/learningPath/circlePage/LearningSequence.vue";
|
||||
import { useCircleStore } from "@/stores/circle";
|
||||
import type { CourseSessionUser } from "@/types";
|
||||
import { stringifyParse } from "@/utils/utils";
|
||||
import log from "loglevel";
|
||||
import { computed, watch } from "vue";
|
||||
import { useRoute } from "vue-router";
|
||||
import CircleDiagram from "./CircleDiagram.vue";
|
||||
import CircleOverview from "./CircleOverview.vue";
|
||||
import DocumentSection from "./DocumentSection.vue";
|
||||
import {
|
||||
useCourseDataWithCompletion,
|
||||
useCourseSessionDetailQuery,
|
||||
useCurrentCourseSession,
|
||||
} from "@/composables";
|
||||
import { stringifyParse } from "@/utils/utils";
|
||||
import { useCircleStore } from "@/stores/circle";
|
||||
import LearningSequence from "@/pages/learningPath/circlePage/LearningSequence.vue";
|
||||
import { useCSRFFetch } from "@/fetchHelpers";
|
||||
|
||||
export interface Props {
|
||||
courseSlug: string;
|
||||
|
|
|
|||
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue