WIP: Fix types, allow filter for user in stats

This commit is contained in:
Christian Cueni 2024-04-08 14:22:33 +02:00
parent d417cf5fe3
commit 89fc3a8deb
4 changed files with 19 additions and 10 deletions

View File

@ -13,7 +13,11 @@ import CourseDetailDates from "@/components/dashboard/CourseDetailDates.vue";
import NoCourseSession from "@/components/dashboard/NoCourseSession.vue"; import NoCourseSession from "@/components/dashboard/NoCourseSession.vue";
import MentorPage from "@/pages/dashboard/MentorPage.vue"; import MentorPage from "@/pages/dashboard/MentorPage.vue";
import CoursePanel from "@/components/dashboard/CoursePanel.vue"; import CoursePanel from "@/components/dashboard/CoursePanel.vue";
import { DashboardConfigType, fetchDashboardConfigv2 } from "@/services/dashboard"; import {
DashboardConfigType,
DashboardCourseConfigType,
fetchDashboardConfigv2,
} from "@/services/dashboard";
const dashboardStore = useDashboardStore(); const dashboardStore = useDashboardStore();
@ -30,7 +34,7 @@ const boards: Record<DashboardType, DashboardPage> = {
PRAXISBILDNER_DASHBOARD: { main: CoursePanel, aside: SimpleDates }, PRAXISBILDNER_DASHBOARD: { main: CoursePanel, aside: SimpleDates },
}; };
const dashboardConfigv2: Ref<DashboardConfigType[]> = ref([]); const dashboardConfigv2: Ref<DashboardCourseConfigType[]> = ref([]);
onMounted(async () => { onMounted(async () => {
dashboardConfigv2.value = await fetchDashboardConfigv2(); dashboardConfigv2.value = await fetchDashboardConfigv2();
@ -74,7 +78,9 @@ function newDashboardConfigForId(id: string) {
dashboardStore.currentDashboardConfig.dashboard_type === dashboardStore.currentDashboardConfig.dashboard_type ===
'PRAXISBILDNER_DASHBOARD' 'PRAXISBILDNER_DASHBOARD'
" "
:course-config="dashboardStore.currentDashboardConfig" :course-config="
newDashboardConfigForId(dashboardStore.currentDashboardConfig.id)
"
/> />
<component <component
:is="boards[dashboardStore.currentDashboardConfig.dashboard_type].main" :is="boards[dashboardStore.currentDashboardConfig.dashboard_type].main"

View File

@ -55,7 +55,7 @@ export type DashboardPersonType = {
course_sessions: DashboardPersonCourseSessionType[]; course_sessions: DashboardPersonCourseSessionType[];
}; };
export type DashboardConfigType = { export type DashboardCourseConfigType = {
course_id: string; course_id: string;
course_slug: string; course_slug: string;
course_title: string; course_title: string;
@ -143,5 +143,5 @@ export async function fetchDashboardPersons() {
} }
export async function fetchDashboardConfigv2() { export async function fetchDashboardConfigv2() {
return await itGetCached<DashboardConfigType[]>("/api/dashboard/config/"); return await itGetCached<DashboardCourseConfigType[]>("/api/dashboard/config/");
} }

View File

@ -85,10 +85,13 @@ def get_assignment_completion_metrics(
assignment: vbv_lernwelt.assignment.models.Assignment, assignment: vbv_lernwelt.assignment.models.Assignment,
user_selection_ids: List[str] | None, user_selection_ids: List[str] | None,
) -> AssignmentCompletionMetricsType: ) -> AssignmentCompletionMetricsType:
course_session_users = CourseSessionUser.objects.filter( if user_selection_ids:
course_session=course_session, course_session_users = user_selection_ids
role=CourseSessionUser.Role.MEMBER, else:
).values_list("user", flat=True) course_session_users = CourseSessionUser.objects.filter(
course_session=course_session,
role=CourseSessionUser.Role.MEMBER,
).values_list("user", flat=True)
evaluation_results = AssignmentCompletion.objects.filter( evaluation_results = AssignmentCompletion.objects.filter(
completion_status=AssignmentCompletionStatus.EVALUATION_SUBMITTED.value, completion_status=AssignmentCompletionStatus.EVALUATION_SUBMITTED.value,

View File

@ -79,7 +79,7 @@ class ProgressDashboardAssignmentType(graphene.ObjectType):
points_achieved_count = graphene.Int(required=True) points_achieved_count = graphene.Int(required=True)
class öCourseProgressType(graphene.ObjectType): class CourseProgressType(graphene.ObjectType):
_id = graphene.ID(required=True) _id = graphene.ID(required=True)
course_id = graphene.ID(required=True) course_id = graphene.ID(required=True)
session_to_continue_id = graphene.ID(required=False) session_to_continue_id = graphene.ID(required=False)