Skip to content

Commit dcc9d1c

Browse files
committed
make question regen work again
remove old question html from page, and old question's display object from memory
1 parent e3ed998 commit dcc9d1c

File tree

4 files changed

+19
-6
lines changed

4 files changed

+19
-6
lines changed

runtime/scripts/exam.js

+3
Original file line numberDiff line numberDiff line change
@@ -264,6 +264,9 @@ Exam.prototype = {
264264
}
265265

266266
job(function() {
267+
//register questions with exam display
268+
this.display.initQuestionList();
269+
267270
//calculate max marks available in exam
268271
this.mark = 0;
269272

runtime/scripts/question.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ var job = Numbas.schedule.add;
2525

2626
var tryGetAttribute = Numbas.xml.tryGetAttribute;
2727

28-
var Question = Numbas.Question = function( exam, xml, number, loading, gscope )
28+
var Question = Numbas.Question = function( exam, xml, number, loading, gscope)
2929
{
3030
var q = this;
3131
q.exam = exam;

themes/default/files/index.html

+2-2
Original file line numberDiff line numberDiff line change
@@ -240,8 +240,8 @@ <h2 data-localise="end.exam has finished"></h2>
240240
<div class="carousel">
241241
<div class="carouselBtn prev icon-caret-up"></div>
242242
<div class="questionList">
243-
<ul id="questionList" data-bind="foreach: exam.questionList">
244-
<li id="questionSelector" class="questionSelector" data-bind="visible: display.visible, with: display, css: {current: $root.currentQuestion()==$data.display}, click: Numbas.controls.makeQuestionJumper(number)">
243+
<ul id="questionList" data-bind="foreach: questions">
244+
<li id="questionSelector" class="questionSelector" data-bind="visible: visible, css: {current: $root.currentQuestion()==$data}, click: Numbas.controls.makeQuestionJumper(question.number)">
245245
<span class="name" data-bind="text: displayName"></span>
246246
<div class="marks">
247247
<div class="feedback-icon" data-bind="css: scoreFeedback.iconClass, attr: scoreFeedback.iconAttr"></div>

themes/default/files/scripts/display.js

+13-3
Original file line numberDiff line numberDiff line change
@@ -296,14 +296,20 @@ display.ExamDisplay = function(e)
296296
}
297297
display.ExamDisplay.prototype =
298298
{
299-
e:undefined, //reference to main exam object
299+
exam: undefined, //reference to main exam object
300300

301301
showTiming: function()
302302
{
303303
this.displayTime(R('timing.time remaining',Numbas.timing.secsToDisplayTime(this.exam.timeRemaining)));
304304
this.timeSpent(Numbas.timing.secsToDisplayTime(this.exam.timeSpent));
305305
},
306306

307+
initQuestionList: function() {
308+
for(var i=0; i<this.exam.questionList.length; i++) {
309+
this.questions.push(this.exam.questionList[i].display);
310+
}
311+
},
312+
307313
hideTiming: function()
308314
{
309315
this.displayTime('');
@@ -379,9 +385,15 @@ display.ExamDisplay.prototype =
379385

380386
startRegen: function() {
381387
$('#questionDisplay').hide();
388+
this.exam.currentQuestion.display.html.remove();
389+
this.oldQuestion = this.exam.currentQuestion.display;
390+
console.log(this.oldQuestion);
382391
},
383392

384393
endRegen: function() {
394+
var currentQuestion = this.exam.currentQuestion;
395+
this.questions.splice(currentQuestion.number,1,currentQuestion.display);
396+
ko.applyBindings(this,this.exam.currentQuestion.display.html[0]);
385397
$('#questionDisplay').fadeIn(200);
386398
},
387399

@@ -427,8 +439,6 @@ display.QuestionDisplay = function(q)
427439
this.review = function() {
428440
exam.reviewQuestion(q.number);
429441
}
430-
431-
exam.display.questions.push(this);
432442
}
433443
display.QuestionDisplay.prototype =
434444
{

0 commit comments

Comments
 (0)