WIP: Fix types, allow filter for user in stats
This commit is contained in:
parent
d417cf5fe3
commit
89fc3a8deb
|
|
@ -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"
|
||||||
|
|
|
||||||
|
|
@ -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/");
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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,
|
||||||
|
|
|
||||||
|
|
@ -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)
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue