diff --git a/backend/src/services/submissions.ts b/backend/src/services/submissions.ts index 1170bf50..90b245e3 100644 --- a/backend/src/services/submissions.ts +++ b/backend/src/services/submissions.ts @@ -1,12 +1,13 @@ -import { getAssignmentRepository, getGroupRepository, getSubmissionRepository } from '../data/repositories.js'; +import { getSubmissionRepository } from '../data/repositories.js'; import { LearningObjectIdentifier } from '../entities/content/learning-object-identifier.js'; import { NotFoundException } from '../exceptions/not-found-exception.js'; import { mapToSubmission, mapToSubmissionDTO } from '../interfaces/submission.js'; import { SubmissionDTO } from '@dwengo-1/common/interfaces/submission'; import { fetchStudent } from './students.js'; -import { getExistingGroupFromGroupDTO } from './groups.js'; +import { fetchGroup, getExistingGroupFromGroupDTO } from './groups.js'; import { Submission } from '../entities/assignments/submission.entity.js'; import { Language } from '@dwengo-1/common/util/language'; +import { fetchAssignment } from './assignments.js'; export async function fetchSubmission(loId: LearningObjectIdentifier, submissionNumber: number): Promise { const submissionRepository = getSubmissionRepository(); @@ -64,15 +65,18 @@ export async function getSubmissionsForLearningObjectAndAssignment( groupId?: number ): Promise { const loId = new LearningObjectIdentifier(learningObjectHruid, language, version); - const assignment = await getAssignmentRepository().findByClassIdAndAssignmentId(classId, assignmentId); - let submissions: Submission[]; - if (groupId !== undefined) { - const group = await getGroupRepository().findByAssignmentAndGroupNumber(assignment!, groupId); - submissions = await getSubmissionRepository().findAllSubmissionsForLearningObjectAndGroup(loId, group!); - } else { - submissions = await getSubmissionRepository().findAllSubmissionsForLearningObjectAndAssignment(loId, assignment!); + try { + let submissions: Submission[]; + if (groupId !== undefined) { + const group = await fetchGroup(classId, assignmentId, groupId); + submissions = await getSubmissionRepository().findAllSubmissionsForLearningObjectAndGroup(loId, group); + } else { + const assignment = await fetchAssignment(classId, assignmentId); + submissions = await getSubmissionRepository().findAllSubmissionsForLearningObjectAndAssignment(loId, assignment); + } + return submissions.map((s) => mapToSubmissionDTO(s)); + } catch (_) { + return []; } - - return submissions.map((s) => mapToSubmissionDTO(s)); } diff --git a/frontend/src/components/DiscussionsSideBar.vue b/frontend/src/components/DiscussionsSideBar.vue index 5c68e6ac..9c54ced4 100644 --- a/frontend/src/components/DiscussionsSideBar.vue +++ b/frontend/src/components/DiscussionsSideBar.vue @@ -34,19 +34,21 @@ - - - - - +
@@ -67,4 +69,10 @@ padding-top: 2%; font-size: 36px; } + + .nav-scroll-area { + overflow-y: auto; + flex-grow: 1; + min-height: 0; + } diff --git a/frontend/src/controllers/questions.ts b/frontend/src/controllers/questions.ts index 86f4a56d..61d048f5 100644 --- a/frontend/src/controllers/questions.ts +++ b/frontend/src/controllers/questions.ts @@ -14,7 +14,7 @@ export class QuestionController extends BaseController { loId: LearningObjectIdentifierDTO; constructor(loId: LearningObjectIdentifierDTO) { - super(`learningObject/${loId.hruid}/:${loId.version}/questions`); + super(`learningObject/${loId.hruid}/${loId.version}/questions`); this.loId = loId; } diff --git a/frontend/src/views/learning-paths/LearningPathPage.vue b/frontend/src/views/learning-paths/LearningPathPage.vue index c41f6063..a7ac9a51 100644 --- a/frontend/src/views/learning-paths/LearningPathPage.vue +++ b/frontend/src/views/learning-paths/LearningPathPage.vue @@ -13,13 +13,11 @@ import authService from "@/services/auth/auth-service.ts"; import { LearningPathNode } from "@/data-objects/learning-paths/learning-path-node.ts"; import LearningPathGroupSelector from "@/views/learning-paths/LearningPathGroupSelector.vue"; - import { useCreateQuestionMutation, useQuestionsQuery } from "@/queries/questions"; + import { useQuestionsQuery } from "@/queries/questions"; import type { QuestionsResponse } from "@/controllers/questions"; import type { LearningObjectIdentifierDTO } from "@dwengo-1/common/interfaces/learning-content"; import QandA from "@/components/QandA.vue"; 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 QuestionBox from "@/components/QuestionBox.vue"; import { AccountType } from "@dwengo-1/common/util/account-types"; @@ -147,19 +145,6 @@ }); } - const studentAssignmentsQueryResult = useStudentAssignmentsQuery( - authService.authState.user?.profile.preferred_username, - ); - - const loID: LearningObjectIdentifierDTO = { - hruid: props.learningObjectHruid as string, - language: props.language, - }; - const createQuestionMutation = useCreateQuestionMutation(loID); - const groupsQueryResult = useStudentGroupsQuery(authService.authState.user?.profile.preferred_username); - - const questionInput = ref(""); - const discussionLink = computed( () => "/discussion" + @@ -229,7 +214,7 @@ -
+