Skip to content
This repository was archived by the owner on Jun 30, 2024. It is now read-only.

Commit 77d73ca

Browse files
committed
show progress and summary
1 parent 753adae commit 77d73ca

File tree

4 files changed

+28
-15
lines changed

4 files changed

+28
-15
lines changed

controllers/assignments.py

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -139,13 +139,19 @@ def get_summary():
139139
)
140140
res = db.executesql(
141141
f"""
142-
select name, min(score), max(score), to_char(avg(score), '00.999') as mean, count(score) from assignment_questions join questions on question_id = questions.id join question_grades on name = div_id
142+
select chapter, name, min(score), max(score), to_char(avg(score), '00.999') as mean, count(score) from assignment_questions join questions on question_id = questions.id join question_grades on name = div_id
143143
where assignment_id = {assignment.id} and course_name = '{auth.user.course_name}'
144-
group by name
144+
group by chapter, name
145145
""",
146146
as_dict=True,
147147
)
148148

149+
for row in res:
150+
if row["count"] > 0:
151+
row[
152+
"name"
153+
] = f"""<a href="/runestone/dashboard/exercisemetrics?id={row['name']}&chapter={row['chapter']}">{row['name']}</a>"""
154+
149155
return json.dumps(res)
150156

151157

controllers/dashboard.py

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -554,16 +554,15 @@ def questiongrades():
554554

555555
# make sure points total is up to date
556556
assignment_id = request.vars.assignment_id
557+
558+
if assignment_id.isnumeric():
559+
assignmatch = db.assignments.id == request.vars.assignment_id
560+
else:
561+
assignmatch = db.assignments.name == request.vars.assignment_id
562+
assignment = db(assignmatch & (db.assignments.course == course.id)).select().first()
563+
assignment_id = assignment.id
557564
update_total_points(assignment_id)
558565

559-
assignment = (
560-
db(
561-
(db.assignments.id == request.vars.assignment_id)
562-
& (db.assignments.course == course.id)
563-
)
564-
.select()
565-
.first()
566-
)
567566
sid = request.vars.sid
568567
student = db(db.auth_user.username == sid).select(
569568
db.auth_user.first_name, db.auth_user.last_name, db.auth_user.username

static/js/admin.js

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -160,14 +160,16 @@ function autoGrade() {
160160
let total = 0;
161161
$("#gradingprogresstitle").html("<h3>Grading Progress</h3>");
162162
$("#autogradingprogress").html("");
163+
$("#autogradingprogress").css("border", "1px solid");
163164
for (let index = 0; index < student_array.length; ++index) {
164165
let student = student_array[index];
165166
ajax_params.data.sid = student;
166167
res = await jQuery.ajax(ajax_params);
167168
$("#autogradingprogress").append(
168-
`${index + 1} of ${student_array.length}: ${student} ${
169-
res.message
170-
} Score: ${res.total_mess} <br>`
169+
`${index + 1} of ${student_array.length}:
170+
<a href="/runestone/dashboard/questiongrades?sid=${student}&assignment_id=${assignment}">${student}</a>
171+
${res.message}
172+
Score: ${res.total_mess} <br>`
171173
);
172174
total = total + res.total_mess;
173175
$("#autogradingprogress").animate({
@@ -238,10 +240,15 @@ function gradingSummary(container) {
238240
$("#gradingsummarytitle").html("<h3>Grading Summary</h3>");
239241
container = document.getElementById(container);
240242
$(container).html("");
243+
let columns = [];
244+
for (let k of Object.keys(retdata[0])) {
245+
columns.push({ data: k, renderer: "html" });
246+
}
241247
var hot = new Handsontable(container, {
242248
data: retdata,
243249
colHeaders: Object.keys(retdata[0]),
244250
licenseKey: "non-commercial-and-evaluation",
251+
columns: columns,
245252
});
246253
},
247254
});
@@ -630,6 +637,7 @@ function updateQuestionList() {
630637
} else {
631638
$("#releasestate").text("");
632639
}
640+
gradingSummary("autogradingsummary");
633641
}
634642
if (chapAssign == "assignment") {
635643
populateQuestions(questionSelector, assignmentinfo[col1val]);

views/admin/grading.html

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313
eBookConfig.get_assignment_release_statesURL = '{{=get_assignment_release_statesURL}}';
1414
eBookConfig.course = '{{=course_id}}';
1515
// load the students dictionary once the page loads
16-
$(getCourseStudents)
16+
$(document).ready(getCourseStudents);
1717
</script>
1818

1919
<div class="col-md-5" style="margin-top: 50px; margin-bottom: 10px;">
@@ -63,7 +63,7 @@ <h3>Students</h3>
6363

6464
<div>
6565
<div id="gradingprogresstitle"></div>
66-
<div id="autogradingprogress" style="max-height: 100px; overflow: auto;"></div>
66+
<div id="autogradingprogress" style="max-height: 100px; overflow: auto; "></div>
6767
<div id="gradingsummarytitle"></div>
6868
<div id="autogradingsummary"></div>
6969
</div>

0 commit comments

Comments
 (0)