fix: show upcoming evals in progress page

This commit is contained in:
Jannat Patel
2023-07-20 20:16:13 +05:30
parent b5005f41fe
commit 0182db8030
6 changed files with 156 additions and 71 deletions
+102 -41
View File
@@ -21,7 +21,7 @@
<div class="page-title">
{{ _("{0}").format(student.full_name) }}
</div>
<div class="vertically-center small">
<div class="vertically-center">
<a class="dark-links" href="/classes">
{{ _("All Classes") }}
</a>
@@ -58,61 +58,122 @@
{% macro Progress(class_info, student) %}
{% if assessments | length %}
<article class="form-grid">
<div class="grid-heading-row">
{{ 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="form-grid">
<div class="grid-heading-row">
<div class="grid-row">
<div class="data-row row">
<div class="col grid-static-col">
{{ _("Course") }}
</div>
<div class="col grid-static-col col-xs-2">
{{ _("Date") }}
</div>
<div class="col grid-static-col col-xs-2">
{{ _("Time") }}
</div>
<div class="col grid-static-col col-xs-2">
{{ _("Evaluator") }}
</div>
</div>
</div>
</div>
{% for eval in upcoming_evals %}
<div class="grid-row">
<div class="data-row row">
<div class="col grid-static-col">
{{ _("Assessment") }}
<a class="col grid-static-col clickable" href="{{ eval.url }}">
{{ eval.course_title }}
</a>
<div class="col grid-static-col col-xs-2">
{{ eval.date }}
</div>
<div class="col grid-static-col col-xs-2">
{{ _("Type") }}
{{ eval.start_time }}
</div>
<div class="col grid-static-col col-xs-2">
{{ _("Status/Score") }}
{{ eval.evaluator_name }}
</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>
{% endfor %}
</article>
{% else %}
<p class="text-muted mt-3"> {{ _("No Upcoming Evaluations") }} </p>
{% endif %}
</div>
{% endmacro %}
<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>
{% 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>
{{ assessment.submission.score }}
<div class="indicator-pill red">
{{ _("Not Attempted") }}
</div>
{% endif %}
{% else %}
<div class="indicator-pill red">
{{ _("Not Attempted") }}
</div>
{% endif %}
</div>
</div>
</div>
</div>
</div>
{% endfor %}
</article>
{% else %}
<p class="text-muted mt-3"> {{ _("No Assessments") }} </p>
{% endif %}
{% endfor %}
</article>
{% else %}
<p class="text-muted mt-3"> {{ _("No Assessments") }} </p>
{% endif %}
</div>
{% endmacro %}
{%- block script %}
+13 -17
View File
@@ -35,9 +35,8 @@ const open_evaluation_form = (e) => {
fieldname: "date",
label: __("Date"),
reqd: 1,
min_date: frappe.datetime.add_days(
frappe.datetime.get_today(),
1
min_date: new Date(
frappe.datetime.add_days(frappe.datetime.get_today(), 1)
),
change: () => {
get_slots();
@@ -69,7 +68,6 @@ const get_slots = () => {
},
callback: (r) => {
if (r.message) {
console.log(r.message);
display_slots(r.message);
}
},
@@ -82,13 +80,12 @@ const display_slots = (slots) => {
slots.forEach((slot) => {
if (slot.day == day) {
slot_html += `<div class="slot" data-day="${
slot_html += `<div class="btn btn-sm btn-default slot" data-day="${
slot.day
}" data-start="${slot.start_time}" data-end="${slot.end_time}">
${moment(slot.start_time, "hh:mm").format("hh:mm a")} - ${moment(
slot.end_time,
"hh:mm"
).format("hh:mm a")}
}"
data-start="${slot.start_time}" data-end="${slot.end_time}">
${moment(slot.start_time, "hh:mm").format("hh:mm a")} -
${moment(slot.end_time, "hh:mm").format("hh:mm a")}
</div>`;
}
});
@@ -123,13 +120,12 @@ const submit_evaluation_form = (values) => {
day: this.current_slot.data("day"),
},
callback: (r) => {
if (r.message) {
frappe.msgprint({
title: __("Success"),
message: __("Evaluation scheduled successfully"),
});
this.eval_form.hide();
}
frappe.msgprint({
title: __("Success"),
message: __("Evaluation scheduled successfully"),
});
this.eval_form.hide();
window.location.reload();
},
});
};
+17
View File
@@ -26,3 +26,20 @@ def get_context(context):
)
context.assessments = get_assessments(class_name, context.student.name)
upcoming_evals = frappe.get_all(
"LMS certificate Request",
{
"member": context.student.name,
"course": ["in", context.courses],
"date": [">=", frappe.utils.nowdate()],
},
["date", "start_time", "course", "evaluator"],
order_by="date",
)
for evals in upcoming_evals:
evals.course_title = frappe.db.get_value("LMS Course", evals.course, "title")
evals.evaluator_name = frappe.db.get_value("User", evals.evaluator, "full_name")
context.upcoming_evals = upcoming_evals