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

Commit df7df54

Browse files
committed
Create v1 of instructor secret page
1 parent cb0ef34 commit df7df54

File tree

2 files changed

+78
-0
lines changed

2 files changed

+78
-0
lines changed

controllers/peer.py

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -103,6 +103,19 @@ def dashboard():
103103
)
104104

105105

106+
def extra():
107+
assignment_id = request.vars.assignment_id
108+
current_question = _get_current_question(assignment_id, False)
109+
110+
return dict(
111+
course_id=auth.user.course_name,
112+
course=get_course_row(db.courses.ALL),
113+
current_question=current_question,
114+
assignment_id=assignment_id,
115+
is_instructor=True,
116+
)
117+
118+
106119
def _get_current_question(assignment_id, get_next):
107120

108121
assignment = db(db.assignments.id == assignment_id).select().first()
@@ -265,6 +278,21 @@ def num_answers():
265278
return json.dumps({"count": acount, "mess_count": mess_count})
266279

267280

281+
def percent_correct():
282+
div_id = request.vars.div_id
283+
start_time = request.vars.start_time
284+
course_name = request.vars.course_name
285+
df = _get_lastn_answers(1, div_id, course_name, start_time)
286+
logger.debug(f"Data Frame is {df}")
287+
tot = len(df)
288+
logger.debug(f"num rows = {tot}")
289+
corr = len(df[df.correct == "T"])
290+
if corr == 0:
291+
return json.dumps({"pct_correct": "No Correct Answers"})
292+
else:
293+
return json.dumps({"pct_correct": tot / corr * 100})
294+
295+
268296
#
269297
# Student Facing pages
270298
#

views/peer/extra.html

Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
{{ extend "admin/instructors.html"}} {{ block tabcontent }}
2+
3+
<div>
4+
<h2>Percent Correct for {{=current_question['name']}}</h2>
5+
6+
<p><span id="pct_corr"></span>%</p>
7+
8+
</div>
9+
10+
<script>
11+
async function updatePctCorrect() {
12+
// Every five seconds get the graph data
13+
let data = {
14+
div_id: "{{=XML(current_question['name'])}}",
15+
course_name: "{{=XML(auth.user.course_name)}}",
16+
start_time: startTime,
17+
};
18+
if (startTime2 !== null) {
19+
data.start_time = startTime2;
20+
}
21+
let jsheaders = new Headers({
22+
"Content-type": "application/json; charset=utf-8",
23+
Accept: "application/json",
24+
});
25+
let request = new Request("/runestone/peer/percent_correct", {
26+
method: "POST",
27+
headers: jsheaders,
28+
body: JSON.stringify(data),
29+
});
30+
let resp = await fetch(request);
31+
let spec = await resp.json();
32+
let pct_corr = document.getElementById("pct_corr");
33+
pct_corr.innerHTML = spec.pct_correct
34+
}
35+
36+
</script>
37+
<script src="/runestone/static/js/peer.js?v={{=request.peer_mtime}}"></script>
38+
<script>
39+
var user = "{{=auth.user.username}}";
40+
var currentQuestion = "{{=XML(current_question.name)}}";
41+
var voteNum = 1;
42+
document.addEventListener("DOMContentLoaded", function (event) {
43+
setInterval(updatePctCorrect, 2000, currentQuestion, voteNum);
44+
});
45+
var startTime = new Date().toUTCString();
46+
var startTime2 = null;
47+
var mess_count = 0;
48+
</script>
49+
50+
{{ end }}

0 commit comments

Comments
 (0)