181 lines
4.7 KiB
HTML
181 lines
4.7 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">
|
|
{{ Progress(class_info, student) }}
|
|
</div>
|
|
</div>
|
|
{% endblock %}
|
|
|
|
{% macro Header() %}
|
|
<header class="sticky mb-5">
|
|
<div class="container">
|
|
<div class="edit-header">
|
|
<div>
|
|
<div class="page-title">
|
|
{{ _("{0}").format(student.full_name) }}
|
|
</div>
|
|
<div class="vertically-center">
|
|
<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">
|
|
{{ _("Student Progress").format(student.full_name) }}
|
|
</span>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="align-self-center">
|
|
<a class="btn btn-default btn-sm" href="/users/{{ student.username }}">
|
|
{{ _("View Profile") }}
|
|
</a>
|
|
{% if student.name == frappe.session.user %}
|
|
<button class="btn btn-default btn-sm btn-schedule-eval ml-2">
|
|
{{ _("Schedule Evaluation") }}
|
|
</button>
|
|
{% endif %}
|
|
{% if is_moderator %}
|
|
<a class="btn btn-primary btn-sm btn-evaluate ml-2" href=/evaluation/new?member={{student.name}}&date={{frappe.utils.getdate()}}&class={{class_info.name}}">
|
|
{{ _("Evaluate") }}
|
|
</a>
|
|
{% endif %}
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</header>
|
|
{% endmacro %}
|
|
|
|
|
|
{% macro Progress(class_info, student) %}
|
|
{{ UpcomingEvals(upcoming_evals) }}
|
|
{{ Assessments(class_info, student) }}
|
|
{% endmacro %}
|
|
|
|
{% macro UpcomingEvals(upcoming_evals) %}
|
|
<div class="mb-8">
|
|
<div class="bold-heading mb-2">
|
|
{{ _("Upcoming Evaluations") }}
|
|
</div>
|
|
{% if upcoming_evals | length %}
|
|
<article class="cards-parent">
|
|
{% for eval in upcoming_evals %}
|
|
<div class="common-card-style column-card">
|
|
<div class="bold-heading">
|
|
{{ eval.course_title }}
|
|
</div>
|
|
<div class="vertically-center">
|
|
<svg class="icon icon-sm mr-1">
|
|
<use href="#icon-calendar"></use>
|
|
</svg>
|
|
<span>
|
|
{{ frappe.utils.format_date(eval.date, "medium") }} -
|
|
</span>
|
|
<span>
|
|
{{ frappe.utils.format_time(eval.start_time, "hh:mm a") }}
|
|
</span>
|
|
</div>
|
|
<div>
|
|
<span class="field-label">
|
|
{{ _("Evaluator") }}:
|
|
</span>
|
|
<span>
|
|
{{ eval.evaluator_name }}
|
|
</span>
|
|
</div>
|
|
</div>
|
|
{% endfor %}
|
|
</article>
|
|
{% else %}
|
|
<p class="text-muted"> {{ _("No Upcoming Evaluations") }} </p>
|
|
{% endif %}
|
|
</div>
|
|
{% endmacro %}
|
|
|
|
{% macro Assessments(class_info, student) %}
|
|
<div class="mb-8">
|
|
<div class="bold-heading mb-2">
|
|
{{ _("Assessments") }}
|
|
</div>
|
|
{% if assessments | length %}
|
|
<article class="form-grid">
|
|
<div class="grid-heading-row">
|
|
<div class="grid-row">
|
|
<div class="data-row row">
|
|
<div class="col grid-static-col">
|
|
{{ _("Assessment") }}
|
|
</div>
|
|
<div class="col grid-static-col col-xs-2">
|
|
{{ _("Type") }}
|
|
</div>
|
|
<div class="col grid-static-col col-xs-2">
|
|
{{ _("Status/Score") }}
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
{% for assessment in assessments %}
|
|
{% set has_access = is_moderator and assessment.submission or frappe.session.user == student.name %}
|
|
<div class="grid-row">
|
|
<div class="data-row row">
|
|
<a class="col grid-static-col {% if has_access %} clickable {% endif %}" {% if has_access %} href="{{ assessment.url }}" {% endif %}>
|
|
{{ assessment.title }}
|
|
</a>
|
|
<div class="col grid-static-col col-xs-2">
|
|
{{ (assessment.assessment_type).split("LMS ")[1] }}
|
|
</div>
|
|
|
|
<div class="col grid-static-col col-xs-2 mb-2">
|
|
{% if assessment.submission %}
|
|
{% if assessment.assessment_type == "LMS Assignment" %}
|
|
{% set status = assessment.submission.status %}
|
|
{% set color = "green" if status == "Pass" else "red" if status == "Fail" else "orange" %}
|
|
<div class="indicator-pill {{ color }}">
|
|
{{ status }}
|
|
</div>
|
|
{% else %}
|
|
<div>
|
|
{{ assessment.submission.score }}
|
|
</div>
|
|
{% endif %}
|
|
{% else %}
|
|
<div class="indicator-pill red">
|
|
{{ _("Not Attempted") }}
|
|
</div>
|
|
{% endif %}
|
|
</div>
|
|
|
|
</div>
|
|
</div>
|
|
{% endfor %}
|
|
</article>
|
|
{% else %}
|
|
<p class="text-muted"> {{ _("No Assessments") }} </p>
|
|
{% endif %}
|
|
</div>
|
|
|
|
{% endmacro %}
|
|
|
|
{%- block script %}
|
|
{{ super() }}
|
|
<script>
|
|
frappe.boot.user = {
|
|
"can_create": [],
|
|
"can_select": ["LMS Course"],
|
|
"can_read": ["LMS Course"]
|
|
};
|
|
let courses = {{ courses | json }};
|
|
let class_name = "{{ class_info.name }}";
|
|
</script>
|
|
{{ include_script('controls.bundle.js') }}
|
|
{% endblock %} |