## NOTE: This is the template for the LEGACY instructor dashboard ## ## We are no longer supporting this file or accepting changes into it. ## ## Please see lms/templates/instructor for instructor dashboard templates ## <%! from django.utils.translation import ugettext as _ %> <%! from django.core.urlresolvers import reverse %> <%inherit file="../main.html" /> <%namespace name='static' file='/static_content.html'/> <%block name="pagetitle">${_("Legacy Instructor Dashboard")} <%block name="nav_skip">#instructor-dashboard-content <%block name="headextra"> <%static:css group='style-course-vendor'/> <%static:css group='style-vendor-tinymce-content'/> <%static:css group='style-vendor-tinymce-skin'/> <%static:css group='style-course'/> <%static:js group='module-descriptor-js'/> %if instructor_tasks is not None: %endif <%include file="/courseware/course_navigation.html" args="active_page='instructor'" />

${_("Legacy Instructor Dashboard")}

%if settings.FEATURES.get('IS_EDX_DOMAIN', False): ## Only show this banner on the edx.org website (other sites may choose to show this if they wish)

${_("You are using the legacy instructor dashboard, which we will retire in the near future.")} ${_("Return to the Instructor Dashboard")}

${_("If the Instructor Dashboard is missing functionality, please contact your PM to let us know.")}

%endif
##----------------------------------------------------------------------------- %if modeflag.get('Grades'): %if offline_grade_log:

Pre-computed grades ${offline_grade_log} available: Use?

%endif

${_("Grade Downloads")}

% if disable_buttons:

${_("Note: some of these buttons are known to time out for larger " "courses. We have disabled those features for courses " "with more than {max_enrollment} students.").format( max_enrollment=settings.FEATURES['MAX_ENROLLMENT_INSTR_BUTTONS'] )}

% endif

%if not settings.FEATURES.get('ENABLE_ASYNC_ANSWER_DISTRIBUTION'): %endif

${_("To download student grades and view the grading configuration for your course, visit the Data Download section of the Instructor Dashboard.")}

${_("To view the Gradebook (only available for courses with a small number of enrolled students), visit the Student Admin section of the Instructor Dashboard.")}


%if settings.FEATURES.get('REMOTE_GRADEBOOK_URL','') and instructor_access: <% rg = course.remote_gradebook %>

${_("Export grades to remote gradebook")}

${_("The assignments defined for this course should match the ones stored in the gradebook, for this to work properly!")}

  • ${_("Gradebook name:")} ${rg.get('name','None defined!')}





  • ${_("Assignment name:")}


%endif %if settings.FEATURES.get('ENABLE_INSTRUCTOR_BACKGROUND_TASKS'):

${_("Course-specific grade adjustment")}

${_("To perform these actions, visit the Student Admin section of the Instructor Dashboard.")}

%endif

${_("Student-specific grade inspection and adjustment")}

${_("To perform these actions, visit the Student Admin section of the Instructor Dashboard.")}

%endif ##----------------------------------------------------------------------------- %if modeflag.get('Psychometrics'):

${_("Select a problem and an action:")}

%endif ##----------------------------------------------------------------------------- %if modeflag.get('Admin'): %if instructor_access or admin_access:

${_("To add or remove course staff or instructors, visit the Membership section of the Instructor Dashboard.")}

%endif %if settings.FEATURES['ENABLE_MANUAL_GIT_RELOAD'] and admin_access:

%endif %endif ##----------------------------------------------------------------------------- %if modeflag.get('Forum Admin'):

${_("To manage forum roles, visit the Membership section of the Instructor Dashboard.")}

%endif ##----------------------------------------------------------------------------- %if modeflag.get('Enrollment'):

${_("Enrollment Data")}

% if disable_buttons:

${_("Note: some of these buttons are known to time out for larger " "courses. We have disabled those features for courses " "with more than {max_enrollment} students.").format( max_enrollment=settings.FEATURES['MAX_ENROLLMENT_INSTR_BUTTONS'] )}

% endif
%if settings.FEATURES.get('REMOTE_GRADEBOOK_URL','') and instructor_access: <% rg = course.remote_gradebook %>

${_("Pull enrollment from remote gradebook")}

  • ${_("Gradebook name:")} ${rg.get('name','None defined!')}
  • ${_("Section:")}

%endif %endif ##----------------------------------------------------------------------------- %if modeflag.get('Data'):

${_("Problem urlname:")}

${_("To download student profile data and anonymized IDs, visit the Data Download section of the Instructor Dashboard.")}


%endif ##----------------------------------------------------------------------------- %if modeflag.get('Manage Groups'): %if instructor_access: %if course.is_cohorted:

${_("To manage beta tester roles and cohorts, visit the Membership section of the Instructor Dashboard.")}

%else:

${_("To manage beta tester roles, visit the Membership section of the Instructor Dashboard.")}

%endif %endif %endif ##----------------------------------------------------------------------------- %if modeflag.get('Email'):

${_("To send email, visit the Email section of the Instructor Dashboard.")}

