@@ -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 . replace ( "-toggleSelectedQuestion" , "" ) ;
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,27 @@ export default class RunestoneBase {
124119 return post_return ;
125120 }
126121
122+ async postLogMessage ( eventInfo ) {
123+ var post_return ;
124+ let request = new Request ( eBookConfig . ajaxURL + "hsblog" , {
125+ method : "POST" ,
126+ headers : this . jsonHeaders ,
127+ body : JSON . stringify ( eventInfo ) ,
128+ } ) ;
129+ try {
130+ let response = await fetch ( request ) ;
131+ if ( ! response . ok ) {
132+ throw new Error ( "Failed to save the log entry" ) ;
133+ }
134+ post_return = response . json ( ) ;
135+ } catch ( e ) {
136+ if ( this . isTimed ) {
137+ alert ( `Error: Your action was not saved! The error was ${ e } ` ) ;
138+ }
139+ console . log ( `Error: ${ e } ` ) ;
140+ }
141+ return post_return ;
142+ }
127143 // .. _logRunEvent:
128144 //
129145 // logRunEvent
0 commit comments