Skip to content

Commit 3e037d7

Browse files
committed
working frontend display for mtf
1 parent 57b6626 commit 3e037d7

File tree

4 files changed

+56
-32
lines changed

4 files changed

+56
-32
lines changed

build/app.build.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@
5555
"SimpleClient",
5656
"SimpleFigure",
5757
"QServer",
58-
"MCQServer"
58+
"MCQServer",
5959
"MTFServer"
6060
]
6161
}

exampleCourse/questions/fossilFuelsTrueFalse/info.json

+2-1
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,8 @@
55
"type": "MultipleTrueFalse",
66
"options": {
77
"trueStatements": [
8-
"Cheapness is an advantage of fossil fuels relative to renewable energy sources."
8+
"Cheapness is an advantage of fossil fuels relative to renewable energy sources.",
9+
"Frugalness is an advantage of fossil fuels relative to renewable energy sources for its frugality and whateverness because whatever is whatever."
910
],
1011
"falseStatements": [
1112
"This is a false statement"

frontend/require/MTFClient.js

+27-9
Original file line numberDiff line numberDiff line change
@@ -4,17 +4,35 @@ define(["underscore", "SimpleClient"], function(_, SimpleClient) {
44
function MTFClient(options) {
55
SimpleClient.SimpleClient.call(this, options);
66
this.options.questionTemplate = '<p>' +
7-
'<%= params.text %></p>' +
8-
'<% for (var i = 0; i < params.answers.length; i++) { %>' +
9-
'<div class="radio">' +
10-
'<label>' +
11-
'<input type="radio" name="selection" value="<%= params.answers[i].key %>" data-checked="submittedAnswer.key" />' +
12-
'(<%= params.answers[i].key %>) ' +
13-
'<%= params.answers[i].text %>' +
14-
'</label>' +
7+
'<% for (var i = 0; i < params.statements.length; i++) { %>' +
8+
'<div class="trueFalse" style="display:table; width:100%;">' +
9+
'<div style="display:table-row; width:100%;">' +
10+
'<div style="display:table-cell; width:80%; padding:0.75em; border-bottom:1px solid black">' +
11+
'<%= params.statements[i].statement %>' +
12+
'</div>' +
13+
'<div style="display:table-cell; text-align:center; width:20%; padding:0.75em;border-bottom:1px solid black; vertical-align:middle;">' +
14+
'<label>' +
15+
'<input type="checkbox" data-checkedoptional="submittedAnswer.<%= params.statements[i].key %>-true" />' +
16+
' True' +
17+
'</label>' +
18+
'&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;' +
19+
'<label>' +
20+
'<input type="checkbox" data-checkedoptional="submittedAnswer.<%= params.statements[i].key %>-false" />' +
21+
' False' +
22+
'</label>' +
23+
'</div>' +
24+
'</div>' +
1525
'</div>' +
1626
'<% } %>';
17-
this.options.answerTemplate = '<p>(<%= trueAnswer.key %>) <%= trueAnswer.text %></p>';
27+
this.options.answerTemplate = '<p>atemp</p>';
28+
29+
30+
/*
31+
this.options.answerTemplate = '<p>Correct answers: <% if (trueAnswer.correctAnswers.length == 0) { %>None.<% } %></p>'
32+
+ '<% for (var i = 0; i < trueAnswer.correctAnswers.length; i++) { %>'
33+
+ '<p>(<%= trueAnswer.correctAnswers[i].key %>) <%= trueAnswer.correctAnswers[i].statement %></p>'
34+
+ '<% } %>';
35+
*/
1836
}
1937
MTFClient.prototype = new SimpleClient.SimpleClient();
2038

frontend/require/MTFServer.js

+26-21
Original file line numberDiff line numberDiff line change
@@ -8,43 +8,48 @@ define(["underscore", "QServer", "PrairieRandom"], function(_, QServer, PrairieR
88

99
MTFServer.prototype.getData = function(vid, options) {
1010
var rand = new PrairieRandom.RandomGenerator(vid);
11+
12+
// Set some default values first.
13+
// Missing values should be caught by the schemas.
1114
options = _.defaults(options, {
12-
text: "Question text not defined.",
13-
correctAnswers: ["Correct answers not defined."],
14-
incorrectAnswers: ["Incorrect answers not defined."],
15-
numberAnswers: 5,
15+
trueStatements: [],
16+
falseStatements: []
1617
});
1718

18-
var numberCorrect = 1;
19-
var numberIncorrect = options.numberAnswers - numberCorrect;
20-
numberIncorrect = Math.min(numberIncorrect, options.incorrectAnswers.length);
19+
var numberTrue = options.trueStatements.length;
20+
var numberFalse = options.falseStatements.length;
21+
22+
// TODO(tnip): This is kinda weird. We should be checking for
23+
// definedness on the full set. If empty, throw an error.
24+
//
25+
// Here, we want a list of all the statements so we can list them all.
26+
var allStatements = [];
27+
allStatements = allStatements.concat(options.trueStatements);
28+
allStatements = allStatements.concat(options.falseStatements);
2129

22-
var answers = [];
23-
answers = answers.concat(rand.randNElem(numberCorrect, options.correctAnswers));
24-
answers = answers.concat(rand.randNElem(numberIncorrect, options.incorrectAnswers));
25-
var perm = rand.shuffle(answers);
26-
answers = _(answers).map(function(value, index) {
27-
return {key: String.fromCharCode('a'.charCodeAt() + index), text: value};
30+
allStatements = _(allStatements).map(function(value, index) {
31+
return {key: 'q' + index.toString(), statement: value};
2832
});
33+
34+
console.log(allStatements);
35+
2936
var params = {
30-
text: options.text,
31-
answers: answers,
32-
};
33-
var trueIndex = _(perm).indexOf(0);
34-
var trueAnswer = {
35-
key: answers[trueIndex].key,
36-
text: answers[trueIndex].text,
37+
statements: allStatements
3738
};
39+
3840
var questionData = {
3941
params: params,
40-
trueAnswer: trueAnswer,
42+
trueAnswer: {}
4143
};
44+
4245
return questionData;
4346
}
4447

48+
/*
4549
MTFServer.prototype.transformTrueAnswer = function(vid, params, trueAns) {
4650
return {key: trueAns.key};
4751
}
52+
*/
4853

4954
return MTFServer;
5055
});

0 commit comments

Comments
 (0)