From c8824763f6adea5149a454c0524b8a054a6754a2 Mon Sep 17 00:00:00 2001 From: Daniel Egger Date: Fri, 21 Oct 2022 09:50:25 +0200 Subject: [PATCH 1/8] Refactor types --- .../learningPath/LearningContentTypeBadge.vue | 37 +-- .../competence/PerformanceCriteriaPage.vue | 3 +- client/src/services/circle.ts | 70 ++-- client/src/services/learningPath.ts | 18 +- client/src/stores/competence.ts | 10 +- client/src/stores/completion.ts | 4 +- client/src/types.ts | 312 ++++++++---------- client/src/utils/typeMaps.ts | 42 ++- client/src/utils/utils.ts | 3 + .../learnpath/create_default_learning_path.py | 2 +- .../learnpath/models_learning_unit_content.py | 16 +- 11 files changed, 230 insertions(+), 287 deletions(-) create mode 100644 client/src/utils/utils.ts diff --git a/client/src/components/learningPath/LearningContentTypeBadge.vue b/client/src/components/learningPath/LearningContentTypeBadge.vue index 63dcd50f..aa25a649 100644 --- a/client/src/components/learningPath/LearningContentTypeBadge.vue +++ b/client/src/components/learningPath/LearningContentTypeBadge.vue @@ -1,6 +1,6 @@ @@ -102,7 +97,6 @@ const profileDropdownData: DropdownListItem[][] = [
(); diff --git a/client/src/components/competences/PerformanceCriteriaRow.vue b/client/src/components/competences/PerformanceCriteriaRow.vue index 624177ab..41ff8093 100644 --- a/client/src/components/competences/PerformanceCriteriaRow.vue +++ b/client/src/components/competences/PerformanceCriteriaRow.vue @@ -8,7 +8,6 @@ interface Props { } const props = withDefaults(defineProps(), { - criteria: undefined, showState: false, }); diff --git a/client/src/components/mediaLibrary/LinkCard.vue b/client/src/components/mediaLibrary/LinkCard.vue index c4ab5003..76502e1a 100644 --- a/client/src/components/mediaLibrary/LinkCard.vue +++ b/client/src/components/mediaLibrary/LinkCard.vue @@ -23,9 +23,9 @@ const props = withDefaults(defineProps(), {

{{ title }}

{{ description }}

- + {{ linkText }} - +
diff --git a/client/src/components/mediaLibrary/MediaLink.vue b/client/src/components/mediaLibrary/MediaLink.vue index 08047853..0a101871 100644 --- a/client/src/components/mediaLibrary/MediaLink.vue +++ b/client/src/components/mediaLibrary/MediaLink.vue @@ -3,14 +3,14 @@ // https://vueschool.io/articles/vuejs-tutorials/extending-vue-router-links-in-vue-3/ import { computed } from "vue"; -import { RouterLink } from "vue-router"; +import type { RouterLinkProps } from "vue-router"; -const props = defineProps({ - ...RouterLink.props, // @ts-ignore - blank: { - type: Boolean, - default: false, - }, +export interface Props extends RouterLinkProps { + blank?: boolean; +} + +const props = withDefaults(defineProps(), { + blank: false, }); const isExternalLink = computed( @@ -24,7 +24,7 @@ const isExternalLink = computed( v-if="isExternalLink" :target="props.blank ? '_blank' : '_self'" rel="noopener" - :href="props.to" + :href="(props.to as string)" > diff --git a/client/src/components/ui/ItDropdown.vue b/client/src/components/ui/ItDropdown.vue index faf6b6ad..74567875 100644 --- a/client/src/components/ui/ItDropdown.vue +++ b/client/src/components/ui/ItDropdown.vue @@ -3,13 +3,13 @@ import type { DropdownListItem } from "@/types"; import { Menu, MenuButton, MenuItem, MenuItems } from "@headlessui/vue"; const props = defineProps<{ - buttonClasses: [string]; - listItems: [[DropdownListItem]]; + buttonClasses: [string] | []; + listItems: DropdownListItem[]; align: "left" | "right"; }>(); const emit = defineEmits<{ - (e: "select", data: object): void; + (e: "select", data: any): void; }>(); @@ -33,20 +33,18 @@ const emit = defineEmits<{ class="absolute mt-2 px-6 w-56 w-max-full origin-top-right divide-y divide-gray-500 bg-white shadow-lg ring-1 ring-black ring-opacity-5 focus:outline-none" :class="[align === 'left' ? 'left-0' : 'right-0']" > -
-
- - - -
+
+ + +
diff --git a/client/src/i18n.ts b/client/src/i18n.ts index a162a525..235b991a 100644 --- a/client/src/i18n.ts +++ b/client/src/i18n.ts @@ -23,7 +23,7 @@ export function setI18nLanguage(i18n: any, locale: string) { * * axios.defaults.headers.common['Accept-Language'] = locale */ - document.querySelector("html").setAttribute("lang", locale); + document.querySelector("html")?.setAttribute("lang", locale); } export async function loadLocaleMessages(i18n: any, locale: any) { diff --git a/client/src/pages/LoginPage.vue b/client/src/pages/LoginPage.vue index 5d0cd71e..96550c8b 100644 --- a/client/src/pages/LoginPage.vue +++ b/client/src/pages/LoginPage.vue @@ -25,7 +25,11 @@ const userStore = useUserStore();
diff --git a/client/src/pages/StyleGuidePage.vue b/client/src/pages/StyleGuidePage.vue index 24247a61..8e7c584e 100644 --- a/client/src/pages/StyleGuidePage.vue +++ b/client/src/pages/StyleGuidePage.vue @@ -27,29 +27,25 @@ const state = reactive({ }); const dropdownData = [ - [ - { - title: "Option 1", - icon: IconLogout, - data: {}, + { + title: "Option 1", + icon: IconLogout, + data: {}, + }, + { + title: "Option 2", + icon: IconLogout, + data: { + test: 12, }, - { - title: "Option 2", - icon: null, - data: { - test: 12, - }, + }, + { + title: "Option 3", + icon: IconSettings, + data: { + amount: 34, }, - ], - [ - { - title: "Option 3", - icon: IconSettings, - data: { - amount: 34, - }, - }, - ], + }, ]; // TODO: die CSS-Klasse für die Farben wird hier in der StyleGuideView.vue generiert. diff --git a/client/src/pages/competence/CompetenceListPage.vue b/client/src/pages/competence/CompetenceListPage.vue index 2a9f2630..a1d43fb7 100644 --- a/client/src/pages/competence/CompetenceListPage.vue +++ b/client/src/pages/competence/CompetenceListPage.vue @@ -14,6 +14,7 @@ const competenceStore = useCompetenceStore();