feat(dashboard,diagnostic,elective): add widgets, layout, parent dashboard, role-config, services, elective components

dashboard:

- Add comparison-badge, dashboard-notification-widget, dashboard-responsive-layout, dashboard-time-range-filter

- Add parent-dashboard components directory

- Add config, hooks, and services directories

diagnostic:

- Add role-config and services directory

elective:

- Add elective-course-detail, elective-stats-cards, parent-selection-view components

- Add data-access-settings and data-access-stats
This commit is contained in:
SpecialX
2026-07-03 10:25:46 +08:00
parent dfffb61e94
commit 138b6f1b00
58 changed files with 3313 additions and 695 deletions

View File

@@ -8,10 +8,9 @@ import { getClassSchedule, getStudentClasses, getStudentSchedule, getTeacherClas
import {
getHomeworkAssignments,
getHomeworkSubmissions,
getStudentDashboardGrades,
getStudentHomeworkAssignments,
getTeacherGradeTrends,
} from "@/modules/homework/data-access"
import { getStudentHomeworkAssignments } from "@/modules/homework/data-access-student"
import { getStudentDashboardGrades, getTeacherGradeTrends } from "@/modules/homework/stats-service"
import { getCurrentStudentUser, getUserBasicInfo } from "@/modules/users/data-access"
import { getParentDashboardData } from "@/modules/parent/data-access"
@@ -19,7 +18,6 @@ import { getAdminDashboardData } from "./data-access"
import type {
AdminDashboardData,
StudentDashboardProps,
StudentTodayScheduleItem,
TeacherDashboardData,
} from "./types"
import type { ParentDashboardData } from "@/modules/parent/types"
@@ -82,7 +80,7 @@ export async function getTeacherDashboardAction(): Promise<ActionState<TeacherDa
schedule,
assignments,
submissions,
teacherName: teacherProfile?.name ?? "Teacher",
teacherName: teacherProfile?.name ?? "",
gradeTrends,
metrics,
},
@@ -117,7 +115,7 @@ export async function getStudentDashboardAction(): Promise<ActionState<{
const now = new Date()
const stats = countStudentAssignments(assignments, now)
const todayWeekday = toWeekday(now)
const todayScheduleItems = filterTodaySchedule<StudentTodayScheduleItem>(schedule, todayWeekday)
const todayScheduleItems = filterTodaySchedule(schedule, todayWeekday)
const upcomingAssignments = sortUpcomingAssignments(assignments, 6)
return {