style: fix linting issues met Prettier

This commit is contained in:
Lint Action 2025-04-24 19:28:16 +00:00
parent b45fc47b06
commit 18e17e0133
9 changed files with 184 additions and 160 deletions

View file

@ -89,9 +89,8 @@ export async function createQuestion(loId: LearningObjectIdentifier, questionDat
let assignment;
if ((typeof questionData.inGroup.assignment === "number") && (typeof questionData.inGroup.class === "string")) {
assignment = await fetchAssignment(questionData.inGroup.class,
questionData.inGroup.assignment);
if (typeof questionData.inGroup.assignment === 'number' && typeof questionData.inGroup.class === 'string') {
assignment = await fetchAssignment(questionData.inGroup.class, questionData.inGroup.assignment);
} else {
// TODO check if necessary and no conflicts to delete this if
const clazz = await getClassRepository().findById((questionData.inGroup.assignment as AssignmentDTO).within);

View file

@ -36,7 +36,7 @@ export function makeTestAnswers(em: EntityManager, teachers: Teacher[], question
toQuestion: getQuestion07(),
sequenceNumber: 1,
timestamp: new Date(),
content: "this is a test answer"
content: 'this is a test answer',
});
const answer05 = em.create(Answer, {
@ -44,7 +44,7 @@ export function makeTestAnswers(em: EntityManager, teachers: Teacher[], question
toQuestion: getQuestion07(),
sequenceNumber: 2,
timestamp: new Date(),
content: "this is a test answer"
content: 'this is a test answer',
});
return [answer01, answer02, answer03, answer04, answer05];

View file

@ -93,7 +93,7 @@ export function makeTestQuestions(em: EntityManager, students: Student[], groups
author: getTestleerling1(),
inGroup: getGroup1ConditionalLearningPath(),
timestamp: new Date(),
content: 'this is a second test question'
content: 'this is a second test question',
});
return [question01, question02, question03, question04, question05, question06, question07, question08];

View file

@ -9,13 +9,11 @@
<template>
<div class="space-y-4">
<div
v-for="(question) in questions"
v-for="question in questions"
:key="(question.sequenceNumber, question.content)"
class="border rounded-2xl p-4 shadow-sm bg-white"
>
<SingleQuestion :question="question"></SingleQuestion>
</div>
</div>
</template>

View file

@ -1,23 +1,31 @@
<script setup lang="ts">
import type { LearningObject } from '@/data-objects/learning-objects/learning-object';
import { useQuestionsQuery } from '@/queries/questions';
import type { LearningObjectIdentifierDTO } from '@dwengo-1/common/interfaces/learning-content';
import { languageMap } from '@dwengo-1/common/util/language';
import { computed, ref } from 'vue';
import type { LearningObject } from "@/data-objects/learning-objects/learning-object";
import { useQuestionsQuery } from "@/queries/questions";
import type { LearningObjectIdentifierDTO } from "@dwengo-1/common/interfaces/learning-content";
import { languageMap } from "@dwengo-1/common/util/language";
import { computed, ref } from "vue";
const props = defineProps<{
node: LearningObject
node: LearningObject;
}>();
const loid = { hruid: props.node.key, version: props.node.version, language: props.node.language} as LearningObjectIdentifierDTO;
const loid = {
hruid: props.node.key,
version: props.node.version,
language: props.node.language,
} as LearningObjectIdentifierDTO;
const { data, isLoading, error } = useQuestionsQuery(loid);
const hasQuestions = computed(() => {
return (data.value?.questions.length ?? 0) > 0;
});
</script>
<template v-if="!isLoading & !error">
<v-icon v-if="hasQuestions" icon="mdi-help-circle-outline" color="red" size="small" />
<v-icon
v-if="hasQuestions"
icon="mdi-help-circle-outline"
color="red"
size="small"
/>
</template>
<style scoped></style>

View file

@ -33,28 +33,27 @@ import authService from "@/services/auth/auth-service";
const questionId: QuestionId = {
learningObjectIdentifier: props.question.learningObjectIdentifier,
sequenceNumber: props.question.sequenceNumber as number
sequenceNumber: props.question.sequenceNumber as number,
};
const createAnswerMutation = useCreateAnswerMutation(questionId);
const answer = ref('');
const answer = ref("");
function submitAnswer() {
const answerData: AnswerData = {
author: authService.authState.user?.profile.preferred_username as string,
content: answer.value
content: answer.value,
};
if (answer.value != "") {
createAnswerMutation.mutate(answerData, {
onSuccess: () => {
answer.value = "";
answersQuery.refetch();
}
},
});
} else {
alert("Please type an answer before submitting") //TODO: i18n
alert("Please type an answer before submitting"); //TODO: i18n
}
}
</script>
<template>
@ -82,14 +81,22 @@ import authService from "@/services/auth/auth-service";
>
{{ question.content }}
</div>
<div v-if="(authService.authState.activeRole === 'teacher')" class="answer-input-container">
<div
v-if="authService.authState.activeRole === 'teacher'"
class="answer-input-container"
>
<input
v-model="answer"
type="text"
placeholder="answer: ..."
class="answer-input"
/>
<button @click="submitAnswer" class="submit-button"></button>
<button
@click="submitAnswer"
class="submit-button"
>
</button>
</div>
<using-query-result
:query-result="answersQuery"
@ -123,9 +130,7 @@ import authService from "@/services/auth/auth-service";
justify-content: space-between;
"
>
<span class="font-semibold text-lg text-gray-800">{{
answer.author.username
}}</span>
<span class="font-semibold text-lg text-gray-800">{{ answer.author.username }}</span>
<span class="text-sm text-gray-500">{{ formatDate(answer.timestamp) }}</span>
</div>

View file

@ -12,13 +12,13 @@ export interface AnswerResponse {
}
export class AnswerController extends BaseController {
loId: LearningObjectIdentifierDTO;
sequenceNumber: number;
constructor(questionId: QuestionId) {
super(`learningObject/${questionId.learningObjectIdentifier.hruid}/:${questionId.learningObjectIdentifier.version}/questions/${questionId.sequenceNumber}/answers`);
super(
`learningObject/${questionId.learningObjectIdentifier.hruid}/:${questionId.learningObjectIdentifier.version}/questions/${questionId.sequenceNumber}/answers`,
);
this.loId = questionId.learningObjectIdentifier;
this.sequenceNumber = questionId.sequenceNumber;
}

View file

@ -18,7 +18,7 @@
import type { LearningObjectIdentifierDTO } from "@dwengo-1/common/interfaces/learning-content";
import QandA from "@/components/QandA.vue";
import type { QuestionData, QuestionDTO } from "@dwengo-1/common/interfaces/question";
import {useStudentAssignmentsQuery, useStudentGroupsQuery} from "@/queries/students"
import { useStudentAssignmentsQuery, useStudentGroupsQuery } from "@/queries/students";
import type { AssignmentDTO } from "@dwengo-1/common/interfaces/assignment";
import type { GroupDTO } from "@dwengo-1/common/interfaces/group";
import QuestionNotification from "@/components/QuestionNotification.vue";
@ -146,40 +146,38 @@ import QuestionNotification from "@/components/QuestionNotification.vue";
});
}
const studentAssignmentsQueryResult = useStudentAssignmentsQuery(authService.authState.user?.profile.preferred_username);
const studentAssignmentsQueryResult = useStudentAssignmentsQuery(
authService.authState.user?.profile.preferred_username,
);
const pathIsAssignment = computed(() => {
const assignments = studentAssignmentsQueryResult.data.value?.assignments as AssignmentDTO[] || [];
const assignments = (studentAssignmentsQueryResult.data.value?.assignments as AssignmentDTO[]) || [];
return assignments.some(
(assignment) =>
assignment.learningPath === props.hruid &&
assignment.language === props.language
(assignment) => assignment.learningPath === props.hruid && assignment.language === props.language,
);
});
const loID: LearningObjectIdentifierDTO = {
hruid: props.learningObjectHruid as string,
language: props.language
}
const createQuestionMutation = useCreateQuestionMutation(loID)
const groupsQueryResult = useStudentGroupsQuery(authService.authState.user?.profile.preferred_username)
language: props.language,
};
const createQuestionMutation = useCreateQuestionMutation(loID);
const groupsQueryResult = useStudentGroupsQuery(authService.authState.user?.profile.preferred_username);
const questionInput = ref("");
function submitQuestion() {
const assignments = studentAssignmentsQueryResult.data.value?.assignments as AssignmentDTO[]
const assignments = studentAssignmentsQueryResult.data.value?.assignments as AssignmentDTO[];
const assignment = assignments.find(
(assignment) =>
assignment.learningPath === props.hruid &&
assignment.language === props.language
)
const groups = groupsQueryResult.data.value?.groups as GroupDTO[]
const group = groups?.find(group => group.assignment === assignment?.id) as GroupDTO
(assignment) => assignment.learningPath === props.hruid && assignment.language === props.language,
);
const groups = groupsQueryResult.data.value?.groups as GroupDTO[];
const group = groups?.find((group) => group.assignment === assignment?.id) as GroupDTO;
const questionData: QuestionData = {
author: authService.authState.user?.profile.preferred_username,
content: questionInput.value,
inGroup: group //TODO: POST response zegt dat dit null is???
}
console.log(questionData)
inGroup: group, //TODO: POST response zegt dat dit null is???
};
console.log(questionData);
if (questionInput.value != "") {
createQuestionMutation.mutate(questionData, {
onSuccess: () => {
@ -187,14 +185,13 @@ import QuestionNotification from "@/components/QuestionNotification.vue";
getQuestionsQuery.refetch(); // Reload the questions
},
onError: (e) => {
console.error(e)
console.error(e);
},
})
});
} else {
alert("Please type a question before submitting.") // TODO: i18n
alert("Please type a question before submitting."); // TODO: i18n
}
}
</script>
<template>
@ -274,9 +271,15 @@ import QuestionNotification from "@/components/QuestionNotification.vue";
</template>
<template v-slot:append>
<QuestionNotification :node="node"></QuestionNotification>
<div>{{ (node.estimatedTime!).toLocaleString('en-US', {minimumIntegerDigits: 2, useGrouping:false}) }}'</div>
<div>
{{
node.estimatedTime!.toLocaleString("en-US", {
minimumIntegerDigits: 2,
useGrouping: false,
})
}}'
</div>
</template>
</v-list-item>
</template>
</using-query-result>
@ -292,7 +295,10 @@ import QuestionNotification from "@/components/QuestionNotification.vue";
</template>
</v-list-item>
<v-list-item>
<div v-if="(authService.authState.activeRole === 'student') && (pathIsAssignment)" class="assignment-indicator">
<div
v-if="authService.authState.activeRole === 'student' && pathIsAssignment"
class="assignment-indicator"
>
{{ t("assignmentIndicator") }}
</div>
</v-list-item>
@ -318,7 +324,10 @@ import QuestionNotification from "@/components/QuestionNotification.vue";
v-if="currentNode"
></learning-object-view>
</div>
<div v-if="authService.authState.activeRole === 'student' && pathIsAssignment" class="question-box">
<div
v-if="authService.authState.activeRole === 'student' && pathIsAssignment"
class="question-box"
>
<div class="input-wrapper">
<input
type="text"
@ -326,7 +335,12 @@ import QuestionNotification from "@/components/QuestionNotification.vue";
class="question-input"
v-model="questionInput"
/>
<button @click="submitQuestion" class="send-button"></button>
<button
@click="submitQuestion"
class="send-button"
>
</button>
</div>
</div>
<div class="navigation-buttons-container">
@ -351,7 +365,7 @@ import QuestionNotification from "@/components/QuestionNotification.vue";
:query-result="getQuestionsQuery"
v-slot="questionsResponse: { data: QuestionsResponse }"
>
<QandA :questions="questionsResponse.data.questions as QuestionDTO[] ?? []" />
<QandA :questions="(questionsResponse.data.questions as QuestionDTO[]) ?? []" />
</using-query-result>
</using-query-result>
</template>