171 lines
5.2 KiB
HTML
171 lines
5.2 KiB
HTML
{% extends "lms/templates/lms_base.html" %}
|
|
{% block title %}
|
|
{{ student.first_name }} 's {{ _("Progress") }}
|
|
{% endblock %}
|
|
|
|
|
|
{% block page_content %}
|
|
<div class="common-page-style">
|
|
{{ Header() }}
|
|
<div class="container form-width">
|
|
{{ Progress() }}
|
|
</div>
|
|
</div>
|
|
{% endblock %}
|
|
|
|
{% macro Header() %}
|
|
<header class="sticky mb-5">
|
|
<div class="container form-width">
|
|
<div class="edit-header">
|
|
<div>
|
|
<div class="page-title">
|
|
{{ _("{0}'s Progress").format(student.full_name) }}
|
|
</div>
|
|
<div class="vertically-center small">
|
|
<a class="dark-links" href="/classes">
|
|
{{ _("All Classes") }}
|
|
</a>
|
|
<img class="icon icon-sm mr-0" src="/assets/lms/icons/chevron-right.svg">
|
|
<a class="dark-links" href="/classes/{{ class_info.name }}">
|
|
{{ class_info.name }}
|
|
</a>
|
|
<img class="icon icon-sm mr-0" src="/assets/lms/icons/chevron-right.svg">
|
|
<span class="breadcrumb-destination">{{ _("{0}'s Progress").format(student.full_name) }}</span>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="align-self-center">
|
|
<a class="btn btn-primary btn-sm btn-evaluate" href=/evaluation/new?member={{student.name}}&date={{frappe.utils.getdate()}}&class={{class_info.name}}">
|
|
{{ _("Evaluate") }}
|
|
</a>
|
|
</div>
|
|
|
|
</div>
|
|
</div>
|
|
</header>
|
|
{% endmacro %}
|
|
|
|
|
|
{% macro Progress(class_info, student) %}
|
|
<div>
|
|
{% for assessment in assessments %}
|
|
<div class="list-row level">
|
|
<a {% if assessment.submission %} class="clickable" href="{{ assessment.url }}" {% endif %}>
|
|
{{ assessment.title }}
|
|
</a>
|
|
|
|
{% if assessment.submission %}
|
|
{% set status = assessment.submission.status %}
|
|
{% set color = "green" if status == "Pass" else "red" if status == "Fail" else "orange" %}
|
|
<div>
|
|
<div class="indicator-pill {{ color }}">
|
|
{{ assessment.submission.status }}
|
|
</div>
|
|
</div>
|
|
{% else %}
|
|
<div class="indicator-pill red">
|
|
{{ _("Not Attempted") }}
|
|
</div>
|
|
{% endif %}
|
|
</div>
|
|
{% endfor %}
|
|
</div>
|
|
{% endmacro %}
|
|
|
|
|
|
{% macro Quiz(course, student) %}
|
|
{% for quiz in course.quizzes %}
|
|
{% set filters = { "member": student.name, "course": course.course } %}
|
|
{% set has_submitted = frappe.db.exists("LMS Quiz Submission", filters) %}
|
|
{% set submission = frappe.db.get_value("LMS Quiz Submission", filters, ["score", "creation"], as_dict=True) %}
|
|
{% set total_questions = frappe.db.count("LMS Quiz Question", {"parent": quiz.name}) %}
|
|
|
|
<tr>
|
|
<td class="vertically-center">
|
|
<svg class="icon icon-sm">
|
|
<use href="#icon-quiz"></use>
|
|
</svg>
|
|
{{ _("Quiz") }}
|
|
</td>
|
|
<td>{{ quiz.title }}</td>
|
|
{% if has_submitted %}
|
|
<td>{{ submission.score }}/{{ total_questions }}</td>
|
|
<td>{{ frappe.utils.format_date(submission.creation, "medium") }}</td>
|
|
{% else %}
|
|
<td>-</td>
|
|
<td>
|
|
<div class="indicator-pill red">
|
|
{{ _("Not Attempted") }}
|
|
</div>
|
|
</td>
|
|
{% endif %}
|
|
</tr>
|
|
{% endfor %}
|
|
{% endmacro %}
|
|
|
|
|
|
{% macro Assignment(course, student, is_moderator) %}
|
|
{% for assignment in course.assignments %}
|
|
{% set filters = { "member": student.name, "course": course.course, "lesson": assignment.name } %}
|
|
{% set has_submitted = frappe.db.exists("LMS Assignment Submission", filters) %}
|
|
{% set submission = frappe.db.get_value("LMS Assignment Submission", filters, ["assignment", "creation", "status"], as_dict=True) %}
|
|
{% set status = submission.status %}
|
|
{% set color = "green" if status == "Pass" else "red" if status == "Fail" else "orange" %}
|
|
{% set can_see_details = has_submitted and (is_moderator or frappe.session.user == student.name) %}
|
|
|
|
<tr {% if can_see_details %} class="clickable-row" data-href="/assignments/{{ has_submitted }}" {% endif %}>
|
|
<td class="{% if can_see_details %} subheading {% endif %} vertically-center">
|
|
<svg class="icon icon-md">
|
|
<use href="#icon-file"></use>
|
|
</svg>
|
|
{{ _("Assignment") }}
|
|
</td>
|
|
|
|
<td>{{ assignment.title }}</td>
|
|
|
|
{% if has_submitted %}
|
|
<td>
|
|
<div class="indicator-pill {{ color }}">
|
|
{{ status }}
|
|
</div>
|
|
</td>
|
|
|
|
<td>{{ frappe.utils.format_date(submission.creation, "medium") }}</td>
|
|
|
|
{% else %}
|
|
<td>-</td>
|
|
|
|
<td>
|
|
<div class="indicator-pill red">
|
|
{{ _("Not Attempted") }}
|
|
</div>
|
|
</td>
|
|
{% endif %}
|
|
</tr>
|
|
{% endfor %}
|
|
{% endmacro %}
|
|
|
|
|
|
{% macro Evaluation(course, student, is_moderator) %}
|
|
{% for evaluation in course.evaluations %}
|
|
{% set color = "green" if evaluation.status == "Pass" else "red" %}
|
|
{% set can_see_details = is_moderator or frappe.session.user == student.name %}
|
|
|
|
<tr {% if can_see_details %} class="clickable-row" data-href="/evaluation/{{evaluation.name}}" {% endif %}>
|
|
<td class="{% if can_see_details %} subheading {% endif %} vertically-center">
|
|
<svg class="icon icon-md">
|
|
<use href="#icon-quality"></use>
|
|
</svg>
|
|
{{ _("Evaluation") }}
|
|
</td>
|
|
<td> - </td>
|
|
<td>
|
|
<div class="indicator-pill {{ color }}">
|
|
{{ evaluation.status }}
|
|
</div>
|
|
</td>
|
|
<td>{{ frappe.utils.format_date(evaluation.creation, "medium") }}</td>
|
|
</tr>
|
|
{% endfor %}
|
|
{% endmacro %}
|