fix: maak questions zichtbaar enkel voor groep
This commit is contained in:
parent
f6c2f71edb
commit
f85abea6f3
3 changed files with 55 additions and 21 deletions
|
@ -18,6 +18,10 @@ export class QuestionController extends BaseController {
|
||||||
this.loId = loId;
|
this.loId = loId;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
async getAllGroup(classId: string, assignmentId: string, forStudent: string, full = true): Promise<QuestionsResponse> {
|
||||||
|
return this.get<QuestionsResponse>("/", { lang: this.loId.language, full, classId, assignmentId, forStudent });
|
||||||
|
}
|
||||||
|
|
||||||
async getAll(full = true): Promise<QuestionsResponse> {
|
async getAll(full = true): Promise<QuestionsResponse> {
|
||||||
return this.get<QuestionsResponse>("/", { lang: this.loId.language, full });
|
return this.get<QuestionsResponse>("/", { lang: this.loId.language, full });
|
||||||
}
|
}
|
||||||
|
|
|
@ -17,6 +17,16 @@ export function questionsQueryKey(
|
||||||
return ["questions", loId.hruid, loId.version!, loId.language, full];
|
return ["questions", loId.hruid, loId.version!, loId.language, full];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export function questionsGroupQueryKey(
|
||||||
|
loId: LearningObjectIdentifierDTO,
|
||||||
|
classId: string,
|
||||||
|
assignmentId: string,
|
||||||
|
student: string,
|
||||||
|
full: boolean,
|
||||||
|
): [string, string, number, string, boolean] {
|
||||||
|
return ["questions", loId.hruid, loId.version!, loId.language, full, classId, assignmentId, student];
|
||||||
|
}
|
||||||
|
|
||||||
export function questionQueryKey(questionId: QuestionId): [string, string, number, string, number] {
|
export function questionQueryKey(questionId: QuestionId): [string, string, number, string, number] {
|
||||||
const loId = questionId.learningObjectIdentifier;
|
const loId = questionId.learningObjectIdentifier;
|
||||||
return ["question", loId.hruid, loId.version!, loId.language, questionId.sequenceNumber];
|
return ["question", loId.hruid, loId.version!, loId.language, questionId.sequenceNumber];
|
||||||
|
@ -33,6 +43,20 @@ export function useQuestionsQuery(
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export function useQuestionsGroupQuery(
|
||||||
|
loId: MaybeRefOrGetter<LearningObjectIdentifierDTO>,
|
||||||
|
classId: MaybeRefOrGetter<string>,
|
||||||
|
assignmentId: MaybeRefOrGetter<string>,
|
||||||
|
student: MaybeRefOrGetter<string>,
|
||||||
|
full: MaybeRefOrGetter<boolean> = true,
|
||||||
|
): UseQueryReturnType<QuestionsResponse, Error> {
|
||||||
|
return useQuery({
|
||||||
|
queryKey: computed(() => questionsGroupQueryKey(toValue(loId), toValue(full), toValue(classId), toValue(assignmentId), toValue(student))),
|
||||||
|
queryFn: async () => new QuestionController(toValue(loId)).getAllGroup( toValue(classId), toValue(assignmentId), toValue(student),toValue(full)),
|
||||||
|
enabled: () => Boolean(toValue(loId)),
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
export function useQuestionQuery(
|
export function useQuestionQuery(
|
||||||
questionId: MaybeRefOrGetter<QuestionId>,
|
questionId: MaybeRefOrGetter<QuestionId>,
|
||||||
): UseQueryReturnType<QuestionResponse, Error> {
|
): UseQueryReturnType<QuestionResponse, Error> {
|
||||||
|
|
|
@ -13,13 +13,11 @@
|
||||||
import authService from "@/services/auth/auth-service.ts";
|
import authService from "@/services/auth/auth-service.ts";
|
||||||
import { LearningPathNode } from "@/data-objects/learning-paths/learning-path-node.ts";
|
import { LearningPathNode } from "@/data-objects/learning-paths/learning-path-node.ts";
|
||||||
import LearningPathGroupSelector from "@/views/learning-paths/LearningPathGroupSelector.vue";
|
import LearningPathGroupSelector from "@/views/learning-paths/LearningPathGroupSelector.vue";
|
||||||
import { useCreateQuestionMutation, useQuestionsQuery } from "@/queries/questions";
|
import {useQuestionsGroupQuery, useQuestionsQuery} from "@/queries/questions";
|
||||||
import type { QuestionsResponse } from "@/controllers/questions";
|
import type { QuestionsResponse } from "@/controllers/questions";
|
||||||
import type { LearningObjectIdentifierDTO } from "@dwengo-1/common/interfaces/learning-content";
|
import type { LearningObjectIdentifierDTO } from "@dwengo-1/common/interfaces/learning-content";
|
||||||
import QandA from "@/components/QandA.vue";
|
import QandA from "@/components/QandA.vue";
|
||||||
import type { QuestionDTO } from "@dwengo-1/common/interfaces/question";
|
import type { QuestionDTO } from "@dwengo-1/common/interfaces/question";
|
||||||
import { useStudentAssignmentsQuery, useStudentGroupsQuery } from "@/queries/students";
|
|
||||||
import type { AssignmentDTO } from "@dwengo-1/common/interfaces/assignment";
|
|
||||||
import QuestionNotification from "@/components/QuestionNotification.vue";
|
import QuestionNotification from "@/components/QuestionNotification.vue";
|
||||||
import QuestionBox from "@/components/QuestionBox.vue";
|
import QuestionBox from "@/components/QuestionBox.vue";
|
||||||
import { AccountType } from "@dwengo-1/common/util/account-types";
|
import { AccountType } from "@dwengo-1/common/util/account-types";
|
||||||
|
@ -78,16 +76,32 @@
|
||||||
return currentIndex < nodesList.value?.length ? nodesList.value?.[currentIndex - 1] : undefined;
|
return currentIndex < nodesList.value?.length ? nodesList.value?.[currentIndex - 1] : undefined;
|
||||||
});
|
});
|
||||||
|
|
||||||
const getQuestionsQuery = useQuestionsQuery(
|
|
||||||
computed(
|
|
||||||
() =>
|
let getQuestionsQuery;
|
||||||
({
|
|
||||||
language: currentNode.value?.language,
|
|
||||||
hruid: currentNode.value?.learningobjectHruid,
|
|
||||||
version: currentNode.value?.version,
|
if (authService.authState.activeRole === AccountType.Student) {
|
||||||
}) as LearningObjectIdentifierDTO,
|
getQuestionsQuery = useQuestionsGroupQuery(
|
||||||
),
|
computed(() => ({
|
||||||
);
|
language: currentNode.value?.language,
|
||||||
|
hruid: currentNode.value?.learningobjectHruid,
|
||||||
|
version: currentNode.value?.version,
|
||||||
|
}) as LearningObjectIdentifierDTO),
|
||||||
|
computed(() => query.value.classId ?? ""),
|
||||||
|
computed(() => query.value.assignmentNo ?? ""),
|
||||||
|
computed(() => authService.authState.user?.profile.preferred_username ?? "")
|
||||||
|
);
|
||||||
|
} else {
|
||||||
|
getQuestionsQuery = useQuestionsQuery(
|
||||||
|
computed(() => ({
|
||||||
|
language: currentNode.value?.language,
|
||||||
|
hruid: currentNode.value?.learningobjectHruid,
|
||||||
|
version: currentNode.value?.version,
|
||||||
|
}) as LearningObjectIdentifierDTO)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
const navigationDrawerShown = ref(true);
|
const navigationDrawerShown = ref(true);
|
||||||
|
|
||||||
|
@ -147,18 +161,10 @@
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
const studentAssignmentsQueryResult = useStudentAssignmentsQuery(
|
|
||||||
authService.authState.user?.profile.preferred_username,
|
|
||||||
);
|
|
||||||
|
|
||||||
const loID: LearningObjectIdentifierDTO = {
|
const loID: LearningObjectIdentifierDTO = {
|
||||||
hruid: props.learningObjectHruid as string,
|
hruid: props.learningObjectHruid as string,
|
||||||
language: props.language,
|
language: props.language,
|
||||||
};
|
};
|
||||||
const createQuestionMutation = useCreateQuestionMutation(loID);
|
|
||||||
const groupsQueryResult = useStudentGroupsQuery(authService.authState.user?.profile.preferred_username);
|
|
||||||
|
|
||||||
const questionInput = ref("");
|
|
||||||
|
|
||||||
const discussionLink = computed(
|
const discussionLink = computed(
|
||||||
() =>
|
() =>
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue