feat(frontend): UI vragen & antwoorden verbeterd.
This commit is contained in:
parent
10a329bed3
commit
97f6a603f5
9 changed files with 164 additions and 217 deletions
|
@ -15,7 +15,6 @@
|
||||||
<div
|
<div
|
||||||
v-for="question in questions"
|
v-for="question in questions"
|
||||||
:key="(question.sequenceNumber, question.content)"
|
:key="(question.sequenceNumber, question.content)"
|
||||||
class="border rounded-2xl p-4 shadow-sm bg-white"
|
|
||||||
>
|
>
|
||||||
<SingleQuestion :question="question"></SingleQuestion>
|
<SingleQuestion :question="question"></SingleQuestion>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -19,6 +19,7 @@
|
||||||
language: Language;
|
language: Language;
|
||||||
learningObjectHruid?: string;
|
learningObjectHruid?: string;
|
||||||
forGroup?: GroupDTOId | undefined;
|
forGroup?: GroupDTOId | undefined;
|
||||||
|
withTitle?: boolean;
|
||||||
}>();
|
}>();
|
||||||
|
|
||||||
const { t } = useI18n();
|
const { t } = useI18n();
|
||||||
|
@ -65,6 +66,8 @@
|
||||||
const createQuestionMutation = useCreateQuestionMutation(loID);
|
const createQuestionMutation = useCreateQuestionMutation(loID);
|
||||||
const groupsQueryResult = useStudentGroupsQuery(authService.authState.user?.profile.preferred_username);
|
const groupsQueryResult = useStudentGroupsQuery(authService.authState.user?.profile.preferred_username);
|
||||||
|
|
||||||
|
const showQuestionBox = computed(() => authService.authState.activeRole === AccountType.Student && pathIsAssignment.value);
|
||||||
|
|
||||||
function submitQuestion(): void {
|
function submitQuestion(): void {
|
||||||
const assignments = studentAssignmentsQueryResult.data.value?.assignments as AssignmentDTO[];
|
const assignments = studentAssignmentsQueryResult.data.value?.assignments as AssignmentDTO[];
|
||||||
const assignment = assignments.find(
|
const assignment = assignments.find(
|
||||||
|
@ -93,24 +96,26 @@
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<template>
|
<template>
|
||||||
<div
|
<h3 v-if="props.withTitle && showQuestionBox">{{ t('askAQuestion') }}:</h3>
|
||||||
v-if="authService.authState.activeRole === AccountType.Student && pathIsAssignment"
|
<div class="question-box" v-if="showQuestionBox">
|
||||||
class="question-box"
|
<v-textarea
|
||||||
>
|
:label="t('question-input-placeholder')"
|
||||||
<div class="input-wrapper">
|
v-model="questionInput"
|
||||||
<input
|
class="question-field"
|
||||||
type="text"
|
density="compact"
|
||||||
:placeholder="`${t(`question-input-placeholder`)}`"
|
rows="1"
|
||||||
class="question-input"
|
variant="outlined"
|
||||||
v-model="questionInput"
|
auto-grow>
|
||||||
/>
|
<template v-slot:append-inner>
|
||||||
<button
|
<v-btn
|
||||||
@click="submitQuestion"
|
icon="mdi mdi-send"
|
||||||
class="send-button"
|
size="small"
|
||||||
>
|
variant="plain"
|
||||||
▶
|
class="question-button"
|
||||||
</button>
|
@click="submitQuestion"
|
||||||
</div>
|
/>
|
||||||
|
</template>
|
||||||
|
</v-textarea>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
|
@ -119,40 +124,5 @@
|
||||||
width: 100%;
|
width: 100%;
|
||||||
max-width: 400px;
|
max-width: 400px;
|
||||||
margin: 20px auto;
|
margin: 20px auto;
|
||||||
font-family: sans-serif;
|
|
||||||
}
|
|
||||||
|
|
||||||
.input-wrapper {
|
|
||||||
display: flex;
|
|
||||||
align-items: center;
|
|
||||||
border: 1px solid #ccc;
|
|
||||||
border-radius: 999px;
|
|
||||||
padding: 8px 12px;
|
|
||||||
box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);
|
|
||||||
}
|
|
||||||
|
|
||||||
.question-input {
|
|
||||||
flex: 1;
|
|
||||||
border: none;
|
|
||||||
outline: none;
|
|
||||||
font-size: 14px;
|
|
||||||
background-color: transparent;
|
|
||||||
}
|
|
||||||
|
|
||||||
.question-input::placeholder {
|
|
||||||
color: #999;
|
|
||||||
}
|
|
||||||
|
|
||||||
.send-button {
|
|
||||||
background: none;
|
|
||||||
border: none;
|
|
||||||
cursor: pointer;
|
|
||||||
font-size: 16px;
|
|
||||||
color: #555;
|
|
||||||
transition: color 0.2s ease;
|
|
||||||
}
|
|
||||||
|
|
||||||
.send-button:hover {
|
|
||||||
color: #000;
|
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|
|
@ -5,9 +5,10 @@
|
||||||
import UsingQueryResult from "./UsingQueryResult.vue";
|
import UsingQueryResult from "./UsingQueryResult.vue";
|
||||||
import type { AnswersResponse } from "@/controllers/answers";
|
import type { AnswersResponse } from "@/controllers/answers";
|
||||||
import type { AnswerData, AnswerDTO } from "@dwengo-1/common/interfaces/answer";
|
import type { AnswerData, AnswerDTO } from "@dwengo-1/common/interfaces/answer";
|
||||||
|
import type { UserDTO } from "@dwengo-1/common/interfaces/user";
|
||||||
import authService from "@/services/auth/auth-service";
|
import authService from "@/services/auth/auth-service";
|
||||||
import { useI18n } from "vue-i18n";
|
import { useI18n } from "vue-i18n";
|
||||||
import { AccountType } from "@dwengo-1/common/util/account-types"
|
import { AccountType } from "@dwengo-1/common/util/account-types";
|
||||||
|
|
||||||
const { t } = useI18n();
|
const { t } = useI18n();
|
||||||
|
|
||||||
|
@ -65,161 +66,119 @@
|
||||||
createAnswerMutation.mutate(answerData, {
|
createAnswerMutation.mutate(answerData, {
|
||||||
onSuccess: async () => {
|
onSuccess: async () => {
|
||||||
answer.value = "";
|
answer.value = "";
|
||||||
|
expanded.value = true;
|
||||||
await answersQuery.refetch();
|
await answersQuery.refetch();
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function displayNameFor(user: UserDTO) {
|
||||||
|
if (user.firstName && user.lastName) {
|
||||||
|
return `${user.firstName} ${user.lastName}`;
|
||||||
|
} else {
|
||||||
|
return user.username;
|
||||||
|
}
|
||||||
|
}
|
||||||
</script>
|
</script>
|
||||||
<template>
|
<template>
|
||||||
<div class="space-y-4">
|
<div class="space-y-4">
|
||||||
<div
|
<v-card
|
||||||
class="flex justify-between items-center mb-2"
|
class="question-card"
|
||||||
style="
|
|
||||||
margin-right: 5px;
|
|
||||||
margin-left: 5px;
|
|
||||||
font-weight: bold;
|
|
||||||
display: flex;
|
|
||||||
flex-direction: row;
|
|
||||||
justify-content: space-between;
|
|
||||||
"
|
|
||||||
>
|
>
|
||||||
<span class="font-semibold text-lg text-gray-800">{{
|
<v-card-title class="author-title">{{ displayNameFor(question.author) }}</v-card-title>
|
||||||
question.author.firstName + " " + question.author.lastName
|
<v-card-subtitle>{{ formatDate(question.timestamp) }}</v-card-subtitle>
|
||||||
}}</span>
|
<v-card-text>
|
||||||
<span class="text-sm text-gray-500">{{ formatDate(question.timestamp) }}</span>
|
{{ question.content }}
|
||||||
</div>
|
</v-card-text>
|
||||||
|
<template v-slot:actions
|
||||||
<div
|
v-if="authService.authState.activeRole === AccountType.Teacher || answersQuery.data?.value?.answers?.length > 0"
|
||||||
class="text-gray-700 mb-3"
|
|
||||||
style="margin-left: 10px"
|
|
||||||
>
|
|
||||||
{{ question.content }}
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
v-if="authService.authState.activeRole === AccountType.Teacher"
|
|
||||||
class="answer-input-container"
|
|
||||||
>
|
|
||||||
<input
|
|
||||||
v-model="answer"
|
|
||||||
type="text"
|
|
||||||
:placeholder="t('answer-input-placeholder')"
|
|
||||||
class="answer-input"
|
|
||||||
/>
|
|
||||||
<button
|
|
||||||
@click="submitAnswer"
|
|
||||||
class="submit-button"
|
|
||||||
>
|
>
|
||||||
▶
|
<div class="question-actions-container">
|
||||||
</button>
|
<v-textarea
|
||||||
</div>
|
v-if="authService.authState.activeRole === AccountType.Teacher"
|
||||||
<using-query-result
|
:label="t('answer-input-placeholder')"
|
||||||
:query-result="answersQuery"
|
v-model="answer"
|
||||||
v-slot="answersResponse: { data: AnswersResponse }"
|
class="answer-field"
|
||||||
>
|
density="compact"
|
||||||
<button
|
rows="1"
|
||||||
v-if="answersResponse.data.answers && answersResponse.data.answers.length > 0"
|
variant="outlined"
|
||||||
@click="toggle()"
|
auto-grow>
|
||||||
class="toggle-answers-btn"
|
<template v-slot:append-inner>
|
||||||
>
|
<v-btn
|
||||||
{{ expanded ? t("answers-toggle-hide") : t("answers-toggle-show") }}
|
icon="mdi mdi-send"
|
||||||
</button>
|
size="small"
|
||||||
|
variant="plain"
|
||||||
<div
|
class="answer-button"
|
||||||
v-show="expanded"
|
@click="submitAnswer"
|
||||||
ref="answersContainer"
|
/>
|
||||||
class="mt-3 pl-4 border-l-2 border-blue-200 space-y-2"
|
</template>
|
||||||
>
|
</v-textarea>
|
||||||
<div
|
<using-query-result
|
||||||
v-for="(answer, answerIndex) in answersResponse.data.answers as AnswerDTO[]"
|
:query-result="answersQuery"
|
||||||
:key="answerIndex"
|
v-slot="answersResponse: { data: AnswersResponse }"
|
||||||
class="text-gray-600"
|
|
||||||
>
|
|
||||||
<v-divider :thickness="2" />
|
|
||||||
<div
|
|
||||||
class="flex justify-between items-center mb-2"
|
|
||||||
style="
|
|
||||||
margin-right: 5px;
|
|
||||||
margin-left: 5px;
|
|
||||||
font-weight: bold;
|
|
||||||
display: flex;
|
|
||||||
flex-direction: row;
|
|
||||||
justify-content: space-between;
|
|
||||||
"
|
|
||||||
>
|
>
|
||||||
<span class="font-semibold text-lg text-gray-800">{{ answer.author.username }}</span>
|
<v-btn
|
||||||
<span class="text-sm text-gray-500">{{ formatDate(answer.timestamp) }}</span>
|
v-if="answersResponse.data.answers && answersResponse.data.answers.length > 0"
|
||||||
</div>
|
@click="toggle()"
|
||||||
|
>
|
||||||
|
{{ expanded ? t("answers-toggle-hide") : t("answers-toggle-show") }}
|
||||||
|
</v-btn>
|
||||||
|
|
||||||
<div
|
<div
|
||||||
class="text-gray-700 mb-3"
|
v-show="expanded"
|
||||||
style="margin-left: 10px"
|
ref="answersContainer"
|
||||||
>
|
class="mt-3 pl-4 border-l-2 border-blue-200 space-y-2"
|
||||||
{{ answer.content }}
|
>
|
||||||
</div>
|
<v-card
|
||||||
|
v-for="(answer, answerIndex) in answersResponse.data.answers as AnswerDTO[]"
|
||||||
|
:key="answerIndex"
|
||||||
|
class="answer-card"
|
||||||
|
>
|
||||||
|
<v-card-title class="author-title">{{ displayNameFor(answer.author) }}</v-card-title>
|
||||||
|
<v-card-subtitle>{{ formatDate(answer.timestamp) }}</v-card-subtitle>
|
||||||
|
<v-card-text>
|
||||||
|
{{ answer.content }}
|
||||||
|
</v-card-text>
|
||||||
|
</v-card>
|
||||||
|
</div>
|
||||||
|
</using-query-result>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</template>
|
||||||
</using-query-result>
|
</v-card>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
<style scoped>
|
<style scoped>
|
||||||
.toggle-answers-btn {
|
|
||||||
font-size: 0.875rem;
|
.answer-field {
|
||||||
text-decoration: none;
|
max-width: 500px;
|
||||||
background-color: #f0f4ff; /* subtle blue background */
|
|
||||||
border: none;
|
|
||||||
border-radius: 4px;
|
|
||||||
padding: 6px 12px;
|
|
||||||
cursor: pointer;
|
|
||||||
transition: background-color 0.2s ease;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.toggle-answers-btn:hover {
|
.answer-button {
|
||||||
background-color: #e0eaff; /* slightly darker on hover */
|
margin: auto;
|
||||||
text-decoration: underline;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.answer-input-container {
|
.answer-input-container {
|
||||||
margin: 5px;
|
margin: 5px;
|
||||||
}
|
}
|
||||||
.answer-input {
|
|
||||||
flex-grow: 1;
|
.question-card {
|
||||||
outline: none;
|
margin: 10px;
|
||||||
border: none;
|
|
||||||
background: transparent;
|
|
||||||
color: #374151; /* gray-700 */
|
|
||||||
font-size: 0.875rem; /* smaller font size */
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.answer-input::placeholder {
|
.question-actions-container {
|
||||||
color: #9ca3af; /* gray-400 */
|
|
||||||
}
|
|
||||||
|
|
||||||
.submit-button {
|
|
||||||
margin-left: 0.25rem;
|
|
||||||
padding: 0.25rem;
|
|
||||||
background-color: #f3f4f6; /* gray-100 */
|
|
||||||
border-radius: 9999px;
|
|
||||||
transition: background-color 0.2s;
|
|
||||||
border: none;
|
|
||||||
cursor: pointer;
|
|
||||||
}
|
|
||||||
|
|
||||||
.submit-button:hover {
|
|
||||||
background-color: #e5e7eb; /* gray-200 */
|
|
||||||
}
|
|
||||||
|
|
||||||
.submit-icon {
|
|
||||||
width: 0.75rem;
|
|
||||||
height: 0.75rem;
|
|
||||||
color: #4b5563; /* gray-600 */
|
|
||||||
}
|
|
||||||
.answer-input-container {
|
|
||||||
display: flex;
|
|
||||||
align-items: center;
|
|
||||||
border: 1px solid #d1d5db; /* gray-300 */
|
|
||||||
border-radius: 9999px;
|
|
||||||
padding: 0.5rem 1rem;
|
|
||||||
max-width: 28rem;
|
|
||||||
width: 100%;
|
width: 100%;
|
||||||
|
margin-left: 10px;
|
||||||
|
margin-right: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.answer-card {
|
||||||
|
margin-top: 10px;
|
||||||
|
margin-bottom: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.author-title {
|
||||||
|
font-size: 14pt;
|
||||||
|
margin-bottom: -10px;
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|
|
@ -169,10 +169,12 @@
|
||||||
"hintKeywordsSeparatedBySpaces": "Schlüsselwörter durch Leerzeichen getrennt",
|
"hintKeywordsSeparatedBySpaces": "Schlüsselwörter durch Leerzeichen getrennt",
|
||||||
"questions": "Fragen",
|
"questions": "Fragen",
|
||||||
"view-questions": "Fragen anzeigen auf ",
|
"view-questions": "Fragen anzeigen auf ",
|
||||||
"question-input-placeholder": "Frage...",
|
"question-input-placeholder": "Ihre Frage...",
|
||||||
"answer-input-placeholder": "Antwort...",
|
"answer-input-placeholder": "Ihre Antwort...",
|
||||||
"answers-toggle-hide": "Antworten verstecken",
|
"answers-toggle-hide": "Antworten verstecken",
|
||||||
"answers-toggle-show": "Antworten anzeigen",
|
"answers-toggle-show": "Antworten anzeigen",
|
||||||
"no-questions": "Keine Fragen",
|
"no-questions": "Keine Fragen",
|
||||||
"no-discussion-tip": "Wählen Sie ein Lernobjekt aus, um dessen Fragen anzuzeigen"
|
"no-discussion-tip": "Wählen Sie ein Lernobjekt aus, um dessen Fragen anzuzeigen",
|
||||||
|
"askAQuestion": "Eine Frage stellen",
|
||||||
|
"questionsCapitalized": "Fragen"
|
||||||
}
|
}
|
||||||
|
|
|
@ -169,10 +169,12 @@
|
||||||
"hintKeywordsSeparatedBySpaces": "Keywords separated by spaces",
|
"hintKeywordsSeparatedBySpaces": "Keywords separated by spaces",
|
||||||
"questions": "questions",
|
"questions": "questions",
|
||||||
"view-questions": "View questions in ",
|
"view-questions": "View questions in ",
|
||||||
"question-input-placeholder": "question...",
|
"question-input-placeholder": "Your question...",
|
||||||
"answer-input-placeholder": "answer...",
|
"answer-input-placeholder": "Your answer...",
|
||||||
"answers-toggle-hide": "Hide answers",
|
"answers-toggle-hide": "Hide answers",
|
||||||
"answers-toggle-show": "Show answers",
|
"answers-toggle-show": "Show answers",
|
||||||
"no-questions": "No questions asked yet",
|
"no-questions": "No questions asked yet",
|
||||||
"no-discussion-tip": "Choose a learning object to view its questions"
|
"no-discussion-tip": "Choose a learning object to view its questions",
|
||||||
|
"askAQuestion": "Ask a question",
|
||||||
|
"questionsCapitalized": "Questions"
|
||||||
}
|
}
|
||||||
|
|
|
@ -170,10 +170,12 @@
|
||||||
"hintKeywordsSeparatedBySpaces": "Mots-clés séparés par des espaces",
|
"hintKeywordsSeparatedBySpaces": "Mots-clés séparés par des espaces",
|
||||||
"questions": "Questions",
|
"questions": "Questions",
|
||||||
"view-questions": "Voir les questions dans ",
|
"view-questions": "Voir les questions dans ",
|
||||||
"question-input-placeholder": "question...",
|
"question-input-placeholder": "Votre question...",
|
||||||
"answer-input-placeholder": "réponse...",
|
"answer-input-placeholder": "Votre réponse...",
|
||||||
"answers-toggle-hide": "Masquer réponses",
|
"answers-toggle-hide": "Masquer réponses",
|
||||||
"answers-toggle-show": "Afficher réponse",
|
"answers-toggle-show": "Afficher réponse",
|
||||||
"no-questions": "Aucune question trouvée",
|
"no-questions": "Aucune question trouvée",
|
||||||
"no-discussion-tip": "Sélectionnez un objet d'apprentissage pour afficher les questions qui s'y rapportent"
|
"no-discussion-tip": "Sélectionnez un objet d'apprentissage pour afficher les questions qui s'y rapportent",
|
||||||
|
"askAQuestion": "Pose une question",
|
||||||
|
"questionsCapitalized": "Questions"
|
||||||
}
|
}
|
||||||
|
|
|
@ -169,10 +169,12 @@
|
||||||
"hintKeywordsSeparatedBySpaces": "Trefwoorden gescheiden door spaties",
|
"hintKeywordsSeparatedBySpaces": "Trefwoorden gescheiden door spaties",
|
||||||
"questions": "vragen",
|
"questions": "vragen",
|
||||||
"view-questions": "Bekijk vragen in ",
|
"view-questions": "Bekijk vragen in ",
|
||||||
"question-input-placeholder": "vraag...",
|
"question-input-placeholder": "Uw vraag...",
|
||||||
"answer-input-placeholder": "antwoord...",
|
"answer-input-placeholder": "Uw antwoord...",
|
||||||
"answers-toggle-hide": "Verberg antwoorden",
|
"answers-toggle-hide": "Verberg antwoorden",
|
||||||
"answers-toggle-show": "Toon antwoorden",
|
"answers-toggle-show": "Toon antwoorden",
|
||||||
"no-questions": "Nog geen vragen gesteld",
|
"no-questions": "Nog geen vragen gesteld",
|
||||||
"no-discussion-tip": "Kies een leerobject om zijn vragen te bekijken"
|
"no-discussion-tip": "Kies een leerobject om zijn vragen te bekijken",
|
||||||
|
"askAQuestion": "Stel een vraag",
|
||||||
|
"questionsCapitalized": "Vragen"
|
||||||
}
|
}
|
||||||
|
|
|
@ -15,6 +15,9 @@
|
||||||
import type { QuestionDTO } from "@dwengo-1/common/interfaces/question";
|
import type { QuestionDTO } from "@dwengo-1/common/interfaces/question";
|
||||||
import DiscussionsSideBar from "@/components/DiscussionsSideBar.vue";
|
import DiscussionsSideBar from "@/components/DiscussionsSideBar.vue";
|
||||||
import QuestionBox from "@/components/QuestionBox.vue";
|
import QuestionBox from "@/components/QuestionBox.vue";
|
||||||
|
import { useI18n } from "vue-i18n";
|
||||||
|
|
||||||
|
const { t } = useI18n();
|
||||||
|
|
||||||
const route = useRoute();
|
const route = useRoute();
|
||||||
|
|
||||||
|
@ -120,21 +123,29 @@
|
||||||
|
|
||||||
<template>
|
<template>
|
||||||
<DiscussionsSideBar></DiscussionsSideBar>
|
<DiscussionsSideBar></DiscussionsSideBar>
|
||||||
<QuestionBox
|
<div class="discussions-container">
|
||||||
:hruid="props.hruid"
|
<QuestionBox
|
||||||
:language="props.language"
|
:hruid="props.hruid"
|
||||||
:learningObjectHruid="props.learningObjectHruid"
|
:language="props.language"
|
||||||
:forGroup="forGroup"
|
:learningObjectHruid="props.learningObjectHruid"
|
||||||
/>
|
:forGroup="forGroup"
|
||||||
<using-query-result
|
withTitle
|
||||||
:query-result="getQuestionsQuery"
|
/>
|
||||||
v-slot="questionsResponse: { data: QuestionsResponse }"
|
<h3>{{ t("questionsCapitalized") }}:</h3>
|
||||||
>
|
<using-query-result
|
||||||
<QandA :questions="(questionsResponse.data.questions as QuestionDTO[]) ?? []" />
|
:query-result="getQuestionsQuery"
|
||||||
</using-query-result>
|
v-slot="questionsResponse: { data: QuestionsResponse }"
|
||||||
|
>
|
||||||
|
<QandA :questions="(questionsResponse.data.questions as QuestionDTO[]) ?? []" />
|
||||||
|
</using-query-result>
|
||||||
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<style scoped>
|
<style scoped>
|
||||||
|
.discussions-container {
|
||||||
|
margin: 20px;
|
||||||
|
}
|
||||||
|
|
||||||
.learning-path-title {
|
.learning-path-title {
|
||||||
white-space: normal;
|
white-space: normal;
|
||||||
}
|
}
|
||||||
|
|
|
@ -308,12 +308,6 @@
|
||||||
v-if="currentNode"
|
v-if="currentNode"
|
||||||
></learning-object-view>
|
></learning-object-view>
|
||||||
</div>
|
</div>
|
||||||
<QuestionBox
|
|
||||||
:hruid="props.hruid"
|
|
||||||
:language="props.language"
|
|
||||||
:learningObjectHruid="props.learningObjectHruid"
|
|
||||||
:forGroup="forGroup"
|
|
||||||
/>
|
|
||||||
<div class="navigation-buttons-container">
|
<div class="navigation-buttons-container">
|
||||||
<v-btn
|
<v-btn
|
||||||
prepend-icon="mdi-chevron-left"
|
prepend-icon="mdi-chevron-left"
|
||||||
|
@ -333,6 +327,7 @@
|
||||||
</v-btn>
|
</v-btn>
|
||||||
</div>
|
</div>
|
||||||
<using-query-result
|
<using-query-result
|
||||||
|
v-if="forGroup"
|
||||||
:query-result="getQuestionsQuery"
|
:query-result="getQuestionsQuery"
|
||||||
v-slot="questionsResponse: { data: QuestionsResponse }"
|
v-slot="questionsResponse: { data: QuestionsResponse }"
|
||||||
>
|
>
|
||||||
|
@ -346,7 +341,12 @@
|
||||||
</router-link>
|
</router-link>
|
||||||
</span>
|
</span>
|
||||||
</div>
|
</div>
|
||||||
|
<QuestionBox
|
||||||
|
:hruid="props.hruid"
|
||||||
|
:language="props.language"
|
||||||
|
:learningObjectHruid="props.learningObjectHruid"
|
||||||
|
:forGroup="forGroup"
|
||||||
|
/>
|
||||||
<QandA :questions="(questionsResponse.data.questions as QuestionDTO[]) ?? []" />
|
<QandA :questions="(questionsResponse.data.questions as QuestionDTO[]) ?? []" />
|
||||||
</using-query-result>
|
</using-query-result>
|
||||||
</using-query-result>
|
</using-query-result>
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue