UNPKG

@memberjunction/actions-bizapps-lms

Version:

LMS system integration actions for MemberJunction

151 lines 4 kB
import { LearnWorldsBaseAction } from '../learnworlds-base.action'; import { ActionParam, ActionResultSimple, RunActionParams } from '@memberjunction/actions-base'; /** * Interface for user progress in a course */ export interface CourseProgress { courseId: string; courseTitle: string; enrollmentId: string; enrolledAt: Date; lastAccessedAt?: Date; progressPercentage: number; completedUnits: number; totalUnits: number; completedLessons: number; totalLessons: number; totalTimeSpent: number; averageSessionTime: number; estimatedTimeToComplete?: number; quizScoreAverage?: number; assignmentsCompleted?: number; assignmentsTotal?: number; currentGrade?: number; status: 'not_started' | 'in_progress' | 'completed' | 'expired'; completedAt?: Date; expiresAt?: Date; certificateEarned: boolean; certificateUrl?: string; unitProgress?: UnitProgress[]; } /** * Interface for progress within a course unit/module */ export interface UnitProgress { unitId: string; unitTitle: string; unitType: 'section' | 'chapter' | 'module'; order: number; progressPercentage: number; completedLessons: number; totalLessons: number; timeSpent: number; status: 'not_started' | 'in_progress' | 'completed'; startedAt?: Date; completedAt?: Date; lessons?: LessonProgress[]; } /** * Interface for individual lesson progress */ export interface LessonProgress { lessonId: string; lessonTitle: string; lessonType: 'video' | 'text' | 'quiz' | 'assignment' | 'scorm' | 'interactive'; order: number; completed: boolean; progressPercentage: number; timeSpent: number; startedAt?: Date; completedAt?: Date; lastAccessedAt?: Date; videoWatchTime?: number; videoTotalTime?: number; quizScore?: number; quizMaxScore?: number; quizAttempts?: number; assignmentSubmitted?: boolean; assignmentGrade?: number; } /** * Interface for overall user learning progress */ export interface UserLearningProgress { userId: string; userEmail: string; totalCourses: number; coursesCompleted: number; coursesInProgress: number; coursesNotStarted: number; overallProgressPercentage: number; totalTimeSpent: number; totalCertificatesEarned: number; averageQuizScore?: number; courses: CourseProgress[]; learningStreak?: number; lastLearningDate?: Date; mostActiveDay?: string; preferredLearningTime?: string; } /** * Action to retrieve detailed progress information for a LearnWorlds user */ export declare class GetLearnWorldsUserProgressAction extends LearnWorldsBaseAction { /** * Description of the action */ get Description(): string; /** * Main execution method */ protected InternalRunAction(params: RunActionParams): Promise<ActionResultSimple>; /** * Get progress for a specific course */ private getCourseProgress; /** * Get progress for all user courses */ private getAllCoursesProgress; /** * Map course progress data */ private mapCourseProgress; /** * Map unit progress data */ private mapUnitProgress; /** * Map lesson progress data */ private mapLessonProgress; /** * Determine course status from data */ private determineCourseStatus; /** * Determine unit status */ private determineUnitStatus; /** * Map lesson type */ private mapLessonType; /** * Calculate estimated time to complete */ private calculateEstimatedTimeToComplete; /** * Calculate learning analytics */ private calculateLearningAnalytics; /** * Create progress summary */ private createProgressSummary; /** * Define the parameters for this action */ get Params(): ActionParam[]; } //# sourceMappingURL=get-user-progress.action.d.ts.map