diff --git a/client/package.json b/client/package.json index a0fd247e..f5066491 100644 --- a/client/package.json +++ b/client/package.json @@ -15,7 +15,6 @@ }, "dependencies": { "@headlessui/vue": "^1.6.7", - "axios": "^0.26.1", "d3": "^7.6.1", "lodash": "^4.17.21", "loglevel": "^1.8.0", diff --git a/client/src/components/learningPath/CircleDiagram.vue b/client/src/components/learningPath/CircleDiagram.vue index 662b6a63..b827b201 100644 --- a/client/src/components/learningPath/CircleDiagram.vue +++ b/client/src/components/learningPath/CircleDiagram.vue @@ -6,10 +6,11 @@ import * as log from "loglevel"; import { computed, onMounted } from "vue"; import colors from "@/colors.json"; +import type { LearningSequence } from "@/types"; const circleStore = useCircleStore(); -function someFinished(learningSequence) { +function someFinished(learningSequence: LearningSequence) { if (circleStore.circle) { return circleStore.circle.someFinishedInLearningSequence( learningSequence.translation_key @@ -18,7 +19,7 @@ function someFinished(learningSequence) { return false; } -function allFinished(learningSequence) { +function allFinished(learningSequence: LearningSequence) { if (circleStore.circle) { return circleStore.circle.allFinishedInLearningSequence( learningSequence.translation_key @@ -43,11 +44,11 @@ const pieData = computed(() => { const pieGenerator = d3.pie(); let angles = pieGenerator(pieWeights); _.forEach(angles, (pie) => { - const thisLearningSequence = circle.learningSequences[parseInt(pie.index)]; - pie.title = thisLearningSequence.title; - pie.icon = thisLearningSequence.icon; pie.startAngle = pie.startAngle + Math.PI; pie.endAngle = pie.endAngle + Math.PI; + const thisLearningSequence = circle.learningSequences[pie.index]; + pie.title = thisLearningSequence.title; + pie.icon = thisLearningSequence.icon; pie.arrowStartAngle = pie.endAngle + (pie.startAngle - pie.endAngle) / 2; pie.arrowEndAngle = pie.startAngle + (pie.startAngle - pie.endAngle) / 2; pie.translation_key = thisLearningSequence.translation_key; diff --git a/client/src/components/mediaLibrary/MediaLink.vue b/client/src/components/mediaLibrary/MediaLink.vue index 0a101871..5e15b51f 100644 --- a/client/src/components/mediaLibrary/MediaLink.vue +++ b/client/src/components/mediaLibrary/MediaLink.vue @@ -3,14 +3,16 @@ // https://vueschool.io/articles/vuejs-tutorials/extending-vue-router-links-in-vue-3/ import { computed } from "vue"; -import type { RouterLinkProps } from "vue-router"; +import { RouterLink } from "vue-router"; -export interface Props extends RouterLinkProps { - blank?: boolean; -} - -const props = withDefaults(defineProps(), { - blank: false, +const props = defineProps({ + // eslint-disable-next-line @typescript-eslint/ban-ts-comment + // @ts-ignore + ...RouterLink.props, + blank: { + type: Boolean, + default: false, + }, }); const isExternalLink = computed( @@ -24,7 +26,7 @@ const isExternalLink = computed( v-if="isExternalLink" :target="props.blank ? '_blank' : '_self'" rel="noopener" - :href="(props.to as string)" + :href="props.to" > diff --git a/client/src/fetchHelpers.ts b/client/src/fetchHelpers.ts index 4e8442ca..2cf5487b 100644 --- a/client/src/fetchHelpers.ts +++ b/client/src/fetchHelpers.ts @@ -28,11 +28,7 @@ export const itPost = (url: RequestInfo, data: unknown, options: RequestInit = { "Content-Type": "application/json;charset=UTF-8", }, options?.headers - ); - - if (options?.headers) { - delete options.headers; - } + ) as HeadersInit; options = Object.assign( { diff --git a/client/src/pages/mediaLibrary/MLCategoryDetailPage.vue b/client/src/pages/mediaLibrary/MLCategoryDetailPage.vue index 309fa6b7..689a0825 100644 --- a/client/src/pages/mediaLibrary/MLCategoryDetailPage.vue +++ b/client/src/pages/mediaLibrary/MLCategoryDetailPage.vue @@ -2,6 +2,7 @@ import LinkCard from "@/components/mediaLibrary/LinkCard.vue"; import MediaLink from "@/components/mediaLibrary/MediaLink.vue"; import { useMediaLibraryStore } from "@/stores/mediaLibrary"; +import type { MediaBlockType } from "@/types"; import * as log from "loglevel"; import { computed } from "vue"; import { useRoute } from "vue-router"; @@ -33,28 +34,28 @@ const backLink = computed(() => { const maxCardItems = 4; const maxListItems = 6; -const displayAsCard = (itemType: string): boolean => { +const displayAsCard = (itemType: MediaBlockType): boolean => { return itemType === "learn_media" || itemType === "relative_link"; }; -const hasMoreItems = (items: object[], maxItems: number): boolean => { +function hasMoreItems(items: T[], maxItems: number): boolean { return items.length > maxItems; -}; +} -const getMaxDisplayItems = (items: object[], maxItems: number) => { +function getMaxDisplayItems(items: T[], maxItems: number) { return items.slice(0, maxItems); -}; +} -const getMaxDisplayItemsForType = (itemType: string, items: object[]) => { +function getMaxDisplayItemsForType(itemType: MediaBlockType, items: T[]) { return displayAsCard(itemType) ? getMaxDisplayItems(items, maxCardItems) : getMaxDisplayItems(items, maxListItems); -}; +} -const hasMoreItemsForType = (itemType: string, items: object[]) => { +function hasMoreItemsForType(itemType: MediaBlockType, items: T[]) { const maxItems = displayAsCard(itemType) ? maxCardItems : maxListItems; return hasMoreItems(items, maxItems); -}; +}