def register_on_enable(): data_sources.Registry.register(ExamsDataSource) data_sources.Registry.register(PupilsDataSource) data_sources.Registry.register(AnswersDataSource) exams = analytics.Visualization('exams', 'Exams', 'fake_visualizations.html', [ExamsDataSource]) pupils = analytics.Visualization('pupils', 'Pupils', 'fake_visualizations.html', [PupilsDataSource]) scoring = analytics.Visualization( 'scoring', 'Scoring', 'fake_visualizations.html', [ExamsDataSource, PupilsDataSource, AnswersDataSource]) dashboard.DashboardHandler.add_sub_nav_mapping( 'analytics', 'exams', 'Exams', action='analytics_exams', contents=analytics.TabRenderer([exams])) dashboard.DashboardHandler.add_sub_nav_mapping( 'analytics', 'pupils', 'Pupils', action='analytics_pupils', contents=analytics.TabRenderer([pupils])) dashboard.DashboardHandler.add_sub_nav_mapping( 'analytics', 'scoring', 'Scoring', action='analytics_scoring', contents=analytics.TabRenderer([scoring]))
def register_callbacks(): # Update enrollments counters when a student enrolls, unenrolls. models.StudentLifecycleObserver.EVENT_CALLBACKS[ models.StudentLifecycleObserver.EVENT_ADD][ MODULE_NAME] = _count_add models.StudentLifecycleObserver.EVENT_CALLBACKS[ models.StudentLifecycleObserver.EVENT_REENROLL][ MODULE_NAME] = _count_add models.StudentLifecycleObserver.EVENT_CALLBACKS[ models.StudentLifecycleObserver.EVENT_UNENROLL][ MODULE_NAME] = _count_drop models.StudentLifecycleObserver.EVENT_CALLBACKS[ models.StudentLifecycleObserver.EVENT_UNENROLL_COMMANDED][ MODULE_NAME] = _count_drop # Set counters for newly-created courses initially to zero (to avoid # extraneous enrollments MapReduce runs). config.CoursesItemRESTHandler.NEW_COURSE_ADDED_HOOKS[ MODULE_NAME] = _new_course_counts # Delete the corresponding enrollments counters when a course is deleted. config.CourseDeleteHandler.COURSE_DELETED_HOOKS[ MODULE_NAME] = delete_counters # Register analytic to show nice zoomable graph of enroll/unenroll rates. data_sources.Registry.register(EnrollmentsDataSource) visualization = analytics.Visualization( 'enrollments', 'Enrollments', 'templates/enrollments.html', data_source_classes=[EnrollmentsDataSource]) dashboard.DashboardHandler.add_sub_nav_mapping( 'analytics', 'enrollments', 'Enrollments', action='analytics_enrollments', contents=analytics.TabRenderer([visualization]))
def register_analytic(): data_sources.Registry.register(CertificatesEarnedDataSource) name = 'certificates_earned' title = 'Certificates Earned' certificates_earned = analytics.Visualization( name, title, 'certificates_earned.html', data_source_classes=[CertificatesEarnedDataSource]) tabs.Registry.register('analytics', name, title, analytics.TabRenderer([certificates_earned]))
def register_analytic(): data_sources.Registry.register(PeerReviewStatsSource) name = 'peer_review' title = 'Peer Review' peer_review = analytics.Visualization( name, title, 'stats.html', data_source_classes=[PeerReviewStatsSource]) tabs.Registry.register('analytics', name, title, analytics.TabRenderer([peer_review]))
def register_analytic(): data_sources.Registry.register(CertificatesEarnedDataSource) name = 'certificates_earned' title = 'Certificates' certificates_earned = analytics.Visualization( name, title, 'certificates_earned.html', data_source_classes=[CertificatesEarnedDataSource]) dashboard.DashboardHandler.add_sub_nav_mapping( 'analytics', name, title, action='analytics_certificates_earned', contents=analytics.TabRenderer([certificates_earned]))
def register_analytic(): data_sources.Registry.register(NotificationsDataSource) name = 'notifications' title = 'Notifications' visualization = analytics.Visualization( name, title, 'stats.html', data_source_classes=[NotificationsDataSource]) tabs.Registry.register('analytics', name, title, analytics.TabRenderer([visualization]))
def register_on_enable(): data_sources.Registry.register(ExamsDataSource) data_sources.Registry.register(PupilsDataSource) data_sources.Registry.register(AnswersDataSource) exams = analytics.Visualization('exams', 'Exams', 'fake_visualizations.html', [ExamsDataSource]) pupils = analytics.Visualization('pupils', 'Pupils', 'fake_visualizations.html', [PupilsDataSource]) scoring = analytics.Visualization( 'scoring', 'Scoring', 'fake_visualizations.html', [ExamsDataSource, PupilsDataSource, AnswersDataSource]) tabs.Registry.register('analytics', 'exams', 'Exams', analytics.TabRenderer([exams])) tabs.Registry.register('analytics', 'pupils', 'Pupils', analytics.TabRenderer([pupils])) tabs.Registry.register('analytics', 'scoring', 'Scoring', analytics.TabRenderer([scoring]))
def register_analytic(): data_sources.Registry.register(PeerReviewStatsSource) name = 'peer_review' title = 'Peer review' peer_review = analytics.Visualization( name, title, 'stats.html', data_source_classes=[PeerReviewStatsSource]) dashboard.DashboardHandler.add_sub_nav_mapping( 'analytics', name, title, action='analytics_peer_review', contents=analytics.TabRenderer([peer_review]), placement=7000)
def register_analytic(): data_sources.Registry.register(NotificationsDataSource) name = 'notifications' title = 'Notifications' visualization = analytics.Visualization( name, title, 'stats.html', data_source_classes=[NotificationsDataSource]) dashboard.DashboardHandler.add_sub_nav_mapping( 'analytics', name, title, action='analytics_notifications', contents=analytics.TabRenderer([visualization]))
def register_analytic(): """This isn't exactly an analytic, but we register that way to be included with the other analytics sub-tabs on the Dashboard.""" name = 'sample_data' title = 'Generate Sample Data' sample_data = analytics.Visualization( name, title, os.path.join('modules', 'gen_sample_data', 'templates', 'sample_data.html')) dashboard.DashboardHandler.add_sub_nav_mapping( 'analytics', name, title, action='analytics_sample_data', contents=analytics.TabRenderer([sample_data]))
def register_tabs(): multiple_choice_question = analytics.Visualization( 'multiple_choice_question', 'Multiple Choice Question', 'multiple_choice_question.html', data_source_classes=[synchronous_providers.QuestionStatsSource]) student_progress = analytics.Visualization( 'student_progress', 'Student Progress', 'student_progress.html', data_source_classes=[synchronous_providers.StudentProgressStatsSource]) enrollment_assessment = analytics.Visualization( 'enrollment_assessment', 'Enrollment/Assessment', 'enrollment_assessment.html', data_source_classes=[ synchronous_providers.StudentEnrollmentAndScoresSource ]) assessment_difficulty = analytics.Visualization( 'assessment_difficulty', 'Assessment Difficulty', 'assessment_difficulty.html', data_source_classes=[rest_providers.StudentAssessmentScoresDataSource]) labels_on_students = analytics.Visualization( 'labels_on_students', 'Labels on Students', 'labels_on_students.html', data_source_classes=[rest_providers.LabelsOnStudentsDataSource]) question_answers = analytics.Visualization( 'question_answers', 'Question Answers', 'question_answers.html', data_source_classes=[ student_answers.QuestionAnswersDataSource, student_answers.CourseQuestionsDataSource, student_answers.CourseUnitsDataSource ]) gradebook = analytics.Visualization( 'gradebook', 'Gradebook', 'gradebook.html', data_source_classes=[ student_answers.RawAnswersDataSource, student_answers.OrderedQuestionsDataSource ]) clusters_visualization = analytics.Visualization( 'clusters', 'Cluster Manager', 'clustering.html', data_source_classes=[clustering.ClusterDataSource]) student_vectors_visualization = analytics.Visualization( 'student_vectors', 'Student Vectors', 'student_vectors.html', data_source_classes=[clustering.TentpoleStudentVectorDataSource]) stats_visualization = analytics.Visualization( 'clustering_stats', 'Clustering Statistics', 'cluster_stats.html', data_source_classes=[clustering.ClusterStatisticsDataSource]) dashboard.DashboardHandler.add_sub_nav_mapping( ANALYTICS, 'students', 'Students', action='analytics_students', contents=analytics.TabRenderer( [labels_on_students, student_progress, enrollment_assessment]), placement=1000) dashboard.DashboardHandler.add_sub_nav_mapping( ANALYTICS, 'questions', 'Questions', action='analytics_questions', contents=analytics.TabRenderer( [multiple_choice_question, question_answers]), placement=2000) dashboard.DashboardHandler.add_sub_nav_mapping( ANALYTICS, 'assessments', 'Assessments', action='analytics_assessments', contents=analytics.TabRenderer([assessment_difficulty]), placement=3000) dashboard.DashboardHandler.add_sub_nav_mapping( ANALYTICS, 'gradebook', 'Gradebook', action='analytics_gradebook', contents=analytics.TabRenderer([gradebook]), placement=5000) dashboard.DashboardHandler.add_sub_nav_mapping( ANALYTICS, 'clustering', 'Clustering', action='analytics_clustering', contents=analytics.TabRenderer([ clusters_visualization, student_vectors_visualization, stats_visualization ]), placement=8000)