From 27b8f01ffac2e8aa47e499e8ac0a5846e5b68227 Mon Sep 17 00:00:00 2001 From: JM Van Thong Date: Fri, 7 Dec 2012 17:26:33 -0500 Subject: [PATCH] Added the following analyzers: StudentsActive, OverallGradeDistribution, StudentsDropoffPerDay. --- lms/djangoapps/instructor/views.py | 43 +++++++++---- .../courseware/instructor_dashboard.html | 63 ++++++++++++++----- 2 files changed, 80 insertions(+), 26 deletions(-) diff --git a/lms/djangoapps/instructor/views.py b/lms/djangoapps/instructor/views.py index f638d55f61..5c743561a9 100644 --- a/lms/djangoapps/instructor/views.py +++ b/lms/djangoapps/instructor/views.py @@ -274,36 +274,52 @@ def instructor_dashboard(request, course_id): analytics_json = None students_enrolled_json = None + students_active_json = None daily_activity_json = None students_daily_activity_json = None students_per_problem_correct_json = None + overall_grade_distribution = None + dropoff_per_day = None if idash_mode == 'Analytics': - req = requests.get(settings.ANALYTICS_SERVER_URL + "get_analytics?aname=StudentsPerHomework&course_id=%s" % course_id) - analytics_json = req.json - # get the day + # get current day to_day = datetime.today().date() from_day = to_day - timedelta(days=7) - # number of students active in the past 7 days (including current day) - req = requests.get(settings.ANALYTICS_SERVER_URL + "get_analytics?aname=StudentsDailyActivity&course_id=%s&from=%s" % (course_id,from_day)) - students_daily_activity_json = req.json - - # number of students per problem who have problem graded correct - req = requests.get(settings.ANALYTICS_SERVER_URL + "get_analytics?aname=StudentsPerProblemCorrect&course_id=%s&from=%s" % (course_id,from_day)) - students_per_problem_correct_json = req.json - # number of students enrolled in this course req = requests.get(settings.ANALYTICS_SERVER_URL + "get_analytics?aname=StudentsEnrolled&course_id=%s" % course_id) students_enrolled_json = req.json - # number of students active in the past 7 days (including current day) --- online version! + # number of students active in the past 7 days (including current day), i.e. with at least one activity for the period + req = requests.get(settings.ANALYTICS_SERVER_URL + "get_analytics?aname=StudentsActive&course_id=%s&from=%s" % (course_id,from_day)) + students_active_json = req.json + + # number of students per problem who have problem graded correct + req = requests.get(settings.ANALYTICS_SERVER_URL + "get_analytics?aname=StudentsPerProblemCorrect&course_id=%s&from=%s" % (course_id,from_day)) + students_per_problem_correct_json = req.json + + # grade distribution for the course + req = requests.get(settings.ANALYTICS_SERVER_URL + "get_analytics?aname=OverallGradeDistribution&course_id=%s" % (course_id,)) + overall_grade_distribution = req.json + + # number of students distribution drop off per day + req = requests.get(settings.ANALYTICS_SERVER_URL + "get_analytics?aname=StudentsDropoffPerDay&course_id=%s&from=%s" % (course_id,from_day)) + dropoff_per_day = req.json + + # the following is ++incorrect++ use of studentmodule table + req = requests.get(settings.ANALYTICS_SERVER_URL + "get_analytics?aname=StudentsDailyActivity&course_id=%s&from=%s" % (course_id,from_day)) + students_daily_activity_json = req.json + + # number of students active in the past 7 days (including current day) --- online version! experimental to_day = datetime.today().date() from_day = to_day - timedelta(days=7) req = requests.get(settings.ANALYTICS_SERVER_URL + "get_analytics?aname=DailyActivityAnalyzer&course_id=%s&from=%s&to=%s" % (course_id,from_day, to_day)) daily_activity_json = req.json + req = requests.get(settings.ANALYTICS_SERVER_URL + "get_analytics?aname=StudentsPerHomework&course_id=%s" % course_id) + analytics_json = req.json + #---------------------------------------- # context for rendering context = {'course': course, @@ -320,9 +336,12 @@ def instructor_dashboard(request, course_id): 'djangopid' : os.getpid(), 'analytics_json' : analytics_json, 'students_enrolled_json' : students_enrolled_json, + 'students_active_json' : students_active_json, 'daily_activity_json' : daily_activity_json, 'students_daily_activity_json' : students_daily_activity_json, 'students_per_problem_correct_json' : students_per_problem_correct_json, + 'overall_grade_distribution' : overall_grade_distribution, + 'dropoff_per_day' : dropoff_per_day, } return render_to_response('courseware/instructor_dashboard.html', context) diff --git a/lms/templates/courseware/instructor_dashboard.html b/lms/templates/courseware/instructor_dashboard.html index f15647ccd2..b06eb43944 100644 --- a/lms/templates/courseware/instructor_dashboard.html +++ b/lms/templates/courseware/instructor_dashboard.html @@ -176,23 +176,16 @@ function goto( mode) ##----------------------------------------------------------------------------- %if modeflag.get('Analytics'): -

Number of students enrolled: ${students_enrolled_json['data']['nb_students_enrolled']} +

+ Number of students enrolled: ${students_enrolled_json['data']['nb_students_enrolled']} +

+

+ Number of active students for the past 7 days: ${students_active_json['data']['nb_students_active']}

-

Daily activity for the past 7 days:

- - - % for k,v in students_daily_activity_json['data'].items(): - - - - % endfor -
DayNumber of students
${k} ${v}
-

+

Number of active students per problems who have this problem graded as correct:

-

-

Number of students with correct problems for the past 7 days:

% for k,v in students_per_problem_correct_json['data'].items(): @@ -204,7 +197,38 @@ function goto( mode)

-

Students who attempted at least one exercise:

+

Grade distribution:

+ +
+
ProblemNumber of students
+ + % for k,v in overall_grade_distribution['data'].items(): + + + + % endfor +
GradeNumber of students
${k} ${v}
+ + +

+ +

+

Number of students who dropped off per day before becoming inactive:

+ +
+ + + % for k,v in dropoff_per_day['data'].items(): + + + + % endfor +
DayNumber of students
${k} ${v}
+
+

+ +

+

Students who attempted at least one exercise:

@@ -231,6 +255,17 @@ function goto( mode)

+

+

Daily activity for the past 7 days:

+ + + % for k,v in students_daily_activity_json['data'].items(): + + + + % endfor +
DayNumber of students
${k} ${v}
+

%endif