%endif
##----------------------------------------------------------------------------- %if msg:

${msg}

%endif ##----------------------------------------------------------------------------- %if modeflag.get('Analytics'): %if not any(analytics_results.values()):

${_("No Analytics are available at this time.")}

%endif %if analytics_results.get("StudentsDropoffPerDay"):

${_("Student activity day by day")} (${analytics_results["StudentsDropoffPerDay"]['time']})

%for row in analytics_results['StudentsDropoffPerDay']['data']: ## For now, just discard the non-date portion %endfor
${_("Day")} ${_("Students")}
${row['last_day'].split("T")[0]} ${row['num_students']}
%endif
%if analytics_results.get("ProblemGradeDistribution"):

${_("Score distribution for problems")} (${analytics_results["ProblemGradeDistribution"]['time']})

%for row in analytics_results['ProblemGradeDistribution']['data']: %endfor %endfor
${_("Problem")} ${_("Max")} ${_("Points Earned (Num Students)")}
${row['block_id']} ${max(grade_record['max_grade'] for grade_record in row["grade_info"])} %for grade_record in row["grade_info"]: %if isinstance(grade_record["grade"], float): ${"{grade:.2f}".format(**grade_record)} %else: ${"{grade}".format(**grade_record)} %endif (${grade_record["num_students"]})
%endif %endif %if modeflag.get('Metrics'): %if not any (metrics_results.values()):

${_("There is no data available to display at this time.")}

%else: <%namespace name="d3_stacked_bar_graph" file="/class_dashboard/d3_stacked_bar_graph.js"/> <%namespace name="all_section_metrics" file="/class_dashboard/all_section_metrics.js"/>

${_("Loading the latest graphs for you; depending on your class size, this may take a few minutes.")}

%for i in range(0,len(metrics_results['section_display_name'])):

${_("Section:")} ${metrics_results['section_display_name'][i]}

${_("Count of Students that Opened a Subsection")}

${_("Loading")}

${_("Grade Distribution per Problem")}

%if not metrics_results['section_has_problem'][i]:

${_("There are no problems in this section.")}

%else:

${_("Loading")}

%endif
%endfor %endif %endif %if modeflag.get('Analytics In Progress'): ##This is not as helpful as it could be -- let's give full point distribution ##instead. %if analytics_results.get("StudentsPerProblemCorrect"):

${_("Students answering correctly")} (${analytics_results["StudentsPerProblemCorrect"]['time']})

%for row in analytics_results['StudentsPerProblemCorrect']['data']: %endfor
${_("Problem")} ${_("Number of students")}
${row['module_id'].split('/')[-1]} ${row['count']}
%endif

${_("Student distribution per country, all courses, Sep 12 to Oct 17, 1 server (shown here as an example):")}

##

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

## ## % if dropoff_per_day is not None: ## % if dropoff_per_day['status'] == 'success': ##
## ## ## % for k,v in dropoff_per_day['data'].items(): ## ## % endfor ##
DayNumber of students
${k} ${v}
##
## % else: ## ${dropoff_per_day['error']} ## % endif ## % else: ## null data ## % endif ##

## ##

##

Daily activity (online version):

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

%endif ##----------------------------------------------------------------------------- %if datatable and modeflag.get('Psychometrics') is None:


${datatable['title'] | h}

%for hname in datatable['header']: %endfor %for row in datatable['data']: %for value in row: %endfor %endfor
${hname | h}
${value | h}

%endif ## Output tasks in progress %if instructor_tasks is not None and len(instructor_tasks) > 0:

${_("Pending Instructor Tasks")}

%for tasknum, instructor_task in enumerate(instructor_tasks): %endfor
${_("Task Type")} ${_("Task inputs")} ${_("Task Id")} ${_("Requester")} ${_("Submitted")} ${_("Task State")} ${_("Duration (sec)")} ${_("Task Progress")}
${instructor_task.task_type} ${instructor_task.task_input} ${instructor_task.task_id} ${instructor_task.requester} ${instructor_task.created} ${instructor_task.task_state} ${_("unknown")} ${_("unknown")}

%endif ##----------------------------------------------------------------------------- %if modeflag.get('Admin') and course_stats:


${course_stats['title'] | h}

%for hname in course_stats['header']: %endfor %for row in course_stats['data']: %for value in row: %endfor %endfor
${hname | h}
${value | h}

%else:

${_("Course Statistics At A Glance")}

${_("View course statistics in the Admin section of this legacy instructor dashboard.")}

%endif ##----------------------------------------------------------------------------- %if modeflag.get('Psychometrics'): %for plot in plots:

${plot['title']}


${plot['info']}




%endfor %endif ##----------------------------------------------------------------------------- ## always show msg ##----------------------------------------------------------------------------- %if modeflag.get('Admin'): % if course_errors is not UNDEFINED:

${_("Course errors")}

%if not course_errors: None %else:
    % for (summary, err) in course_errors:
  • ${summary | h} % if err:
    • ${err | h}
    % else:

     

    % endif
  • % endfor
%endif
% endif %endif