import React from "react"; import { DataTable } from "primereact/datatable"; import { Column } from "primereact/column"; import useWindowWidth from "@/hooks/useWindowWidth"; import ProgressListItem from "@/components/content/lists/ProgressListItem"; import { formatDateTime } from "@/utils/time"; import { ProgressSpinner } from "primereact/progressspinner"; const UserProgressTable = ({ session, ndk }) => { const windowWidth = useWindowWidth(); const prepareProgressData = () => { if (!session?.user?.userCourses) return []; const progressData = []; session.user.userCourses.forEach(courseProgress => { // Add course start entry if (courseProgress.started) { progressData.push({ id: `${courseProgress.id}-start`, type: 'course', name: courseProgress.course?.name, eventType: 'started', date: courseProgress.startedAt, courseId: courseProgress.courseId }); } // Add course completion entry if (courseProgress.completed) { progressData.push({ id: `${courseProgress.id}-complete`, type: 'course', name: courseProgress.course?.name, eventType: 'completed', date: courseProgress.completedAt, courseId: courseProgress.courseId }); } // Add lesson entries const courseLessons = session.user.userLessons?.filter( lesson => lesson.lesson?.courseId === courseProgress.courseId ) || []; courseLessons.forEach(lessonProgress => { // Add lesson start entry if (lessonProgress.opened) { progressData.push({ id: `${lessonProgress.id}-start`, type: 'lesson', name: lessonProgress.lesson?.name, eventType: 'started', date: lessonProgress.openedAt, courseId: courseProgress.courseId, lessonId: lessonProgress.lessonId, resourceId: lessonProgress.lesson?.resourceId }); } // Add lesson completion entry if (lessonProgress.completed) { progressData.push({ id: `${lessonProgress.id}-complete`, type: 'lesson', name: lessonProgress.lesson?.name, eventType: 'completed', date: lessonProgress.completedAt, courseId: courseProgress.courseId, lessonId: lessonProgress.lessonId, resourceId: lessonProgress.lesson?.resourceId }); } }); }); // Sort by date, most recent first return progressData.sort((a, b) => new Date(b.date) - new Date(a.date)); }; const header = (