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

Commit 470eebe

Browse files
committed
Fix: counting toggle questions
1 parent 69475da commit 470eebe

1 file changed

Lines changed: 32 additions & 17 deletions

File tree

runestone/common/js/runestonebase.js

Lines changed: 32 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -93,27 +93,22 @@ export default class RunestoneBase {
9393
eventInfo.percent = this.percent;
9494
}
9595
if (eBookConfig.useRunestoneServices && eBookConfig.logLevel > 0) {
96-
let request = new Request(eBookConfig.ajaxURL + "hsblog", {
97-
method: "POST",
98-
headers: this.jsonHeaders,
99-
body: JSON.stringify(eventInfo),
100-
});
101-
try {
102-
let response = await fetch(request);
103-
if (!response.ok) {
104-
throw new Error("Failed to save the log entry");
105-
}
106-
post_return = response.json();
107-
} catch (e) {
108-
if (this.isTimed) {
109-
alert(`Error: Your action was not saved! The error was ${e}`);
110-
}
111-
console.log(`Error: ${e}`);
112-
}
96+
post_return = this.postLogMessage(eventInfo)
11397
}
11498
if (!this.isTimed || eBookConfig.debug) {
11599
console.log("logging event " + JSON.stringify(eventInfo));
116100
}
101+
// When selectquestions are part of an assignment especially toggle questions
102+
// we need to count using the selector_id of the select question.
103+
// We also need to log an event for that selector so that we will know
104+
// that interaction has taken place. This is **independent** of how the
105+
// autograder will ultimately grade the question!
106+
if (this.selector_id) {
107+
eventInfo.div_id = this.selector_id;
108+
eventInfo.event = "selectquestion";
109+
eventInfo.act = "interaction"
110+
this.postLogMessage(eventInfo);
111+
}
117112
if (
118113
typeof pageProgressTracker.updateProgress === "function" &&
119114
eventInfo.act != "edit" &&
@@ -124,6 +119,26 @@ export default class RunestoneBase {
124119
return post_return;
125120
}
126121

122+
async postLogMessage(eventInfo) {
123+
let request = new Request(eBookConfig.ajaxURL + "hsblog", {
124+
method: "POST",
125+
headers: this.jsonHeaders,
126+
body: JSON.stringify(eventInfo),
127+
});
128+
try {
129+
let response = await fetch(request);
130+
if (!response.ok) {
131+
throw new Error("Failed to save the log entry");
132+
}
133+
post_return = response.json();
134+
} catch (e) {
135+
if (this.isTimed) {
136+
alert(`Error: Your action was not saved! The error was ${e}`);
137+
}
138+
console.log(`Error: ${e}`);
139+
}
140+
return post_return;
141+
}
127142
// .. _logRunEvent:
128143
//
129144
// logRunEvent

0 commit comments

Comments
 (0)